@james_jayaraj/test-npm 1.3.8 → 1.4.0

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.
@@ -4680,7 +4680,7 @@ export class RxComponent {
4680
4680
  food: this.commonServices.foodSearchValue,
4681
4681
  instruction: this.commonServices.InstructionSearchValue,
4682
4682
  route: this.commonServices.routeSearchValue,
4683
- ...(!isAdding && { encryptedId: this.showFavouriteMed ? this.commonServices.favouriteEncryptedId : this.getCurrentFavEncryptedId() }),
4683
+ ...(!isAdding && { encryptedId: this.getCurrentFavEncryptedId() }),
4684
4684
  productPackId: this.commonServices.selectedFormulation?.productPackId ? this.commonServices.selectedFormulation.productPackId : '',
4685
4685
  };
4686
4686
  this.apiService.Post(body, config.PHYSICIAN.ADD_FAVOURITE_MEDICINE).subscribe((res) => {
@@ -4908,7 +4908,7 @@ export class RxComponent {
4908
4908
  if (!this.commonServices.selectedFormulation || !favouritesList || favouritesList.length === 0) {
4909
4909
  return false;
4910
4910
  }
4911
- return favouritesList.some((favMed) => favMed.productId.toString() === this.commonServices.selectedFormulation.productId.toString() &&
4911
+ return favouritesList.some((favMed) => favMed.productId.toString() === this.commonServices.selectedFormulation.productId.toString() && favMed.productPackId.toString() === this.commonServices.selectedFormulation.productPackId.toString() &&
4912
4912
  (!this.commonServices.IsNullOrEmpty(favMed.pbsCode) ? favMed.pbsCode : "") === (!this.commonServices.IsNullOrEmpty(this.commonServices.selectedFormulation?.pbsCode) ? this.commonServices.selectedFormulation.pbsCode : "") &&
4913
4913
  favMed.productName === this.commonServices.selectedFormulation.productName && favMed.quantity?.toString() === this.commonServices.quantityVal?.toString() && favMed.repeats?.toString() === this.commonServices.repeatsVal?.toString() &&
4914
4914
  favMed.dose?.toString() === this.commonServices.doseSearchValue?.toString() && favMed.frequency?.toString() === this.commonServices.freqSearchValue?.toString() && favMed.food?.toString() === this.commonServices.foodSearchValue?.toString() &&
@@ -4950,8 +4950,8 @@ export class RxComponent {
4950
4950
  }, 200);
4951
4951
  }
4952
4952
  getCurrentFavEncryptedId() {
4953
- let favouritesList = this.showFavouriteMed ? this.commonServices.favouriteMedicineList : this.commonServices.originalFavouriteMedicineList;
4954
- return favouritesList.find((favMed) => favMed.productId.toString() === this.commonServices.selectedFormulation.productId.toString() &&
4953
+ let favouritesList = this.commonServices.originalFavouriteMedicineList;
4954
+ return favouritesList.find((favMed) => favMed.productId.toString() === this.commonServices.selectedFormulation.productId.toString() && favMed.productPackId.toString() === this.commonServices.selectedFormulation.productPackId.toString() &&
4955
4955
  (!this.commonServices.IsNullOrEmpty(favMed.pbsCode) ? favMed.pbsCode : "") === (!this.commonServices.IsNullOrEmpty(this.commonServices.selectedFormulation?.pbsCode) ? this.commonServices.selectedFormulation.pbsCode : "") &&
4956
4956
  favMed.productName === this.commonServices.selectedFormulation.productName && favMed.quantity?.toString() === this.commonServices.quantityVal?.toString() && favMed.repeats?.toString() === this.commonServices.repeatsVal?.toString() &&
4957
4957
  favMed.dose?.toString() === this.commonServices.doseSearchValue?.toString() && favMed.frequency?.toString() === this.commonServices.freqSearchValue?.toString() && favMed.food?.toString() === this.commonServices.foodSearchValue?.toString() &&
@@ -5013,4 +5013,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5013
5013
  type: HostListener,
5014
5014
  args: ['click', ['$event']]
5015
5015
  }] } });
5016
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaG9sYS1yeC9zcmMvbGliL3J4L3J4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hvbGEtcngvc3JjL2xpYi9yeC9yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBMEIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcxSyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUMzSSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUNySSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBd0d0QixZQUNTLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzdCLFVBQXNCLEVBQ3RCLFlBQStCLEVBQ2hDLFFBQWtCLEVBQ2pCLFFBQW1CLEVBQ25CLEtBQWlCLEVBQ2pCLGdCQUFrQztRQVBuQyxlQUFVLEdBQVYs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QUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDbkM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO1lBQ3pRLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFVBQVUsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUE7WUFDblIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUE7U0FDelI7UUFDRCxP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LGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsTUFBTTtzQkFBbEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNHLE9BQU87c0JBQXBELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDUyxjQUFjO3NCQUFsRSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSixRQUFRO3NCQUF0RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ksVUFBVTtzQkFBMUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ08sb0JBQW9CO3NCQUF6RSxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFMUMsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVQLHVCQUF1QjtzQkFEdEIsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBdUZWLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxVQUFVO3NCQUFuQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2EsT0FBTztzQkFBM0MsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9DbkMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2VzIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uJztcclxuaW1wb3J0IHsgQnJhbmRJbmNsdWRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJhbmQtaW5jbHVkZS9icmFuZC1pbmNsdWRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF2YWlsYWJsZUZvcm11bGF0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2JyYW5kLWluY2x1ZGUvYXZhaWxhYmxlLWZvcm11bGF0aW9ucy9hdmFpbGFibGUtZm9ybXVsYXRpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSXNBdXRob3JpdHlDb21wb25lbnQgfSBmcm9tICcuLi9pcy1hdXRob3JpdHkvaXMtYXV0aG9yaXR5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL3JlYWwtdGltZS1wcmVzY3JpcHRpb24tbW9uaXRvcmluZy9yZWFsLXRpbWUtcHJlc2NyaXB0aW9uLW1vbml0b3JpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZmlybVBhdGllbnRDb250YWN0RGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tcGF0aWVudC1jb250YWN0LWRldGFpbHMvY29uZmlybS1wYXRpZW50LWNvbnRhY3QtZGV0YWlscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4uL3Bhc3N3b3JkL3Bhc3N3b3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGNvbmZpZywgZXJyb3Jjb25maWcgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvY29uZmlnJztcclxuaW1wb3J0IHsgQ2Vhc2VQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NlYXNlLXBvcHVwL2NlYXNlLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlaXNzdWVQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3JlaXNzdWUtcG9wdXAvcmVpc3N1ZS1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbG9zZVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2xvc2UtcG9wdXAvY2xvc2UtcG9wdXAuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJ4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3J4LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnTWVkaWNpbmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSB3cmFwcGVyUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQcmVzY3JpYmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcmVzY3JpYmVEcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnRG9zZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRvc2VSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0ZyZXFEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmcmVxUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdHBEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBzdHBSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0Zvb2REcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb29kUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdJbnN0cnVjdGlvbkRyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIEluc3RydWN0aW9uUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdSb3V0ZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHJvdXRlUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQdXJwb3NlRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVycG9zZVJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZmF2TWVkaWNpbmVDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgZmF2TWVkaWNpbmVDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KCkgY2xvc2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc3VibWl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0QWN0aW9uRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBzZWxlY3RBY3Rpb25Ecm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTtcclxuICBkb3NlRGF0YSA9IFtdO1xyXG4gIGZyZXF1ZW5jeURhdGEgPSBbXTtcclxuICBzZW5kdG9waGFybWFjeURhdGE6IGFueSA9IFtdO1xyXG4gIGZvb2REYXRhID0gW107XHJcbiAgcHVycG9zZURhdGEgPSBbXTtcclxuICByb3V0ZURhdGEgPSBbXTtcclxuICBjZWFzZURhdGEgPSBbXTtcclxuICBpbnN0cnVjdGlvbkRhdGE6IGFueSA9IFtdO1xyXG4gIHJvdXRlRGF0YUZpbHRlciA9ICcnO1xyXG4gIEluc3RydWN0aW9uSWQgPSAnJztcclxuICAvLyB0aW1lcjogYW55O1xyXG4gIC8vd2FpdFRpbWUgPSAyNTAwO1xyXG4gIGlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICBwYWdlID0gMTtcclxuICBzZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3REb3NlRHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3RGcmVxRHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3RzdHBEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEZvb2REcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgc2VsZWN0Um91dGVEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdFB1cnBvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gIG1lZGlTZWFyY2hWYWx1ZSA9ICcnO1xyXG4gIHRlbXBNZWRpU2VhcmNoVmFsdWUgPSAnJztcclxuICBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gJyc7XHJcbiAgc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICBmYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gIHNlYXJjaGVkTWVkaWNpbmVMaXN0OiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWw6IGFueSA9IFtdO1xyXG4gIG9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gIHJ4T25seVBCUyA9IGZhbHNlO1xyXG4gIHJ4UHJpdmF0ZSA9IGZhbHNlO1xyXG4gIHJlc3RyaWN0aW9ucyA9IG51bGw7XHJcbiAgaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgcHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICBwcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICBicmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgYnJhbmRNZWRpY3Bic0NvZGUgPSAnJztcclxuICBicmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gIHNlbGVjdGVkQnJhbmRJbmRleCA9ICcnO1xyXG4gIG1vbGVjdWxlTmFtZVRleHQgPSAnJztcclxuICBtb2xlY3VsZU5hbWVUeXBlID0gJyc7XHJcbiAgbW9sZWN1bGVTdHJlbmd0aFRleHQgPSAnJztcclxuICBpc1J0cG1OZXh0ID0gZmFsc2U7XHJcbiAgc2VsZWN0aW9uYnRuTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICBpc05vblBic0ZsYWc6IGFueSA9IGZhbHNlO1xyXG4gIGFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gIGFib3J0ZGlzYWJsZSA9IGZhbHNlO1xyXG4gIHJlc3BvbnNlRGF0YTogYW55ID0ge1xyXG4gICAgaXNBYm9ydDogZmFsc2UsXHJcbiAgICBpc1ByZXNjcmliZTogZmFsc2UsXHJcbiAgICBhYm9ydFN1Y2Nlc3M6IGZhbHNlLFxyXG4gICAgcHJlc2NyaWJlU3VjY2VzczogZmFsc2UsXHJcbiAgICBwcmVzY3JpYmVkYXRhOiBcIlwiLFxyXG4gICAgYWJvcnRNc2c6IFwiXCIsXHJcbiAgICBQcmVzY3JpYmVNc2c6IFwiXCIsXHJcbiAgICBwcmVzY3JpYmVFcnJvcjogZmFsc2UsXHJcbiAgICBhYm9ydEVycm9yOiBmYWxzZSxcclxuICAgIHByZXNjcmliZUVycl9jb2RlOiBcIlwiLFxyXG4gICAgYWJvcnRFcnJfY29kZTogXCJcIixcclxuICAgIGJvZHk6IFwiXCJcclxuICB9XHJcbiAgcHJvZEhpZGRlbk5hbWUgPSBcIlwiO1xyXG4gIFByb2R1Y3RUeXBlID0gXCJcIjtcclxuICBQcm9kdWN0U2VhcmNoTmFtZSA9IFwiXCI7XHJcbiAgc2VhcmNoTWVkaWNpbmVzTGVuZ3RoOiBhbnkgPSBcIlwiO1xyXG4gIHNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgPSAxO1xyXG4gIHNlYXJjaEJ5bmFtZUxlbmd0aDogYW55ID0gXCJcIjtcclxuICBzZWFyY2hCeW5hbWVQYWdlTnVtYmVyID0gMTtcclxuICBpc2VwcmlzY3JpYmVwcmludCA9IGZhbHNlO1xyXG4gIGVkaXRJbnN0cnVjdGlvbkZsYWcgPSBmYWxzZTtcclxuICBQcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gIFNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICBwcmVzY3JpYmVBU19SUEJTX1VSQSA9IHRydWU7XHJcbiAgdGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gIGlzUHJlc2NyaWJlQXNQcml2YXRlT25seSA9IGZhbHNlO1xyXG4gIHRlbXBBdXRob3JpdHlGb3JtTm8gPSBcIlwiO1xyXG4gIGNsaWVudElkOiBhbnkgPSBcIlwiO1xyXG4gIHNob3dGYXZvdXJpdGVNZWQgPSBmYWxzZTtcclxuICBpc1Jlc2VuZDpib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncnh3aWRnZXRzJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcGRlbW8nKSBteVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0ZXN0JywgeyBzdGF0aWM6IHRydWUgfSkgdG9vbHRpcCE6IG51bGw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcclxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlczogQ29tbW9uU2VydmljZXMsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGNoYW5nZWRldGVjdDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgdmlld1JlZkNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICApIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3Bfd2lkJywgYDEyMDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwdycsIGAxMjAwcHhgKTtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXJwYWRkaW5nJywgYDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwaCcsIGA2NTBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlcmZvbnR3ZWlnaHQnLCBgNDAwYCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlVG9vbFRpcCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhpZGVUb29sVGlwKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMudG9vbHRpcCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnRvb2x0aXApO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGlkZVRvb2xUaXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25jbGljayhldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsYXNzTmFtZSA9PSBcInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgfHwgZXZlbnQudGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcyhcIl9fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXBcIikpIHtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlkID09ICdzaG93LXRvb2x0aXAtaWQnKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkgeyB0aGlzLmNyZWF0ZVRvb2xUaXAoZXZlbnQpIH1cclxuICAgICAgICB9IGVsc2UgeyB0aGlzLmhpZGVUb29sVGlwKCk7IH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbmNsaWNrXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5nZXRBbGxNaW1zVmFsdWUoKTtcclxuICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICB0aGlzLmdldEZhdm91cnRpZXNMaXN0KCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnNldEVkaXRWYWx1ZXModGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdClcclxuICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmloaU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID09IG51bGwgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXJcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgPT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID09IHVuZGVmaW5lZCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlclxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID09IG51bGwgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXJcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwibmdPbkluaXRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZXN0cmljdGVkTWVkaWNpbmUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfUkVTVFJJQ1RFRF9NRURJQ0lORSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3RlZE1lZGljaW5lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5wcm9kdWN0SWQpKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5maW5kSW5kZXgoKHg6IHsgcHJvZHVjdElkOiBhbnk7IH0pID0+IHgucHJvZHVjdElkID09IE51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5wcm9kdWN0SWQpKTtcclxuICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRkYXRhID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkZGF0YSkgJiYgc2VsZWN0ZWRkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QudW5zaGlmdChzZWxlY3RlZGRhdGFbMF0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlKGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhICE9IG51bGwgPyBkYXRhIDogdGhpcy5jb21tb25TZXJ2aWNlcy5jbG9zZUVycm9yUmVzcG9uc2UgIT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSAhPSB1bmRlZmluZWQgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSA6IG51bGw7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2xvc2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjZWFzZVByZXNjcmliZU1lZCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDIpKSB7XHJcbiAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDZWFzZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIHRoaXMuY2Vhc2VEYXRhKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2Vhc2VQcmVzY3JpYmVNZWRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSwgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLCA0KSkge1xyXG4gICAgICAgIHRoaXMuaXNSZXNlbmQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ2xvc2VQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAxKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChyZXMgIT0gbnVsbCAmJiByZXMuaXNEaXNwZW5zZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENvbmZpcm1QYXRpZW50Q29udGFjdERldGFpbHNDb21wb25lbnQsIHRoaXMuY29udGVudCwgMikuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmIGRhdGEuZmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENlYXNlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwgdGhpcy5jZWFzZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCAmJiByZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZShyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2FuY2VsUHJlc2NyaWJlTWVkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsRHJhZnQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSwgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLCA0KSkge1xyXG4gICAgICAgIHRoaXMuaXNSZXNlbmQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ2xvc2VQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2FuY2VsRHJhZnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWlzc3VlUHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMykpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVpc3N1ZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIHtpc1Jlc2VuZDogdGhpcy5pc1Jlc2VuZH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBcclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVpc3N1ZVByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVzZW5kUHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZW5hYmxlU2VuZFBhcGVyU2NyaXB0SW5NYWlsICYmICEgdGhpcy5jaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSx0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsMikpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc1NjcmlwdFRvUGhhcm1hY3kgPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWlzc3VlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwge2lzUmVzZW5kOiB0aGlzLmlzUmVzZW5kfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocmVzID09IG51bGwpe1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNSZXNlbmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzUmVzZW5kID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICBjb25zdCBBZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiZW1haWxcIjtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5waGFybWFjeUVtYWlsLnRyaW0oKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTkubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl81OS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzU5LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzU5Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMudmFsaWRCeUVtYWlsTm8odGhpcy5jb21tb25TZXJ2aWNlcy5waGFybWFjeUVtYWlsLnRyaW0oKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjAubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82MC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzYwLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzYwLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgICByeElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQsXHJcbiAgICAgICAgICAgIGFkZHJlc3NUeXBlOiBBZGRyZXNzU2VuZFRvQWRkVHlwZSxcclxuICAgICAgICAgICAgYWRkcmVzc1ZhbHVlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoYXJtYWN5RW1haWwudHJpbSgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUkVfSVNTVUUgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgKyBcIiZhZGRyZXNzVHlwZT1cIiArIEFkZHJlc3NTZW5kVG9BZGRUeXBlICsgXCImYWRkcmVzc1ZhbHVlPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waGFybWFjeUVtYWlsLnRyaW0oKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInJlc2VuZFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJlc2VuZFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJlc2VuZFByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaW50UHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDEpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgIHJ4SWQ6IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCxcclxuICAgICAgICAgIHR5cGU6IFwiMVwiLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLlJYX1BSSU5UICsgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkICsgXCImdHlwZT0xJmNsaWVudElkPVwiICsgdGhpcy5jbGllbnRJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShhdG9iKHJlc3BvbnNlLmZpbGUpLnNwbGl0KCcnKS5tYXAoY2hhciA9PiBjaGFyLmNoYXJDb2RlQXQoMCkpKTtcclxuICAgICAgICAgICAgICAgICAgdmFyIGJiYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIgfSk7XHJcbiAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChiYmIpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBuZXdXaW5kb3cgPSB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKG5ld1dpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1dpbmRvdy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbnRXYXJuaW5nUG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmludFByZXNjcmliZU1lZFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHNjcmlwdHR5cGU6IGFueSwgc3RhdHVzOiBhbnksIGZsYWc6IGFueSk6IEJvb2xlYW4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RhdHVzKSAmJiBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAncHJlc2NyaWJlZCcpIHtcclxuICAgICAgICBpZiAoZmxhZyA9PSAxKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2NyaXB0dHlwZSkgJiYgc2NyaXB0dHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2NyaXB0dHlwZSkgJiYgc2NyaXB0dHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmbGFnID09IDQpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSA1KSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ20nID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHN0YXR1cykgJiYgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ2RyYWZ0JyAmJiBmbGFnID09IDQpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYWdlTnVtYmVyT25lVG9OZXh0KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUwLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUwLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlID0gU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlLnRyaW0oKSk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUpICYmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUpKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTQuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzU0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzU0Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMuY2xlYXJJbnN0cnVjdGlvbigpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSA8PSAwIHx8IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IFwibmFuXCIpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81NS5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTUubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsID09IFwiTmFOXCIpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSBcIjBcIjtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlID0gU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkudHJpbSgpO1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl83NS5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl83NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNzUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNzUubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80Ny5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl80Ny5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDcuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDcubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDgubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNDguY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzQ4LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzQ4Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80OS5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl80OS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDkuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDkubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0VHJhZGVOYW1lRGlzcGxheSgpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9ICdkcmFmdCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICBsZXQgcmVzdGVjdGVkU3RhdGVzID0gWydOU1cnLCAnQUNUJywgJ1dBJywgJ1FMRCcsICdOVCcsICdUQVMnXTtcclxuICAgICAgICBsZXQgcGF0aWVudFN0YXRlcyA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiByZXN0ZWN0ZWRTdGF0ZXMuaW5kZXhPZihwYXRpZW50U3RhdGVzKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgPT0gMCkpIHtcclxuICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBlcnJvcmNvbmZpZy5lcnJvcl81Ni5tZXNzYWdlLnJlcGxhY2UoXCIkMFwiLCBwYXRpZW50U3RhdGVzKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4obWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl81Ni5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzU2LmNvZGUsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzdGF0ZVNjaGVkdWxlTnVtYmVyID0gdGhpcy5nZXRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RhdGVTY2hlZHVsZU51bWJlcikgIT0gbnVsbCAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGlmIChwYXRpZW50U3RhdGVzLnRvTG93ZXJDYXNlKCkgPT0gXCJ0YXNcIiAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNERcIikgIT0gLTEgJiYgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gXCJcIiB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsID09IG51bGwgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY4Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjguY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY4LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY4Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChwYXRpZW50U3RhdGVzLnRvTG93ZXJDYXNlKCkgPT0gXCJuc3dcIiAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNEJcIikgIT0gLTEgJiYgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gXCJcIiB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsID09IG51bGwgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY5Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjkuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY5LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY5Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY2Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjYuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY2LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY2Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gXCJcIjtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICAvLyB2YXIgcnhEaXNwbGF5TmFtZSA9IHRoaXMuZ2V0VHJhZGVOYW1lKCk7XHJcbiAgICAgIC8vIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50b0xvd2VyQ2FzZSgpID09ICdnYXV6ZScpIHtcclxuICAgICAgLy8gICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZTtcclxuICAgICAgLy8gICB9IGVsc2Uge1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gcnhEaXNwbGF5TmFtZTtcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lLnRyaW0oKSArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRyaW0oKSArICcgJyArICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA9PSBudWxsID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aC50cmltKCkgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKTtcclxuICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gcnhEaXNwbGF5TmFtZS50cmltKCkgKyAnICcgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggPT0gbnVsbCA/ICcnIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGgudHJpbSgpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb24odGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gdmFyIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IHRoaXMuZ2V0VHJhZGVOYW1lKCk7XHJcbiAgICAgIC8vIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50b0xvd2VyQ2FzZSgpID09ICdnYXV6ZScpIHtcclxuICAgICAgLy8gICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgLy8gICAgIGxldCBleHRlbXBUVFBOYW1lID0gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgIC8vICAgICBsZXQgUEl0ZW1UaHJlZSA9IGV4dGVtcFRUUE5hbWUubGFzdEluZGV4T2YoJ1snKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlMSA9IGV4dGVtcFRUUE5hbWUuc2xpY2UoMCwgUEl0ZW1UaHJlZSk7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IFBJdGVtVGhyZWUxLnRyaW0oKTtcclxuICAgICAgLy8gICB9IGVsc2Uge1xyXG4gICAgICAvLyAgICAgbGV0IFBJdGVtVGhyZWUyID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLmxhc3RJbmRleE9mKCdbJyk7XHJcbiAgICAgIC8vICAgICBsZXQgUEl0ZW1UaHJlZTMgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUuc2xpY2UoMCwgUEl0ZW1UaHJlZTIpO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlMy50cmltKCk7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnRyaW0oKSArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtICsgJyAnICsgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoID09IG51bGwgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoLnRyaW0oKSArIHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uTmV3KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSAhPSAnbm9uIHBicycgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpICE9ICdwcml2YXRlJyAmJiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IHBhcnNlRmxvYXQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSArIDAuNSA6IDEpIDwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMpIDwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihJc0F1dGhvcml0eUNvbXBvbmVudCwgdGhpcy5jb250ZW50KS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm1vbGVjdWxlKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hY2dzLCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubG1iYyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmNsdWRlYnJhbmRwb3BvcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlM4V2FyaW5nUG9wT3BlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsID0gIXRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgOiAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubG1iYyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLmluY2x1ZGVicmFuZHBvcG9wZW4oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKFwiXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInBhZ2VOdW1iZXJPbmVUb05leHRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlYnJhbmRwb3BvcGVuKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5tb2xlY3VsZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYWNncywgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGgpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQnJhbmRJbmNsdWRlQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiA9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgICAgIHZhciBtb2xlY3VsZWRhdGEgPSB7XHJcbiAgICAgICAgICAgIG1vbGVjdWxlTmFtZVRleHQ6IHRoaXMubW9sZWN1bGVOYW1lVGV4dCxcclxuICAgICAgICAgICAgbW9sZWN1bGVOYW1lVHlwZTogdGhpcy5tb2xlY3VsZU5hbWVUeXBlLFxyXG4gICAgICAgICAgICBtb2xlY3VsZVN0cmVuZ3RoVGV4dDogdGhpcy5tb2xlY3VsZVN0cmVuZ3RoVGV4dCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRNZWRpY2luZUxpc3Q6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKEF2YWlsYWJsZUZvcm11bGF0aW9uc0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBtb2xlY3VsZWRhdGEpLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbC5yZXNwb25zZWZsYWcpIHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiAhPSAnJyAmJlxyXG4gICAgICAgICAgICAgICAgdmFsLmZsYWdcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ29uZmlybUFsdGVyQnJhbmQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbixcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kSW5kZXggIT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEJyYW5kSW5kZXhcclxuICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY3Byb2R1Y3RJZCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNSZXAgPSAnJztcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY1F0eSA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgIGlmICh0aGlzLmRvc2VGcmVxVmFsaWRhdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbmNsdWRlYnJhbmRwb3BvcGVuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9zZUZyZXFWYWxpZGF0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlKSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUpIHx8IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpIHx8IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkb3NlRnJlcVZhbGlkYXRpb25cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBTOFdhcmluZ1BvcE9wZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IFwiV2FybmluZyEgVGhpcyBpcyBhbiBTOCBkcnVnLiBZb3UgbWlnaHQgbmVlZCB0byBoYW5kIHdyaXRlIHlvdXIgc2lnbmF0dXJlLCBxdWFudGl0eSBpbiB3b3JkcyBhbmQgZmlndXJlcyBhbmQvb3Igb3RoZXIgZGV0YWlscyBhcyBwZXIgdGhlIHN0YXRlIHJlZ3VsYXRpb25zXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgZGF0YSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJTOFdhcmluZ1BvcE9wZW5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGRhdGEgPSBcIkVuc3VyZSBhbGwgbmVjZXNzYXJ5IGZpZWxkcyBhcmUgZmlsbGVkIHRvIGF2b2lkIHBoYXJtYWN5IHJlamVjdGlvbiBkdWUgdG8gaW5jb21wbGV0ZSBpbmZvcm1hdGlvbiAtIERvc2UsIEZyZXF1ZW5jeSwgUm91dGUgZXRjLlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVhbFRpbWVQcmVzY3JpcHRpb25Nb25pdG9yaW5nQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIGRhdGEpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNjaGVkdWxlTnVtYmVyKSAmJiBzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInZhbGlkYXRlV2FyaW5nUG9wT3BlblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIENvbmZpcm1BbHRlckJyYW5kKG1lZDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gdHJ1ZTtcclxuICAgICAgdGhpcy5icmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgICAgIHRoaXMuYnJhbmRNZWRpY3Bic0NvZGUgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgICAgIHRoaXMuYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgIE1lZC5wdXNoKG1lZCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBNZWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICB0aGlzLnNlbGVjdEZvcm11bGF0aW9uKG1lZCwgMCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkNvbmZpcm1BbHRlckJyYW5kXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9sZWN1bGUoYWNnczogYW55LCBtb2xlY3VsZVN0cmVuZ3RoOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGFjZ3MpKSB7XHJcbiAgICAgICAgaWYgKGFjZ3MubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgIGlmIChhY2dzWzBdLmFjZ05hbWUuaW5kZXhPZignKycpICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVGV4dCA9IGFjZ3NbMF0uYWNnTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUeXBlID0gJ1MyJztcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZVN0cmVuZ3RoVGV4dCA9IG1vbGVjdWxlU3RyZW5ndGg7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVRleHQgPSBhY2dzWzBdLmFjZ05hbWU7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVHlwZSA9ICdTMSc7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVTdHJlbmd0aFRleHQgPSBtb2xlY3VsZVN0cmVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoMSA8IGFjZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICB2YXIgbW9sZWN1bGVzID0gW107XHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbW9sZWN1bGVzLnB1c2goYWNnc1tpXS5hY2dOYW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVGV4dCA9IG1vbGVjdWxlcy5qb2luKCcsJyk7XHJcbiAgICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVR5cGUgPSAnTSc7XHJcbiAgICAgICAgICB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0ID0gbW9sZWN1bGVTdHJlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwibW9sZWN1bGVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiYWNrKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5wYWdlID0gMTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJiYWNrXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgTWVkaWNpbmVEcm9wZG93bkxpc3QoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIC8vIHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA9IGZhbHNlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTWVkaWNpbmVEcm9wZG93bkxpc3RcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVzY3JpYmVEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0UEJUTkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVQQlROKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFjdGlvbkRyb3Bkb3dub3BlbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZUFjdGlvbkJ0bik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0QWN0aW9uRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdERvc2VEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlRG9zZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZG9zZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnJlcURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RGcmVxRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZUZyZXEpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImZyZXFEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0cFZhbHVlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdHN0cERyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVzdHApO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInN0cFZhbHVlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb29kRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZvb2REcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlRm9vZCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZm9vZERyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5zdHJ1Y3Rpb25Ecm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlSW5zdHJ1Y3Rpb24pO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluc3RydWN0aW9uRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByb3V0ZURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RSb3V0ZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVB1cnBvc2UpO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVJvdXRlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyb3V0ZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVycG9zZURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RQdXJwb3NlRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVB1cnBvc2UpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInB1cnBvc2VEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy53cmFwcGVyUmVmICE9IG51bGwgJiYgdGhpcy53cmFwcGVyUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLndyYXBwZXJSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLndyYXBwZXJSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlQWN0aW9uQnRuID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmICE9IG51bGwgJiYgdGhpcy5zZWxlY3RBY3Rpb25Ecm9wZG93blJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RBY3Rpb25Ecm9wZG93blJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuc2VsZWN0QWN0aW9uRHJvcGRvd25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVBY3Rpb25CdG5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVQQlROID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmICE9IG51bGwgJiYgdGhpcy5wcmVzY3JpYmVEcm9wZG93blJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5wcmVzY3JpYmVEcm9wZG93blJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMucHJlc2NyaWJlRHJvcGRvd25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0UEJUTkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVQQlROXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZURvc2UgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZG9zZVJlZiAhPSBudWxsICYmIHRoaXMuZG9zZVJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5kb3NlUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5kb3NlUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdERvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlRG9zZVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVGcmVxID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZyZXFSZWYgIT0gbnVsbCAmJiB0aGlzLmZyZXFSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuZnJlcVJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuZnJlcVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RGcmVxRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUZyZXFcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlc3RwID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnN0cFJlZiAhPSBudWxsICYmIHRoaXMuc3RwUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnN0cFJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuc3RwUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdHN0cERyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVzdHBcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlRm9vZCA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5mb29kUmVmICE9IG51bGwgJiYgdGhpcy5mb29kUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLmZvb2RSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLmZvb2RSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0Rm9vZERyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVGb29kXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZUluc3RydWN0aW9uID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLkluc3RydWN0aW9uUmVmICE9IG51bGwgJiYgdGhpcy5JbnN0cnVjdGlvblJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5JbnN0cnVjdGlvblJlZi5uYXRpdmVFbGVtZW50ICYmICF0aGlzLkluc3RydWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCAmJiAhdGhpcy5lZGl0SW5zdHJ1Y3Rpb25GbGFnKSB7XHJcbiAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiXHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lZGl0SW5zdHJ1Y3Rpb25GbGFnID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlSW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGUgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucm91dGVSZWYgIT0gbnVsbCAmJiB0aGlzLnJvdXRlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnJvdXRlUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5yb3V0ZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RSb3V0ZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yb3V0ZURhdGFGaWx0ZXIgPSAnJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVJvdXRlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZVB1cnBvc2UgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucHVycG9zZVJlZiAhPSBudWxsICYmIHRoaXMucHVycG9zZVJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5wdXJwb3NlUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5wdXJwb3NlUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdFB1cnBvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvLyBHZW5lcmFsIFNlYXJjaFxyXG4gIHNlYXJjaEhhbmRsZXIoZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICBsZXQgZ2V0TWVkaWNpbmVzVmFsdWUgPSBlLnRhcmdldC52YWx1ZS50cmltKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5tZWRpU2VhcmNoVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIGlmIChlLnRhcmdldC52YWx1ZS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnRhcmdldC52YWx1ZS5sZW5ndGggPj0gMykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgLy90aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcclxuICAgICAgICAvLyB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICB0aGlzLnNlYXJjaE1lZHMoZ2V0TWVkaWNpbmVzVmFsdWUpO1xyXG4gICAgICAgIC8vIH0sIHRoaXMud2FpdFRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hIYW5kbGVyXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHNlYXJjaE1lZHMoZ2V0TWVkaWNpbmVzVmFsdWU6IGFueSkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIGlmICh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoIDwgMyB8fCBnZXRNZWRpY2luZXNWYWx1ZS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0TmFtZTogZ2V0TWVkaWNpbmVzVmFsdWVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLlByb2R1Y3RTZWFyY2hOYW1lID0gZ2V0TWVkaWNpbmVzVmFsdWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSBmYWxzZTtcclxuICAgICAgdmFyIHBic1R5cGUgPSB0aGlzLnJ4T25seVBCUyAmJiB0aGlzLnJ4UHJpdmF0ZSA/IFwiXCIgOiB0aGlzLnJ4T25seVBCUyA/IFwiUEJTLFJQQlNcIiA6IHRoaXMucnhQcml2YXRlID8gXCJQcml2YXRlXCIgOiBcIlwiO1xyXG4gICAgICBjb25zdCBzZWFyY2hNZXRob2QgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNtYXJ0U2VhcmNoID8gY29uZmlnLkdFVF9NRURTX0JZX1NNQVJUX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChnZXRNZWRpY2luZXNWYWx1ZSkgKyAnJnBhZ2U9MSZub09mUmVjPTEwJnBic1R5cGU9JyArIHBic1R5cGVcclxuICAgICAgICA6IGNvbmZpZy5HRVRfTUVEU19CWV9TRUFSQ0ggKyAnP3Byb2R1Y3ROYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQoZ2V0TWVkaWNpbmVzVmFsdWUpICsgJyZwYWdlPTEmbm9PZlJlYz0xMCdcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChzZWFyY2hNZXRob2QpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VhcmNoTWVkc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkTGlzdCA9IHJlcy5yZXNwb25zZS5maWx0ZXIoKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmlzUGJzVHlwZU1hdGNoKGl0ZW0ucGJzVHlwZSwgcGJzVHlwZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IGZpbHRlcmVkTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSBmaWx0ZXJlZExpc3QubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKSAhPSB0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkgJiYgdGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZVNlYXJjaCh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA+IDcgfHwgcmVzLnJlc3BvbnNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5NSU1TUHJpbWFyeVNlYXJjaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcGxldGVTZWFyY2goZ2V0TWVkaWNpbmVzVmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNvbXBsZXRlU2VhcmNoXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9HZXQgUHJvZHVjdCBEZXRhaWxcclxuICBnZXRQcm9kdWN0TGlzdEJ5TmFtZShwcm9kSGlkZGVuVmFsdWU6IGFueSwgcHJvZHVjdE5hbWU6IGFueSwgc2VhcmNoQmFzZTogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaS51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5tZWRpU2VhcmNoVmFsdWUgPSB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHByb2R1Y3ROYW1lKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHZhciB0eXBlID0gc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdicmFuZGtleScgPyAnQksnIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdwcm9kcGFja2tleScgPyAnUFBLJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAndmlydHVhbG5hbWUnID8gJ1ZOJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleScgPyAnUEsnIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdwcm9kdWN0a2V5YWN0aXZlaW5ncmVkaWVudCcgPyAnUEtBJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAnZnVsbHBpJyA/ICdGUEknIDogJ1BOJztcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcHJvZHVjdE5hbWU6IHByb2RIaWRkZW5WYWx1ZSxcclxuICAgICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICAgIHByZXNjcmliZXJUeXBlOiBcIk1QXCJcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnByb2RIaWRkZW5OYW1lID0gcHJvZEhpZGRlblZhbHVlO1xyXG4gICAgICB0aGlzLlByb2R1Y3RUeXBlID0gdHlwZTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuR0VUX01FRFNfQllfTkFNRSArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChwcm9kSGlkZGVuVmFsdWUpICsgJyZ0eXBlPScgKyB0eXBlICsgJyZwcmVzY3JpYmVyVHlwZT1NUCZwYWdlPScgKyB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgKyAnJm5vT2ZSZWM9MTAnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTsgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gcmVzLnJlc3BvbnNlLmxlbmd0aDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLmlzTm9uUGJzRmxhZykge1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMucnhPbmx5Tk9OUEJTRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vICAgaWYgKHRoaXMucnhPbmx5UEJTID09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMucnhPbmx5UEJTRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgdGhpcy5vbkNoZWNrYm94Q2hhbmdlKDIpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8PSAzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucmVzcG9uc2UpICYmIHJlcy5yZXNwb25zZS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuTUlNU1NlY29uZGFyeVNlYXJjaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UHJvZHVjdExpc3RCeU5hbWVcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrYm94Q2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnJ4T25seVBCUyAmJiB0aGlzLnJ4UHJpdmF0ZSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5maWx0ZXIoKHg6IGFueSkgPT4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh4LnBic1R5cGUpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJ4T25seVBCUykge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkpXHJcbiAgICAgICAgICB0aGlzLnJ4T25seVBCU0ZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucnhQcml2YXRlKSB7XHJcbiAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkpXHJcbiAgICAgICAgICB0aGlzLnJ4T25seU5PTlBCU0ZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yeFByaXZhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwuZmlsdGVyKCh4OiBhbnkpID0+ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoeC5wYnNUeXBlKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpIHtcclxuICAgICAgICBpZiAodGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciA9IDE7XHJcbiAgICAgICAgICBsZXQgZ2V0TWVkaWNpbmVzVmFsdWUgPSB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5tZWRpU2VhcmNoVmFsdWUgPSB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWUgPSB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgLy90aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzU3RpbGxTZWFyY2hpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwib25DaGVja2JveENoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ4T25seVBCU0ZpbHRlcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsKSAmJiB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmZpbHRlcigoeDogYW55KSA9PiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHgucGJzVHlwZSkgJiYgeC5wYnNUeXBlICE9ICdub24gUEJTJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyeE9ubHlQQlNGaWx0ZXJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByeE9ubHlOT05QQlNGaWx0ZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgIT0gJycgJiYgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmZpbHRlcigoeDogYW55KSA9PiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHgucGJzVHlwZSkgJiYgeC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gJ25vbiBwYnMnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJ4T25seU5PTlBCU0ZpbHRlclwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0Q2xhc3NGb3JNZWQobWVkOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBpc1NlbGVjdGVkRm9ybXVsYXRpb247XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuSXNTZWxlY3RGb3JtdWxhdGlvbihtZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkICE9IG51bGwgJiZcclxuICAgICAgICAgIG1lZC5wcm9kdWN0SWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAmJlxyXG4gICAgICAgICAgbWVkLnBic0NvZGUgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgJiZcclxuICAgICAgICAgIG1lZC5wcm9kdWN0TmFtZSA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgJiZcclxuICAgICAgICAgIG1lZC5yZXBlYXRzID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzICYmXHJcbiAgICAgICAgICBtZWQubWF4UXR5VW5pdHMgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNTZWxlY3RlZEZvcm11bGF0aW9uXHJcbiAgICAgICAgPyAnbWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveCBSWF9oaWdobGlnaHQnXHJcbiAgICAgICAgOiAnbWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveCc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldENsYXNzRm9yTWVkXCIpO1xyXG4gICAgICByZXR1cm4gXCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDbGFzc0ZvckZhdm91cml0ZU1lZChtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICAvLyB2YXIgaXNTZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICAgIC8vIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkICE9IG51bGwgJiZcclxuICAgICAgICAvLyAgIG1lZC5wcm9kdWN0SWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAmJlxyXG4gICAgICAgIC8vICAgKG1lZC5wYnNDb2RlIT1udWxsP21lZC5wYnNDb2RlOlwiXCIpID09ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9bnVsbD90aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZTpcIlwiKSAmJlxyXG4gICAgICAgIC8vICAgbWVkLnByb2R1Y3ROYW1lID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSAmJlxyXG4gICAgICAgIC8vICAgbWVkLnJlcGVhdHMgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMgJiZcclxuICAgICAgICAvLyAgIG1lZD8uZW5jcnlwdGVkSWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVFbmNyeXB0ZWRJZCAmJlxyXG4gICAgICAgIC8vICAgbWVkLnF1YW50aXR5ID09ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUhPXVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUhPW51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIlxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjayArIFwieFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnVuaXRQZXJQYWNrKVxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICByZXR1cm4gbWVkPy5lbmNyeXB0ZWRJZCA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZUVuY3J5cHRlZElkXHJcbiAgICAgICAgPyAnbWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveCBSWF9oaWdobGlnaHQnXHJcbiAgICAgICAgOiAnbWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveCc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldENsYXNzRm9yTWVkXCIpO1xyXG4gICAgICByZXR1cm4gXCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBJc1NlbGVjdEZvcm11bGF0aW9uKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkLmdlbmVyaWNOYW1lKSA/IG1lZC5nZW5lcmljTmFtZSA6IFwiXCIpID09XHJcbiAgICAgICAgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgP1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIikgJiZcclxuICAgICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQucHJvZHVjdElkKSA/IG1lZC5wcm9kdWN0SWQgOiBcIlwiKSA9PVxyXG4gICAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdElkKSA/XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkIDogXCJcIikgJiYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkLnJlcGVhdHMpID9cclxuICAgICAgICAgICAgbWVkLnJlcGVhdHMgOiBcIlwiKSA9PSAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnJlcGVhdHMpID9cclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cyA6IFwiXCIpICYmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZC5tYXhRdHlVbml0cykgP1xyXG4gICAgICAgICAgICAgICAgbWVkLm1heFF0eVVuaXRzIDogXCJcIikgPT0gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cylcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgOiBcIlwiKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJJc1NlbGVjdEZvcm11bGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRjdXJyZW50aWQobWVkOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1lZGlTZWFyY2hWYWx1ZSAhPSBudWxsICYmIG1lZC5wcm9kRGlzcGxheVZhbHVlID09IHRoaXMubWVkaVNlYXJjaFZhbHVlID8gJ2hlaWdobGlnaHQnIDogJyc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldGN1cnJlbnRpZFwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByZXN0cmljdGlvbkxpc3QgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN0cmljdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgaW5kID0gcmVzdHJpY3Rpb25MaXN0LmluZGV4T2YocmVzdHJpY3Rpb25zW2ldWydyZXN0cmljdGlvblR5cGUnXSk7XHJcbiAgICAgICAgaWYgKGluZCA9PSAtMSkge1xyXG4gICAgICAgICAgcmVzdHJpY3Rpb25MaXN0LnB1c2gocmVzdHJpY3Rpb25zW2ldWydyZXN0cmljdGlvblR5cGUnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN0cmljdGlvbkxpc3QudG9TdHJpbmcoKTtcclxuICAgICAgLy8gICAgbGV0IHJlc3RyaWN0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGlvbnNcIik7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRBbGxNaW1zVmFsdWUoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9BTExNSU1TVkFMVUUgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkICsgXCImY2xpZW50SWQ9XCIgKyB0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRvc2VEYXRhID0gcmVzLmRvc2UgIT0gbnVsbCA/IHJlcy5kb3NlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmZyZXF1ZW5jeSkgPyByZXMuZnJlcXVlbmN5IDogW107XHJcbiAgICAgICAgICAgIHRoaXMuZm9vZERhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5mb29kKSA/IHJlcy5mb29kIDogW107XHJcbiAgICAgICAgICAgIHRoaXMucHVycG9zZURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5wdXJwb3NlKSAhPSBudWxsID8gcmVzLnB1cnBvc2UgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5yb3V0ZSkgIT0gbnVsbCA/IHJlcy5yb3V0ZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNlYXNlRGF0YSA9IHJlcy5jZWFzZSAhPSBudWxsID8gcmVzLmNlYXNlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuY2Vhc2VEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuY2Vhc2UpICE9IG51bGwgPyByZXMuY2Vhc2UgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZW5kdG9waGFybWFjeURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5zZW5kVG9QYXJtYWN5TWFzdGVyKSAhPSBudWxsID8gcmVzLnNlbmRUb1Bhcm1hY3lNYXN0ZXIgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuYXV0aG9yaXR5Rm9ybSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuYXV0aG9yaXR5Rm9ybS5hdXRob3JpdHlGb3JtTm8pID8gcmVzLmF1dGhvcml0eUZvcm0uYXV0aG9yaXR5Rm9ybU5vIDpcIlwiO1xyXG4gICAgICAgICAgICBsZXQgcmVmVmFsQXV0aCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPyB0aGlzLmdldEFkZEF1dGhWYWx1ZSghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5hdXRob3JpdHlGb3JtKSA/ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmF1dGhvcml0eUZvcm0uYXV0aG9yaXR5Rm9ybU5vKSA/IHJlcy5hdXRob3JpdHlGb3JtLmF1dGhvcml0eUZvcm1ObyA6IFtdIDogW10pIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8ucGJzRHZhQXV0aG9yaXR5TnVtYmVyKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5wYnNEdmFBdXRob3JpdHlOdW1iZXIgIT0gMCA/IHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnBic0R2YUF1dGhvcml0eU51bWJlciA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gcmVmVmFsQXV0aDtcclxuICAgICAgICAgICAgdGhpcy5pc05vblBic0ZsYWcgPSB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmlzTm9uUGJzRmxhZykgfHwgcmVzLmlzTm9uUGJzRmxhZyA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSkgPyByZXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5IDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc21hcnRTZWFyY2ggPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5pc0VuYWJsZVNtYXJ0U2VhcmNoKSA/IHJlcy5pc0VuYWJsZVNtYXJ0U2VhcmNoIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByb3V0ZUZpbHRlcihlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMucm91dGVEYXRhRmlsdGVyID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJvdXRlRmlsdGVyXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyUm91dGVJdGVtcyhhcnI6IGFueSwgcXVlcnk6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIGFyci5maWx0ZXIoKGU6IGFueSkgPT5cclxuICAgICAgICBlLnJvdXRlTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImZpbHRlclJvdXRlSXRlbXNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0dldCBpbnN0cnVjdGlvbiB2YWx1ZVxyXG4gIGdldEluc3RydWN0aW9uVmFsdWVzKCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfSU5TVFJVQ1RJT05fVkFMVUUgKyBcIj91c2VySWQ9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBpbnN0cnVjdGlvbiA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgdGhpcy5pbnN0cnVjdGlvbkRhdGEgPSBpbnN0cnVjdGlvbjtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FZGl0IEluc3RydWN0aW9uIHZhbHVlXHJcbiAgZWRpdEluc3RydWN0aW9uKGlkOiBudW1iZXIsIGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gZGF0YS50ZXh0O1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gZGF0YS50ZXh0O1xyXG4gICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gZGF0YS5kZXNjcmlwdGlvbjtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbklkID0gZGF0YS5pZDtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gZGF0YS5kZXNjcmlwdGlvbjtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVkaXRJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGxpc3Qgc2VsZWN0IGluIEluc3RydWN0aW9uXHJcbiAgQ2hhbmdlSW5zdHJ1Y3Rpb24oZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkYXRhPy50ZXh0KSA/IGRhdGEudGV4dCA6ICcnO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGE/LmRlc2NyaXB0aW9uKSA/IGRhdGEuZGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmluc3RWYWwgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGE/LnZhbHVlKSA/IGRhdGEudmFsdWUgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZGF0YT8udmFsdWUpID8gZGF0YS5pZCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkNoYW5nZUluc3RydWN0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5zdHJ1Y3Rpb25PbkNoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaW5zdHJ1Y3Rpb25PbkNoYW5nZVwiKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvLyBjbGVhciBJbnN0cnVjdGlvbiBpbiBJbnN0cnVjdGlvblxyXG4gIGNsZWFySW5zdHJ1Y3Rpb24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNsZWFySW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzYXZlIGluc3RydWN0aW9uIHZhbHVlXHJcbiAgc2F2ZUluc3RydWN0aW9uKCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUpLnRyaW0oKSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81Mi5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81Mi5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTIuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTIubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoU3RyaW5nKHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24pLnRyaW0oKSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81MS5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81MS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTEubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBib2R5ID0ge1xyXG4gICAgICAgIHRleHQ6IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUudHJpbSgpLFxyXG4gICAgICAgIHZhbHVlOiAnMScsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24udHJpbSgpLFxyXG4gICAgICAgIHN0YXR1czogJzAnLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgfTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICBib2R5OiBib2R5LFxyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgICAgaWQ6IHRoaXMuSW5zdHJ1Y3Rpb25JZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5JbnN0cnVjdGlvbklkICE9IG51bGwgJiYgdGhpcy5JbnN0cnVjdGlvbklkICE9ICcnKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgPSBwYXJzZUludCh0aGlzLkluc3RydWN0aW9uSWQpO1xyXG4gICAgICAgIHRoaXMuYXBpU2VydmljZS5QdXROZXcoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5VUERBVEVfSU5TVFJVQ1RJT05fVkFMVUUgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkICsgJyZpZD0nICsgdGhpcy5JbnN0cnVjdGlvbklkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmdldEluc3RydWN0aW9uVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBheWxvYWQgPSBib2R5O1xyXG4gICAgICAgIHRoaXMuYXBpU2VydmljZS5Qb3N0KGJvZHksIGNvbmZpZy5QSFlTSUNJQU4uQUREX0lOU1RSVUNUSU9OX1ZBTFVFKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA9IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmdldEluc3RydWN0aW9uVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIERlbGV0ZSBpbnN0cnVjdGlvblxyXG4gIGRlbGV0ZUluc3RydWN0aW9uKGlkOiBOdW1iZXIpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgaWQ6IGlkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLlB1dE5ldygnJywgY29uZmlnLlBIWVNJQ0lBTi5ERUxFVEVfSU5TVFJVQ1RJT05fVkFMVUUgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkICsgJyZpZD0nICsgaWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmdldEluc3RydWN0aW9uVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGFkZCBuZXcgSW5zdHJ1Y3Rpb25cclxuICBhZGROZXdJbnN0cnVjdGlvbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uSWQgPSAnJztcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImFkZE5ld0luc3RydWN0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2VsZWN0IHJvdXRlIHZhbHVlXHJcbiAgc2VsZWN0Um91dGVzZWFyY1ZhbHVlKHJvdXRlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Um91dGVEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJvdXRlPy5yb3V0ZU5hbWUpID8gcm91dGUucm91dGVOYW1lIDogJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0Um91dGVzZWFyY1ZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2VsZWN0IERvc2UgdmFsdWVcclxuICBzZWxlY3REb3NlVmFsdWUoZG9zZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdERvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZG9zZT8udGV4dCkgPyBkb3NlLnRleHQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZG9zZT8udmFsdWUpID8gZG9zZS52YWx1ZSA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdERvc2VWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCBGcmVxdWVuY3kgdmFsdWVcclxuICBzZWxlY3RGcmVxdWVuY3lWYWx1ZShmcmVxdWVuY3k6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RGcmVxRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZyZXF1ZW5jeT8udGV4dCkgPyBmcmVxdWVuY3kudGV4dCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmcmVxdWVuY3k/LnZhbHVlKSA/IGZyZXF1ZW5jeS52YWx1ZSA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZyZXF1ZW5jeVZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2VsZWN0IEZvb2QgdmFsdWVcclxuICBzZWxlY3RGb29kVmFsdWUoZm9vZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZvb2REcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9vZD8udGV4dCkgPyBmb29kLnRleHQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZvb2RWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFN0cFZhbHVlKHN0cDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdHN0cERyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RwPy5uYW1lKSA/IHN0cC5uYW1lIDogJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0U3RwVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3NlbGVjdCBQdXJwb3NlIHZhbHVlXHJcbiAgc2VsZWN0UHVycG9zZVZhbHVlKHB1cnBvc2U6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RQdXJwb3NlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocHVycG9zZT8ubG9va3VwVGV4dCkgPyBwdXJwb3NlLmxvb2t1cFRleHQgOiAnJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHB1cnBvc2U/LmlkKSA/IHB1cnBvc2UuaWQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdFB1cnBvc2VWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFF1YW50aXR5IGNoYW5nZVxyXG4gIHF1YW50aXR5Q2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29udmVydHF1YW50aXR5dmFsID0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCwgMTApO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsID0gY29udmVydHF1YW50aXR5dmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIC8vdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCA9IHRoaXMucm91bmREYXRhKHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpKS50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicXVhbnRpdHlDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja01vYmlsZShldnQ6IGFueSk6IGFueSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgY2hhckNvZGUgPSAoZXZ0LndoaWNoKSA/IGV2dC53aGljaCA6IGV2dC5rZXlDb2RlO1xyXG4gICAgICBpZiAoY2hhckNvZGUgPiAzMSAmJiAoY2hhckNvZGUgPCA0NyB8fCBjaGFyQ29kZSA+IDU3KSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjaGVja01vYmlsZVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGF5c2NoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBjb252ZXJ0ZGF5c2NoYW5nZSA9IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwsIDEwKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsID0gY29udmVydGRheXNjaGFuZ2UudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGF5c2NoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcGVhdHNDaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gZmFsc2U7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvbnZlcnRyZXBlYXRzdmFsID0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLCAxMCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IGNvbnZlcnRyZXBlYXRzdmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVwZWF0c0NoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy91bmxpc3RlZCBjaGVjayBib3hcclxuICB1bmxpc3RlZFJBKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwidW5saXN0ZWRSQVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaXZhdGVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBQQlMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiUEJTXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUlBCUygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiUlBCU1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vc2VsZWN0ZWQgbWVkaWNpbmVcclxuICBzZWxlY3RGb3JtdWxhdGlvbihtZWQ6IGFueSwgaW5kZXg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbWVkO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gbWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwID8gbWVkLlJlc3RyaWN0aW9uc1swXSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sZW1pIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sbWJjIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVzdHJpY3Rpb25MaXN0cyA9IG1lZC5SZXN0cmljdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZTogYW55KSA9PlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChyZXN0cmljdGlvbkxpc3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvLyBpZiAodGhpcy5zdGF0ZS5zZWxlY3RlZEluZGV4ICE9IGluZGV4KSB7XHJcbiAgICAgIC8vICAgdGhpcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKG1lZCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gdGhpcy5nZXRBZGRBdXRoVmFsdWUodGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuZW5hYmxlUHJlc2NyaWJlQXMobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZvcm11bGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZWxlY3RlZCBGYXZvdXJpdGUgbWVkaWNpbmVcclxuICBzZWxlY3RGYXZvdXJpdGVGb3JtdWxhdGlvbihtZWQ6IGFueSwgaW5kZXg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbWVkO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3RyaWN0aW9ucyA9IG1lZC5SZXN0cmljdGlvbnMgJiYgbWVkLlJlc3RyaWN0aW9ucy5sZW5ndGggIT0gMCA/IG1lZC5SZXN0cmljdGlvbnNbMF0gOiBudWxsO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubG1iYyA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBtZWQuYWlwICE9IG51bGwgPyBtZWQuYWlwLmxlbWkgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKG1lZC5SZXN0cmljdGlvbnMgJiYgbWVkLlJlc3RyaWN0aW9ucy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgdmFyIHJlc3RyaWN0aW9uTGlzdHMgPSBtZWQuUmVzdHJpY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKGU6IGFueSkgPT5cclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uUHJldmlldyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblRleHQgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblRleHQgIT0gJydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAocmVzdHJpY3Rpb25MaXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzUnRwbU5leHQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA9IHRoaXMuZ2V0QWRkQXV0aFZhbHVlKHRoaXMudGVtcEF1dGhvcml0eUZvcm1Obyk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmVuYWJsZVByZXNjcmliZUFzKG1lZCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RGYXZvdXJpdGVGb3JtdWxhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEJyYW5kTmFtZShzZWxlY3RlZEZvcm11bGF0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24pKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwTmFtZTtcclxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZD8uYnJhbmROYW1lKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEJyYW5kTmFtZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmFibGVQcmVzY3JpYmVBcyhtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gaWYgKG1lZC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCIgfHwgdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkpIHtcclxuICAgICAgLy8gICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgIC8vICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAvLyB9IGVsc2VcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiUEJTL1JQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdSUEJTJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlJQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic1R5cGUpICYmIG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgKG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJFWFRFTVBPUkFORU9VUyBQUkVQQVJBVElPTlNcIiB8fCBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiU0VDVElPTiAxMDBcIikgJiYgIXRoaXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzQ29kZSkgJiYgbWVkLnBic0NvZGUgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlBBTExJQVRJVkUgQ0FSRVwiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSAnJyAmJiBtZWQucGJzQ29kZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic0NvZGUpICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBlbHNlIGlmIChtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiU0VDVElPTiAxMDBcIikge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyICE9IFwiXCIgJiZcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIgIT0gbnVsbCAmJiBtZWQucGJzQ29kZSAhPSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9IG51bGwgJiZcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9ICcnICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgLy8gICAgIHRoaXMuc2V0U3RhdGUoeyBwcmVzY3JpYmVBU19QQlM6IHRydWUsIHByZXNjcmliZUFTX1JQQlM6IHRydWUsIFByZXNjcmliZUFTOiBcIlByaXZhdGVcIiB9KTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZW5hYmxlUHJlc2NyaWJlQXNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUcmFkZU5hbWUoKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uOmFueSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuXHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICB2YXIgdHJhZGVOYW1lID0gJyc7XHJcbiAgICAgICAgdmFyIGFtdF90cE5hbWUgPSB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIHZhciB0QnJhbmROYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShhbXRfdHBOYW1lKSA/IGFtdF90cE5hbWUgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYnJhbmQ/LmJyYW5kTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lIDogXCJcIjtcclxuICAgICAgICAvL3ZhciBhbXRfdHBwTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSA6ICcnO1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgdHJhZGVOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSArICcoJyArIHRCcmFuZE5hbWUgKyAnKScgOiBcIlwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSB0QnJhbmROYW1lO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoSXNFeHRlbXAgPT0gdHJ1ZSAmJiBsZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gICB0cmFkZU5hbWUgPSBhbXRfdHBwTmFtZSAhPSBudWxsICYmIGFtdF90cHBOYW1lICE9IFwiXCIgPyBhbXRfdHBwTmFtZSA6IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuIHRyYWRlTmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoSXNFeHRlbXAgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgIHRyYWRlTmFtZSA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhID09IG51bGwgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUudHJpbSgpIDogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGE7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuIHRyYWRlTmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRyYWRlTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0VHJhZGVOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRyYWRlTmFtZURpc3BsYXkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIGFtdF90cE5hbWUgPSB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIHZhciB0QnJhbmROYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShhbXRfdHBOYW1lKSA/IGFtdF90cE5hbWUgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYnJhbmQ/LmJyYW5kTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lIDogXCJcIjtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpKSB7XHJcbiAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoXCJbXCIpO1xyXG4gICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUzID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnNsaWNlKDAsIFBJdGVtVGhyZWUyKTtcclxuICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZTIgPj0gMCA/IFBJdGVtVGhyZWUzLnRyaW0oKSA6IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgfHwgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSBcImdhdXplXCIpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSBcImdhdXplXCIpIHtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUyID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLmxhc3RJbmRleE9mKFwiW1wiKTtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUzID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnNsaWNlKDAsIFBJdGVtVGhyZWUyKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlMiA+PSAwID8gUEl0ZW1UaHJlZTMudHJpbSgpIDogcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlID0gZXh0ZW1wVFRQTmFtZS5sYXN0SW5kZXhPZihcIltcIik7XHJcbiAgICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlMSA9IGV4dGVtcFRUUE5hbWUuc2xpY2UoMCwgUEl0ZW1UaHJlZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZSA+PSAwID8gUEl0ZW1UaHJlZTEudHJpbSgpIDogZXh0ZW1wVFRQTmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIG1wcE5hbWUgPSB0aGlzLmdldE1QUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgIHZhciBTYWNoZXRPclB1bXAgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uc3RyU2FjaGV0T3JQdW1wKSA/IFwiIFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCA6IFwiXCI7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtcHBOYW1lKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChtcHBOYW1lLnRyaW0oKSArIFwiXCIgKyBTYWNoZXRPclB1bXAgKyAnICgnICsgdEJyYW5kTmFtZSArICcpJykudHJpbSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSAobXBwTmFtZS50cmltKCkgKyBcIlwiICsgU2FjaGV0T3JQdW1wKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBzdHJlbmd0aCA9IHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgICAgIHZhciBkaXNwTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5EaXNwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uRGlzcE5hbWUudHJpbSgpIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpICsgXCIgXCIgOiBcIlwiKSArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRCcmFuZE5hbWUpID8gJygnICsgdEJyYW5kTmFtZSArICcpICcgOiBcIlwiKSArIHN0cmVuZ3RoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgKyBcIiBcIiA6IFwiXCIpICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpIDogXCJcIikgKyBcIiBcIiArIHN0cmVuZ3RoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgOiBcIlwiKSArIFwiIFwiICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IFwiXCI7XHJcbiAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFRyYWRlTmFtZURpc3BsYXlcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRNUFBOYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgKHR5cGVvZiBzZWxlY3RlZEZvcm11bGF0aW9uKSA9PT0gJ29iamVjdCcgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0/Lm1wcHMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0/Lm1wcE5hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRNUFBOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEl0ZW1HZW5lcmljSW50ZW50aW9uKGxlbWk6IGJvb2xlYW4sIGlzQnJhbmROYW1lOiBib29sZWFuLCBpc0V4dGVtcDogYm9vbGVhbikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGxlbWkgPT0gdHJ1ZSAmJiBpc0JyYW5kTmFtZSA9PSB0cnVlICYmIGlzRXh0ZW1wICE9IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gJ0InO1xyXG4gICAgICB9IGVsc2UgaWYgKGxlbWkgPT0gdHJ1ZSAmJiBpc0JyYW5kTmFtZSA9PSBmYWxzZSAmJiBpc0V4dGVtcCAhPSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuICdHJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ0cnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEl0ZW1HZW5lcmljSW50ZW50aW9uXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ4U3RyZW5ndGhjYWxjdWxhdGlvbihmb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgJiYgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgIT0gMCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKSAmJiBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjayAhPSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCkgPyBmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXAgOiBcIlwiKSArICcgWycgKyBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyArICcgeCAnICsgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2spLnRyaW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXApID8gZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIikgKyAnIFsnICsgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgKyAnXScpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJ4U3RyZW5ndGhjYWxjdWxhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyByeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcoZm9ybXVsYXRpb246IGFueSkge1xyXG4gIC8vICAgdHJ5IHtcclxuICAvLyAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkpICYmIGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5ICE9IDApIHtcclxuICAvLyAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXApID8gZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIjtcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICByZXR1cm4gJyc7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhTdHJlbmd0aGNhbGN1bGF0aW9uTmV3XCIpO1xyXG4gIC8vICAgICByZXR1cm4gXCJcIjtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHNob3dBdXRob3JpdHlCb3goUmVzdHJpY3Rpb25zOiBhbnksIFByZXNjcmliZUFTOiBhbnksIHJ4QXV0aG9yaXR5OiBhbnksIHVubGlzdGVkUkE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KFJlc3RyaWN0aW9ucykgJiYgUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgUmVzdHJpY3Rpb25zWzBdLnJlc3RyaWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdyZXN0cmljdGVkJyAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3VucmVzdHJpY3RlZCcgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJykgfHwgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoUmVzdHJpY3Rpb25zKSAmJiBSZXN0cmljdGlvbnMubGVuZ3RoID4gMCAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3Jlc3RyaWN0ZWQnICYmIFJlc3RyaWN0aW9uc1swXS5yZXN0cmljdGlvblR5cGUudG9Mb3dlckNhc2UoKSAhPSAndW5yZXN0cmljdGVkJyAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykgfHwgKHJ4QXV0aG9yaXR5ID09IHRydWUgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJykgfHwgKHJ4QXV0aG9yaXR5ID09IHRydWUgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncnBicycpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncnBicycgJiYgdW5saXN0ZWRSQSA9PSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dBdXRob3JpdHlCb3hcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERpcmVjdGlvbnMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZGlyZWN0aW9ucyA9ICcnO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpKSB7XHJcbiAgICAgICAgZGlyZWN0aW9ucyA9IGRpcmVjdGlvbnMgKyAnICcgKyB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbikpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZGlyZWN0aW9ucy50cmltKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldERpcmVjdGlvbnNcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdGF0ZSBuYW1lIGZ1bGwgZm9ybVxyXG4gIGdldFN0YXRlTmFtZUZyb21TdGF0ZUNvZGUocnRwbXN0YXRlTmFtZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzd2l0Y2ggKHJ0cG1zdGF0ZU5hbWUgJiYgcnRwbXN0YXRlTmFtZSAhPSAnJyA/IHJ0cG1zdGF0ZU5hbWUudG9VcHBlckNhc2UoKSA6ICcnKSB7XHJcbiAgICAgICAgY2FzZSAnTlNXJzpcclxuICAgICAgICAgIHJldHVybiAnTmV3IFNvdXRoIFdhbGVzJztcclxuICAgICAgICBjYXNlICdRTEQnOlxyXG4gICAgICAgICAgcmV0dXJuICdRdWVlbnNsYW5kJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1NvdXRoIEF1c3RyYWxpYSc7XHJcbiAgICAgICAgY2FzZSAnVEFTJzpcclxuICAgICAgICAgIHJldHVybiAnVGFzbWFuaWEnO1xyXG4gICAgICAgIGNhc2UgJ1ZJQyc6XHJcbiAgICAgICAgICByZXR1cm4gJ1ZpY3RvcmlhJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1dlc3Rlcm4gQXVzdHJhbGlhJztcclxuICAgICAgICBjYXNlICdBQ1QnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXN0cmFsaWFuIENhcGl0YWwgVGVycml0b3J5JztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ05vcnRoZXJuIFRlcnJpdG9yeSc7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBydHBtc3RhdGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlTmFtZUZyb21TdGF0ZUNvZGVcIik7XHJcbiAgICAgIHJldHVybiBydHBtc3RhdGVOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdXBlcnNjcmlwdCBjb2RlXHJcbiAgc2hyaW5rU3VwZXJTY3JpcHRDb2RlID0gKGlucHV0OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkdXByZXN1bHQgPSBpbnB1dDtcclxuICAgICAgbGV0IGEgPSBpbnB1dC5zcGxpdCgnPHN1cD4nKTtcclxuXHJcbiAgICAgIC8vIHNlYXJjaCBmb3IgcGF0dGVybiBpbiBhXHJcbiAgICAgIGxldCBjb3VudCA9IGEubGVuZ3RoIC0gMTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xyXG4gICAgICAgIC8vIGlmIG1hdGNoIGZvdW5kIGluY3JlYXNlIGNvdW50XHJcbiAgICAgICAgbGV0IHN0YXJ0ID0gJzxzdXA+JztcclxuICAgICAgICBsZXQgZW5kID0gJzwvc3VwPic7XHJcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihzdGFydCkgKyBzdGFydC5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gZHVwcmVzdWx0LmluZGV4T2YoZW5kLCBzdGFydEluZGV4KTtcclxuICAgICAgICBsZXQgZXh0cmFjdGVkVmFsdWUgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggIT0gLTEgJiYgZW5kSW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgIGV4dHJhY3RlZFZhbHVlID0gZHVwcmVzdWx0LnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdHJpbmdOdW1iZXIgPSB0aGlzLmNvbnZlcnRUb1N1cGVyc2NyaXB0KGV4dHJhY3RlZFZhbHVlKTtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdUaGUgbnVtYmVyICcgKyBzdHJpbmdOdW1iZXIgKyAnIGlzIHN1cGVyc2NyaXB0ZWQuJztcclxuXHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2UoLzxzdXA+Lio8XFwvc3VwPi8sICc8c3VwPjwvc3VwPicpO1xyXG4gICAgICAgIC8vIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlRmlyc3QoXCJcXFxcPHN1cD4uKj9cXFxcPC9zdXA+XCIsIFwiPHN1cD5cIiArIFwiXCIgKyBcIjwvc3VwPlwiKTtcclxuICAgICAgICBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZShcclxuICAgICAgICAgICc8c3VwPicgKyBleHRyYWN0ZWRWYWx1ZSArICc8L3N1cD4nLFxyXG4gICAgICAgICAgc3RyaW5nTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyByZXR1cm4gZHVwcmVzdWx0O1xyXG4gICAgICByZXR1cm4gdGhpcy5zaHJpbmtTdWJTY3JpcHRDb2RlKGR1cHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNocmlua1N1cGVyU2NyaXB0Q29kZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy9zdWJzY3JpcHQgY29kZVxyXG4gIHNocmlua1N1YlNjcmlwdENvZGUgPSAoaW5wdXQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGR1cHJlc3VsdCA9IGlucHV0O1xyXG4gICAgICBsZXQgYSA9IGlucHV0LnNwbGl0KCc8c3ViPicpO1xyXG5cclxuICAgICAgLy8gc2VhcmNoIGZvciBwYXR0ZXJuIGluIGFcclxuICAgICAgbGV0IGNvdW50ID0gYS5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgLy8gaWYgbWF0Y2ggZm91bmQgaW5jcmVhc2UgY291bnRcclxuICAgICAgICBsZXQgc3RhcnQgPSAnPHN1Yj4nO1xyXG4gICAgICAgIGxldCBlbmQgPSAnPC9zdWI+JztcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGR1cHJlc3VsdC5pbmRleE9mKHN0YXJ0KSArIHN0YXJ0Lmxlbmd0aDtcclxuICAgICAgICBsZXQgZW5kSW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihlbmQsIHN0YXJ0SW5kZXgpO1xyXG4gICAgICAgIGxldCBleHRyYWN0ZWRWYWx1ZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoc3RhcnRJbmRleCAhPSAtMSAmJiBlbmRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgZXh0cmFjdGVkVmFsdWUgPSBkdXByZXN1bHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0cmluZ051bWJlciA9IHRoaXMuc3Vic2NyaXB0TnVtYmVycyhleHRyYWN0ZWRWYWx1ZSk7XHJcblxyXG4gICAgICAgIGxldCByZXN1bHQgPSAnVGhlIG51bWJlciAnICsgc3RyaW5nTnVtYmVyICsgJyBpcyBzdXBlcnNjcmlwdGVkLic7XHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2UoLzxzdXA+Lio8XFwvc3VwPi8sICc8c3VwPjwvc3VwPicpO1xyXG4gICAgICAgIC8vIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlRmlyc3QoXCJcXFxcPHN1cD4uKj9cXFxcPC9zdXA+XCIsIFwiPHN1cD5cIiArIFwiXCIgKyBcIjwvc3VwPlwiKTtcclxuICAgICAgICBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZShcclxuICAgICAgICAgICc8c3ViPicgKyBleHRyYWN0ZWRWYWx1ZSArICc8L3N1Yj4nLFxyXG4gICAgICAgICAgc3RyaW5nTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZHVwcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaHJpbmtTdWJTY3JpcHRDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb252ZXJ0VG9TdXBlcnNjcmlwdCA9IChpbnB1dDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdXBlcnNjcmlwdERpZ2l0czogYW55ID0ge1xyXG4gICAgICAgICcwJzogJ1xcdTIwNzAnLFxyXG4gICAgICAgICcxJzogJ1xcdTAwQjknLFxyXG4gICAgICAgICcyJzogJ1xcdTAwQjInLFxyXG4gICAgICAgICczJzogJ1xcdTAwQjMnLFxyXG4gICAgICAgICc0JzogJ1xcdTIwNzQnLFxyXG4gICAgICAgICc1JzogJ1xcdTIwNzUnLFxyXG4gICAgICAgICc2JzogJ1xcdTIwNzYnLFxyXG4gICAgICAgICc3JzogJ1xcdTIwNzcnLFxyXG4gICAgICAgICc4JzogJ1xcdTIwNzgnLFxyXG4gICAgICAgICc5JzogJ1xcdTIwNzknLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgbGV0IG91dHB1dCA9ICcnO1xyXG4gICAgICBmb3IgKGxldCBjaGFyIG9mIGlucHV0KSB7XHJcbiAgICAgICAgaWYgKGNoYXIgaW4gc3VwZXJzY3JpcHREaWdpdHMpIHtcclxuICAgICAgICAgIG91dHB1dCArPSBzdXBlcnNjcmlwdERpZ2l0c1tjaGFyXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3V0cHV0ICs9IGNoYXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNvbnZlcnRUb1N1cGVyc2NyaXB0XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzdWJzY3JpcHROdW1iZXJzKHN0cjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgc3Vic2NyaXB0czogYW55ID0ge1xyXG4gICAgICAgICcwJzogJ1xcdTIwODAnLFxyXG4gICAgICAgICcxJzogJ1xcdTIwODEnLFxyXG4gICAgICAgICcyJzogJ1xcdTIwODInLFxyXG4gICAgICAgICczJzogJ1xcdTIwODMnLFxyXG4gICAgICAgICc0JzogJ1xcdTIwODQnLFxyXG4gICAgICAgICc1JzogJ1xcdTIwODUnLFxyXG4gICAgICAgICc2JzogJ1xcdTIwODYnLFxyXG4gICAgICAgICc3JzogJ1xcdTIwODcnLFxyXG4gICAgICAgICc4JzogJ1xcdTIwODgnLFxyXG4gICAgICAgICc5JzogJ1xcdTIwODknLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdmFyIHJlc3VsdCA9ICcnO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzdWJzY3JpcHRzW3N0cltpXV0pIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBzdWJzY3JpcHRzW3N0cltpXV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBzdHJbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInN1YnNjcmlwdE51bWJlcnNcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXV0aG9yaXR5TGFiZWwoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWUpO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1FMRCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnU0EnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1RBUyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVklDJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnQUNUJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBdXRob3JpdHlMYWJlbFwiKTtcclxuICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXRlQXV0aG9yaXR5TGFiZWwoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWUpO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnUUxEJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1Blcm1pdCBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1RBUyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1ZJQyc6XHJcbiAgICAgICAgICByZXR1cm4gJ1dhcnJhbnQgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ0FDVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnTlQnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAnQXV0aG9yaXNhdGlvbiBudW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlQXV0aG9yaXR5TGFiZWxcIik7XHJcbiAgICAgIHJldHVybiBzdGF0ZU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRFeHRlbXBUVFBOYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10KSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkpID8gJyBbJyArIHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgKyAnXScgKyAnIHggJyA6IFwiXCIpICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjaykudHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgPyAnIFsnICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyA6IFwiXCIpKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCkgOiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRFeHRlbXBUVFBOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdW5kRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcm91bmRfVmFsID0gTWF0aC5yb3VuZCh2YWx1ZSk7XHJcbiAgICAgIGlmIChyb3VuZF9WYWwgPCAwKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHJvdW5kX1ZhbDEgPSByb3VuZF9WYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAvLyByb3VuZF9WYWwgPSBwYXJzZUludChyb3VuZF9WYWwxLDEwKTtcclxuICAgICAgICByZXR1cm4gcm91bmRfVmFsMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyb3VuZERhdGFcIik7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXJ4TWVkaWNhcmVDYXJkKG1lZGljYXJlTnVtYmVyOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBtZWRpY2FyZUNhcmQgPSAnJztcclxuICAgICAgbWVkaWNhcmVDYXJkID0gbWVkaWNhcmVOdW1iZXIuc2xpY2UoMCwgMTApO1xyXG4gICAgICByZXR1cm4gbWVkaWNhcmVDYXJkO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlcnhNZWRpY2FyZUNhcmRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXJ4TWVkaWNhcmVJUk4obWVkaWNhcmVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZElSTiA9ICcnO1xyXG4gICAgICBtZWRpY2FyZUNhcmRJUk4gPSBtZWRpY2FyZU51bWJlci5zbGljZSgtMSk7XHJcbiAgICAgIHJldHVybiBtZWRpY2FyZUNhcmRJUk47XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVyeE1lZGljYXJlSVJOXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFVudXN1YWxRdHlGbGFnKHNGb3JtdWxhdGlvbjogYW55LCBxdWFudGl0eVZhbDogYW55LCBQcmVzY3JpYmVBUzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJyB8fCBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykge1xyXG4gICAgICAgIGlmIChzRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgIT0gcXVhbnRpdHlWYWwpIHtcclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0VW51c3VhbFF0eUZsYWdcIik7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdGF0ZSBuYW1lIGZyb20gYWRkcmVzc1xyXG4gIGdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN3aXRjaCAoc3RhdGVOYW1lLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICduZXcgc291dGggd2FsZXMnOlxyXG4gICAgICAgICAgcmV0dXJuICdOU1cnO1xyXG4gICAgICAgIGNhc2UgJ3F1ZWVuc2xhbmQnOlxyXG4gICAgICAgICAgcmV0dXJuICdRTEQnO1xyXG4gICAgICAgIGNhc2UgJ3NvdXRoIGF1c3RyYWxpYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1NBJztcclxuICAgICAgICBjYXNlICd0YXNtYW5pYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1RBUyc7XHJcbiAgICAgICAgY2FzZSAndmljdG9yaWEnOlxyXG4gICAgICAgICAgcmV0dXJuICdWSUMnO1xyXG4gICAgICAgIGNhc2UgJ3dlc3Rlcm4gYXVzdHJhbGlhJzpcclxuICAgICAgICAgIHJldHVybiAnV0EnO1xyXG4gICAgICAgIGNhc2UgJ2F1c3RyYWxpYW4gY2FwaXRhbCB0ZXJyaXRvcnknOlxyXG4gICAgICAgICAgcmV0dXJuICdBQ1QnO1xyXG4gICAgICAgIGNhc2UgJ25vcnRoZXJuIHRlcnJpdG9yeSc6XHJcbiAgICAgICAgICByZXR1cm4gJ05UJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdlbmRlcihnZW5kZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGdlbmRlclRleHQgPSAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIGdlbmRlclRleHQgPVxyXG4gICAgICAgIGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdtJyA/ICdNYWxlJyA6IGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdmJyA/ICdGZW1hbGUnIDogJ05vdCBBdmFpbGFibGUnO1xyXG4gICAgICByZXR1cm4gZ2VuZGVyVGV4dDtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0R2VuZGVyXCIpO1xyXG4gICAgICByZXR1cm4gJ05vdCBBdmFpbGFibGUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R2VuZGVyQ29kZShnZW5kZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGdlbmRlckNvZGUgPSAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIGdlbmRlckNvZGUgPSBnZW5kZXIudG9Mb3dlckNhc2UoKSA9PSAnbScgPyAnTScgOiBnZW5kZXIudG9Mb3dlckNhc2UoKSA9PSAnZicgPyAnRicgOiAnVSc7XHJcbiAgICAgIHJldHVybiBnZW5kZXJDb2RlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRHZW5kZXJDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gJ1UnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFkKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZSA8IDEwID8gJzAnICsgdmFsdWUgOiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGFkXCIpO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRPZmZzZXQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIC8vIHZhciBkYXRlID0gdGhpcy5zdGF0ZS5zdGFydERhdGU7XHJcbiAgICAgIHZhciBzaWduID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpID4gMCA/ICctJyA6ICcrJztcclxuICAgICAgdmFyIG9mZnNldCA9IE1hdGguYWJzKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XHJcbiAgICAgIHZhciBob3VycyA9IHRoaXMucGFkKE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApKTtcclxuICAgICAgdmFyIG1pbnV0ZXMgPSB0aGlzLnBhZChvZmZzZXQgJSA2MCk7XHJcbiAgICAgIHJldHVybiBob3VycyArICc6JyArIG1pbnV0ZXM7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldE9mZnNldFwiKTtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaHRtbFRvRm9ybWF0dGVkVGV4dChyZXN0cmljdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gcmVzdHJpY3Rpb24ucmVwbGFjZSgvPGJyIFxcLz4vZywgJyonKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaHRtbFRvRm9ybWF0dGVkVGV4dFwiKTtcclxuICAgICAgcmV0dXJuIHJlc3RyaWN0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93KEJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9IEJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJicmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBQUk5DaGFuZ2UoUFJOOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhQUk4gPSBQUk47XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiUFJOQ2hhbmdlXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGlzQ2hhbmdlQnJhbmROYW1lKGlzQnJhbmROYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBpc0JyYW5kTmFtZTtcclxuICAgICAgaWYgKCFpc0JyYW5kTmFtZSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpc0NoYW5nZUJyYW5kTmFtZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbmRUb1BoYXJtYWN5Q2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5KVxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VuZFRvUGhhcm1hY3lDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlUnRwbU1vZGFsKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuaXNSdHBtTmV4dCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzKSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiBBcnJheS5pc0FycmF5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblsncnRwbVN0YXRlcyddKSAmJiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uWydydHBtU3RhdGVzJ10gYXMgYW55W10pLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IGlzUnRwbVN0YXRlcyA9ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25bJ3J0cG1TdGF0ZXMnXSBhcyBhbnlbXSkuaW5jbHVkZXModGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSk7XHJcbiAgICAgICAgICAgIGlmIChpc1J0cG1TdGF0ZXMpIHtcclxuICAgICAgICAgICAgICB2YXIgZGF0YSA9IFwiVGhlIHNlbGVjdGVkIGRydWcgY29tZXMgdW5kZXIgUmVhbCBUaW1lIFByZXNjcmlwdGlvbiBNb25pdG9yaW5nIChSVFBNKSBpbiBcIiArIHRoaXMuZ2V0U3RhdGVOYW1lRnJvbVN0YXRlQ29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKSArIFwiLiBQbGVhc2UgcmV2aWV3LlwiXHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzUnRwbU5leHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbmNsdWRlUnRwbU1vZGFsXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRXByZXNjcmlwZVNlbmQoZmxhZzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuZVByZXNjcmlwdGlvblZhbGlkYXRpb24oZmxhZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUgPSAnRSc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChmbGFnID09IDIpIHtcclxuICAgICAgICAgIHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpICYmIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gXCJwYnNcIiAmJiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSkudG9VcHBlckNhc2UoKSA9PSBcIk5TV1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwgMSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSAmJiBmbGFnICE9IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ29uZmlybVBhdGllbnRQb3B1cCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHkgJiYgZmxhZyAhPSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ29uZmlybVBhdGllbnRQb3B1cCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0udG9Mb3dlckNhc2UoKSA9PSAndW5zY2hlZHVsZWQnID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSA6ICcnKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSAnczgnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5pc1Bhc3N3b3JkQ2hlY2spIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwgMikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZUNvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJFcHJlc2NyaXBlU2VuZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFBhcGVycHJlc2NyaXBlU2VuZChmbGFnOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICdNJztcclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5hYm9ydGRpc2FibGUgPSBmYWxzZTtcclxuICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgIHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpICYmIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gXCJwYnNcIiAmJiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSkudG9VcHBlckNhc2UoKSA9PSBcIk5TV1wiKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFBhc3N3b3JkQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGZsYWcgIT0gMikge1xyXG4gICAgICAgICAgICB0aGlzLkNvbmZpcm1QYXRpZW50UG9wdXAoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHkgJiYgZmxhZyAhPSAyICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTY3JpcHRUb1BoYXJtYWN5ID09IDApIHtcclxuICAgICAgICAgIHRoaXMuQ29uZmlybVBhdGllbnRQb3B1cCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc1NjcmlwdFRvUGhhcm1hY3kgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB9ICAgICBcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0udG9Mb3dlckNhc2UoKSA9PSAndW5zY2hlZHVsZWQnID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSA6ICcnKSA6IFwiXCI7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmIHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gJ3M4JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaXNQYXNzd29yZENoZWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZUNvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiRXByZXNjcmlwZVNlbmRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBDb25maXJtUGF0aWVudFBvcHVwKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENvbmZpcm1QYXRpZW50Q29udGFjdERldGFpbHNDb21wb25lbnQsIHRoaXMuY29udGVudCwgMSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09ICdzOCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmlzUGFzc3dvcmRDaGVjaykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwgMikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHJlc3BvbnNlLmlzUHJpbnRBdmFpbGFibGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gcmVzcG9uc2UuQWRkcmVzc1NlbmRUb0FkZFR5cGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gcmVzcG9uc2UucnhudW1iZXI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IHJlc3BvbnNlLnJ4ZW1haWxJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHJlc3BvbnNlLmlzUHJpbnRBdmFpbGFibGU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSByZXNwb25zZS5BZGRyZXNzU2VuZFRvQWRkVHlwZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IHJlc3BvbnNlLnJ4bnVtYmVyO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IHJlc3BvbnNlLnJ4ZW1haWxJZDtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gJyc7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQ29uZmlybVBhdGllbnRQb3B1cFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXNjcmlwZVByaW50KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9ICdkcmFmdCcpIHx8ICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJykpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hYm9ydGRpc2FibGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gJ00nO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gXCJTTVNcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgc2NoZWR1bGVOdW1iZXIgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgPyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdLnRvTG93ZXJDYXNlKCkgPT0gJ3Vuc2NoZWR1bGVkJyA/ICcnIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0gOiAnJykgOiBcIlwiO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmIHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gJ3M4JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaXNQYXNzd29yZENoZWNrKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFBhc3N3b3JkQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsMikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZUNvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlUHJpbnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmRpY2F0aW9uQXV0aG9yaXR5KG1heFF0eVVuaXRzOiBhbnksIHF1YW50aXR5VmFsOiBhbnksIHJlcGVhdHM6IGFueSwgcmVwZWF0c1ZhbDogYW55LCBpbmRleDogYW55LCByZXN0cmljdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdwcmVzY3JpYmVkJyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHZhciB0ZW1wRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICB2YXIgcmVwbGFjZXZhbHVlID0gdGhpcy5odG1sVG9Gb3JtYXR0ZWRUZXh0KHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCk7XHJcbiAgICAgIHRlbXBEaXZFbGVtZW50LmlubmVySFRNTCA9IHJlcGxhY2V2YWx1ZTtcclxuICAgICAgdmFyIHZhbHVlID0gdGVtcERpdkVsZW1lbnQudGV4dENvbnRlbnQgfHwgdGVtcERpdkVsZW1lbnQuaW5uZXJUZXh0IHx8ICcnO1xyXG4gICAgICBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gcGFyc2VGbG9hdChtYXhRdHlVbml0cykgOiAxKSA8IHBhcnNlSW50KHF1YW50aXR5VmFsKSB8fCBwYXJzZUludChyZXBlYXRzKSA8IHBhcnNlSW50KHJlcGVhdHNWYWwpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPSBpbmRleDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSAnJztcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPSBpbmRleDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCA/IHJlc3RyaWN0aW9uLnN0cmVhbWxpbmVkQ29kZSA6ICcnO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbmRpY2F0aW9uQXV0aG9yaXR5XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TWF4UXVhbnRpdHkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjayArIFwieFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnVuaXRQZXJQYWNrO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubnVtYmVyT2ZQYWNrKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm51bWJlck9mUGFjayAhPSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cykpXHJcbiAgICAgICAgICByZXR1cm4gKHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgPyBcIjEgeCBcIiA6IFwiXCIpICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0TWF4UXVhbnRpdHlcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdFF1YW50aXR5KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5udW1iZXJPZlBhY2spICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjaztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IFwiMSB4IFwiIDogXCJcIikgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHNcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RGVmYXVsdFF1YW50aXR5XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IG5ld1ZhbHVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIm9uSW5wdXRDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0Y2hhbmdlQXBwcm92YWxObyhuZXdWYWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObyA9IG5ld1ZhbHVlLnJlcGxhY2UoL1teYS16QS1aIDAtOV0vZywgXCJcIikucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbklucHV0Y2hhbmdlQXBwcm92YWxOb1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEFkZEF1dGhWYWx1ZShudW06IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobnVtKSkge1xyXG4gICAgICAgIGNvbnN0IGFyck9mRGlnaXRzID0gQXJyYXkuZnJvbShTdHJpbmcobnVtKSwgTnVtYmVyKTtcclxuICAgICAgICBsZXQgdmFsdWVPZkF1dGhvcml0eUFyciA9IHRoaXMuYWRkQXV0aFZhbHVlKGFyck9mRGlnaXRzKTtcclxuICAgICAgICBsZXQgZ2V0UmVtYWluZGVyVmFsdWUgPSB2YWx1ZU9mQXV0aG9yaXR5QXJyICUgOTtcclxuICAgICAgICBsZXQgYWRkUmVtYWluZGVyVmFsdWVBdExhc3QgPSAnJyArIG51bSArIGdldFJlbWFpbmRlclZhbHVlLnRvRml4ZWQoKTtcclxuICAgICAgICByZXR1cm4gYWRkUmVtYWluZGVyVmFsdWVBdExhc3Q7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWRkQXV0aFZhbHVlXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEF1dGhWYWx1ZShhcnJPZkRpZ2l0czogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgYWRkZWRWYWx1ZSA9IDA7XHJcbiAgICAgIGFyck9mRGlnaXRzLm1hcCgobnVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBhZGRlZFZhbHVlID0gbnVtICsgYWRkZWRWYWx1ZTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhZGRlZFZhbHVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhZGRBdXRoVmFsdWVcIik7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy90aGUgYmVsb3cgY29kZSB3aWxsIGhpdCB0aGUgZVJYIGFuZCByZXR1cm4gdGhlIHZhbHVlIHdpdGggYmFyY29kZVxyXG4gIHByZXNjcmliZU1lZCgpIHtcclxuICAgIHZhciBib2R5ID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTMubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTMuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTMuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTMubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVcIikge1xyXG4gICAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdmFyIHBhdGllbnREZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgdmFyIHBoeXNpY2lhbkRldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICB2YXIgbWVkaWNhcmVDYXJkID0gJyc7XHJcbiAgICAgIGlmIChwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlcikge1xyXG4gICAgICAgIHZhciBtZWRObzEgPSBwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlci5yZXBsYWNlKC8gL2csICcnKTtcclxuICAgICAgICBtZWRObzEgPSBtZWRObzEucmVwbGFjZSgvXy9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIG1lZGljYXJlQ2FyZCA9IG1lZE5vMTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcGJzTWFudWZhY3R1cmVyQ29kZVNldCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNNYW51ZmFjdHVyZXJDb2RlcykgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNNYW51ZmFjdHVyZXJDb2Rlcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXNbMF0pID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNNYW51ZmFjdHVyZXJDb2Rlc1swXSA6ICcnO1xyXG4gICAgICBsZXQgY2hlY2tBdXRob3JpdHlCb3ggPSB0aGlzLnNob3dBdXRob3JpdHlCb3goc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSk7XHJcbiAgICAgIGJvZHkgPSB7XHJcbiAgICAgICAgaXNTaG93QXV0aG9yaXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzU2hvd0F1dGhvcml0eSxcclxuICAgICAgICBwYnNMaXN0SW5zdHJ1Y3Rpb25zOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgOiBcIlwiLFxyXG4gICAgICAgIGlzQnJhbmROYW1lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lLFxyXG4gICAgICAgIGluY2x1ZGVCcmFuZEZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUsXHJcbiAgICAgICAgcmVzdHJpY3RlZFBic1NlbGVjdGVkSW5kZXg6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgKyAxIDogJycsXHJcbiAgICAgICAgcnhJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkIDogJycsXHJcbiAgICAgICAgbUFQYXRpZW50SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yUGF0aWVudElkLFxyXG4gICAgICAgIG1BUGhhcm1hY2lzdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBoeXNpY2lhbklkLFxyXG4gICAgICAgIG1BRmFjaWxpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JGYWNpbGl0eUlkLFxyXG4gICAgICAgIHByaXZhY3lTdGF0ZW1lbnQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyA/IDAgOiAxLFxyXG4gICAgICAgIGhwaUk6IHBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckFocHJhTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJBaHByYU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyR2l2ZW5OYW1lczogcGh5c2ljaWFuRGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckZhbWlseU5hbWU6IHBoeXNpY2lhbkRldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVNb2JpbGU6IHBoeXNpY2lhbkRldGFpbHMubW9iaWxlUGhvbmUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVFbWFpbDogcGh5c2ljaWFuRGV0YWlscy5lbWFpbCxcclxuICAgICAgICBvcmdIcGlPOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA6ICcnLFxyXG4gICAgICAgIG9yZ05hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdOYW1lIDogJycsXHJcbiAgICAgICAgb3JnRW1haWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTE6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUxKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NMaW5lMjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1N1YnVyYjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmIgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzUG9zdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpID8gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZSkgOiAnJyxcclxuICAgICAgICBpaGk6IHBhdGllbnREZXRhaWxzLmloaU51bWJlcixcclxuICAgICAgICBtZWRpY2FyZU51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUNhcmQobWVkaWNhcmVDYXJkKSA6ICcnLFxyXG4gICAgICAgIG1lZGljYXJlSXJuOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZGljYXJlQ2FyZCkgPyB0aGlzLmVyeE1lZGljYXJlSVJOKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZU51bWJlckV4cGlyeTogcGF0aWVudERldGFpbHMubWVkaWNhcmVFeHBpcnksXHJcbiAgICAgICAgZGF0ZU9mQmlydGg6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHBhdGllbnREZXRhaWxzLmRvYiwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgICBmYW1pbHlOYW1lOiBwYXRpZW50RGV0YWlscy5sYXN0TmFtZSxcclxuICAgICAgICBnaXZlbk5hbWVzOiBwYXRpZW50RGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcGF0aWVudFVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIHVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBnZW5kZXJDb2RlOiB0aGlzLmdldEdlbmRlckNvZGUocGF0aWVudERldGFpbHMuZ2VuZGVyKSxcclxuICAgICAgICBob21lTW9iaWxlOiBwYXRpZW50RGV0YWlscy5waG9uZSxcclxuICAgICAgICBob21lRW1haWw6IHBhdGllbnREZXRhaWxzLmVtYWlsLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMTogcGF0aWVudERldGFpbHMuYWRkcmVzczEsXHJcbiAgICAgICAgYWRkcmVzc0xpbmUyOiBwYXRpZW50RGV0YWlscy5hZGRyZXNzMixcclxuICAgICAgICBhZGRyZXNzU3VidXJiOiBwYXRpZW50RGV0YWlscy5jaXR5LFxyXG4gICAgICAgIGFkZHJlc3NQb3N0Q29kZTogcGF0aWVudERldGFpbHMucG9zdENvZGUsXHJcbiAgICAgICAgYWRkcmVzc1N0YXRlOiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUocGF0aWVudERldGFpbHMuc3RhdGUpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5EYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUsICd5eXl5LU1NLWRkJykgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBzdHJlbmd0aDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA6IFwiIFwiLFxyXG4gICAgICAgIGRpcmVjdGlvbnM6IHRoaXMuZ2V0RGlyZWN0aW9ucygpLFxyXG4gICAgICAgIGJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd2VkOiB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgbWF4aW11bU51bWJlck9mUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgIG1pbmltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBcIlwiID8gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgOiBcIi0xXCIsXHJcbiAgICAgICAgcGF0aWVudEN0Z0ZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID09IHRydWUgPyAwIDogMSxcclxuICAgICAgICBwYnNJdGVtQ29kZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIDogXCJcIixcclxuICAgICAgICBwYnNJdGVtQ29kZVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZVRleHQgOiBcIlwiLFxyXG4gICAgICAgIHBic0l0ZW1NYW51ZmFjdHVyZXI6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPyBwYnNNYW51ZmFjdHVyZXJDb2RlU2V0IDogJycsXHJcbiAgICAgICAgc3RhdGVBdXRob3JpdHlOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlcikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyLnRyaW0oKSA6ICcnLFxyXG4gICAgICAgIHJlYXNvbkZvclRoZXJhcGV1dGljR29vZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbi50cmltKCkgOiAnJyxcclxuICAgICAgICB1bnVzdWFsUXR5RmxhZzogdGhpcy5zZXRVbnVzdWFsUXR5RmxhZyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24sIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMpLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2RRdWFudGl0eTogcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCksXHJcbiAgICAgICAgY29tcGxleEluc3RydWN0aW9uczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgYW10TXBwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVE1QUENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkFNVE1QUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdE1wcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVFRQUENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkFNVFRQUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRUUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10LmFtdGNvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5hbXRjb2RlIDogJycsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25NaW1zQ29kZTogJycsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25Mb2NhbENvZGU6ICcnLFxyXG4gICAgICAgIC8vIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uRWFuQ29kZTogXCJcIixcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkVhblRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gJ25vbiBwYnMnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uQ29kZTogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uQ29kZSxcclxuICAgICAgICBwcmVzY3JpYmVyT2NjdXBhdGlvblRleHQ6IHBoeXNpY2lhbkRldGFpbHMub2NjdXBhdGlvblRleHQsXHJcbiAgICAgICAgcHJlc2NyaWJlclBlcnNvblRpdGxlOiBwaHlzaWNpYW5EZXRhaWxzLnByZWZpeCxcclxuICAgICAgICBwcmVzY3JpYmVyUXVhbGlmaWNhdGlvbnM6IHBoeXNpY2lhbkRldGFpbHMuc3VmZml4LFxyXG4gICAgICAgIG9yZ1Bob25lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdNb2JpbGUgOiAnJyxcclxuICAgICAgICBvcmdGYXg6ICcnLFxyXG4gICAgICAgIGxvY2FsU3lzdGVtSUQ6IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudFVzZXJJZCxcclxuICAgICAgICBhZGRyZXNzU2VuZFRvQWRkVHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSxcclxuICAgICAgICBhZGRyZXNzRW1haWw6IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCkgPyBwYXRpZW50RGV0YWlscy5lbWFpbCA6IHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkLFxyXG4gICAgICAgIGFkZHJlc3NTbXM6IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyKSA/IHBhdGllbnREZXRhaWxzLnBob25lIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlcixcclxuICAgICAgICBnZW5kZXJUZXh0OiB0aGlzLmdldEdlbmRlcihwYXRpZW50RGV0YWlscy5nZW5kZXIpLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMzogJycsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y1RpbWU6ICcwMS0wMS0xOTcwIDA5OjA2OjA5JywgLy8gcHJlc2NyaXB0aW9uV3JpdHRlblV0Y1RpbWU6IG1vbWVudChuZXcgRGF0ZSgpKS5mb3JtYXQoXCJNTS1ERC15eXl5IGhoOm1tOnNzXCIpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5VdGNPZmZzZXQ6IHRoaXMuZ2V0T2Zmc2V0KCksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uRXhwaXJlc1ZhbHVlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLmVuZERhdGUsICdNTS9kZC95eXl5JykgOiBcIlwiLFxyXG4gICAgICAgIGFjdGl2ZUluZ3JlZGllbnQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIGZvcm11bGE6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgOiBcIlwiLFxyXG4gICAgICAgIGFkZGl0aW9uYWxDb21tZW50czogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICBhc2xDb25zZW50OiAxLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbk5vdGVEZXRhaWxOb3RlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZS50cmltKCksXHJcbiAgICAgICAgZHZhTnVtYmVyOiBwYXRpZW50RGV0YWlscy5kdmFOdW1iZXIsXHJcbiAgICAgICAgZHZhVHlwZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ25vbmUnID8gcGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSA6ICcnLFxyXG4gICAgICAgIHBic0FwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8udHJpbSgpIDogJycsIC8vaW5mb3JtIHRvIHN0ZXBoZW5cclxuICAgICAgICByb3V0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlLnRyaW0oKSA6ICcnLFxyXG4gICAgICAgIC8vcHJvdmlkZXJOdW1iZXI6JycsXHJcbiAgICAgICAgcHJlc2NyaWJlclR5cGU6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlclR5cGUsXHJcbiAgICAgICAgbWVkaWNpbmVOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIixcclxuICAgICAgICBicmFuZE5hbWU6IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZ2VuZXJpY05hbWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LklzRXh0ZW1wKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IHRoaXMuZ2V0RXh0ZW1wTVBQTmFtZSgpKSxcclxuICAgICAgICAvL2l0ZW1HZW5lcmljSW50ZW50aW9uOiBnZXRJdGVtR2VuZXJpY0ludGVudGlvbih0aGlzLnN0YXRlLmxlbWksdGhpcy5zdGF0ZS5pc0JyYW5kTmFtZSx0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSksXHJcbiAgICAgICAgaXRlbUdlbmVyaWNJbnRlbnRpb246IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSB0cnVlID8gJ0InIDogJ0cnLFxyXG4gICAgICAgIHNjaGVkdWxlTnVtYmVyOiB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gXCJcIiA/IHRoaXMucGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSxcclxuICAgICAgICBkb2N0b3JOb3RlczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICByZWd1bGF0aW9uMjQ6IHRoaXMuY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0ID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgaXNFeHRlbXA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSBudWxsID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyAwIDogMSA6IDEsXHJcbiAgICAgICAgLy8gZXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbjogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gIT0gJycgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uRXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbiA6ICcnLFxyXG4gICAgICAgIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiAnJyxcclxuICAgICAgICBhbm5vdGF0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24udHJpbSgpIDogXCJcIixcclxuICAgICAgICB1blVzdWFsRG9zZUZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgdHJhZGVOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHRoaXMuZ2V0VHJhZGVOYW1lKCkpLFxyXG4gICAgICAgIC8vcmVzdHJpY3Rpb25zOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSAnJyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXN0cmljdGlvbnMgOiAnJyxcclxuICAgICAgICAvLyBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIG1heGltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiAnJyxcclxuICAgICAgICBjb21wbGV4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkIDogMCxcclxuICAgICAgICB2aXNpdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZpc2l0SWQsXHJcbiAgICAgICAgc2NyaXB0VHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLFxyXG4gICAgICAgIGRvc2U6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgOiBcIlwiLFxyXG4gICAgICAgIGZyZXF1ZW5jeTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSA6IFwiXCIsXHJcbiAgICAgICAgZm9vZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA6IFwiXCIsXHJcbiAgICAgICAgcHJlc2NyaWJlQXM6IHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgcHJuOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgc2NyaXB0RGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIixcclxuICAgICAgICBzdGFydERhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUsICdNTS9kZC95eXl5JykgOiBcIlwiLFxyXG4gICAgICAgIHB1cnBvc2U6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLnRyaW0oKSxcclxuICAgICAgICBwYnNOb3RlczogdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNOb3RlcyxcclxuICAgICAgICBpc0FjdGl2ZTogMCxcclxuICAgICAgICBwcm9kdWN0SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0SWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCA6IFwiXCIsXHJcbiAgICAgICAgYW10VGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmZvcm11bGEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kRG9zZVVuaXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgcHJlc2NyaWJlclJvbGVDb2RlOiAnJyxcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZVRleHQ6ICcnLFxyXG4gICAgICAgIG9yZ0hpY0xvY2F0aW9uSWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnSGljTG9jYXRpb25JZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkIDogJycsXHJcbiAgICAgICAgb3JnUm9sZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZUNvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZUNvZGUgOiAnJyxcclxuICAgICAgICBvcmdSb2xlVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlVGV4dCA6ICcnLFxyXG4gICAgICAgIGF1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8udHJpbSgpIDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXJGbGFnOiBwYXJzZUZsb2F0KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID8gMSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uc1t0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZF0uc3RyZWFtbGluZWRDb2RlKSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpID09IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyAwIDogMSxcclxuICAgICAgICAvLyBwYnNBdXRob3JpdHlQcmVzY3JpcHRpb25OdW1iZXI6dGhpcy5zdGF0ZS5hcHByb3ZhbE5vID8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vIDogXCJcIixcclxuICAgICAgICAvLyBzdHJlYW1saW5lZEF1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiB0aGlzLnN0YXRlLmFwcHJvdmFsTm9cclxuICAgICAgICAvLyAgID8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vXHJcbiAgICAgICAgLy8gICA6IFwiXCIsXHJcbiAgICAgICAgLy8gcGJzQXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6IFwiXCIsXHJcbiAgICAgICAgLy9iYXJjb2RlXHJcbiAgICAgICAgLy9zY3JpcHROdW1iZXI6IFwiXCIsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSksXHJcbiAgICAgICAgZW9wRGlzcGxheU5hbWU6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09IFwiZVwiID8gdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSkgOiB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLFxyXG4gICAgICAgIGl0ZW1TdHJlbmd0aFhtbDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lkl0ZW1TdHJlbmd0aFhtbCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXRlbVN0cmVuZ3RoWG1sIDogXCIgXCIsXHJcbiAgICAgICAgLy9hdXRob3JpdHlWYWx1ZVxyXG4gICAgICAgIHBic0R2YUF1dGhvcml0eU51bWJlcjogY2hlY2tBdXRob3JpdHlCb3ggPyB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA6IDAsXHJcbiAgICAgICAgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSksLy90aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSksXHJcbiAgICAgICAgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZEZvdXI6IHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpICYmIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gXCJwYnNcIiAmJiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSkudG9VcHBlckNhc2UoKSA9PSBcIk5TV1wiICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09PSBcImVcIiA/IHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZEZvdXIgOiAnJyxcclxuICAgICAgICB1bmxpc3RlZEl0ZW1SZXBhdEF1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID09IHRydWUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgaXNQcmludEF2YWlsYWJsZTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRPbmU6IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKS50b0xvd2VyQ2FzZSgpID09IFwiczhcIiA/IHRoaXMubnVtYmVyVG9Xb3JkKHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpKSA6ICcnLFxyXG4gICAgICAgIG15U0xDb25zZW50OiB0aGlzLmNvbW1vblNlcnZpY2VzLm15U0xDb25zZW50LFxyXG4gICAgICAgIHNlbmRUb1BoYXJtYWN5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5LFxyXG4gICAgICAgIHNlbmRUb1BoYXJtYWN5VmFsdWU6IHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSxcclxuICAgICAgICBlbWVyZ2VuY3lTdXBwbHk6IHRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5LFxyXG4gICAgICAgIG1vbGVjdWxlU3RyZW5ndGhHcmlkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubW9sZWN1bGVTdHJlbmd0aEdyaWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGhHcmlkIDogJycsXHJcbiAgICAgICAgZW50aXR5SWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5lbnRpdHlJZCxcclxuICAgICAgICBpc1ByZXNjcmliZUFuZFByaW50OiB0aGlzLmlzZXByaXNjcmliZXByaW50LFxyXG4gICAgICAgIGFtdENvZGVTeXN0ZW06ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXRDb2RlU3lzdGVtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRDb2RlU3lzdGVtIDogXCJcIixcclxuICAgICAgICBhbXRWZXJzaW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10VmVyc2lvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10VmVyc2lvbiA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlXaXRoVW5pdDogdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubWF4UXR5VW5pdHMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzIDogXCJcIixcclxuICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgICBwcm9kdWN0UGFja0lkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RQYWNrSWQgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdFBhY2tJZCA6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5QUkVTQ1JJQkUpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZTtcclxuICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YSA9IHJlcztcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRFbmREYXRlQWhlYWQoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlICE9IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyZXMuaXNBb3J0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVhbFRpbWVQcmVzY3JpcHRpb25Nb25pdG9yaW5nQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIHJlcy5yZXNwb25zZV9tZXNzYWdlKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9tZXNzYWdlICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX21lc3NhZ2UgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlID0gcmVzLmVycm9yX2NvZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQpIHx8ICF0aGlzLmFib3J0ZGlzYWJsZSlcclxuICAgICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcjtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSA9IGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGVcclxuICAgICAgICBpZiAodGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCB8fCAhdGhpcy5hYm9ydGRpc2FibGUpXHJcbiAgICAgICAgICB0aGlzLnNob3dSZXNwb25zZU1lc3NhZ2UoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBNcHJlc2NyaWJlTWVkKGlkOiBudW1iZXIpIHtcclxuICAgIHZhciBib2R5ID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoaWQgPT0gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLmVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKGlkKSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoaWQgPT0gMikge1xyXG4gICAgICAgIGlmICgodGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnTScgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc3RhdHVzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKSB8fCAodGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnRScpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSB0cnVlO1xyXG4gICAgICBpZiAoaWQgPT0gMSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IFwiRVwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlNNU1wiO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IFwiTVwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNob3dBdXRob3JpdHlCb3godGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucywgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUywgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSwgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSA9PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pKSB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81My5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81My5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81My5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81My5tZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgIHZhciBwYXRpZW50RGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgIHZhciBwaHlzaWNpYW5EZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICB2YXIgc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZCA9ICcnO1xyXG4gICAgICBpZiAocGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIpIHtcclxuICAgICAgICB2YXIgbWVkTm8xID0gcGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIucmVwbGFjZSgvIC9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoL18vZywgJycpO1xyXG4gICAgICAgIG1lZE5vMSA9IG1lZE5vMS5yZXBsYWNlKC8tL2csICcnKTtcclxuICAgICAgICBtZWRpY2FyZUNhcmQgPSBtZWRObzE7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBic01hbnVmYWN0dXJlckNvZGVTZXQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LnBic01hbnVmYWN0dXJlckNvZGVzKSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzLmxlbmd0aCAhPSAwID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNNYW51ZmFjdHVyZXJDb2Rlc1swXSA6ICcnO1xyXG5cclxuICAgICAgbGV0IGNoZWNrQXV0aG9yaXR5Qm94ID0gdGhpcy5zaG93QXV0aG9yaXR5Qm94KFxyXG4gICAgICAgIHNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLFxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSxcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcclxuICAgICAgKTtcclxuICAgICAgYm9keSA9IHtcclxuICAgICAgICByeElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhpZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgOiAnJyxcclxuICAgICAgICBpc1Nob3dBdXRob3JpdHk6IHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5LFxyXG4gICAgICAgIHBic0xpc3RJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA6IFwiXCIsXHJcbiAgICAgICAgaXNCcmFuZE5hbWU6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUsXHJcbiAgICAgICAgaW5jbHVkZUJyYW5kRmxhZzogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICByZXN0cmljdGVkUGJzU2VsZWN0ZWRJbmRleDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCArIDEgOiBcIlwiLFxyXG4gICAgICAgIG1BUGF0aWVudElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBhdGllbnRJZCxcclxuICAgICAgICBtQVBoYXJtYWNpc3RJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JQaHlzaWNpYW5JZCxcclxuICAgICAgICBtQUZhY2lsaXR5SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yRmFjaWxpdHlJZCxcclxuICAgICAgICBwcml2YWN5U3RhdGVtZW50OiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSAnZScgPyAwIDogMSxcclxuICAgICAgICBocGlJOiBwaHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlck51bWJlcjogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyTnVtYmVyLFxyXG4gICAgICAgIHByZXNjcmliZXJBaHByYU51bWJlcjogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyQWhwcmFOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckdpdmVuTmFtZXM6IHBoeXNpY2lhbkRldGFpbHMuZmlyc3ROYW1lLFxyXG4gICAgICAgIHByZXNjcmliZXJGYW1pbHlOYW1lOiBwaHlzaWNpYW5EZXRhaWxzLmxhc3ROYW1lLFxyXG4gICAgICAgIHByZXNjcmliZXJIb21lTW9iaWxlOiBwaHlzaWNpYW5EZXRhaWxzLm1vYmlsZVBob25lLFxyXG4gICAgICAgIHByZXNjcmliZXJIb21lRW1haWw6IHBoeXNpY2lhbkRldGFpbHMuZW1haWwsXHJcbiAgICAgICAgb3JnSHBpTzogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgOiAnJyxcclxuICAgICAgICBvcmdOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSA6ICcnLFxyXG4gICAgICAgIG9yZ0VtYWlsOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0VtYWlsKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0VtYWlsIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc0xpbmUxOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTEgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMiA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N1YnVyYikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzUG9zdENvZGUgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzU3RhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N0YXRlKSA/IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpIDogJycsXHJcbiAgICAgICAgaWhpOiBwYXRpZW50RGV0YWlscy5paGlOdW1iZXIsXHJcbiAgICAgICAgbWVkaWNhcmVOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkaWNhcmVDYXJkKSA/IHRoaXMuZXJ4TWVkaWNhcmVDYXJkKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZUlybjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUlSTihtZWRpY2FyZUNhcmQpIDogJycsXHJcbiAgICAgICAgbWVkaWNhcmVOdW1iZXJFeHBpcnk6IHBhdGllbnREZXRhaWxzLm1lZGljYXJlRXhwaXJ5LFxyXG4gICAgICAgIGRhdGVPZkJpcnRoOiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShwYXRpZW50RGV0YWlscy5kb2IsICd5eXl5LU1NLWRkJyksXHJcbiAgICAgICAgZmFtaWx5TmFtZTogcGF0aWVudERldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgZ2l2ZW5OYW1lczogcGF0aWVudERldGFpbHMuZmlyc3ROYW1lLFxyXG4gICAgICAgIHBhdGllbnRVc2VySWRTdHJpbmc6IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudFVzZXJJZCxcclxuICAgICAgICB1c2VySWRTdHJpbmc6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgZ2VuZGVyQ29kZTogdGhpcy5nZXRHZW5kZXJDb2RlKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgaG9tZU1vYmlsZTogcGF0aWVudERldGFpbHMucGhvbmUsXHJcbiAgICAgICAgaG9tZUVtYWlsOiBwYXRpZW50RGV0YWlscy5lbWFpbCxcclxuICAgICAgICBhZGRyZXNzTGluZTE6IHBhdGllbnREZXRhaWxzLmFkZHJlc3MxLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMjogcGF0aWVudERldGFpbHMuYWRkcmVzczIsXHJcbiAgICAgICAgYWRkcmVzc1N1YnVyYjogcGF0aWVudERldGFpbHMuY2l0eSxcclxuICAgICAgICBhZGRyZXNzUG9zdENvZGU6IHBhdGllbnREZXRhaWxzLnBvc3RDb2RlLFxyXG4gICAgICAgIGFkZHJlc3NTdGF0ZTogdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHBhdGllbnREZXRhaWxzLnN0YXRlKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuRGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIixcclxuICAgICAgICBmb3JtVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgc3RyZW5ndGg6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubW9sZWN1bGVTdHJlbmd0aCkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggOiBcIiBcIixcclxuICAgICAgICBkaXJlY3Rpb25zOiB0aGlzLmdldERpcmVjdGlvbnMoKSxcclxuICAgICAgICBicmFuZFN1YnN0aXR1dGVzTm90QWxsb3dlZDogdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPT0gdHJ1ZSA/IDAgOiAxLFxyXG4gICAgICAgIG1heGltdW1OdW1iZXJPZlJlcGVhdHM6IHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICBtaW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSB1bmRlZmluZWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gXCJcIiA/IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwpIDogXCItMVwiLFxyXG4gICAgICAgIHBhdGllbnRDdGdGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgcGJzSXRlbUNvZGVDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgcGJzSXRlbUNvZGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZVRleHQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGVUZXh0IDogXCJcIixcclxuICAgICAgICBwYnNJdGVtTWFudWZhY3R1cmVyOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID8gcGJzTWFudWZhY3R1cmVyQ29kZVNldCA6ICcnLFxyXG4gICAgICAgIHN0YXRlQXV0aG9yaXR5TnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlci50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIHJlYXNvbkZvclRoZXJhcGV1dGljR29vZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbi50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIHVudXN1YWxRdHlGbGFnOiB0aGlzLnNldFVudXN1YWxRdHlGbGFnKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiwgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCwgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyksXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5OiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSxcclxuICAgICAgICBjb21wbGV4SW5zdHJ1Y3Rpb25zOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUudHJpbSgpIDogXCJcIixcclxuICAgICAgICBhbXRNcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UTVBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UTVBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10TXBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVFRQUENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkFNVFRQUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSA6ICcnLFxyXG4gICAgICAgIGFtdFRwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVFRQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRUcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10LmFtdGNvZGUgOiAnJyxcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbk1pbXNDb2RlOiAnJyxcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkxvY2FsQ29kZTogJycsXHJcbiAgICAgICAgLy8gdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5Db2RlOiBcIlwiLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uRWFuVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gJ25vbiBwYnMnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uQ29kZTogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uQ29kZSxcclxuICAgICAgICBwcmVzY3JpYmVyT2NjdXBhdGlvblRleHQ6IHBoeXNpY2lhbkRldGFpbHMub2NjdXBhdGlvblRleHQsXHJcbiAgICAgICAgcHJlc2NyaWJlclBlcnNvblRpdGxlOiBwaHlzaWNpYW5EZXRhaWxzLnByZWZpeCxcclxuICAgICAgICBwcmVzY3JpYmVyUXVhbGlmaWNhdGlvbnM6IHBoeXNpY2lhbkRldGFpbHMuc3VmZml4LFxyXG4gICAgICAgIG9yZ1Bob25lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdNb2JpbGUgOiAnJyxcclxuICAgICAgICBvcmdGYXg6ICcnLFxyXG4gICAgICAgIGxvY2FsU3lzdGVtSUQ6IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudFVzZXJJZCxcclxuICAgICAgICBhZGRyZXNzU2VuZFRvQWRkVHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSxcclxuICAgICAgICBhZGRyZXNzRW1haWw6IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCkgPyBwYXRpZW50RGV0YWlscy5lbWFpbCA6IHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkLFxyXG4gICAgICAgIGFkZHJlc3NTbXM6IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyKSA/IHBhdGllbnREZXRhaWxzLnBob25lIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlcixcclxuICAgICAgICBnZW5kZXJUZXh0OiB0aGlzLmdldEdlbmRlcihwYXRpZW50RGV0YWlscy5nZW5kZXIpLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMzogJycsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y1RpbWU6ICcwMS0wMS0xOTcwIDA5OjA2OjA5JywgLy8gcHJlc2NyaXB0aW9uV3JpdHRlblV0Y1RpbWU6IG1vbWVudChuZXcgRGF0ZSgpKS5mb3JtYXQoXCJNTS1ERC15eXl5IGhoOm1tOnNzXCIpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5VdGNPZmZzZXQ6IHRoaXMuZ2V0T2Zmc2V0KCksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uRXhwaXJlc1ZhbHVlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLmVuZERhdGUsICdNTS9kZC95eXl5JykgOiBcIlwiLFxyXG4gICAgICAgIGFjdGl2ZUluZ3JlZGllbnQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1Db2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybXVsYTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmZvcm11bGEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgOiBcIlwiLFxyXG4gICAgICAgIGFkZGl0aW9uYWxDb21tZW50czogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICBhc2xDb25zZW50OiAxLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbk5vdGVEZXRhaWxOb3RlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZSxcclxuICAgICAgICBkdmFOdW1iZXI6IHBhdGllbnREZXRhaWxzLmR2YU51bWJlcixcclxuICAgICAgICBkdmFUeXBlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlKSAmJiBwYXRpZW50RGV0YWlscy5kdmFDYXJkVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdub25lJyA/IHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgOiAnJyxcclxuICAgICAgICBwYnNBcHByb3ZhbE51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vIDogJycsXHJcbiAgICAgICAgcm91dGU6IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSAhPSAnLScgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgOiAnJyxcclxuICAgICAgICAvL3Byb3ZpZGVyTnVtYmVyOicnLFxyXG4gICAgICAgIHByZXNjcmliZXJUeXBlOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJUeXBlLFxyXG4gICAgICAgIG1lZGljaW5lTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6IFwiXCIsXHJcbiAgICAgICAgYnJhbmROYW1lOiB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLFxyXG4gICAgICAgIGdlbmVyaWNOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5Jc0V4dGVtcCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiB0aGlzLmdldEV4dGVtcE1QUE5hbWUoKSksXHJcbiAgICAgICAgLy9pdGVtR2VuZXJpY0ludGVudGlvbjogZ2V0SXRlbUdlbmVyaWNJbnRlbnRpb24odGhpcy5zdGF0ZS5sZW1pLHRoaXMuc3RhdGUuaXNCcmFuZE5hbWUsdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0cnVlIDogZmFsc2UpLFxyXG4gICAgICAgIGl0ZW1HZW5lcmljSW50ZW50aW9uOiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgIT0gdHJ1ZSA/ICdCJyA6ICdHJyxcclxuICAgICAgICBzY2hlZHVsZU51bWJlcjogdGhpcy5wYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICE9IFwiXCIgPyB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZG9jdG9yTm90ZXM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3RlcykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgcmVndWxhdGlvbjI0OiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNCA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIGlzRXh0ZW1wOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgIT0gbnVsbCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gMCA6IDEgOiAxLFxyXG4gICAgICAgIC8vIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5FeHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uICE9ICcnID8gdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gOiAnJyxcclxuICAgICAgICBleHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogJycsXHJcbiAgICAgICAgYW5ub3RhdGlvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgdW5Vc3VhbERvc2VGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIHRyYWRlTmFtZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmdldFRyYWRlTmFtZSgpKSxcclxuICAgICAgICAvL3Jlc3RyaWN0aW9uczogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJycgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVzdHJpY3Rpb25zIDogJycsXHJcbiAgICAgICAgLy8gcHJlc2NyaWJlclBlcnNvblRpdGxlOiBwaHlzaWNpYW5EZXRhaWxzLnByZWZpeCxcclxuICAgICAgICBtYXhpbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0czogJycsXHJcbiAgICAgICAgY29tcGxleElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA6IDAsXHJcbiAgICAgICAgdmlzaXRJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52aXNpdElkLFxyXG4gICAgICAgIHNjcmlwdFR5cGU6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSxcclxuICAgICAgICBkb3NlOiB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSxcclxuICAgICAgICBmcmVxdWVuY3k6IHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGZvb2Q6IHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlLFxyXG4gICAgICAgIHByZXNjcmliZUFzOiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLFxyXG4gICAgICAgIHBybjogdGhpcy5jb21tb25TZXJ2aWNlcy5yeFBSTiA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIHNjcmlwdERhdGU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc3RhcnREYXRlLCAnTU0vZGQveXl5eScpLFxyXG4gICAgICAgIHB1cnBvc2U6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLnRyaW0oKSxcclxuICAgICAgICBwYnNOb3RlczogdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNOb3RlcyxcclxuICAgICAgICBpc0FjdGl2ZTogMCxcclxuICAgICAgICBwcm9kdWN0SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0SWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCA6IFwiXCIsXHJcbiAgICAgICAgYW10VGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmZvcm11bGEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kRG9zZVVuaXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgcHJlc2NyaWJlclJvbGVDb2RlOiAnJyxcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZVRleHQ6ICcnLFxyXG4gICAgICAgIG9yZ0hpY0xvY2F0aW9uSWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnSGljTG9jYXRpb25JZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkIDogJycsXHJcbiAgICAgICAgb3JnUm9sZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZUNvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZUNvZGUgOiAnJyxcclxuICAgICAgICBvcmdSb2xlVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlVGV4dCA6ICcnLFxyXG4gICAgICAgIGF1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8udHJpbSgpIDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXJGbGFnOiBwYXJzZUZsb2F0KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID8gMSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uc1t0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZF0uc3RyZWFtbGluZWRDb2RlKSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpID09IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyAwIDogMSxcclxuICAgICAgICBzdGF0dXM6IFwiRHJhZnRcIixcclxuICAgICAgICAvLyBwYnNBdXRob3JpdHlQcmVzY3JpcHRpb25OdW1iZXI6dGhpcy5zdGF0ZS5hcHByb3ZhbE5vID8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vIDogXCJcIixcclxuICAgICAgICAvLyBzdHJlYW1saW5lZEF1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiB0aGlzLnN0YXRlLmFwcHJvdmFsTm8/IHRoaXMuc3RhdGUuYXBwcm92YWxObzogXCJcIixcclxuICAgICAgICAvLyBwYnNBdXRob3JpdHlBcHByb3ZhbE51bWJlcjogXCJcIixcclxuICAgICAgICAvL2JhcmNvZGVcclxuICAgICAgICAvL3NjcmlwdE51bWJlcjogXCJcIixcclxuICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBlb3BEaXNwbGF5TmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJlXCIgPyB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lKSA6IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSksXHJcbiAgICAgICAgaXRlbVN0cmVuZ3RoWG1sOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uSXRlbVN0cmVuZ3RoWG1sKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5JdGVtU3RyZW5ndGhYbWwgOiBcIiBcIixcclxuICAgICAgICAvL2F1dGhvcml0eVZhbHVlXHJcbiAgICAgICAgcGJzRHZhQXV0aG9yaXR5TnVtYmVyOiBjaGVja0F1dGhvcml0eUJveCA/IHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vIDogMCxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSwvL3RoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlKSxcclxuICAgICAgICB1bmxpc3RlZEl0ZW1SZXBhdEF1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID09IHRydWUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZE9uZTogdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiID8gdGhpcy5udW1iZXJUb1dvcmQocGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkpIDogJycsXHJcbiAgICAgICAgbXlTTENvbnNlbnQ6IHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQsXHJcbiAgICAgICAgc2VuZFRvUGhhcm1hY3k6IHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3ksXHJcbiAgICAgICAgc2VuZFRvUGhhcm1hY3lWYWx1ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlLFxyXG4gICAgICAgIGVtZXJnZW5jeVN1cHBseTogdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHksXHJcbiAgICAgICAgbW9sZWN1bGVTdHJlbmd0aEdyaWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoR3JpZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aEdyaWQgOiAnJyxcclxuICAgICAgICBlbnRpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVudGl0eUlkLFxyXG4gICAgICAgIGlzUHJlc2NyaWJlQW5kUHJpbnQ6IHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQsXHJcbiAgICAgICAgYW10Q29kZVN5c3RlbTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdENvZGVTeXN0ZW0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdENvZGVTeXN0ZW0gOiBcIlwiLFxyXG4gICAgICAgIGFtdFZlcnNpb246ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXRWZXJzaW9uKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRWZXJzaW9uIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eVdpdGhVbml0OiB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgOiBcIlwiLFxyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgIHByb2R1Y3RQYWNrSWQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdFBhY2tJZCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0UGFja0lkIDogJycsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5Qb3N0KGJvZHksIGNvbmZpZy5QSFlTSUNJQU4uTV9QUkVTQ1JJQkUpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfbWVzc2FnZSAhPSBudWxsICYmIHJlcy5yZXNwb25zZV9tZXNzYWdlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTXByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlVG9vbFRpcChldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ19fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXAnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICd0eXBlLWRhcmsnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICdwbGFjZS1sZWZ0Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnei1pbmRleCcsICc5OTk5OTk5OScpO1xyXG4gICAgICBjb25zdCB2aWV3UmVmID0gdGhpcy52aWV3UmVmQ29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm15VGVtcGxhdGUpO1xyXG4gICAgICB2aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgY29uc3QgdG9vbHRpcENvbnRlbnQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHZpZXdSZWYucm9vdE5vZGVzKSAmJiB2aWV3UmVmLnJvb3ROb2Rlcy5sZW5ndGggIT0gMCA/IHZpZXdSZWYucm9vdE5vZGVzWzBdIDogXCJcIjtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXAsIHRvb2x0aXBDb250ZW50KTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMudG9vbHRpcCk7XHJcbiAgICAgIHZhciB0b29sOiBhbnkgPSB0aGlzLnRvb2x0aXA7XHJcbiAgICAgIHZhciBsZWZ0ID0gZXZlbnQueCAtICh0b29sLmNsaWVudFdpZHRoICsgMTUpO1xyXG4gICAgICB2YXIgaGVpZ2h0dmFsdWUgPSBldmVudC55IC0gKHRvb2wuY2xpZW50SGVpZ2h0IC8gMik7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnbGVmdCcsIGxlZnQgKyAncHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd0b3AnLCBoZWlnaHR2YWx1ZSArICdweCcpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjcmVhdGVUb29sVGlwXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd3Rvb2x0aXAobGVtaXByb2R1Y3Q6IGJvb2xlYW4sIGJyYW5kdG9vbHRpcDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAobGVtaXByb2R1Y3QpIHtcclxuICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnbGVtaS10b29sdGlwJyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICd0eXBlLWRhcmsnKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRSZWN0ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZpZXdSZWZDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGJyYW5kdG9vbHRpcCk7XHJcbiAgICAgICAgdmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdmFyIG15ZG9tOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJyYW5kbmFtZXRvb2x0aXBcIik7XHJcbiAgICAgICAgdmFyIHJlY3QgPSBteWRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCB0b29sdGlwQ29udGVudCA9IHZpZXdSZWYucm9vdE5vZGVzWzBdO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwLCB0b29sdGlwQ29udGVudCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMudG9vbHRpcCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdsZWZ0JywgcmVjdC5sZWZ0ICsgJ3B4Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd0b3AnLCByZWN0LnRvcCAtIG15ZG9tLm9mZnNldEhlaWdodCAtIDEwICsgJ3B4Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd3aWR0aCcsIG15ZG9tLmNsaWVudFdpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd3Rvb2x0aXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL2VkaXQgcnhcclxuICBzZXRFZGl0VmFsdWVzKHJ4TGlzdDogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IHRydWU7XHJcbiAgICAgIHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgPSByeExpc3QucGJzSXRlbUNvZGVDb2RlICE9IG51bGwgPyByeExpc3QucGJzSXRlbUNvZGVDb2RlIDogXCJcIjtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcHJvZHVjdElkOiByeExpc3QucHJvZHVjdElkLFxyXG4gICAgICAgIHBic0NvZGU6IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUsXHJcbiAgICAgICAgcnhJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkLFxyXG4gICAgICAgIHByb2R1Y3RQYWNrSWQ6IHJ4TGlzdC5wcm9kdWN0UGFja0lkID8gcnhMaXN0LnByb2R1Y3RQYWNrSWQgOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9NRURfREVUX0JZX0lEICsgXCI/cHJvZHVjdElkPVwiICsgcnhMaXN0LnByb2R1Y3RJZCArIFwiJnBic0NvZGU9XCIgKyAgcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSAgKyBcIiZyeElkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkICsgXCImcHJvZHVjdFBhY2tJZD1cIiArIChyeExpc3QucHJvZHVjdFBhY2tJZCA/IHJ4TGlzdC5wcm9kdWN0UGFja0lkIDogJycpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBlZGl0UmVzdHJpY3RGbGFnID0gKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5zdGF0dXMpICYmIHJ4TGlzdC5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSBcImRyYWZ0XCIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGVkaXRSZXN0cmljdEZsYWcpIHtcclxuICAgICAgICAgICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgICAgICAgICAgTWVkLnB1c2gocmVzLnJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSByeExpc3QucXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5O1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSByeExpc3QubWF4aW11bU51bWJlck9mUmVwZWF0cyA/IHJ4TGlzdC5tYXhpbXVtTnVtYmVyT2ZSZXBlYXRzIDogXCIwXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gcnhMaXN0LmRvc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gcnhMaXN0LmZyZXF1ZW5jeSA/IHJ4TGlzdC5mcmVxdWVuY3kgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9IHJ4TGlzdC5mb29kID8gcnhMaXN0LmZvb2QgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuY29tcGxleEluc3RydWN0aW9ucykgJiYgdGhpcy5pbnN0cnVjdGlvbkRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5pbnN0cnVjdGlvbkRhdGEuZmlsdGVyKCgoeDogeyB0ZXh0OiBhbnk7IH0pID0+IHgudGV4dCA9PSByeExpc3QuY29tcGxleEluc3RydWN0aW9ucykpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGFbMF0uZGVzY3JpcHRpb24pID8gZGF0YVswXS5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zKSA/IHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zIDogXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gcnhMaXN0LmNvbXBsZXhJZCA/IHJ4TGlzdC5jb21wbGV4SWQgOiAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSByeExpc3Qucm91dGUgPyByeExpc3Qucm91dGUgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID0gcnhMaXN0LnBybiA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gcnhMaXN0LnByZXNjcmliZUFzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zdGFydERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocnhMaXN0LnN0YXJ0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5wcmVzY3JpcHRpb25FeHBpcmVzVmFsdWUsICd5eXl5LU1NLWRkJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPSByeExpc3QubWluaW11bUludGVydmFsQmV0d2VlblJlcGVhdHMgPT0gLTEgPyAnJyA6IHJ4TGlzdC5taW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0cztcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wdXJwb3NlKSA/IHJ4TGlzdC5wdXJwb3NlIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPSByeExpc3QuYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ZWQgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuYW5ub3RhdGlvbikgPyByeExpc3QuYW5ub3RhdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5kb2N0b3JOb3RlcykgPyByeExpc3QuZG9jdG9yTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbiA9IHJ4TGlzdC5yZWFzb25Gb3JUaGVyYXBldXRpY0dvb2Q7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNOb3RlcykgPyByeExpc3QucGJzTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNBdXQgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSByeExpc3QuYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgPSByeExpc3Quc2VuZFRvUGhhcm1hY3k7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IHJ4TGlzdC5zZW5kVG9QaGFybWFjeVZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA9IHJ4TGlzdC5lbWVyZ2VuY3lTdXBwbHk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQgPSByeExpc3QubXlTTENvbnNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjQgPSByeExpc3QucmVndWxhdGlvbjI0ID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IHJ4TGlzdC5zY3JpcHRUeXBlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IHJ4TGlzdC5wYXRpZW50Q3RnRmxhZyA9PSAwID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlLmFpcCkgPyByZXMucmVzcG9uc2UuYWlwLmxlbWkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucmVzcG9uc2UuYWlwKSA/IHJlcy5yZXNwb25zZS5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9IHJ4TGlzdC51blVzdWFsRG9zZUZsYWcgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0LnN0YXRlQXV0aG9yaXR5TnVtYmVyKSA/IHJ4TGlzdC5zdGF0ZUF1dGhvcml0eU51bWJlciA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gcnhMaXN0LnJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4ICE9IDAgPyByeExpc3QucmVzdHJpY3RlZFBic1NlbGVjdGVkSW5kZXggLSAxIDogbnVsbDsgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QucGJzTGlzdEluc3RydWN0aW9ucykgPyByeExpc3QucGJzTGlzdEluc3RydWN0aW9ucyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gcnhMaXN0LmlzQnJhbmROYW1lID8gcnhMaXN0LmlzQnJhbmROYW1lIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5ID0gcnhMaXN0LmlzU2hvd0F1dGhvcml0eSA/IHJ4TGlzdC5pc1Nob3dBdXRob3JpdHkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIpICYmIHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgIT0gMCA/IHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LmlzU2hvd0F1dGhvcml0eSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwicHJlc2NyaWJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwiY2Vhc2VkXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyeExpc3Quc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gXCJjYW5jZWxsZWRcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWRpdFJlc3RyaWN0RmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL2VuYWJsZSBlLXByZXNjcmlwdGlvblxyXG4gIGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJykge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdkcmFmdCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDAgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy52ZW5kb3JQYXRpZW50Q29uc2VudCA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2hwaW9fdmFsaWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19paGlfdmFsaWQpIHx8ICh2YWx1ZSA9PSAxICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ2RyYWZ0JykpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICgodGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpb192YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19ocGlpX3ZhbGlkICYmIHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2loaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQgPT0gMCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnZlbmRvclBhdGllbnRDb25zZW50ID09IHRydWUpIHx8IHZhbHVlID09IDEpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVQcmVzY3JpcHRpb25WYWxpZGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZVNjaGVkdWxlTnVtYmVyKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzICE9IG51bGwgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgdmFyIHN0YXRlU2NoZWR1bGVMaXN0ID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoc3RhdGVTY2hlZHVsZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBzdGF0ZVNjaGVkdWxlTGlzdC5jb25jYXQoc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlc1tpXS5zY2hlZHVsZXMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3RhdGVTY2hlZHVsZUxpc3QucHVzaChzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzW2ldLnNjaGVkdWxlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdGF0ZVNjaGVkdWxlTGlzdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0U3RhdGVTY2hlZHVsZU51bWJlclwiKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXV0aG9yaXR5Tm9WYWxpZGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBrZXl2YWx1ZSA9IGV2ZW50LmNoYXJDb2RlO1xyXG4gICAgICByZXR1cm4gKChrZXl2YWx1ZSA+IDY0ICYmIGtleXZhbHVlIDwgOTEpIHx8IChrZXl2YWx1ZSA+IDk2ICYmIGtleXZhbHVlIDwgMTIzKSB8fCAoa2V5dmFsdWUgPj0gNDggJiYga2V5dmFsdWUgPD0gNTcpKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYXV0aG9yaXR5Tm9WYWxpZGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcihTY2hlZHVsZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgc3RhdGVTY2hlZHVsZU51bWJlciA9IHRoaXMuZ2V0U3RhdGVTY2hlZHVsZU51bWJlcihTY2hlZHVsZU51bWJlcik7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHN0YXRlU2NoZWR1bGVOdW1iZXIpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiVEFTXCIgJiYgc3RhdGVTY2hlZHVsZU51bWJlci5sZW5ndGggIT0gMCAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNERcIikgIT0gLTEpIHtcclxuICAgICAgICAgIHJldHVybiBcIlM0RFwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCkgPT0gXCJOU1dcIiAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyLmxlbmd0aCAhPSAwICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0QlwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiUzRCXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlclwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVzY3JpcGVBYm9ydCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgcGF0VXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLlJYX1BSRVNDUklCRV9BQk9SVCArIFwiP3VzZXJJZD1cIiArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyBcIiZwYXRVc2VySWQ9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkID0gXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlID0gcmVzLmVycm9yX2NvZGU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlKVxyXG4gICAgICAgICAgICB0aGlzLnNob3dSZXNwb25zZU1lc3NhZ2UoKTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmlwZUFib3J0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlKVxyXG4gICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93UmVzcG9uc2VNZXNzYWdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5jbG9zZSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmRhdGEpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5maWxlX3VybCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldCh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmZpbGVfdXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGF0b2IocmVzcG9uc2UuZmlsZSkuc3BsaXQoJycpLm1hcChjaGFyID0+IGNoYXIuY2hhckNvZGVBdCgwKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGJiYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmJiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1dpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3cuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByaW50V2FybmluZ1BvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzaG93UmVzcG9uc2VNZXNzYWdlXCIsIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgJiYgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2csICdzdWNjZXNzJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZVN1Y2Nlc3MgJiYgIXRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgJiYgIXRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2csICdzdWNjZXNzJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnZXJyb3InLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyAmJiB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnc3VjY2VzcycpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCBcImVycm9yXCIsIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yICYmIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2csICdlcnJvcicsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZywgXCJlcnJvclwiLCB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzICYmIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCBcInN1Y2Nlc3NcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSBcIlwiO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1JTVNQcmltYXJ5U2VhcmNoKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgICAgaWYgKCF0aGlzLmlzU3RpbGxTZWFyY2hpbmcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgICBwcm9kdWN0TmFtZTogdGhpcy5Qcm9kdWN0U2VhcmNoTmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoIDwgOClcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICs9IDE7XHJcbiAgICAgICAgICB2YXIgcGJzVHlwZSA9IHRoaXMucnhPbmx5UEJTICYmIHRoaXMucnhQcml2YXRlID8gXCJcIiA6IHRoaXMucnhPbmx5UEJTID8gXCJQQlMsUlBCU1wiIDogdGhpcy5yeFByaXZhdGUgPyBcIlByaXZhdGVcIiA6IFwiXCI7XHJcbiAgICAgICAgICBjb25zdCBzZWFyY2hNZXRob2QgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNtYXJ0U2VhcmNoID8gY29uZmlnLkdFVF9NRURTX0JZX1NNQVJUX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLlByb2R1Y3RTZWFyY2hOYW1lKSArICcmcGFnZT0nICsgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJnBic1R5cGU9JyArIHBic1R5cGVcclxuICAgICAgICAgICAgOiBjb25maWcuR0VUX01FRFNfQllfU0VBUkNIICsgJz9wcm9kdWN0TmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuUHJvZHVjdFNlYXJjaE5hbWUpICsgJyZwYWdlPScgKyB0aGlzLnNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgKyAnJm5vT2ZSZWM9MTAnXHJcblxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoc2VhcmNoTWV0aG9kKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1ByaW1hcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZExpc3QgPSByZXMucmVzcG9uc2UuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNQYnNUeXBlTWF0Y2goaXRlbS5wYnNUeXBlLCBwYnNUeXBlKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gZmlsdGVyZWRMaXN0Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkTGlzdC5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QuZmlsdGVyKCh4OiBhbnkpID0+IHgucHJvZERpc3BsYXlWYWx1ZSA9PSBkYXRhLnByb2REaXNwbGF5VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvZHVjdCA9IHZhbC5wcm9kSGlkZGVuVmFsdWUuaW5jbHVkZXMoZGF0YS5wcm9kSGlkZGVuVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGRhdGEuc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdicmFuZGtleScgPyAnQksnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2RwYWNra2V5JyA/ICdQUEsnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3ZpcnR1YWxuYW1lJyA/ICdWTicgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleScgPyAnUEsnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2R1Y3RrZXlhY3RpdmVpbmdyZWRpZW50JyA/ICdQS0EnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2Z1bGxwaScgPyAnRlBJJyA6ICdQTic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjdCAmJiB0eXBlICE9ICdQS0EnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnByb2RIaWRkZW5WYWx1ZSArPSAnLCcgKyBkYXRhLnByb2RIaWRkZW5WYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPiA3IHx8IHJlcy5yZXNwb25zZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPCA4ICYmIHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLk1JTVNQcmltYXJ5U2VhcmNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByaW1hcnlNSU1TU2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbWFyeU1JTVNTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1JTVNTZWNvbmRhcnlTZWFyY2goKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTdGlsbFNlYXJjaGluZyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZykge1xyXG4gICAgICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoICE9IDAgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwicGtcIiAmJiB0aGlzLlByb2R1Y3RUeXBlLnRvTG93ZXJDYXNlKCkgIT0gXCJwblwiICYmIHRoaXMuUHJvZHVjdFR5cGUudG9Mb3dlckNhc2UoKSAhPSBcInZuXCIgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwiZnBpXCIpIHtcclxuICAgICAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHRoaXMucHJvZEhpZGRlbk5hbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IHRoaXMuUHJvZHVjdFR5cGUsXHJcbiAgICAgICAgICAgIHByZXNjcmliZXJUeXBlOiBcIk1QXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8PSAzKVxyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgKz0gMTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX05BTUUgKyAnP3Byb2R1Y3ROYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5wcm9kSGlkZGVuTmFtZSkgKyAnJnR5cGU9JyArIHRoaXMuUHJvZHVjdFR5cGUgKyAnJnByZXNjcmliZXJUeXBlPU1QJnBhZ2U9JyArIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciArICcmbm9PZlJlYz0xMCcpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICByZXMucmVzcG9uc2UuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gcmVzLnJlc3BvbnNlLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXNOb25QYnNGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgdGhpcy5yeE9ubHlOT05QQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgLy8gICBpZiAodGhpcy5yeE9ubHlQQlMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5yeE9ubHlQQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWw7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25DaGVja2JveENoYW5nZSgyKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPD0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlKSAmJiByZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLk1JTVNTZWNvbmRhcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaW50V2FybmluZ1BvcCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gXCJQbGVhc2UgZW5hYmxlIHBvcHVwIG9uIHRoZSBicm93c2VyIHRvIHZpZXcvcHJpbnQgdGhlIHByZXNjcmlwdGlvbi5cIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4geyB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRXYXJuaW5nUG9wXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbnVtYmVyVG9Xb3JkKG46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKG4gPCAwKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgdmFyIHNpbmdsZV9kaWdpdCA9IFsnJywgJ09uZScsICdUd28nLCAnVGhyZWUnLCAnRm91cicsICdGaXZlJywgJ1NpeCcsICdTZXZlbicsICdFaWdodCcsICdOaW5lJ11cclxuICAgICAgdmFyIGRvdWJsZV9kaWdpdCA9IFsnVGVuJywgJ0VsZXZlbicsICdUd2VsdmUnLCAnVGhpcnRlZW4nLCAnRm91cnRlZW4nLCAnRmlmdGVlbicsICdTaXh0ZWVuJywgJ1NldmVudGVlbicsICdFaWdodGVlbicsICdOaW5ldGVlbiddXHJcbiAgICAgIHZhciBiZWxvd19odW5kcmVkID0gWydUd2VudHknLCAnVGhpcnR5JywgJ0ZvcnR5JywgJ0ZpZnR5JywgJ1NpeHR5JywgJ1NldmVudHknLCAnRWlnaHR5JywgJ05pbmV0eSddXHJcbiAgICAgIGlmIChuID09PSAwKSByZXR1cm4gJ1plcm8nO1xyXG4gICAgICBmdW5jdGlvbiB0cmFuc2xhdGUobjogYW55KSB7XHJcbiAgICAgICAgdmFyIHdvcmQ6IGFueSA9ICcnXHJcbiAgICAgICAgaWYgKG4gPCAxMCkge1xyXG4gICAgICAgICAgd29yZCA9IHNpbmdsZV9kaWdpdFtuXSArICcgJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMjApIHtcclxuICAgICAgICAgIHdvcmQgPSBkb3VibGVfZGlnaXRbbiAtIDEwXSArICcgJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVtID0gdHJhbnNsYXRlKG4gJSAxMClcclxuICAgICAgICAgIHdvcmQgPSBiZWxvd19odW5kcmVkWyhuIC0gbiAlIDEwKSAvIDEwIC0gMl0gKyAnICcgKyByZW1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMDApIHtcclxuICAgICAgICAgIHdvcmQgPSBzaW5nbGVfZGlnaXRbTWF0aC50cnVuYyhuIC8gMTAwKV0gKyAnIEh1bmRyZWQgJyArIHRyYW5zbGF0ZShuICUgMTAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwMDAwMCkge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMCkudHJpbSgpICsgJyBUaG91c2FuZCAnICsgdHJhbnNsYXRlKG4gJSAxMDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwMDAwMDAwMCkge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMDAwMCkudHJpbSgpICsgJyBNaWxsaW9uICcgKyB0cmFuc2xhdGUobiAlIDEwMDAwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMDAwMDAwMCkudHJpbSgpICsgJyBCaWxsaW9uICcgKyB0cmFuc2xhdGUobiAlIDEwMDAwMDAwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB3b3JkXHJcbiAgICAgIH1cclxuICAgICAgdmFyIHJlc3VsdCA9IHRyYW5zbGF0ZShuKVxyXG4gICAgICByZXR1cm4gcmVzdWx0LnRyaW0oKVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJudW1iZXJUb1dvcmRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXh0ZW1wTVBQTmFtZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdPy5tcHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXT8ubXBwTmFtZSkpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUudHJpbSgpIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RXh0ZW1wTVBQTmFtZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodG1sVG9UZXh0Q29udmVydCh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB0bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcclxuICAgICAgdG1wLmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgICByZXR1cm4gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImh0bWxUb1RleHRDb252ZXJ0XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1dGhvcml0eU5vQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9IHZhbHVlLnJlcGxhY2UoL1teYS16QS1aIDAtOV0vZywgXCJcIikucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhdXRob3JpdHlOb0NoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFscGhhUmVzdHJpY3Rpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGtleXZhbHVlID0gZXZlbnQuY2hhckNvZGU7XHJcbiAgICAgIHJldHVybiAoKGtleXZhbHVlID4gNjQgJiYga2V5dmFsdWUgPCA5MSkgfHwgKGtleXZhbHVlID4gOTYgJiYga2V5dmFsdWUgPCAxMjMpIHx8IChrZXl2YWx1ZSA+PSA0OCAmJiBrZXl2YWx1ZSA8PSA1NykgfHwga2V5dmFsdWUgPT0gMzIpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhbHBoYVJlc3RyaWN0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFkZFRvRmF2b3VyaXRlcygpIHtcclxuICAgIGNvbnN0IGlzSW5GYXZvdXJpdGVzID0gdGhpcy5pc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpO1xyXG4gICAgY29uc3QgaXNBZGRpbmcgPSAhaXNJbkZhdm91cml0ZXM7XHJcbiAgICB2YXIgcGh5c2ljaWFuRGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgIHZhciBib2R5ID0ge1xyXG4gICAgICB1c2VySWRTdHJpbmc6IHBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICBwcm9kdWN0SWQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQsXHJcbiAgICAgIHByb2R1Y3ROYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSk/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lOlwiXCIsXHJcbiAgICAgIHF1YW50aXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICByZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgIHJlc3RyaWN0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Q/KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSArIFwiIChcIiArIHRoaXMuZ2V0UmVzdHJpY3Rpb25zKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMpICsgXCIpIFwiXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUpOlwiXCIsXHJcbiAgICAgIGdlbmVyaWNOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSk/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lOlwiXCIsXHJcbiAgICAgIHBic0NvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKT90aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGU6XCJcIixcclxuICAgICAgYWN0aXZlOiBpc0FkZGluZyxcclxuICAgICAgcmVzdHJpY3RlZE1lZGljaW5lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCxcclxuICAgICAgZG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUsXHJcbiAgICAgIGZyZXF1ZW5jeTogdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUsXHJcbiAgICAgIGZvb2Q6dGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUsXHJcbiAgICAgIGluc3RydWN0aW9uOnRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSxcclxuICAgICAgcm91dGU6dGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlLFxyXG4gICAgICAuLi4oIWlzQWRkaW5nICYmIHsgZW5jcnlwdGVkSWQ6IHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA/IHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgOiAgdGhpcy5nZXRDdXJyZW50RmF2RW5jcnlwdGVkSWQoKSB9KSxcclxuICAgICAgcHJvZHVjdFBhY2tJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0UGFja0lkID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RQYWNrSWQgOiAnJyxcclxuICAgIH1cclxuICAgICAgICB0aGlzLmFwaVNlcnZpY2UuUG9zdChib2R5LCBjb25maWcuUEhZU0lDSUFOLkFERF9GQVZPVVJJVEVfTUVESUNJTkUpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcIkFkZEZhdm91cml0ZXNcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gcmVzLmZhdm91cnRpZXNMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3QgPSByZXMuZmF2b3VydGllc0xpc3QgfHwgW107XHJcbiAgICAgICAgICAgICAgaWYgKCFpc0FkZGluZykge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5zaG93RmF2b3VyaXRlTWVkKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVFbmNyeXB0ZWRJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRmF2b3VyaXRlRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMuZmF2b3VydGllc0xpc3QgfHwgcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihcclxuICAgICAgICAgICAgICAgICAgICBcIk5vIG1vcmUgZmF2b3VyaXRlcyByZW1haW5pbmcuIFlvdSBjYW4gYWRkIG1lZGljaW5lcyB0byBmYXZvdXJpdGVzIGZyb20gdGhlIHNlYXJjaCByZXN1bHRzLlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW5mb1wiXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSByZXMuZmF2b3VydGllc0xpc3QgJiYgcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCA+IDAgPyByZXMuZmF2b3VydGllc0xpc3RbcmVzLmZhdm91cnRpZXNMaXN0Lmxlbmd0aCAtIDFdLmVuY3J5cHRlZElkIDogXCJcIjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5zaG93RmF2b3VyaXRlTWVkICYmIGlzQWRkaW5nKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAgZ2V0RmF2b3VydGllc0xpc3QoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQ7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfRkFWT1VSSVRFX01FRElDSU5FX0xJU1QgKyBcIj91c2VySWRTdHJpbmc9XCIgKyBwYXlsb2FkK1wiJnJlc3RyaWN0ZWRNZWRpY2luZT1cIit0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJpdGVzTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RmF2b3VydGllc0xpc3RcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dGYXZvdXJ0aWVzKCkge1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVFbmNyeXB0ZWRJZCA9IFwiXCI7XHJcbiAgICB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPSAhdGhpcy5zaG93RmF2b3VyaXRlTWVkO1xyXG4gICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNQcmltYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1ByaW1hcnlhcGkudW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNTZWNvbmRhcnlhcGkpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnNob3dGYXZvdXJpdGVNZWQpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgIH1cclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25GYXZvdXJpdGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICBcclxuICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMubWVkaVNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMubWVkaVNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMudGVtcE1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvL0Zhdm91cml0ZU1lZGljaW5lIExvYWRpbmdcclxuICBmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcocnhMaXN0OiBhbnkpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZighdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Qpe1xyXG4gICAgICByeExpc3QucGJzQ29kZSA9IHJ4TGlzdC5wYnNDb2RlICE9IG51bGwgPyByeExpc3QucGJzQ29kZSA6IFwiXCI7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHByb2R1Y3RJZDogcnhMaXN0LnByb2R1Y3RJZCxcclxuICAgICAgICBwYnNDb2RlOiByeExpc3QucGJzQ29kZSxcclxuICAgICAgICByeElkOiAwLFxyXG4gICAgICAgIHByb2R1Y3RQYWNrSWQ6IHJ4TGlzdC5wcm9kdWN0UGFja0lkID8gcnhMaXN0LnByb2R1Y3RQYWNrSWQgOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSByeExpc3QuZW5jcnlwdGVkSWQ7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9NRURfREVUX0JZX0lEICsgXCI/cHJvZHVjdElkPVwiICsgcnhMaXN0LnByb2R1Y3RJZCArIFwiJnBic0NvZGU9XCIgKyAgcnhMaXN0LnBic0NvZGUgICsgXCImcnhJZD1cIiArIDAgKyBcIiZwcm9kdWN0UGFja0lkPVwiICsgKHJ4TGlzdC5wcm9kdWN0UGFja0lkID8gcnhMaXN0LnByb2R1Y3RQYWNrSWQgOiAnJykpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgICAgICAgIE1lZC5wdXNoKHJlcy5yZXNwb25zZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBNZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBNZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRGF0YU9uY2hhbmdlb2ZNZWRpY2luZShNZWQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZvcm11bGF0aW9uKHJlcy5yZXNwb25zZSwgMCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXNzaWduQ29tYmluYXRpb25zKHJ4TGlzdCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMubWVkaVNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgICAgICAgICB0aGlzLnJ4T25seVBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZXRFZGl0VmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZXRFZGl0VmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHZhciBzZWxlY3RlZGRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSByeExpc3QuZW5jcnlwdGVkSWQ7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5wcm9kdWN0SWQpKSB7XHJcbiAgICAgICAgICBzZWxlY3RlZGRhdGEgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0LmZpbHRlcigoeDogeyBwcm9kdWN0SWQ6IGFueTsgfSkgPT4geC5wcm9kdWN0SWQgPT0gTnVtYmVyKHJ4TGlzdC5wcm9kdWN0SWQpKTtcclxuICAgICAgICAgIC8vIHNlbGVjdGVkZGF0YSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gPSBzZWxlY3RlZGRhdGFbMF07XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUoc2VsZWN0ZWRkYXRhWzBdKTtcclxuICAgICAgICAgIHRoaXMuYXNzaWduQ29tYmluYXRpb25zKHJ4TGlzdCk7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA9IHRoaXMuZ2V0QWRkQXV0aFZhbHVlKHRoaXMudGVtcEF1dGhvcml0eUZvcm1Obyk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgICAgIHRoaXMuZW5hYmxlUHJlc2NyaWJlQXMoc2VsZWN0ZWRkYXRhWzBdKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpIHtcclxuICAgIGxldCBmYXZvdXJpdGVzTGlzdCA9IHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA/IHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0IDogdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIHx8ICFmYXZvdXJpdGVzTGlzdCB8fCBmYXZvdXJpdGVzTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhdm91cml0ZXNMaXN0LnNvbWUoKGZhdk1lZDogeyBwcm9kdWN0SWQ6IGFueTsgcGJzQ29kZTogYW55OyBwcm9kdWN0TmFtZTogYW55OyBxdWFudGl0eTphbnk7IHJlcGVhdHM6YW55OyBkb3NlOmFueTsgZnJlcXVlbmN5OmFueTsgZm9vZDphbnk7IGluc3RydWN0aW9uOmFueTsgcm91dGU6YW55IH0pID0+XHJcbiAgICAgIGZhdk1lZC5wcm9kdWN0SWQudG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZC50b1N0cmluZygpICYmXHJcbiAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZhdk1lZC5wYnNDb2RlKSA/IGZhdk1lZC5wYnNDb2RlIDogXCJcIikgPT09ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSA6IFwiXCIpICYmXHJcbiAgICAgIGZhdk1lZC5wcm9kdWN0TmFtZSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lICYmIGZhdk1lZC5xdWFudGl0eT8udG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbD8udG9TdHJpbmcoKSAmJiBmYXZNZWQucmVwZWF0cz8udG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsPy50b1N0cmluZygpICYmIFxyXG4gICAgICBmYXZNZWQuZG9zZT8udG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWU/LnRvU3RyaW5nKCkgJiYgZmF2TWVkLmZyZXF1ZW5jeT8udG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWU/LnRvU3RyaW5nKCkgJiYgZmF2TWVkLmZvb2Q/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlPy50b1N0cmluZygpICYmIFxyXG4gICAgICBmYXZNZWQuaW5zdHJ1Y3Rpb24/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZT8udG9TdHJpbmcoKSAmJiBmYXZNZWQucm91dGU/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZT8udG9TdHJpbmcoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzUGJzVHlwZU1hdGNoKGl0ZW1QYnNUeXBlOiBhbnksIHBic1R5cGVGaWx0ZXI6IGFueSk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICghcGJzVHlwZUZpbHRlcj8udHJpbSgpKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBwYnNUeXBlRmlsdGVyXHJcbiAgICAgIC5zcGxpdCgvWyw7XSsvKVxyXG4gICAgICAubWFwKCh4OiBhbnkpID0+IHgudHJpbSgpLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XHJcblxyXG4gICAgY29uc3QgaXNQcml2YXRlRmlsdGVyID0gYWxsb3dlZFR5cGVzLmluY2x1ZGVzKCdwcml2YXRlJyk7XHJcblxyXG4gICAgaWYgKCFpdGVtUGJzVHlwZT8udHJpbSgpKSB7XHJcbiAgICAgIHJldHVybiBpc1ByaXZhdGVGaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbVR5cGVzID0gaXRlbVBic1R5cGVcclxuICAgICAgLnNwbGl0KC9bLDtdKy8pXHJcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4geC50cmltKCkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICByZXR1cm4gaXRlbVR5cGVzLnNvbWUoKHR5cGU6IGFueSkgPT4gYWxsb3dlZFR5cGVzLmluY2x1ZGVzKHR5cGUpKTtcclxuICB9XHJcblxyXG4gIGFzc2lnbkNvbWJpbmF0aW9ucyhtZWQ6IGFueSkgeyBcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSBtZWQucXVhbnRpdHk7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSBtZWQucmVwZWF0cztcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gbWVkLmRvc2U7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSA9IG1lZC5mcmVxdWVuY3k7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9IG1lZC5mb29kO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gbWVkLmluc3RydWN0aW9uO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlID0gbWVkLnJvdXRlO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZWwgPSB0aGlzLmZhdk1lZGljaW5lQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIGVsLnNjcm9sbCh7XHJcbiAgICAgICAgdG9wOiBlbC5zY3JvbGxIZWlnaHQsXHJcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIGdldEN1cnJlbnRGYXZFbmNyeXB0ZWRJZCgpIHtcclxuICAgIGxldCBmYXZvdXJpdGVzTGlzdCA9IHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA/IHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlTWVkaWNpbmVMaXN0IDogdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgIHJldHVybiBmYXZvdXJpdGVzTGlzdC5maW5kKChmYXZNZWQ6IHsgcHJvZHVjdElkOiBhbnk7IHBic0NvZGU6IGFueTsgcHJvZHVjdE5hbWU6IGFueTsgcXVhbnRpdHk6YW55OyByZXBlYXRzOmFueTsgZG9zZTphbnk7IGZyZXF1ZW5jeTphbnk7IGZvb2Q6YW55OyBpbnN0cnVjdGlvbjphbnk7IHJvdXRlOmFueSB9KSA9PlxyXG4gICAgICBmYXZNZWQucHJvZHVjdElkLnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQudG9TdHJpbmcoKSAmJlxyXG4gICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmYXZNZWQucGJzQ29kZSkgPyBmYXZNZWQucGJzQ29kZSA6IFwiXCIpID09PSAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgOiBcIlwiKSAmJlxyXG4gICAgICBmYXZNZWQucHJvZHVjdE5hbWUgPT09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSAmJiBmYXZNZWQucXVhbnRpdHk/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWw/LnRvU3RyaW5nKCkgJiYgZmF2TWVkLnJlcGVhdHM/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbD8udG9TdHJpbmcoKSAmJiBcclxuICAgICAgZmF2TWVkLmRvc2U/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlPy50b1N0cmluZygpICYmIGZhdk1lZC5mcmVxdWVuY3k/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlPy50b1N0cmluZygpICYmIGZhdk1lZC5mb29kPy50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZT8udG9TdHJpbmcoKSAmJiBcclxuICAgICAgZmF2TWVkLmluc3RydWN0aW9uPy50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWU/LnRvU3RyaW5nKCkgJiYgZmF2TWVkLnJvdXRlPy50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWU/LnRvU3RyaW5nKClcclxuICAgICk/LmVuY3J5cHRlZElkIHx8IFwiXCI7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPG5nLXRlbXBsYXRlICNyeHdpZGdldHM+IDwvbmctdGVtcGxhdGU+XHJcbjxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbWltc1wiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiUmVhY3RNb2RhbF9fT3ZlcmxheSBSZWFjdE1vZGFsX19PdmVybGF5LS1hZnRlci1vcGVuIFJlYWN0X19PdmVybGF5X09wZW5fUG9wdXAgbmV3X3J4X21pbXNfT3ZlcmxheV9PcGVuX1BvcHVwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiUmVhY3RNb2RhbF9fQ29udGVudCBSZWFjdE1vZGFsX19Db250ZW50LS1hZnRlci1vcGVuIFJlYWN0X19Db250ZW50IG5ld19yeF9taW1zX1JlYWN0X19Db250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cCBuZXdfcnhfbWltc19SZWFjdE1vZGFsX3BvcHVwXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxhcHAtc3BsYXNoc2NyZWVuICpuZ0lmPVwiUG9wdXBTY3JlZW5Mb2FkZXJcIiBbaGVpZ2h0XT1cIidoZWlnaHQtcngtc3BpbidcIj4gPC9hcHAtc3BsYXNoc2NyZWVuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGVudFwiICpuZ0lmPVwiIVBvcHVwU2NyZWVuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTMtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8xXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbW1vblNlcnZpY2VzLnJ4aWQgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeGlkICE9Jyc/J21kbC1jZWxsLS0yLWNvbCc6J21kbC1jZWxsLS0zLWNvbCdcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1ob2xhLWhlYWx0aC1sb2dvLTEucG5nXCIgYWx0PVwiaG9sYV9oZWFsdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0bztoZWlnaHQ6IDM3cHg7Ym9yZGVyLXJhZGl1czogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaGVhZGVyLWxvZ28ucG5nXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB7e2NvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgPyAnRWRpdCBTY3JpcHQnIDogJ05ldyBTY3JpcHQnfX1cclxuICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfZGVza3RvcF90aXRsZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYWxpZ24tc2VsZjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9oZWFkZXJfYm94X3RleHRcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4vPHNwYW4gc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZG9iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJkZC1NTS15eXl5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCAgbWRsLWNlbGwtLTUtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X3BvcHVwX2hlYWRlcl9ib3hfY29sIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8yIG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29tbW9uU2VydmljZXMucnhpZCAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4aWQgIT0nJz8nbWRsLWNlbGwtLTYtY29sJzonbWRsLWNlbGwtLTUtY29sJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2J0bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZShudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBiYWNrQnV0dG9uIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBDbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7cG9zaXRpb246IHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbW9uU2VydmljZXMucnhpZCAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4aWQgIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBuZXh0QnV0dG9uIHNlbGVjdC1hY3Rpb24tYnRuIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDE0MHB4O2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdzthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogY2VudGVyO3BhZGRpbmc6IDEwcHggIWltcG9ydGFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFjdGlvbkRyb3Bkb3dub3BlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25idG5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X2xvYWRlcl9idXR0b24gbS12NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyMHB4O2hlaWdodDogMjBweDttYXJnaW46IDBweCAhaW1wb3J0YW50O21hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IEFjdGlvbiA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGRycC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNzZWxlY3RBY3Rpb25Ecm9wZG93biBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfYm94IHNlbGVjdC1hY3Rpb24tdWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF91bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnP2NhbmNlbERyYWZ0KCk6Y2FuY2VsUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyw0KT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWw8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwicHJpbnRQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLDEpPycnOidlZGl0LWRpc2FibGUtZGF0YSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInJlaXNzdWVQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLDMpPycnOidlZGl0LWRpc2FibGUtZGF0YSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlLUlzc3VlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cImNlYXNlUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywyKT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZWFzZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJyZXNlbmRQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29tbW9uU2VydmljZXMuZW5hYmxlU2VuZFBhcGVyU2NyaXB0SW5NYWlsICYmIGNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyw1KSA/Jyc6J2VkaXQtZGlzYWJsZS1kYXRhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZW5kPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlICE9IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgYmFja0J1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCIgW2Rpc2FibGVkXT1cInRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlID09IDFcIiAoY2xpY2spPVwicGFnZU51bWJlck9uZVRvTmV4dCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkIG5leHRCdXR0b24gbmV3X21vYmlsZV9yeF9idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciB8fCBzZWxlY3Rpb25idG5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIE5leHRcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJhYm9ydGRpc2FibGU/J25leHRCdXR0b24nOidhYm9ydGJ1dHRvbidcIiAqbmdJZj1cImFib3J0QnRuRmxhZ1wiIFtkaXNhYmxlZF09XCJhYm9ydGRpc2FibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXNjcmlwZUFib3J0KClcIj48c3BhbiAqbmdJZj1cImFib3J0ZGlzYWJsZVwiIGNsYXNzPVwicnhfbG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfbG9hZGVyX2J1dHRvbiBtLXY0IHJ4X2J0bl9zcGluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiAqbmdJZj1cIiFhYm9ydGRpc2FibGVcIj5BYm9ydDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrXCIgKm5nSWY9XCJwYWdlID09IDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV4dEJ1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3dpZHRoOiAxMzVweDtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImluY2x1ZGVSdHBtTW9kYWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfbG9hZGVyX2J1dHRvbiBtLXY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7aGVpZ2h0OiAyMHB4O21hcmdpbjogMHB4ICFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDttYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZSA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGRycC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNQcmVzY3JpYmVEcm9wZG93biBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RQQlRORHJvcGRvd24gPT0gdHJ1ZVwiIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0UEJUTkRyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF91bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVuYWJsZUVTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDEpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTXByZXNjcmliZU1lZCgxKVwiPkUtUHJlc2NyaWJlIChEcmFmdCk8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDIpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgxKVwiICpuZ0lmPVwiIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGNvbW1vblNlcnZpY2VzLmVuYWJsZVNlbmRFU2NyaXB0SW5NYWlsXCI+RS1QcmVzY3JpYmUgYW5kIFNlbmQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVuYWJsZUVTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDIpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgyKVwiPkUtUHJlc2NyaWJlIGFuZCBQcmludDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW5hYmxlUGFwZXJTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKXx8IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnRScpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTXByZXNjcmliZU1lZCgyKVwiPlByZXNjcmliZSAoRHJhZnQpPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5lbmFibGVTZW5kUGFwZXJTY3JpcHRJbk1haWxcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKXx8IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnRScpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUGFwZXJwcmVzY3JpcGVTZW5kKDEpXCI+IFByZXNjcmliZSBhbmQgU2VuZDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW5hYmxlUGFwZXJTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ00nJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JykgfHwgKGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKT09ICdFJyl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmVzY3JpcGVQcmludCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpYmUgYW5kIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCByeF9pcGFkX2hlYWRlcl9ib3hfMyBuZXdfcnhfbW9iaWxlX3RpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0IG5ld19tb2JpbGVfcnhfcG9wdXBfaGVhZGVyX3RleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4vPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZG9iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJkZC1NTS15eXl5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlID09IDFcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNNZWRpY2luZURyb3Bkb3duIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm1lZGljaW5lIHNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIE1lZGljaW5lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IG1lZGlTZWFyY2hWYWx1ZSB9fVwiIChpbnB1dCk9XCJzZWFyY2hIYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTWVkaWNpbmVEcm9wZG93bkxpc3QoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG1kLTI0IG5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2hcIj5zZWFyY2g8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2hcIj48L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3RfYm94XCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgTV9saXN0X2JveF9zaG93OiBzZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPT09IHRydWVcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaE1lZGljaW5lTG9hZGVyXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWVkaWNpbmVMaXN0IG9mIHNlYXJjaGVkTWVkaWNpbmVMaXN0XCIgW2NsYXNzXT1cImdldGN1cnJlbnRpZChtZWRpY2luZUxpc3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJvZHVjdExpc3RCeU5hbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWNpbmVMaXN0Wydwcm9kSGlkZGVuVmFsdWUnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3Byb2REaXNwbGF5VmFsdWUnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3NlYXJjaEJhc2UnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiBbaW5uZXJIVE1MXT1cIm1lZGljaW5lTGlzdFsncHJvZERpc3BsYXlWYWx1ZSddXCI+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJzZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFwiPk5vIERhdGE8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiUHJpbWFyeVNlYXJjaFNwaW5uZXJcIiBjbGFzcz1cImxvYWRlciBtbC1sb2FkLTQ1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWRSeENvbnRlbnQnOnRoaXMuaXNOb25QYnNGbGFnfHwoY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscyE9JycgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyE9bnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkhPSdkcmFmdCcpfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwicnhPbmx5UEJTXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKDEpXCIgdmFsdWU9XCJQQlMvUlBCU1wiIFtkaXNhYmxlZF09XCJ0aGlzLmlzTm9uUGJzRmxhZ1wiIC8+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5QQlMvUlBCUzwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInJ4UHJpdmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgxKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZFJ4Q29udGVudCc6dGhpcy5pc05vblBic0ZsYWd8fChjb21tb25TZXJ2aWNlcy5yeERldGFpbHMhPW51bGwgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMhPScnICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSE9J2RyYWZ0Jyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeFByaXZhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS02LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4cHg7XCIgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmF2b3VyaXRlcy10b2dnbGUtbGlua1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNob3dGYXZvdXJ0aWVzKClcIj5cclxuICAgICAgICAgICAgICAgICAge3sgc2hvd0Zhdm91cml0ZU1lZCA/ICdIaWRlIGZhdm91cml0ZXMnIDogJ1Nob3cgZmF2b3VyaXRlcycgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjZmF2TWVkaWNpbmVDb250YWluZXIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFibGVfYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX3RpdGxlXCIgc3R5bGU9XCJwYWRkaW5nOiA1cHggMTBweDsgbWFyZ2luOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJsZSBGb3JtdWxhdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd0Zhdm91cml0ZU1lZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9uY2xpY2tNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyIG0tdjRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb25jbGlja01lZGljaW5lTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9PSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICAgICAgXCIgY2xhc3M9XCJub0RhdGFQcmVzY3JpYmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ObyBEYXRhPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfY29udGFpbmVyXCIgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lZCBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiIFtjbGFzc109XCJnZXRDbGFzc0Zvck1lZChtZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGb3JtdWxhdGlvbihtZWQsIGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfaGVhZGVyXCIgW2lubmVySFRNTF09XCJtZWQucHJvZHVjdE5hbWVcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGI+UXVhbnRpdHk6PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZWQucGJzVHlwZSE9dW5kZWZpbmVkICYmIG1lZC5wYnNUeXBlIT1udWxsICYmIG1lZC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVkLm51bWJlck9mUGFjayArIFwieFwiICsgbWVkLnVuaXRQZXJQYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lZC5tYXhRdHlVbml0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+PHNwYW4+PGI+UnB0czo8L2I+IHt7IG1lZC5yZXBlYXRzIH19PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIj48Yj5SZXN0cmljdGlvbjo8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lZC5SZXN0cmljdGlvbnMhPXVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmIG1lZC5SZXN0cmljdGlvbnMgIT0gXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZWQucGJzVHlwZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAoXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVzdHJpY3Rpb25zKG1lZC5SZXN0cmljdGlvbnMpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAobWVkLnBic1R5cGUhPXVuZGVmaW5lZCYmbWVkLnBic1R5cGUhPW51bGw/bWVkLnBic1R5cGU6XCJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IDwvc3Bhbj48c3Bhbj48Yj5HZW5lcmljIE5hbWU6IDwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibWVkLmdlbmVyaWNOYW1lXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lclwiIGNsYXNzPVwibG9hZGVyIG1sLWxvYWQtNDVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RmF2b3VyaXRlTWVkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9uY2xpY2tNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyIG0tdjRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb25jbGlja01lZGljaW5lTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cIm5vRGF0YVByZXNjcmliZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk5vIEZhdm91cml0ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF9jb250YWluZXJcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVkIG9mIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiIFtjbGFzc109XCJnZXRDbGFzc0ZvckZhdm91cml0ZU1lZChtZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcobWVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfYm94X2hlYWRlclwiIFtpbm5lckhUTUxdPVwibWVkLnByb2R1Y3ROYW1lXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiPlF1YW50aXR5OjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLnF1YW50aXR5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4+PGI+UnB0czo8L2I+IHt7IG1lZC5yZXBlYXRzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPjxiPlJlc3RyaWN0aW9uOjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLnJlc3RyaWN0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4+PGI+R2VuZXJpYyBOYW1lOiA8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm1lZC5nZW5lcmljTmFtZVwiPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlNlY29uZGFyeVNlYXJjaFNwaW5uZXJcIiBjbGFzcz1cImxvYWRlciBtbC1sb2FkLTQ1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmYXZNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZhdk1lZGljaW5lTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNS1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX3RpdGxlXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUhPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWU6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpYyBOYW1lOjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogJydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBOYW1lOjxzcGFuIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRCcmFuZE5hbWUoY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbilcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgU2NoZWR1bGU6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uICE9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24hPW51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMhPW51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wb2lzb25DbGFzc2VzLmxlbmd0aD4wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXNbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTm8gU2NoZWR1bGVkIEluZm9ybWF0aW9uIEF2YWlsYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQQlMgTGlzdGluZzo8c3Bhbj57e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9dW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUhPXVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9bnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCIgKFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbjowcHggO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1heCBRdWFudGl0eSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRNYXhRdWFudGl0eSgpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgUmVwZWF0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XCJcIn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeSE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnkgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGVnb3J5Q29kZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0ZWdvcnlDb2RlIT1udWxsXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVnbmFuY3kgQ2F0ZWdvcnk6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGVnb3J5Q29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRpdGlvbmFsTm90ZSAhPXVuZGVmaW5lZCAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbE5vdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZ25hbmN5Q2F0ZWdvcnkuYWRkaXRpb25hbE5vdGVcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtpbm5lckhUTUxdPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVzdHJpY3Rpb25zOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxvbCBzdHlsZT1cIm1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDE1cHhcIiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zIT11bmRlZmluZWQgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuZXdfcnhfcG9wX2F1dF9pbnRcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN0cmljdGlvbiBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5SZXN0cmljdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3Jlc3RyaWN0aW9uVGV4dFwiICpuZ0lmPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0Lmxlbmd0aCA8IDYwXCI+PGI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgfX08L2I+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaHRtbFRvRm9ybWF0dGVkVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoID4gNjBcIj48Yj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic3RyaW5nKDAsIDYwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj4uLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjZmY5OTc4XCIgaWQ9XCJzaG93LXRvb2x0aXAtaWRcIj5TaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3JlPC9hPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBkZW1vPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgW2lubmVySFRNTF09XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHRcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfM19zbWFsbF9ib3hcIiBbc3R5bGUuZGlzcGxheV09XCJpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpID8gJ2lubGluZS1mbGV4JyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKCkgPyAnbWF4LWNvbnRlbnQnIDogbnVsbFwiICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6IDEwcHg7XCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF9jb2xcIiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbFwiIChjbGljayk9XCJhZGRUb0Zhdm91cml0ZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5leHRCdXR0b25dPVwiIWlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnJtZmF2YnV0dG9uXT1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpOyBlbHNlIGFkZFRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUgZnJvbSBmYXZvdXJpdGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhZGRUZXh0PisgQWRkIHRvIGZhdm91cml0ZXM8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazsgbWFyZ2luLXJpZ2h0OiAxMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlF1YW50aXR5OiA8L3NwYW4+PGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiIG5hbWU9XCJxdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHN0ZXA9XCIxXCIgW21pbl09XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbFwiIChrZXlwcmVzcyk9XCJjaGVja01vYmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInF1YW50aXR5Q2hhbmdlKClcIiAocGFzdGUpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVwZWF0czogPC9zcGFuPjxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3R9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInJwdHNcIiBwbGFjZWhvbGRlcj1cIlwiIFttaW5dPVwiMFwiIChpbnB1dCk9XCJyZXBlYXRzQ2hhbmdlKClcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWxcIiAocGFzdGUpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiY2hlY2tNb2JpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiB8fCBjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgZGlzYWJsZWRSeENvbnRlbnQ6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmd9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICBEb3NlOlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj48aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNoZWNrYm94MVwiIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy51blVzdWFsRG9zZUZsYWdcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7Zm9udC1zaXplOiAxNnB4O21hcmdpbi10b3A6IC03cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlVudXN1YWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvc2U8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkZG9zZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlXCIgKGNsaWNrKT1cImRvc2VEcm9wZG93bigpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjRG9zZURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3REb3NlRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0RG9zZVZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRvc2Ugb2YgZG9zZURhdGFcIiAoY2xpY2spPVwic2VsZWN0RG9zZVZhbHVlKGRvc2UpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OiBkb3NlWyd0ZXh0J10gPT0gY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9zZVtcInRleHRcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkZyZXF1ZW5jeTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRGcmVxdWVuY3k6XCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBGcmVxdWVuY3lcIiByZWFkT25seSBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZyZXFEcm9wZG93bigpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjRnJlcURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RGcmVxRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdEZyZXF1ZW5jeVZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZyZXF1ZW5jeSBvZiBmcmVxdWVuY3lEYXRhXCIgKGNsaWNrKT1cInNlbGVjdEZyZXF1ZW5jeVZhbHVlKGZyZXF1ZW5jeSlcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3lbJ3RleHQnXSA9PSBjb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmcmVxdWVuY3lbXCJ0ZXh0XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Gb29kOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZEZyZXF1ZW5jeTpcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZvb2RcIiByZWFkT25seSBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvb2REcm9wZG93bigpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjRm9vZERyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RGb29kRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdEZvb2RWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmb29kIG9mIGZvb2REYXRhXCIgKGNsaWNrKT1cInNlbGVjdEZvb2RWYWx1ZShmb29kKVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDogZm9vZFsndGV4dCddID09IGNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvb2RbXCJ0ZXh0XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5JbnN0cnVjdGlvbjo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwiSW5zdHJ1Y3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEluc3RydWN0aW9uXCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5zdHJ1Y3Rpb25Ecm9wZG93bigpXCIgKGNoYW5nZSk9XCJpbnN0cnVjdGlvbk9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhbHBoYVJlc3RyaWN0aW9uKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNJbnN0cnVjdGlvbkRyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPT09IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwiQ2hhbmdlSW5zdHJ1Y3Rpb24obnVsbClcIiBjbGFzcz1cInAtMTJcIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uaWQgPT0gY29tbW9uU2VydmljZXMuY29tcGxleElkICYmIGl0ZW0udGV4dCA9PSBjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID8gJ2hlaWdobGlnaHQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGluc3RydWN0aW9uRGF0YTsgaW5kZXggYXMgaVwiIChjbGljayk9XCJDaGFuZ2VJbnN0cnVjdGlvbihpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS51c2VyaWQgIT09IDBcIiBjbGFzcz1cInNwYW5faWNvblwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgc3R5bGU9XCJwYWRkaW5nOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEluc3RydWN0aW9uKGl0ZW0uaWQsIGl0ZW0pXCI+Y3JlYXRlPC9pPjxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4OyBwYWRkaW5nOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlSW5zdHJ1Y3Rpb24oaXRlbS5pZClcIj5jbGVhcjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIlJYX0FERF9kcm9wZG93bl9idG5cIiAoY2xpY2spPVwiYWRkTmV3SW5zdHJ1Y3Rpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgQWRkIENvbXBsZXggSW5zdHJ1Y3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9PSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGxleF9pbnN0cnVjdGlvbl9ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4OyBtYXJnaW46IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXggSW5zdHJ1Y3Rpb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnN0cnVjdGlvbl9maWVsZF9jbHIgbWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dCBcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIkluc3RydWN0aW9uXCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIENvbXBsZXggSW5zdHJ1Y3Rpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IG1hcmdpbjogMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxleCBJbnN0cnVjdGlvbiBEZXNjcmlwdGlvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIyXCIgbWF4TGVuZ3RoPVwiNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb25cIiBwbGFjZWhvbGRlcj1cIkVudGVyIENvbXBsZXggSW5zdHJ1Y3Rpb24gRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnN0cnVjdGlvbl9maWVsZF9jbHIgdy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlJYX0FERF9kcm9wZG93bl9idG5fMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXJJbnN0cnVjdGlvbigpXCIgY2xhc3M9XCJyeC1pbnN0cnVjdGlvbi1idG5cIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNhdmVJbnN0cnVjdGlvbigpXCIgY2xhc3M9XCJyeC1pbnN0cnVjdGlvbi1idG5cIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJvdXRlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZFJvdXRlOlwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUm91dGVcIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWVcIiBtYXhsZW5ndGg9XCI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJvdXRlRHJvcGRvd24oKVwiIChrZXlwcmVzcyk9XCJhbHBoYVJlc3RyaWN0aW9uKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNSb3V0ZURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RSb3V0ZURyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMTBweDsgcG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcm91dGVfX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIFt2YWx1ZV09XCJyb3V0ZURhdGFGaWx0ZXIgPyByb3V0ZURhdGFGaWx0ZXIgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJyb3V0ZUZpbHRlcigkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgbWQtMjQgbmV3X3J4X3BvcHVwX3RhYl8xX2lucHV0X3NlYXJjaCByeC1zZWFyY2gtaWNvblwiPnNlYXJjaDwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgKm5nSWY9XCJmaWx0ZXJSb3V0ZUl0ZW1zKHJvdXRlRGF0YSwgcm91dGVEYXRhRmlsdGVyKS5sZW5ndGggIT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duIHJ4X2Ryb3Bkb3duX3JvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdXRlIG9mIGZpbHRlclJvdXRlSXRlbXMocm91dGVEYXRhLCByb3V0ZURhdGFGaWx0ZXIpXHJcbiAgICAgICAgICAgICAgICAgIFwiIChjbGljayk9XCJzZWxlY3RSb3V0ZXNlYXJjVmFsdWUocm91dGUpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm91dGVbJ3JvdXRlTmFtZSddID09IGNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByb3V0ZVtcInJvdXRlTmFtZVwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cImZpbHRlclJvdXRlSXRlbXMocm91dGVEYXRhLCByb3V0ZURhdGFGaWx0ZXIpLmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd24gcnhfZHJvcGRvd25fcm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaT5ubyBkYXRhPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UHJvIFJlIE5hdGEgUHJlc2NyaXB0aW9uOjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucnhQUk5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJQUk5DaGFuZ2UoY29tbW9uU2VydmljZXMucnhQUk4pXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlByb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZSBOYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmlwdGlvbjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlByZXNjcmliZSBBczo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3JhZGlvYm94X2J1dHRvbiByeF9yYWRpb19vdmVyYWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyeF9yYWRpb19sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInJhZGlvXCIgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvbiBjdXN0b20tcmFkaW8tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiUHJlc2NyaWJlQXNcIiBbdmFsdWVdPVwiJ1ByaXZhdGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gJ3ByaXZhdGUnXCIgKGNsaWNrKT1cInByaXZhdGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBU1wiIC8+PHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsIHJhZGlvX3R4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UHJpdmF0ZTwvc3Bhbj48L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJ4X3JhZGlvX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwicmFkaW9cIiBjaGVja2VkPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uIGQtaW5saW5lIHJhZGlvIGN1c3RvbS1yYWRpby1idXR0b25cIiBuYW1lPVwiUHJlc2NyaWJlQXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCInUEJTJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNjcmliZUFTX1BCUyB8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSAncGJzJ1wiIChjbGljayk9XCJQQlMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBU1wiIC8+PHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsIHJhZGlvX3R4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgJ2Rpc2FibGVkLXN0eWxlJzogcHJlc2NyaWJlQVNfUEJTID09IHRydWV8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlBCUzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyeF9yYWRpb19sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInJhZGlvXCIgY2hlY2tlZD1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvbiBkLWlubGluZSByYWRpbyBjdXN0b20tcmFkaW8tYnV0dG9uXCIgbmFtZT1cIlByZXNjcmliZUFzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJ1JQQlMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2NyaWJlQVNfUlBCUyB8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSAncnBicydcIiAoY2xpY2spPVwiUlBCUygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1yYWRpb19fbGFiZWwgcmFkaW9fdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyAnZGlzYWJsZWQtc3R5bGUnOiBwcmVzY3JpYmVBU19SUEJTID09IHRydWV8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlJQQlM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveFwiICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT11bmRlZmluZWQgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT1udWxsICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ25vbiBwYnMnICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9ICcnICYmIGlzTm9uUGJzRmxhZyA9PSBmYWxzZSAmJiAhaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5XHJcbiAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3hcIiBjbGFzcz1cImNoZWNrX2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcIiAoY2xpY2spPVwidW5saXN0ZWRSQSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbCBjaGVja19ib3hfbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgVW5saXN0ZWQgUkFcclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgTV9DVEdfYm94X2hpZGU6ICEoXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscyAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudEN0Z0ZsYWcgPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudEN0Z0NvUGF5bWVudCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdwYnMnXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5DVEcvUEJTIENvIFBheW1lbnQ6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnQgPT0gdHJ1ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5DVEcvUEJTXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENvIFBheW1lbnQ8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgZGlzYWJsZWRSeENvbnRlbnQ6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmd9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+U2NyaXB0IERhdGU6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cIlJ4U2NyaXB0RGF0ZVwiIHBsYWNlaG9sZGVyPVwiIC4uLy4uLy4uLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+U3RhcnQgRGF0ZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIiBpZD1cIlJ4U3RhcnREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiAuLi8uLi8uLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5zdGFydERhdGVcIiAobmdNb2RlbENoYW5nZSk9XCJjb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RW5kIERhdGU6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCIgaWQ9XCJSeEVuZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiLi4vLi4vLi4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZW5kRGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5EYXlzIEJldHdlZW4gUmVwZWF0czo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiAocGFzdGUpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBwbGFjZWhvbGRlcj1cIkVudGVyIERheXMgQmV0d2VlbiBSZXBlYXRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfHxjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3R9XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgaWQ9XCJEYXliZXR3ZWVucmVwZWF0c1wiIFttaW5dPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb258fGNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbFwiIChrZXlwcmVzcyk9XCJjaGVja01vYmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZGF5c2NoYW5nZSgpXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5QdXJwb3NlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZFB1cnBvc2U6XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFB1cnBvc2VcIiByZWFkT25seSBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHVycG9zZURyb3Bkb3duKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI1B1cnBvc2VEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3ggbmV3X3J4X3BvcHVwX3RhYl9wdXJwb3NlX2JveCBoLTE2MHBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RQdXJwb3NlRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3RQdXJwb3NlVmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHB1cnBvc2Ugb2YgcHVycG9zZURhdGFcIiAoY2xpY2spPVwic2VsZWN0UHVycG9zZVZhbHVlKHB1cnBvc2UpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1cnBvc2VbJ2xvb2t1cFRleHQnXSA9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHVycG9zZVtcImxvb2t1cFRleHRcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9DVEdfYm94X2hpZGU6IGNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lICE9IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+U3Vic3RpdHV0aW9uOjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0aGlzLmJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyhjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cpXCIgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICBcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+QnJhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgU3Vic3RpdHV0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBQZXJtaXR0ZWQ8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX0NUR19ib3hfaGlkZV9icmFuZDogY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIH1cIiBpZD1cImJyYW5kbmFtZXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJoaWRlVG9vbFRpcCgpXCIgKG1vdXNlZW50ZXIpPVwic2hvd3Rvb2x0aXAoY29tbW9uU2VydmljZXMubGVtaSxicmFuZHRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5CcmFuZCBOYW1lOjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnJhbmR0b29sdGlwPjxzcGFuIGNsYXNzPVwiaW5jbHVkZV9icmFuZF90b29sdGlwXCI+VGhlIHNlbGVjdGVkIHByb2R1Y3QgaXMgTEVNSVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllZC4gVGhlcmVmb3JlIGl0IG1heSBiZVxyXG4gICAgICAgICAgICAgICAgICAgICAgcHJlc2NyaWJlZCBieSB0aGUgYnJhbmQgbmFtZSBvbmx5Ljwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBNX0NUR19ib3hfaGlkZV9icmFuZF9uYW1lOiBjb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0aGlzLmlzQ2hhbmdlQnJhbmROYW1lKGNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lKVwiIC8+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5JbmNsdWRlIEJyYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJlZ3VsYXRpb24gMjQ6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjRcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UmVndWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAyNDwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBkaXNhYmxlZFJ4Q29udGVudDogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZ31cIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkRPIE5PVCBzZW5kIHRvIE15U0w6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudFwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5ET1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBOT1Qgc2VuZCB0byBNeVNMPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFBoYXJtYWN5OiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+PGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5XCIgKGNoYW5nZSk9XCJzZW5kVG9QaGFybWFjeUNoYW5nZSgpXCIgLz48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwO2ZvbnQtc2l6ZTogMTZweDttYXJnaW4tdG9wOiAtN3B4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5TZW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBQaGFybWFjeTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRkb3NlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZVwiIChjbGljayk9XCJzdHBWYWx1ZURyb3Bkb3duKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fQ1RHX2JveF9oaWRlOiBjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAhPSB0cnVlIH1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNzdHBEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3ggbmV3X3J4X3BvcHVwX3RhYl9zdHBfYm94IGgtOTNwXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdHN0cERyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdFN0cFZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc2VuZHRvcGhhcm1hY3kgb2Ygc2VuZHRvcGhhcm1hY3lEYXRhXCIgKGNsaWNrKT1cInNlbGVjdFN0cFZhbHVlKHNlbmR0b3BoYXJtYWN5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzZW5kdG9waGFybWFjeS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5FbWVyZ2VuY3kgU3VwcGx5OjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5XCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPkVtZXJnZW5jeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTdXBwbHk8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlID09IDJcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweDsgb3BhY2l0eTogMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiIGNsYXNzPVwibWRsLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SWDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YiBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWVcIj48L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIiBzdHlsZT1cIm1hcmdpbjogMHB4XCI+UXVhbnRpdHk6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IHJnYig0NSwgNDUsIDQ1KTsgZm9udC13ZWlnaHQ6IDYwMFwiPnt7IGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IFJlcGVhdHM6IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig0NSwgNDUsIDQ1KTsgZm9udC13ZWlnaHQ6IDYwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsIH19PC9zcGFuPiBEZWZhdWx0IFF1YW50aXR5Ont7Z2V0RGVmYXVsdFF1YW50aXR5KCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBSZXBlYXRzOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsJiZjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMhPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOlwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlICE9ICcnIHx8Y29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlICE9ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSB9fSA8L3NwYW4+PHNwYW4+e3sgY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSAhPSAnJ1wiIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e0luc3RydWN0aW9uRGVzY3JpcHRpb24gIT1cIlwiICYmIEluc3RydWN0aW9uRGVzY3JpcHRpb24hPW51bGw/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uOmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUhPVwiXCIgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUhPW51bGw/Y29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZTpcIlwifX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlICE9ICcnXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQLlIuTiA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnJ4UFJOXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5yeFBSTlwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5EYXlzIEJldHdlZW4gUmVwZWF0czpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwpXCI+e3tjb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVudXN1YWwgRG9zZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy51blVzdWFsRG9zZUZsYWdcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+U2NyaXB0IERhdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3RoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZXxkYXRlOidkZC1NTS15eXl5J319PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlN0YXJ0IERhdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3RoaXMuY29tbW9uU2VydmljZXMuc3RhcnREYXRlfGRhdGU6J2RkLU1NLXl5eXknfX08L3NwYW4+LCBFbmQgRGF0ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlfGRhdGU6J2RkLU1NLXl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlByZXNjcmliZSBBczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMpXCI+e3tjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBU319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5QdXJwb3NlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUpXCI+e3tjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBCcmFuZCBOYW1lOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWVcIj4tPC9zcGFuPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5kIFN1YnN0aXR1dGlvbiBOb3QgUGVybWl0dGVkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1wiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ3VsYXRpb24gMjQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNFwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1RHL1BCUyBDbyBQYXltZW50OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnRcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudFwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPIE5PVCBzZW5kIHRvIE15U0w6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLm15U0xDb25zZW50XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudFwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQgdG8gUGhhcm1hY3k6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVwiPi08L3NwYW4+LCBTZW5kIHRvIFBoYXJtYWN5IFZhbHVlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3shY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlKT9jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlOictJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtZXJnZW5jeSBTdXBwbHk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseVwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Ob3RlIFRvIFBoYXJtYWN5OjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiM1wiIG1heGxlbmd0aD1cIjUwXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYSByeC1tLXctNTM1cFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkFubm90YXRpb246PC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiM1wiIG1heGxlbmd0aD1cIjUwMFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYSByeC1tLXctNTM1cFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJlYXNvbiBGb3IgUHJlc2NyaXB0aW9uOjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjNcIiBtYXhsZW5ndGg9XCI1MFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhIHJ4LW0tdy01MzVwXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RoaXMuZ2V0U3RhdGVBdXRob3JpdHlMYWJlbChjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luOiAwcHg7bWFyZ2luLXRvcDogLThweDttYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXRlLXR4dC1jb2xvciBuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPihSZWxldmFudCB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBuYW1lPVwiYXBwcm92YWxcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlclwiIG1heGxlbmd0aD1cIjI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImF1dGhvcml0eU5vVmFsaWRhdGlvbigkZXZlbnQpXCIgKG5nTW9kZWxDaGFuZ2UpPVwiYXV0aG9yaXR5Tm9DaGFuZ2UoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ25ld19yeF9ub19hdXRob3JpdHknOiFzaG93QXV0aG9yaXR5Qm94KFxyXG4gICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zOicnLGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLGNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LGNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgc2hvd0F1dGhvcml0eUJveChcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zOicnLFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMHB4XCIgY2xhc3M9XCJtZGwtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS04LWNvbCBtZGwtY2VsbC0tNi1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9OZXdcIj5IT1RMSU5FOiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfc3BhblwiPnt7Y29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSUEJTJz8nMTgwMDU1MjU4MCc6JzE4MDA4ODgzMzMnfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTQtY29sIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtbWltcy5wbmdcIiBhbHQ9XCJNSU1TIGxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogODBweDsgaGVpZ2h0OiBhdXRvXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cInBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZXIgTmFtZTo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2NyaWJlciBOdW1iZXI6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlck51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGllbnQgTWVkaWNhcmUgTnVtYmVyOjxzcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXR5IEZvcm0gTm86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1Ob1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5BdXRob3JpdHkgSXRlbTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXV0aG9yaXR5X2l0ZW1fdGV4dFwiIFtpbm5lckhUTUxdPVwiY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZVwiPjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3AgbmV3X3J4X3BvcHVwX3RhYl9zbWFsbEJveGVzXCIgc3R5bGU9XCJtYXJnaW46IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5OjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig0NSwgNDUsIDQ1KTsgZm9udC13ZWlnaHQ6IDYwMFwiPiB7eyBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+IFJlcGVhdHM6PHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDQ1LCA0NSwgNDUpOyBmb250LXdlaWdodDogNjAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsIH19PC9zcGFuPiBEZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHk6e3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsJiZjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzIT1udWxsPyhjb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZz9cIjFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB4IFwiOlwiXCIpK2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM6XCJcIn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlcGVhdHM6e3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsJiZjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMhPW51bGw/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOlwiXCJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUEJTIExpc3RlZCBJbmRpY2F0aW9uIEF1dGhvcml0eTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4taGVpZ2h0OiA3MHB4OyBtYXgtaGVpZ2h0OiAxNTBweDsgb3ZlcmZsb3c6IGF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9XCJtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAxNXB4O2xpc3Qtc3R5bGU6IG5vbmU7cGFkZGluZzogMHB4O1wiICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID09IHRydWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtwYWRkaW5nOiAwcHggMTBweDttYXJnaW4tYm90dG9tOiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcF9hdXRfaW50IGN1cnNvclwiICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN0cmljdGlvbiBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5SZXN0cmljdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggYXMgaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yeF9wb3BfYXV0X2luc19zZWxlY3Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPT0gaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXcgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0ICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aW9uQXV0aG9yaXR5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoIDwgODBcIj48Yj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxUb0Zvcm1hdHRlZFRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0Lmxlbmd0aCA+IDgwXCI+PGIgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGlvbkF1dGhvcml0eShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlIH19PC9iPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aW9uQXV0aG9yaXR5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxUb0Zvcm1hdHRlZFRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN1YnN0cmluZygwLCA4MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPi4uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsgY29sb3I6ICNmZjk5NzhcIiBpZD1cInNob3ctdG9vbHRpcC1pZFwiPlNob3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9yZTwvYT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwZGVtbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfdG9vbHRpcF9pbm5lcl9ib3hcIiBbaW5uZXJIVE1MXT1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dFwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlBCUyBOb3Rlczo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIyXCIgbWF4bGVuZ3RoPVwiNTAwXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnBic05vdGVzXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRpY2F0aW9uIEZvciBUaGlzIEF1dGhvcml0eTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIyXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYSByeC1tLXctMTAwXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBdXRob3JpdHlMYWJlbChjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJhcHByb3ZhbFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZHNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuYXBwcm92YWxOb1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXRjaGFuZ2VBcHByb3ZhbE5vKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImF1dGhvcml0eU5vVmFsaWRhdGlvbigkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICFzaG93QXV0aG9yaXR5Qm94KFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uczonJyxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtbWltcy5wbmdcIiBhbHQ9XCJNSU1TIGxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA4MHB4OyBoZWlnaHQ6IGF1dG9cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJOb19BdXRob3JpdHlfYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cD5ObyBBdXRob3JpdHkgUmVxdWlyZWQ8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9mb290ZXJfYnJhbmRcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1sLTEwXCI+PHNwYW4+SG9sYSBDb25zdWx0IHwgMS4wIDxzcGFuICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2FuZGJveFwiPnwgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicnhfc3RhZ2luZ1wiPlRoaXMgaXMgYSBzYW5kYm94IGVudmlyb25tZW50PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9wPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMTVwXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3BvcHVwX2Zvb3Rlcl90ZXh0XCI+wqkgMjAyNiBIb2xhIEhlYWx0aCwgYSBicmFuZCBvZiBQYWNrYXBpbGwgUHR5IEx0ZCB8IHZcclxuICAgICAgICAgICAgICAgICAgMS4xLjMgfFxyXG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9ob2xhLmhlYWx0aC9jb25zdWx0LXRlcm1zXCIgdGFyZ2V0PVwiX2JsYW5rXCI+VGVybXM8L2E+IHxcclxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vaG9sYS5oZWFsdGgvY29uc3VsdC1wcml2YWN5LXBvbGljeVwiIHRhcmdldD1cIl9ibGFua1wiPlByaXZhY3kgUG9saWN5PC9hPiB8XHJcbiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJtYWlsdG86c3VwcG9ydEBob2xhLmhlYWx0aFwiIHRhcmdldD1cIl9ibGFua1wiPkhlbHA8L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
5016
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaG9sYS1yeC9zcmMvbGliL3J4L3J4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hvbGEtcngvc3JjL2xpYi9yeC9yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBMEIsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcxSyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUUxSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQztBQUMzSSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUNySSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBd0d0QixZQUNTLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzdCLFVBQXNCLEVBQ3RCLFlBQStCLEVBQ2hDLFFBQWtCLEVBQ2pCLFFBQW1CLEVBQ25CLEtBQWlCLEVBQ2pCLGdCQUFrQztRQVBuQyxlQUFVLEdBQVYs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QUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDbkM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO1lBQ3pRLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFVBQVUsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUE7WUFDblIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUE7U0FDelI7UUFDRCxP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QUssRUFBRTtnQkFDRSxPQUFPO3NCQUFwRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsTUFBTTtzQkFBbEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNHLE9BQU87c0JBQXBELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDUyxjQUFjO3NCQUFsRSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSixRQUFRO3NCQUF0RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0ksVUFBVTtzQkFBMUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ08sb0JBQW9CO3NCQUF6RSxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFMUMsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVQLHVCQUF1QjtzQkFEdEIsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBdUZWLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxVQUFVO3NCQUFuQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2EsT0FBTztzQkFBM0MsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9DbkMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2VzIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uJztcclxuaW1wb3J0IHsgQnJhbmRJbmNsdWRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJhbmQtaW5jbHVkZS9icmFuZC1pbmNsdWRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEF2YWlsYWJsZUZvcm11bGF0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2JyYW5kLWluY2x1ZGUvYXZhaWxhYmxlLWZvcm11bGF0aW9ucy9hdmFpbGFibGUtZm9ybXVsYXRpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSXNBdXRob3JpdHlDb21wb25lbnQgfSBmcm9tICcuLi9pcy1hdXRob3JpdHkvaXMtYXV0aG9yaXR5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL3JlYWwtdGltZS1wcmVzY3JpcHRpb24tbW9uaXRvcmluZy9yZWFsLXRpbWUtcHJlc2NyaXB0aW9uLW1vbml0b3JpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZmlybVBhdGllbnRDb250YWN0RGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZpcm0tcGF0aWVudC1jb250YWN0LWRldGFpbHMvY29uZmlybS1wYXRpZW50LWNvbnRhY3QtZGV0YWlscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4uL3Bhc3N3b3JkL3Bhc3N3b3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGNvbmZpZywgZXJyb3Jjb25maWcgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvY29uZmlnJztcclxuaW1wb3J0IHsgQ2Vhc2VQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NlYXNlLXBvcHVwL2NlYXNlLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlaXNzdWVQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3JlaXNzdWUtcG9wdXAvcmVpc3N1ZS1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbG9zZVBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2xvc2UtcG9wdXAvY2xvc2UtcG9wdXAuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJ4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3J4LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnTWVkaWNpbmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSB3cmFwcGVyUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQcmVzY3JpYmVEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcmVzY3JpYmVEcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnRG9zZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRvc2VSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0ZyZXFEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmcmVxUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdHBEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBzdHBSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ0Zvb2REcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb29kUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdJbnN0cnVjdGlvbkRyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIEluc3RydWN0aW9uUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdSb3V0ZURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHJvdXRlUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdQdXJwb3NlRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVycG9zZVJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZmF2TWVkaWNpbmVDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgZmF2TWVkaWNpbmVDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KCkgY2xvc2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc3VibWl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0QWN0aW9uRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBzZWxlY3RBY3Rpb25Ecm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XHJcbiAgc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTtcclxuICBkb3NlRGF0YSA9IFtdO1xyXG4gIGZyZXF1ZW5jeURhdGEgPSBbXTtcclxuICBzZW5kdG9waGFybWFjeURhdGE6IGFueSA9IFtdO1xyXG4gIGZvb2REYXRhID0gW107XHJcbiAgcHVycG9zZURhdGEgPSBbXTtcclxuICByb3V0ZURhdGEgPSBbXTtcclxuICBjZWFzZURhdGEgPSBbXTtcclxuICBpbnN0cnVjdGlvbkRhdGE6IGFueSA9IFtdO1xyXG4gIHJvdXRlRGF0YUZpbHRlciA9ICcnO1xyXG4gIEluc3RydWN0aW9uSWQgPSAnJztcclxuICAvLyB0aW1lcjogYW55O1xyXG4gIC8vd2FpdFRpbWUgPSAyNTAwO1xyXG4gIGlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICBwYWdlID0gMTtcclxuICBzZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3REb3NlRHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3RGcmVxRHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3RzdHBEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEZvb2REcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTtcclxuICBzZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgc2VsZWN0Um91dGVEcm9wZG93biA9IGZhbHNlO1xyXG4gIHNlbGVjdFB1cnBvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gIG1lZGlTZWFyY2hWYWx1ZSA9ICcnO1xyXG4gIHRlbXBNZWRpU2VhcmNoVmFsdWUgPSAnJztcclxuICBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gJyc7XHJcbiAgc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICBmYXZNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gIHNlYXJjaGVkTWVkaWNpbmVMaXN0OiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWw6IGFueSA9IFtdO1xyXG4gIG9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gIHJ4T25seVBCUyA9IGZhbHNlO1xyXG4gIHJ4UHJpdmF0ZSA9IGZhbHNlO1xyXG4gIHJlc3RyaWN0aW9ucyA9IG51bGw7XHJcbiAgaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgcHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICBwcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICBicmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgYnJhbmRNZWRpY3Bic0NvZGUgPSAnJztcclxuICBicmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gIHNlbGVjdGVkQnJhbmRJbmRleCA9ICcnO1xyXG4gIG1vbGVjdWxlTmFtZVRleHQgPSAnJztcclxuICBtb2xlY3VsZU5hbWVUeXBlID0gJyc7XHJcbiAgbW9sZWN1bGVTdHJlbmd0aFRleHQgPSAnJztcclxuICBpc1J0cG1OZXh0ID0gZmFsc2U7XHJcbiAgc2VsZWN0aW9uYnRuTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICBpc05vblBic0ZsYWc6IGFueSA9IGZhbHNlO1xyXG4gIGFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gIGFib3J0ZGlzYWJsZSA9IGZhbHNlO1xyXG4gIHJlc3BvbnNlRGF0YTogYW55ID0ge1xyXG4gICAgaXNBYm9ydDogZmFsc2UsXHJcbiAgICBpc1ByZXNjcmliZTogZmFsc2UsXHJcbiAgICBhYm9ydFN1Y2Nlc3M6IGZhbHNlLFxyXG4gICAgcHJlc2NyaWJlU3VjY2VzczogZmFsc2UsXHJcbiAgICBwcmVzY3JpYmVkYXRhOiBcIlwiLFxyXG4gICAgYWJvcnRNc2c6IFwiXCIsXHJcbiAgICBQcmVzY3JpYmVNc2c6IFwiXCIsXHJcbiAgICBwcmVzY3JpYmVFcnJvcjogZmFsc2UsXHJcbiAgICBhYm9ydEVycm9yOiBmYWxzZSxcclxuICAgIHByZXNjcmliZUVycl9jb2RlOiBcIlwiLFxyXG4gICAgYWJvcnRFcnJfY29kZTogXCJcIixcclxuICAgIGJvZHk6IFwiXCJcclxuICB9XHJcbiAgcHJvZEhpZGRlbk5hbWUgPSBcIlwiO1xyXG4gIFByb2R1Y3RUeXBlID0gXCJcIjtcclxuICBQcm9kdWN0U2VhcmNoTmFtZSA9IFwiXCI7XHJcbiAgc2VhcmNoTWVkaWNpbmVzTGVuZ3RoOiBhbnkgPSBcIlwiO1xyXG4gIHNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgPSAxO1xyXG4gIHNlYXJjaEJ5bmFtZUxlbmd0aDogYW55ID0gXCJcIjtcclxuICBzZWFyY2hCeW5hbWVQYWdlTnVtYmVyID0gMTtcclxuICBpc2VwcmlzY3JpYmVwcmludCA9IGZhbHNlO1xyXG4gIGVkaXRJbnN0cnVjdGlvbkZsYWcgPSBmYWxzZTtcclxuICBQcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gIFNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICBwcmVzY3JpYmVBU19SUEJTX1VSQSA9IHRydWU7XHJcbiAgdGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gIGlzUHJlc2NyaWJlQXNQcml2YXRlT25seSA9IGZhbHNlO1xyXG4gIHRlbXBBdXRob3JpdHlGb3JtTm8gPSBcIlwiO1xyXG4gIGNsaWVudElkOiBhbnkgPSBcIlwiO1xyXG4gIHNob3dGYXZvdXJpdGVNZWQgPSBmYWxzZTtcclxuICBpc1Jlc2VuZDpib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncnh3aWRnZXRzJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcGRlbW8nKSBteVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCd0ZXN0JywgeyBzdGF0aWM6IHRydWUgfSkgdG9vbHRpcCE6IG51bGw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcclxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlczogQ29tbW9uU2VydmljZXMsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGNoYW5nZWRldGVjdDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgdmlld1JlZkNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICApIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wb3Bfd2lkJywgYDEyMDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwdycsIGAxMjAwcHhgKTtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXJwYWRkaW5nJywgYDBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXBvcHVwaCcsIGA2NTBweGApO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhlYWRlcmZvbnR3ZWlnaHQnLCBgNDAwYCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlVG9vbFRpcCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhpZGVUb29sVGlwKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMudG9vbHRpcCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLnRvb2x0aXApO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGlkZVRvb2xUaXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25jbGljayhldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsYXNzTmFtZSA9PSBcInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgfHwgZXZlbnQudGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcyhcIl9fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXBcIikpIHtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlkID09ICdzaG93LXRvb2x0aXAtaWQnKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVUb29sVGlwKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkgeyB0aGlzLmNyZWF0ZVRvb2xUaXAoZXZlbnQpIH1cclxuICAgICAgICB9IGVsc2UgeyB0aGlzLmhpZGVUb29sVGlwKCk7IH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbmNsaWNrXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5nZXRBbGxNaW1zVmFsdWUoKTtcclxuICAgICAgdGhpcy5nZXRJbnN0cnVjdGlvblZhbHVlcygpO1xyXG4gICAgICB0aGlzLmdldEZhdm91cnRpZXNMaXN0KCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnNldEVkaXRWYWx1ZXModGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdClcclxuICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmloaU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID09IG51bGwgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuaWhpTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5paGlOdW1iZXJcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgPT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID09IHVuZGVmaW5lZCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlclxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID09IG51bGwgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5ocGlpTnVtYmVyID09IFwiXCIgPyAwIDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXJcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwibmdPbkluaXRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZXN0cmljdGVkTWVkaWNpbmUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfUkVTVFJJQ1RFRF9NRURJQ0lORSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UmVzdHJpY3RlZE1lZGljaW5lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5wcm9kdWN0SWQpKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5maW5kSW5kZXgoKHg6IHsgcHJvZHVjdElkOiBhbnk7IH0pID0+IHgucHJvZHVjdElkID09IE51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5wcm9kdWN0SWQpKTtcclxuICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRkYXRhID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkZGF0YSkgJiYgc2VsZWN0ZWRkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QudW5zaGlmdChzZWxlY3RlZGRhdGFbMF0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGVkTWVkaWNpbmVcIik7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFJlc3RyaWN0ZWRNZWRpY2luZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlKGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhpZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgdmFsdWUgPSBkYXRhICE9IG51bGwgPyBkYXRhIDogdGhpcy5jb21tb25TZXJ2aWNlcy5jbG9zZUVycm9yUmVzcG9uc2UgIT0gbnVsbCB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSAhPSB1bmRlZmluZWQgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmNsb3NlRXJyb3JSZXNwb25zZSA6IG51bGw7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2xvc2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjZWFzZVByZXNjcmliZU1lZCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDIpKSB7XHJcbiAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihDZWFzZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIHRoaXMuY2Vhc2VEYXRhKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2Vhc2VQcmVzY3JpYmVNZWRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxQcmVzY3JpYmVNZWQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSwgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLCA0KSkge1xyXG4gICAgICAgIHRoaXMuaXNSZXNlbmQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ2xvc2VQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAxKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChyZXMgIT0gbnVsbCAmJiByZXMuaXNEaXNwZW5zZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENvbmZpcm1QYXRpZW50Q29udGFjdERldGFpbHNDb21wb25lbnQsIHRoaXMuY29udGVudCwgMikuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmIGRhdGEuZmxhZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENlYXNlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwgdGhpcy5jZWFzZURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgIT0gbnVsbCAmJiByZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzcG9uc2UuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZShyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2FuY2VsUHJlc2NyaWJlTWVkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsRHJhZnQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5jaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSwgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLCA0KSkge1xyXG4gICAgICAgIHRoaXMuaXNSZXNlbmQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQ2xvc2VQb3B1cENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2FuY2VsRHJhZnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWlzc3VlUHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywgMykpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVpc3N1ZVBvcHVwQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIHtpc1Jlc2VuZDogdGhpcy5pc1Jlc2VuZH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHJlcy5kYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBcclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVpc3N1ZVByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVzZW5kUHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZW5hYmxlU2VuZFBhcGVyU2NyaXB0SW5NYWlsICYmICEgdGhpcy5jaGVja1N0YXR1c0FuZFNjcmlwdHR5cGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZSx0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsMikpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc1NjcmlwdFRvUGhhcm1hY3kgPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5pc1Jlc2VuZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWlzc3VlUG9wdXBDb21wb25lbnQsIHRoaXMuY29udGVudCwge2lzUmVzZW5kOiB0aGlzLmlzUmVzZW5kfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocmVzID09IG51bGwpe1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNSZXNlbmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzUmVzZW5kID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICBjb25zdCBBZGRyZXNzU2VuZFRvQWRkVHlwZSA9IFwiZW1haWxcIjtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5waGFybWFjeUVtYWlsLnRyaW0oKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTkubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl81OS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzU5LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzU5Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMudmFsaWRCeUVtYWlsTm8odGhpcy5jb21tb25TZXJ2aWNlcy5waGFybWFjeUVtYWlsLnRyaW0oKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjAubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82MC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzYwLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzYwLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgICByeElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQsXHJcbiAgICAgICAgICAgIGFkZHJlc3NUeXBlOiBBZGRyZXNzU2VuZFRvQWRkVHlwZSxcclxuICAgICAgICAgICAgYWRkcmVzc1ZhbHVlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoYXJtYWN5RW1haWwudHJpbSgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUkVfSVNTVUUgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgKyBcIiZhZGRyZXNzVHlwZT1cIiArIEFkZHJlc3NTZW5kVG9BZGRUeXBlICsgXCImYWRkcmVzc1ZhbHVlPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5waGFybWFjeUVtYWlsLnRyaW0oKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInJlc2VuZFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJlc2VuZFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVzZW5kXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJlc2VuZFByZXNjcmliZU1lZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaW50UHJlc2NyaWJlTWVkKCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMsIDEpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb25CdG5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uYnRuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgIHJ4SWQ6IHRoaXMuY29tbW9uU2VydmljZXMucnhpZCxcclxuICAgICAgICAgIHR5cGU6IFwiMVwiLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWRcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLlJYX1BSSU5UICsgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkICsgXCImdHlwZT0xJmNsaWVudElkPVwiICsgdGhpcy5jbGllbnRJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShhdG9iKHJlc3BvbnNlLmZpbGUpLnNwbGl0KCcnKS5tYXAoY2hhciA9PiBjaGFyLmNoYXJDb2RlQXQoMCkpKTtcclxuICAgICAgICAgICAgICAgICAgdmFyIGJiYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIgfSk7XHJcbiAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChiYmIpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBuZXdXaW5kb3cgPSB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKG5ld1dpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1dpbmRvdy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbnRXYXJuaW5nUG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKHJlc3BvbnNlLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmludFByZXNjcmliZU1lZFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25idG5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbmJ0bkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaW50UHJlc2NyaWJlTWVkXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHNjcmlwdHR5cGU6IGFueSwgc3RhdHVzOiBhbnksIGZsYWc6IGFueSk6IEJvb2xlYW4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RhdHVzKSAmJiBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAncHJlc2NyaWJlZCcpIHtcclxuICAgICAgICBpZiAoZmxhZyA9PSAxKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2NyaXB0dHlwZSkgJiYgc2NyaXB0dHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2NyaXB0dHlwZSkgJiYgc2NyaXB0dHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmbGFnID09IDQpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmxhZyA9PSA1KSB7XHJcbiAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzY3JpcHR0eXBlKSAmJiBzY3JpcHR0eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ20nID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHN0YXR1cykgJiYgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ2RyYWZ0JyAmJiBmbGFnID09IDQpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYWdlTnVtYmVyT25lVG9OZXh0KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzUwLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzUwLm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBTdHJpbmcodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlID0gU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlLnRyaW0oKSk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlKS50cmltKCk7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUpICYmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUpKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTQuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzU0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzU0Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMuY2xlYXJJbnN0cnVjdGlvbigpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSA8PSAwIHx8IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IFwibmFuXCIpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81NS5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTUubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsID09IFwiTmFOXCIpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSBcIjBcIjtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlID0gU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkudHJpbSgpO1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl83NS5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl83NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNzUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNzUubWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80Ny5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl80Ny5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDcuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDcubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDgubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNDguY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzQ4LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzQ4Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80OS5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl80OS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDkuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDkubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0VHJhZGVOYW1lRGlzcGxheSgpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9ICdkcmFmdCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICBsZXQgcmVzdGVjdGVkU3RhdGVzID0gWydOU1cnLCAnQUNUJywgJ1dBJywgJ1FMRCcsICdOVCcsICdUQVMnXTtcclxuICAgICAgICBsZXQgcGF0aWVudFN0YXRlcyA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiByZXN0ZWN0ZWRTdGF0ZXMuaW5kZXhPZihwYXRpZW50U3RhdGVzKSAhPSAtMSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID4gMCkge1xyXG4gICAgICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgPT0gMCkpIHtcclxuICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBlcnJvcmNvbmZpZy5lcnJvcl81Ni5tZXNzYWdlLnJlcGxhY2UoXCIkMFwiLCBwYXRpZW50U3RhdGVzKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4obWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl81Ni5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzU2LmNvZGUsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzdGF0ZVNjaGVkdWxlTnVtYmVyID0gdGhpcy5nZXRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RhdGVTY2hlZHVsZU51bWJlcikgIT0gbnVsbCAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGlmIChwYXRpZW50U3RhdGVzLnRvTG93ZXJDYXNlKCkgPT0gXCJ0YXNcIiAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNERcIikgIT0gLTEgJiYgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gXCJcIiB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsID09IG51bGwgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY4Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjguY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY4LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY4Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChwYXRpZW50U3RhdGVzLnRvTG93ZXJDYXNlKCkgPT0gXCJuc3dcIiAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNEJcIikgIT0gLTEgJiYgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSA+IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPT0gXCJcIiB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsID09IG51bGwgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY5Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjkuY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY5LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY5Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmIHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5VmFsdWUpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY2Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjYuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY2LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY2Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gXCJcIjtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICAvLyB2YXIgcnhEaXNwbGF5TmFtZSA9IHRoaXMuZ2V0VHJhZGVOYW1lKCk7XHJcbiAgICAgIC8vIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50b0xvd2VyQ2FzZSgpID09ICdnYXV6ZScpIHtcclxuICAgICAgLy8gICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZTtcclxuICAgICAgLy8gICB9IGVsc2Uge1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gcnhEaXNwbGF5TmFtZTtcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSByeERpc3BsYXlOYW1lLnRyaW0oKSArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRyaW0oKSArICcgJyArICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA9PSBudWxsID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aC50cmltKCkgKyB0aGlzLnJ4U3RyZW5ndGhjYWxjdWxhdGlvbih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pKTtcclxuICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gcnhEaXNwbGF5TmFtZS50cmltKCkgKyAnICcgKyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggPT0gbnVsbCA/ICcnIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGgudHJpbSgpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb24odGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gdmFyIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IHRoaXMuZ2V0VHJhZGVOYW1lKCk7XHJcbiAgICAgIC8vIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50b0xvd2VyQ2FzZSgpID09ICdnYXV6ZScpIHtcclxuICAgICAgLy8gICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgLy8gICAgIGxldCBleHRlbXBUVFBOYW1lID0gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgIC8vICAgICBsZXQgUEl0ZW1UaHJlZSA9IGV4dGVtcFRUUE5hbWUubGFzdEluZGV4T2YoJ1snKTtcclxuICAgICAgLy8gICAgIGxldCBQSXRlbVRocmVlMSA9IGV4dGVtcFRUUE5hbWUuc2xpY2UoMCwgUEl0ZW1UaHJlZSk7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IFBJdGVtVGhyZWUxLnRyaW0oKTtcclxuICAgICAgLy8gICB9IGVsc2Uge1xyXG4gICAgICAvLyAgICAgbGV0IFBJdGVtVGhyZWUyID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLmxhc3RJbmRleE9mKCdbJyk7XHJcbiAgICAgIC8vICAgICBsZXQgUEl0ZW1UaHJlZTMgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUuc2xpY2UoMCwgUEl0ZW1UaHJlZTIpO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlMy50cmltKCk7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnRyaW0oKSArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtICsgJyAnICsgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoID09IG51bGwgPyAnJyA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tb2xlY3VsZVN0cmVuZ3RoLnRyaW0oKSArIHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uTmV3KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSAhPSAnbm9uIHBicycgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpICE9ICdwcml2YXRlJyAmJiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IHBhcnNlRmxvYXQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzKSArIDAuNSA6IDEpIDwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkgfHwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMpIDwgcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihJc0F1dGhvcml0eUNvbXBvbmVudCwgdGhpcy5jb250ZW50KS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm1vbGVjdWxlKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hY2dzLCB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubG1iYyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmNsdWRlYnJhbmRwb3BvcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlM4V2FyaW5nUG9wT3BlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsID0gIXRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgOiAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RW5kRGF0ZUNhbGN1bGF0ZXIoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlV2FyaW5nUG9wT3BlbihzY2hlZHVsZU51bWJlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubG1iYyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLmluY2x1ZGVicmFuZHBvcG9wZW4oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5TOFdhcmluZ1BvcE9wZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZG9zZUZyZXFWYWxpZGF0aW9uKCkpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKFwiXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVtb3ZlRXJyVG9hc3QoKTtcclxuICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInBhZ2VOdW1iZXJPbmVUb05leHRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlYnJhbmRwb3BvcGVuKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5tb2xlY3VsZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYWNncywgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGgpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oQnJhbmRJbmNsdWRlQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiA9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgICAgIHZhciBtb2xlY3VsZWRhdGEgPSB7XHJcbiAgICAgICAgICAgIG1vbGVjdWxlTmFtZVRleHQ6IHRoaXMubW9sZWN1bGVOYW1lVGV4dCxcclxuICAgICAgICAgICAgbW9sZWN1bGVOYW1lVHlwZTogdGhpcy5tb2xlY3VsZU5hbWVUeXBlLFxyXG4gICAgICAgICAgICBtb2xlY3VsZVN0cmVuZ3RoVGV4dDogdGhpcy5tb2xlY3VsZVN0cmVuZ3RoVGV4dCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRNZWRpY2luZUxpc3Q6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKEF2YWlsYWJsZUZvcm11bGF0aW9uc0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBtb2xlY3VsZWRhdGEpLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbC5yZXNwb25zZWZsYWcpIHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiAhPSAnJyAmJlxyXG4gICAgICAgICAgICAgICAgdmFsLmZsYWdcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ29uZmlybUFsdGVyQnJhbmQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbixcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEJyYW5kSW5kZXggIT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEJyYW5kSW5kZXhcclxuICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY3Byb2R1Y3RJZCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyYW5kTWVkaWNSZXAgPSAnJztcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5icmFuZE1lZGljcGJzQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY1F0eSA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMuYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgIGlmICh0aGlzLmRvc2VGcmVxVmFsaWRhdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVXYXJpbmdQb3BPcGVuKHNjaGVkdWxlTnVtYmVyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSBcInM4XCIgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMucGFnZSArIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbmNsdWRlYnJhbmRwb3BvcGVuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9zZUZyZXFWYWxpZGF0aW9uKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlKSB8fCB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUpIHx8IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpIHx8IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkb3NlRnJlcVZhbGlkYXRpb25cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBTOFdhcmluZ1BvcE9wZW4oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IFwiV2FybmluZyEgVGhpcyBpcyBhbiBTOCBkcnVnLiBZb3UgbWlnaHQgbmVlZCB0byBoYW5kIHdyaXRlIHlvdXIgc2lnbmF0dXJlLCBxdWFudGl0eSBpbiB3b3JkcyBhbmQgZmlndXJlcyBhbmQvb3Igb3RoZXIgZGV0YWlscyBhcyBwZXIgdGhlIHN0YXRlIHJlZ3VsYXRpb25zXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihSZWFsVGltZVByZXNjcmlwdGlvbk1vbml0b3JpbmdDb21wb25lbnQsIHRoaXMuY29udGVudCwgZGF0YSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJTOFdhcmluZ1BvcE9wZW5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVdhcmluZ1BvcE9wZW4oc2NoZWR1bGVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGRhdGEgPSBcIkVuc3VyZSBhbGwgbmVjZXNzYXJ5IGZpZWxkcyBhcmUgZmlsbGVkIHRvIGF2b2lkIHBoYXJtYWN5IHJlamVjdGlvbiBkdWUgdG8gaW5jb21wbGV0ZSBpbmZvcm1hdGlvbiAtIERvc2UsIEZyZXF1ZW5jeSwgUm91dGUgZXRjLlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVhbFRpbWVQcmVzY3JpcHRpb25Nb25pdG9yaW5nQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIGRhdGEpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNjaGVkdWxlTnVtYmVyKSAmJiBzY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09IFwiczhcIiAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUzhXYXJuaW5nTmV4dCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUzhXYXJpbmdQb3BPcGVuKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2UgKyAxO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInZhbGlkYXRlV2FyaW5nUG9wT3BlblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIENvbmZpcm1BbHRlckJyYW5kKG1lZDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gdHJ1ZTtcclxuICAgICAgdGhpcy5icmFuZE1lZGljcHJvZHVjdElkID0gJyc7XHJcbiAgICAgIHRoaXMuYnJhbmRNZWRpY3Bic0NvZGUgPSAnJztcclxuICAgICAgdGhpcy5icmFuZE1lZGljUXR5ID0gJyc7XHJcbiAgICAgIHRoaXMuYnJhbmRNZWRpY1JlcCA9ICcnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgIE1lZC5wdXNoKG1lZCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBNZWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICB0aGlzLnNlbGVjdEZvcm11bGF0aW9uKG1lZCwgMCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkNvbmZpcm1BbHRlckJyYW5kXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9sZWN1bGUoYWNnczogYW55LCBtb2xlY3VsZVN0cmVuZ3RoOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGFjZ3MpKSB7XHJcbiAgICAgICAgaWYgKGFjZ3MubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgIGlmIChhY2dzWzBdLmFjZ05hbWUuaW5kZXhPZignKycpICE9IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVGV4dCA9IGFjZ3NbMF0uYWNnTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUeXBlID0gJ1MyJztcclxuICAgICAgICAgICAgdGhpcy5tb2xlY3VsZVN0cmVuZ3RoVGV4dCA9IG1vbGVjdWxlU3RyZW5ndGg7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVRleHQgPSBhY2dzWzBdLmFjZ05hbWU7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVHlwZSA9ICdTMSc7XHJcbiAgICAgICAgICAgIHRoaXMubW9sZWN1bGVTdHJlbmd0aFRleHQgPSBtb2xlY3VsZVN0cmVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoMSA8IGFjZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICB2YXIgbW9sZWN1bGVzID0gW107XHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbW9sZWN1bGVzLnB1c2goYWNnc1tpXS5hY2dOYW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubW9sZWN1bGVOYW1lVGV4dCA9IG1vbGVjdWxlcy5qb2luKCcsJyk7XHJcbiAgICAgICAgICB0aGlzLm1vbGVjdWxlTmFtZVR5cGUgPSAnTSc7XHJcbiAgICAgICAgICB0aGlzLm1vbGVjdWxlU3RyZW5ndGhUZXh0ID0gbW9sZWN1bGVTdHJlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tb2xlY3VsZU5hbWVUZXh0ID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwibW9sZWN1bGVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiYWNrKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5wYWdlID0gMTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJiYWNrXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgTWVkaWNpbmVEcm9wZG93bkxpc3QoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIC8vIHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA9IGZhbHNlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTWVkaWNpbmVEcm9wZG93bkxpc3RcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVzY3JpYmVEcm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0UEJUTkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVQQlROKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFjdGlvbkRyb3Bkb3dub3BlbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZUFjdGlvbkJ0bik7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0QWN0aW9uRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdERvc2VEcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlRG9zZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZG9zZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnJlcURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RGcmVxRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZUZyZXEpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImZyZXFEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0cFZhbHVlRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdHN0cERyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5oYW5kbGVDbGlja091dHNpZGVzdHApO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInN0cFZhbHVlRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb29kRHJvcGRvd24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZvb2REcm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlRm9vZCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZm9vZERyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5zdHJ1Y3Rpb25Ecm9wZG93bigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlSW5zdHJ1Y3Rpb24pO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImluc3RydWN0aW9uRHJvcGRvd25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByb3V0ZURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RSb3V0ZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVB1cnBvc2UpO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVJvdXRlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyb3V0ZURyb3Bkb3duXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVycG9zZURyb3Bkb3duKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RQdXJwb3NlRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZUNsaWNrT3V0c2lkZVB1cnBvc2UpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInB1cnBvc2VEcm9wZG93blwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy53cmFwcGVyUmVmICE9IG51bGwgJiYgdGhpcy53cmFwcGVyUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLndyYXBwZXJSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLndyYXBwZXJSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlQWN0aW9uQnRuID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbkRyb3Bkb3duUmVmICE9IG51bGwgJiYgdGhpcy5zZWxlY3RBY3Rpb25Ecm9wZG93blJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RBY3Rpb25Ecm9wZG93blJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuc2VsZWN0QWN0aW9uRHJvcGRvd25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uQnRuRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVBY3Rpb25CdG5cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVQQlROID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duUmVmICE9IG51bGwgJiYgdGhpcy5wcmVzY3JpYmVEcm9wZG93blJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5wcmVzY3JpYmVEcm9wZG93blJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMucHJlc2NyaWJlRHJvcGRvd25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0UEJUTkRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVQQlROXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZURvc2UgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZG9zZVJlZiAhPSBudWxsICYmIHRoaXMuZG9zZVJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5kb3NlUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5kb3NlUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdERvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlRG9zZVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBoYW5kbGVDbGlja091dHNpZGVGcmVxID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZyZXFSZWYgIT0gbnVsbCAmJiB0aGlzLmZyZXFSZWYgIT0gdW5kZWZpbmVkICYmIHRoaXMuZnJlcVJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuZnJlcVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RGcmVxRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZUZyZXFcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlc3RwID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnN0cFJlZiAhPSBudWxsICYmIHRoaXMuc3RwUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnN0cFJlZi5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgIXRoaXMuc3RwUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdHN0cERyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVzdHBcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlRm9vZCA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5mb29kUmVmICE9IG51bGwgJiYgdGhpcy5mb29kUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLmZvb2RSZWYubmF0aXZlRWxlbWVudCAmJlxyXG4gICAgICAgICF0aGlzLmZvb2RSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0Rm9vZERyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJoYW5kbGVDbGlja091dHNpZGVGb29kXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZUluc3RydWN0aW9uID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLkluc3RydWN0aW9uUmVmICE9IG51bGwgJiYgdGhpcy5JbnN0cnVjdGlvblJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5JbnN0cnVjdGlvblJlZi5uYXRpdmVFbGVtZW50ICYmICF0aGlzLkluc3RydWN0aW9uUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCAmJiAhdGhpcy5lZGl0SW5zdHJ1Y3Rpb25GbGFnKSB7XHJcbiAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiXHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lZGl0SW5zdHJ1Y3Rpb25GbGFnID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gZmFsc2U7IHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlSW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlUm91dGUgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucm91dGVSZWYgIT0gbnVsbCAmJiB0aGlzLnJvdXRlUmVmICE9IHVuZGVmaW5lZCAmJiB0aGlzLnJvdXRlUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5yb3V0ZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RSb3V0ZURyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yb3V0ZURhdGFGaWx0ZXIgPSAnJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImhhbmRsZUNsaWNrT3V0c2lkZVJvdXRlXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZVB1cnBvc2UgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucHVycG9zZVJlZiAhPSBudWxsICYmIHRoaXMucHVycG9zZVJlZiAhPSB1bmRlZmluZWQgJiYgdGhpcy5wdXJwb3NlUmVmLm5hdGl2ZUVsZW1lbnQgJiZcclxuICAgICAgICAhdGhpcy5wdXJwb3NlUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdFB1cnBvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaGFuZGxlQ2xpY2tPdXRzaWRlUHVycG9zZVwiKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvLyBHZW5lcmFsIFNlYXJjaFxyXG4gIHNlYXJjaEhhbmRsZXIoZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICBsZXQgZ2V0TWVkaWNpbmVzVmFsdWUgPSBlLnRhcmdldC52YWx1ZS50cmltKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZURyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5tZWRpU2VhcmNoVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgdGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICAgIGlmIChlLnRhcmdldC52YWx1ZS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnRhcmdldC52YWx1ZS5sZW5ndGggPj0gMykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgLy90aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcclxuICAgICAgICAvLyB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICB0aGlzLnNlYXJjaE1lZHMoZ2V0TWVkaWNpbmVzVmFsdWUpO1xyXG4gICAgICAgIC8vIH0sIHRoaXMud2FpdFRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hIYW5kbGVyXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHNlYXJjaE1lZHMoZ2V0TWVkaWNpbmVzVmFsdWU6IGFueSkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIGlmICh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkubGVuZ3RoIDwgMyB8fCBnZXRNZWRpY2luZXNWYWx1ZS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0TmFtZTogZ2V0TWVkaWNpbmVzVmFsdWVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLlByb2R1Y3RTZWFyY2hOYW1lID0gZ2V0TWVkaWNpbmVzVmFsdWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSBmYWxzZTtcclxuICAgICAgdmFyIHBic1R5cGUgPSB0aGlzLnJ4T25seVBCUyAmJiB0aGlzLnJ4UHJpdmF0ZSA/IFwiXCIgOiB0aGlzLnJ4T25seVBCUyA/IFwiUEJTLFJQQlNcIiA6IHRoaXMucnhQcml2YXRlID8gXCJQcml2YXRlXCIgOiBcIlwiO1xyXG4gICAgICBjb25zdCBzZWFyY2hNZXRob2QgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNtYXJ0U2VhcmNoID8gY29uZmlnLkdFVF9NRURTX0JZX1NNQVJUX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChnZXRNZWRpY2luZXNWYWx1ZSkgKyAnJnBhZ2U9MSZub09mUmVjPTEwJnBic1R5cGU9JyArIHBic1R5cGVcclxuICAgICAgICA6IGNvbmZpZy5HRVRfTUVEU19CWV9TRUFSQ0ggKyAnP3Byb2R1Y3ROYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQoZ2V0TWVkaWNpbmVzVmFsdWUpICsgJyZwYWdlPTEmbm9PZlJlYz0xMCdcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChzZWFyY2hNZXRob2QpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTsgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VhcmNoTWVkc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkTGlzdCA9IHJlcy5yZXNwb25zZS5maWx0ZXIoKGl0ZW06IGFueSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmlzUGJzVHlwZU1hdGNoKGl0ZW0ucGJzVHlwZSwgcGJzVHlwZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IGZpbHRlcmVkTGlzdDtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSBmaWx0ZXJlZExpc3QubGVuZ3RoO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKSAhPSB0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkgJiYgdGhpcy5tZWRpU2VhcmNoVmFsdWUudHJpbSgpLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZVNlYXJjaCh0aGlzLm1lZGlTZWFyY2hWYWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA+IDcgfHwgcmVzLnJlc3BvbnNlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5NSU1TUHJpbWFyeVNlYXJjaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlYXJjaE1lZHNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSBmYWxzZTsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWFyY2hNZWRzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcGxldGVTZWFyY2goZ2V0TWVkaWNpbmVzVmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5pc1N0aWxsU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkcyhnZXRNZWRpY2luZXNWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNvbXBsZXRlU2VhcmNoXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9HZXQgUHJvZHVjdCBEZXRhaWxcclxuICBnZXRQcm9kdWN0TGlzdEJ5TmFtZShwcm9kSGlkZGVuVmFsdWU6IGFueSwgcHJvZHVjdE5hbWU6IGFueSwgc2VhcmNoQmFzZTogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaS51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5tZWRpU2VhcmNoVmFsdWUgPSB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHByb2R1Y3ROYW1lKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHZhciB0eXBlID0gc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdicmFuZGtleScgPyAnQksnIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdwcm9kcGFja2tleScgPyAnUFBLJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAndmlydHVhbG5hbWUnID8gJ1ZOJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleScgPyAnUEsnIDogc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdwcm9kdWN0a2V5YWN0aXZlaW5ncmVkaWVudCcgPyAnUEtBJyA6IHNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAnZnVsbHBpJyA/ICdGUEknIDogJ1BOJztcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcHJvZHVjdE5hbWU6IHByb2RIaWRkZW5WYWx1ZSxcclxuICAgICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICAgIHByZXNjcmliZXJUeXBlOiBcIk1QXCJcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnByb2RIaWRkZW5OYW1lID0gcHJvZEhpZGRlblZhbHVlO1xyXG4gICAgICB0aGlzLlByb2R1Y3RUeXBlID0gdHlwZTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuR0VUX01FRFNfQllfTkFNRSArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChwcm9kSGlkZGVuVmFsdWUpICsgJyZ0eXBlPScgKyB0eXBlICsgJyZwcmVzY3JpYmVyVHlwZT1NUCZwYWdlPScgKyB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgKyAnJm5vT2ZSZWM9MTAnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTsgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gcmVzLnJlc3BvbnNlLmxlbmd0aDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSByZXMucmVzcG9uc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLmlzTm9uUGJzRmxhZykge1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMucnhPbmx5Tk9OUEJTRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vICAgaWYgKHRoaXMucnhPbmx5UEJTID09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMucnhPbmx5UEJTRmlsdGVyKCk7XHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgdGhpcy5vbkNoZWNrYm94Q2hhbmdlKDIpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0KSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8PSAzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucmVzcG9uc2UpICYmIHJlcy5yZXNwb25zZS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuTUlNU1NlY29uZGFyeVNlYXJjaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gW107XHJcbiAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFByb2R1Y3RMaXN0QnlOYW1lXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0UHJvZHVjdExpc3RCeU5hbWVcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrYm94Q2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLnJ4T25seVBCUyAmJiB0aGlzLnJ4UHJpdmF0ZSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5maWx0ZXIoKHg6IGFueSkgPT4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh4LnBic1R5cGUpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJ4T25seVBCUykge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkpXHJcbiAgICAgICAgICB0aGlzLnJ4T25seVBCU0ZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucnhQcml2YXRlKSB7XHJcbiAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCkpXHJcbiAgICAgICAgICB0aGlzLnJ4T25seU5PTlBCU0ZpbHRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yeFByaXZhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwuZmlsdGVyKCh4OiBhbnkpID0+ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoeC5wYnNUeXBlKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpIHtcclxuICAgICAgICBpZiAodGhpcy50ZW1wTWVkaVNlYXJjaFZhbHVlLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzUGFnZU51bWJlciA9IDE7XHJcbiAgICAgICAgICBsZXQgZ2V0TWVkaWNpbmVzVmFsdWUgPSB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2hvd0Zhdm91cml0ZU1lZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5tZWRpU2VhcmNoVmFsdWUgPSB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWUgPSB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgLy90aGlzLmlzU3RpbGxTZWFyY2hpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzU3RpbGxTZWFyY2hpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRzKGdldE1lZGljaW5lc1ZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwib25DaGVja2JveENoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ4T25seVBCU0ZpbHRlcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsKSAmJiB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmZpbHRlcigoeDogYW55KSA9PiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHgucGJzVHlwZSkgJiYgeC5wYnNUeXBlICE9ICdub24gUEJTJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyeE9ubHlQQlNGaWx0ZXJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByeE9ubHlOT05QQlNGaWx0ZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgIT0gJycgJiYgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsLmZpbHRlcigoeDogYW55KSA9PiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHgucGJzVHlwZSkgJiYgeC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gJ25vbiBwYnMnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJ4T25seU5PTlBCU0ZpbHRlclwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0Q2xhc3NGb3JNZWQobWVkOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBpc1NlbGVjdGVkRm9ybXVsYXRpb247XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuSXNTZWxlY3RGb3JtdWxhdGlvbihtZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkICE9IG51bGwgJiZcclxuICAgICAgICAgIG1lZC5wcm9kdWN0SWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAmJlxyXG4gICAgICAgICAgbWVkLnBic0NvZGUgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgJiZcclxuICAgICAgICAgIG1lZC5wcm9kdWN0TmFtZSA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgJiZcclxuICAgICAgICAgIG1lZC5yZXBlYXRzID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzICYmXHJcbiAgICAgICAgICBtZWQubWF4UXR5VW5pdHMgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNTZWxlY3RlZEZvcm11bGF0aW9uXHJcbiAgICAgICAgPyAnbWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveCBSWF9oaWdobGlnaHQnXHJcbiAgICAgICAgOiAnbWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveCc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldENsYXNzRm9yTWVkXCIpO1xyXG4gICAgICByZXR1cm4gXCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDbGFzc0ZvckZhdm91cml0ZU1lZChtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICAvLyB2YXIgaXNTZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICAgIC8vIGlzU2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkICE9IG51bGwgJiZcclxuICAgICAgICAvLyAgIG1lZC5wcm9kdWN0SWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCAmJlxyXG4gICAgICAgIC8vICAgKG1lZC5wYnNDb2RlIT1udWxsP21lZC5wYnNDb2RlOlwiXCIpID09ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9bnVsbD90aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZTpcIlwiKSAmJlxyXG4gICAgICAgIC8vICAgbWVkLnByb2R1Y3ROYW1lID09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSAmJlxyXG4gICAgICAgIC8vICAgbWVkLnJlcGVhdHMgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMgJiZcclxuICAgICAgICAvLyAgIG1lZD8uZW5jcnlwdGVkSWQgPT0gdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVFbmNyeXB0ZWRJZCAmJlxyXG4gICAgICAgIC8vICAgbWVkLnF1YW50aXR5ID09ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUhPXVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUhPW51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PSBcIm5vbiBwYnNcIlxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjayArIFwieFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnVuaXRQZXJQYWNrKVxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICByZXR1cm4gbWVkPy5lbmNyeXB0ZWRJZCA9PSB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZUVuY3J5cHRlZElkXHJcbiAgICAgICAgPyAnbWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveCBSWF9oaWdobGlnaHQnXHJcbiAgICAgICAgOiAnbWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveCc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldENsYXNzRm9yTWVkXCIpO1xyXG4gICAgICByZXR1cm4gXCJtZGwtZ3JpZCBuZXdfcnhfcG9wdXBfYm94XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBJc1NlbGVjdEZvcm11bGF0aW9uKG1lZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkLmdlbmVyaWNOYW1lKSA/IG1lZC5nZW5lcmljTmFtZSA6IFwiXCIpID09XHJcbiAgICAgICAgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgP1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIikgJiZcclxuICAgICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQucHJvZHVjdElkKSA/IG1lZC5wcm9kdWN0SWQgOiBcIlwiKSA9PVxyXG4gICAgICAgICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdElkKSA/XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkIDogXCJcIikgJiYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkLnJlcGVhdHMpID9cclxuICAgICAgICAgICAgbWVkLnJlcGVhdHMgOiBcIlwiKSA9PSAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnJlcGVhdHMpID9cclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cyA6IFwiXCIpICYmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZC5tYXhRdHlVbml0cykgP1xyXG4gICAgICAgICAgICAgICAgbWVkLm1heFF0eVVuaXRzIDogXCJcIikgPT0gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cylcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgOiBcIlwiKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJJc1NlbGVjdEZvcm11bGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRjdXJyZW50aWQobWVkOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1lZGlTZWFyY2hWYWx1ZSAhPSBudWxsICYmIG1lZC5wcm9kRGlzcGxheVZhbHVlID09IHRoaXMubWVkaVNlYXJjaFZhbHVlID8gJ2hlaWdobGlnaHQnIDogJyc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldGN1cnJlbnRpZFwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZXN0cmljdGlvbnMocmVzdHJpY3Rpb25zOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByZXN0cmljdGlvbkxpc3QgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN0cmljdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgaW5kID0gcmVzdHJpY3Rpb25MaXN0LmluZGV4T2YocmVzdHJpY3Rpb25zW2ldWydyZXN0cmljdGlvblR5cGUnXSk7XHJcbiAgICAgICAgaWYgKGluZCA9PSAtMSkge1xyXG4gICAgICAgICAgcmVzdHJpY3Rpb25MaXN0LnB1c2gocmVzdHJpY3Rpb25zW2ldWydyZXN0cmljdGlvblR5cGUnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN0cmljdGlvbkxpc3QudG9TdHJpbmcoKTtcclxuICAgICAgLy8gICAgbGV0IHJlc3RyaWN0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRSZXN0cmljdGlvbnNcIik7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBnZXRBbGxNaW1zVmFsdWUoKSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9BTExNSU1TVkFMVUUgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkICsgXCImY2xpZW50SWQ9XCIgKyB0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWxsTWltc1ZhbHVlXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRvc2VEYXRhID0gcmVzLmRvc2UgIT0gbnVsbCA/IHJlcy5kb3NlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmZyZXF1ZW5jeSkgPyByZXMuZnJlcXVlbmN5IDogW107XHJcbiAgICAgICAgICAgIHRoaXMuZm9vZERhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5mb29kKSA/IHJlcy5mb29kIDogW107XHJcbiAgICAgICAgICAgIHRoaXMucHVycG9zZURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5wdXJwb3NlKSAhPSBudWxsID8gcmVzLnB1cnBvc2UgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5yb3V0ZSkgIT0gbnVsbCA/IHJlcy5yb3V0ZSA6IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNlYXNlRGF0YSA9IHJlcy5jZWFzZSAhPSBudWxsID8gcmVzLmNlYXNlIDogW107XHJcbiAgICAgICAgICAgIHRoaXMuY2Vhc2VEYXRhID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuY2Vhc2UpICE9IG51bGwgPyByZXMuY2Vhc2UgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5zZW5kdG9waGFybWFjeURhdGEgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5zZW5kVG9QYXJtYWN5TWFzdGVyKSAhPSBudWxsID8gcmVzLnNlbmRUb1Bhcm1hY3lNYXN0ZXIgOiBbXTtcclxuICAgICAgICAgICAgdGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuYXV0aG9yaXR5Rm9ybSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMuYXV0aG9yaXR5Rm9ybS5hdXRob3JpdHlGb3JtTm8pID8gcmVzLmF1dGhvcml0eUZvcm0uYXV0aG9yaXR5Rm9ybU5vIDpcIlwiO1xyXG4gICAgICAgICAgICBsZXQgcmVmVmFsQXV0aCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPyB0aGlzLmdldEFkZEF1dGhWYWx1ZSghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5hdXRob3JpdHlGb3JtKSA/ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmF1dGhvcml0eUZvcm0uYXV0aG9yaXR5Rm9ybU5vKSA/IHJlcy5hdXRob3JpdHlGb3JtLmF1dGhvcml0eUZvcm1ObyA6IFtdIDogW10pIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8ucGJzRHZhQXV0aG9yaXR5TnVtYmVyKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5wYnNEdmFBdXRob3JpdHlOdW1iZXIgIT0gMCA/IHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnBic0R2YUF1dGhvcml0eU51bWJlciA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gcmVmVmFsQXV0aDtcclxuICAgICAgICAgICAgdGhpcy5pc05vblBic0ZsYWcgPSB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmlzTm9uUGJzRmxhZykgfHwgcmVzLmlzTm9uUGJzRmxhZyA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSkgPyByZXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5IDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc21hcnRTZWFyY2ggPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcy5pc0VuYWJsZVNtYXJ0U2VhcmNoKSA/IHJlcy5pc0VuYWJsZVNtYXJ0U2VhcmNoIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBbGxNaW1zVmFsdWVcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByb3V0ZUZpbHRlcihlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMucm91dGVEYXRhRmlsdGVyID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJvdXRlRmlsdGVyXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyUm91dGVJdGVtcyhhcnI6IGFueSwgcXVlcnk6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIGFyci5maWx0ZXIoKGU6IGFueSkgPT5cclxuICAgICAgICBlLnJvdXRlTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImZpbHRlclJvdXRlSXRlbXNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0dldCBpbnN0cnVjdGlvbiB2YWx1ZVxyXG4gIGdldEluc3RydWN0aW9uVmFsdWVzKCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfSU5TVFJVQ1RJT05fVkFMVUUgKyBcIj91c2VySWQ9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBpbnN0cnVjdGlvbiA9IHJlcy5yZXNwb25zZTtcclxuICAgICAgICAgICAgdGhpcy5pbnN0cnVjdGlvbkRhdGEgPSBpbnN0cnVjdGlvbjtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0SW5zdHJ1Y3Rpb25WYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRJbnN0cnVjdGlvblZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEluc3RydWN0aW9uVmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FZGl0IEluc3RydWN0aW9uIHZhbHVlXHJcbiAgZWRpdEluc3RydWN0aW9uKGlkOiBudW1iZXIsIGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gZGF0YS50ZXh0O1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gZGF0YS50ZXh0O1xyXG4gICAgICB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gZGF0YS5kZXNjcmlwdGlvbjtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbklkID0gZGF0YS5pZDtcclxuICAgICAgdGhpcy5JbnN0cnVjdGlvbkRlc2NyaXB0aW9uID0gZGF0YS5kZXNjcmlwdGlvbjtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRJbnN0cnVjdGlvbkZsYWcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVkaXRJbnN0cnVjdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGxpc3Qgc2VsZWN0IGluIEluc3RydWN0aW9uXHJcbiAgQ2hhbmdlSW5zdHJ1Y3Rpb24oZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShkYXRhPy50ZXh0KSA/IGRhdGEudGV4dCA6ICcnO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGE/LmRlc2NyaXB0aW9uKSA/IGRhdGEuZGVzY3JpcHRpb24gOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmluc3RWYWwgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGE/LnZhbHVlKSA/IGRhdGEudmFsdWUgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZGF0YT8udmFsdWUpID8gZGF0YS5pZCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkNoYW5nZUluc3RydWN0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5zdHJ1Y3Rpb25PbkNoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaW5zdHJ1Y3Rpb25PbkNoYW5nZVwiKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvLyBjbGVhciBJbnN0cnVjdGlvbiBpbiBJbnN0cnVjdGlvblxyXG4gIGNsZWFySW5zdHJ1Y3Rpb24oKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNsZWFySW5zdHJ1Y3Rpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzYXZlIGluc3RydWN0aW9uIHZhbHVlXHJcbiAgc2F2ZUluc3RydWN0aW9uKCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoU3RyaW5nKHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUpLnRyaW0oKSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81Mi5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81Mi5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTIuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTIubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoU3RyaW5nKHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24pLnRyaW0oKSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81MS5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81MS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTEubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBib2R5ID0ge1xyXG4gICAgICAgIHRleHQ6IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGUudHJpbSgpLFxyXG4gICAgICAgIHZhbHVlOiAnMScsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24udHJpbSgpLFxyXG4gICAgICAgIHN0YXR1czogJzAnLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgfTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICBib2R5OiBib2R5LFxyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgdXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICAgICAgaWQ6IHRoaXMuSW5zdHJ1Y3Rpb25JZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5JbnN0cnVjdGlvbklkICE9IG51bGwgJiYgdGhpcy5JbnN0cnVjdGlvbklkICE9ICcnKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgPSBwYXJzZUludCh0aGlzLkluc3RydWN0aW9uSWQpO1xyXG4gICAgICAgIHRoaXMuYXBpU2VydmljZS5QdXROZXcoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5VUERBVEVfSU5TVFJVQ1RJT05fVkFMVUUgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkICsgJyZpZD0nICsgdGhpcy5JbnN0cnVjdGlvbklkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSB0aGlzLnRlbXBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9IHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb250aWx0bGU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmdldEluc3RydWN0aW9uVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBheWxvYWQgPSBib2R5O1xyXG4gICAgICAgIHRoaXMuYXBpU2VydmljZS5Qb3N0KGJvZHksIGNvbmZpZy5QSFlTSUNJQU4uQUREX0lOU1RSVUNUSU9OX1ZBTFVFKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA9IDA7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmdldEluc3RydWN0aW9uVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2F2ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93biA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNhdmVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIERlbGV0ZSBpbnN0cnVjdGlvblxyXG4gIGRlbGV0ZUluc3RydWN0aW9uKGlkOiBOdW1iZXIpIHtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgaWQ6IGlkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLlB1dE5ldygnJywgY29uZmlnLlBIWVNJQ0lBTi5ERUxFVEVfSU5TVFJVQ1RJT05fVkFMVUUgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkICsgJyZpZD0nICsgaWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5zdHJ1Y3Rpb25Ecm9wZG93bkxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMudGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmdldEluc3RydWN0aW9uVmFsdWVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcImRlbGV0ZUluc3RydWN0aW9uXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGVsZXRlSW5zdHJ1Y3Rpb25cIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJkZWxldGVJbnN0cnVjdGlvblwiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGFkZCBuZXcgSW5zdHJ1Y3Rpb25cclxuICBhZGROZXdJbnN0cnVjdGlvbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9udGlsdGxlID0gXCJcIjtcclxuICAgICAgdGhpcy50ZW1wSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICB0aGlzLkluc3RydWN0aW9uSWQgPSAnJztcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImFkZE5ld0luc3RydWN0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2VsZWN0IHJvdXRlIHZhbHVlXHJcbiAgc2VsZWN0Um91dGVzZWFyY1ZhbHVlKHJvdXRlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Um91dGVEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJvdXRlPy5yb3V0ZU5hbWUpID8gcm91dGUucm91dGVOYW1lIDogJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0Um91dGVzZWFyY1ZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2VsZWN0IERvc2UgdmFsdWVcclxuICBzZWxlY3REb3NlVmFsdWUoZG9zZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdERvc2VEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZG9zZT8udGV4dCkgPyBkb3NlLnRleHQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZG9zZT8udmFsdWUpID8gZG9zZS52YWx1ZSA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdERvc2VWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCBGcmVxdWVuY3kgdmFsdWVcclxuICBzZWxlY3RGcmVxdWVuY3lWYWx1ZShmcmVxdWVuY3k6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RGcmVxRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZyZXF1ZW5jeT8udGV4dCkgPyBmcmVxdWVuY3kudGV4dCA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVZhbHVlID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmcmVxdWVuY3k/LnZhbHVlKSA/IGZyZXF1ZW5jeS52YWx1ZSA6IFwiXCI7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZyZXF1ZW5jeVZhbHVlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc2VsZWN0IEZvb2QgdmFsdWVcclxuICBzZWxlY3RGb29kVmFsdWUoZm9vZDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZvb2REcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9vZD8udGV4dCkgPyBmb29kLnRleHQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZvb2RWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFN0cFZhbHVlKHN0cDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnNlbGVjdHN0cERyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc3RwPy5uYW1lKSA/IHN0cC5uYW1lIDogJyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VsZWN0U3RwVmFsdWVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL3NlbGVjdCBQdXJwb3NlIHZhbHVlXHJcbiAgc2VsZWN0UHVycG9zZVZhbHVlKHB1cnBvc2U6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5zZWxlY3RQdXJwb3NlRHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocHVycG9zZT8ubG9va3VwVGV4dCkgPyBwdXJwb3NlLmxvb2t1cFRleHQgOiAnJztcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jb21wbGV4SWQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHB1cnBvc2U/LmlkKSA/IHB1cnBvc2UuaWQgOiBcIlwiO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdFB1cnBvc2VWYWx1ZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFF1YW50aXR5IGNoYW5nZVxyXG4gIHF1YW50aXR5Q2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29udmVydHF1YW50aXR5dmFsID0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCwgMTApO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsID0gY29udmVydHF1YW50aXR5dmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIC8vdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCA9IHRoaXMucm91bmREYXRhKHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpKS50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicXVhbnRpdHlDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja01vYmlsZShldnQ6IGFueSk6IGFueSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgY2hhckNvZGUgPSAoZXZ0LndoaWNoKSA/IGV2dC53aGljaCA6IGV2dC5rZXlDb2RlO1xyXG4gICAgICBpZiAoY2hhckNvZGUgPiAzMSAmJiAoY2hhckNvZGUgPCA0NyB8fCBjaGFyQ29kZSA+IDU3KSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjaGVja01vYmlsZVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGF5c2NoYW5nZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IG51bGwpIHtcclxuICAgICAgICBjb25zdCBjb252ZXJ0ZGF5c2NoYW5nZSA9IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwsIDEwKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsID0gY29udmVydGRheXNjaGFuZ2UudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZGF5c2NoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcGVhdHNDaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5ID0gZmFsc2U7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvbnZlcnRyZXBlYXRzdmFsID0gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLCAxMCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IGNvbnZlcnRyZXBlYXRzdmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicmVwZWF0c0NoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy91bmxpc3RlZCBjaGVjayBib3hcclxuICB1bmxpc3RlZFJBKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwidW5saXN0ZWRSQVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByaXZhdGVcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBQQlMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiUEJTXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUlBCUygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUlBCUyc7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiUlBCU1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vc2VsZWN0ZWQgbWVkaWNpbmVcclxuICBzZWxlY3RGb3JtdWxhdGlvbihtZWQ6IGFueSwgaW5kZXg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbWVkO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1M4V2FybmluZ05leHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gbWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwID8gbWVkLlJlc3RyaWN0aW9uc1swXSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sZW1pIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gbWVkLmFpcCAhPSBudWxsID8gbWVkLmFpcC5sbWJjIDogZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobWVkLlJlc3RyaWN0aW9ucyAmJiBtZWQuUmVzdHJpY3Rpb25zLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVzdHJpY3Rpb25MaXN0cyA9IG1lZC5SZXN0cmljdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZTogYW55KSA9PlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblByZXZpZXcgIT0gJycgJiZcclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChyZXN0cmljdGlvbkxpc3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvLyBpZiAodGhpcy5zdGF0ZS5zZWxlY3RlZEluZGV4ICE9IGluZGV4KSB7XHJcbiAgICAgIC8vICAgdGhpcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKG1lZCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNSdHBtTmV4dCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vID0gdGhpcy5nZXRBZGRBdXRoVmFsdWUodGhpcy50ZW1wQXV0aG9yaXR5Rm9ybU5vKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgIHRoaXMuZW5hYmxlUHJlc2NyaWJlQXMobWVkKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNlbGVjdEZvcm11bGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zZWxlY3RlZCBGYXZvdXJpdGUgbWVkaWNpbmVcclxuICBzZWxlY3RGYXZvdXJpdGVGb3JtdWxhdGlvbihtZWQ6IGFueSwgaW5kZXg6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbWVkO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUobWVkKTtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTOFdhcm5pbmdOZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3RyaWN0aW9ucyA9IG1lZC5SZXN0cmljdGlvbnMgJiYgbWVkLlJlc3RyaWN0aW9ucy5sZW5ndGggIT0gMCA/IG1lZC5SZXN0cmljdGlvbnNbMF0gOiBudWxsO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubGVtaSA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubG1iYyA9IG1lZC5haXAgIT0gbnVsbCA/IG1lZC5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBtZWQuYWlwICE9IG51bGwgPyBtZWQuYWlwLmxlbWkgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKG1lZC5SZXN0cmljdGlvbnMgJiYgbWVkLlJlc3RyaWN0aW9ucy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgdmFyIHJlc3RyaWN0aW9uTGlzdHMgPSBtZWQuUmVzdHJpY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKGU6IGFueSkgPT5cclxuICAgICAgICAgICAgICBlLnJlc3RyaWN0aW9uUHJldmlldyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblRleHQgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIGUucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgZS5yZXN0cmljdGlvblRleHQgIT0gJydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAocmVzdHJpY3Rpb25MaXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzUnRwbU5leHQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA9IHRoaXMuZ2V0QWRkQXV0aFZhbHVlKHRoaXMudGVtcEF1dGhvcml0eUZvcm1Obyk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhFbmREYXRlQ2FsY3VsYXRlcigpO1xyXG4gICAgICB0aGlzLmVuYWJsZVByZXNjcmliZUFzKG1lZCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRCcmFuZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZWxlY3RGYXZvdXJpdGVGb3JtdWxhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEJyYW5kTmFtZShzZWxlY3RlZEZvcm11bGF0aW9uOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24pKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10Lmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwTmFtZTtcclxuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5icmFuZD8uYnJhbmROYW1lKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEJyYW5kTmFtZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmFibGVQcmVzY3JpYmVBcyhtZWQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gaWYgKG1lZC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCIgfHwgdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkpIHtcclxuICAgICAgLy8gICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgIC8vICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAvLyB9IGVsc2VcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkPy5wYnNUeXBlKSAmJiBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiUEJTL1JQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdSUEJTJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPSAnUEJTJztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlJQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic1R5cGUpICYmIG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJQQlNcIiAmJiAhdGhpcy5pc1ByZXNjcmliZUFzUHJpdmF0ZU9ubHkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgKG1lZC5wYnNUeXBlLnRvVXBwZXJDYXNlKCkgPT0gXCJFWFRFTVBPUkFORU9VUyBQUkVQQVJBVElPTlNcIiB8fCBtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiU0VDVElPTiAxMDBcIikgJiYgIXRoaXMuaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCkge1xyXG4gICAgICAgIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5tZWRpY2FyZU51bWJlcikgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzPy5kdmFOdW1iZXIpKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzQ29kZSkgJiYgbWVkLnBic0NvZGUgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1BCUyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1ByaXZhdGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZD8ucGJzVHlwZSkgJiYgbWVkLnBic1R5cGUudG9VcHBlckNhc2UoKSA9PSBcIlBBTExJQVRJVkUgQ0FSRVwiICYmICF0aGlzLmlzUHJlc2NyaWJlQXNQcml2YXRlT25seSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YU51bWJlciAhPSAnJyAmJiBtZWQucGJzQ29kZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gJ1JQQlMnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8ubWVkaWNhcmVOdW1iZXIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscz8uZHZhTnVtYmVyKSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWQ/LnBic0NvZGUpICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1BCUyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZUFTX1JQQlMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmVzY3JpYmVBU19QQlMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlQVNfUlBCUyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBlbHNlIGlmIChtZWQucGJzVHlwZS50b1VwcGVyQ2FzZSgpID09IFwiU0VDVElPTiAxMDBcIikge1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLm1lZGljYXJlTnVtYmVyICE9IFwiXCIgJiZcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIgIT0gbnVsbCAmJiBtZWQucGJzQ29kZSAhPSBcIlwiIHx8IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9IG51bGwgJiZcclxuICAgICAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9ICcnICYmIG1lZC5wYnNDb2RlICE9IFwiXCIpIHtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19QQlMgPSBmYWxzZTtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQQlMnO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMucHJlc2NyaWJlQVNfUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5wcmVzY3JpYmVBU19SUEJTID0gdHJ1ZTtcclxuICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyA9ICdQcml2YXRlJztcclxuICAgICAgLy8gICAgIHRoaXMuc2V0U3RhdGUoeyBwcmVzY3JpYmVBU19QQlM6IHRydWUsIHByZXNjcmliZUFTX1JQQlM6IHRydWUsIFByZXNjcmliZUFTOiBcIlByaXZhdGVcIiB9KTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZW5hYmxlUHJlc2NyaWJlQXNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUcmFkZU5hbWUoKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uOmFueSA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuXHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICB2YXIgdHJhZGVOYW1lID0gJyc7XHJcbiAgICAgICAgdmFyIGFtdF90cE5hbWUgPSB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIHZhciB0QnJhbmROYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShhbXRfdHBOYW1lKSA/IGFtdF90cE5hbWUgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYnJhbmQ/LmJyYW5kTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lIDogXCJcIjtcclxuICAgICAgICAvL3ZhciBhbXRfdHBwTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSA6ICcnO1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgfHwgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtLnRvTG93ZXJDYXNlKCkgPT0gJ2dhdXplJykge1xyXG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlICYmIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gZmFsc2UgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgdHJhZGVOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSArICcoJyArIHRCcmFuZE5hbWUgKyAnKScgOiBcIlwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSBmYWxzZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogXCJcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSB0QnJhbmROYW1lO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFkZU5hbWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoSXNFeHRlbXAgPT0gdHJ1ZSAmJiBsZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gICB0cmFkZU5hbWUgPSBhbXRfdHBwTmFtZSAhPSBudWxsICYmIGFtdF90cHBOYW1lICE9IFwiXCIgPyBhbXRfdHBwTmFtZSA6IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuIHRyYWRlTmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoSXNFeHRlbXAgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyAgIHRyYWRlTmFtZSA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5mb3JtdWxhID09IG51bGwgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUudHJpbSgpIDogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGE7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuIHRyYWRlTmFtZS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0cmFkZU5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhZGVOYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRyYWRlTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0VHJhZGVOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRyYWRlTmFtZURpc3BsYXkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KSB7XHJcbiAgICAgICAgdmFyIGFtdF90cE5hbWUgPSB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pO1xyXG4gICAgICAgIHZhciB0QnJhbmROYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShhbXRfdHBOYW1lKSA/IGFtdF90cE5hbWUgOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYnJhbmQ/LmJyYW5kTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYnJhbmQuYnJhbmROYW1lIDogXCJcIjtcclxuICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZ2VuZXJpY05hbWUpKSB7XHJcbiAgICAgICAgICAvLyBsZXQgUEl0ZW1UaHJlZTIgPSBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUubGFzdEluZGV4T2YoXCJbXCIpO1xyXG4gICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUzID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnNsaWNlKDAsIFBJdGVtVGhyZWUyKTtcclxuICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZTIgPj0gMCA/IFBJdGVtVGhyZWUzLnRyaW0oKSA6IHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgOiBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgfHwgdGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgfHwgKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSBcImdhdXplXCIpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udG9Mb3dlckNhc2UoKSA9PSBcImdhdXplXCIpIHtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUyID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLmxhc3RJbmRleE9mKFwiW1wiKTtcclxuICAgICAgICAgICAgLy8gbGV0IFBJdGVtVGhyZWUzID0gcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlLnNsaWNlKDAsIFBJdGVtVGhyZWUyKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWUgPSBQSXRlbVRocmVlMiA+PSAwID8gUEl0ZW1UaHJlZTMudHJpbSgpIDogcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlID0gZXh0ZW1wVFRQTmFtZS5sYXN0SW5kZXhPZihcIltcIik7XHJcbiAgICAgICAgICAgIC8vIGxldCBQSXRlbVRocmVlMSA9IGV4dGVtcFRUUE5hbWUuc2xpY2UoMCwgUEl0ZW1UaHJlZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKS50cmltKCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gUEl0ZW1UaHJlZSA+PSAwID8gUEl0ZW1UaHJlZTEudHJpbSgpIDogZXh0ZW1wVFRQTmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFyIG1wcE5hbWUgPSB0aGlzLmdldE1QUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKTtcclxuICAgICAgICAgIHZhciBTYWNoZXRPclB1bXAgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uc3RyU2FjaGV0T3JQdW1wKSA/IFwiIFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCA6IFwiXCI7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtcHBOYW1lKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChtcHBOYW1lLnRyaW0oKSArIFwiXCIgKyBTYWNoZXRPclB1bXAgKyAnICgnICsgdEJyYW5kTmFtZSArICcpJykudHJpbSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUgPSAobXBwTmFtZS50cmltKCkgKyBcIlwiICsgU2FjaGV0T3JQdW1wKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciBzdHJlbmd0aCA9IHRoaXMucnhTdHJlbmd0aGNhbGN1bGF0aW9uKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbik7XHJcbiAgICAgICAgICAgIHZhciBkaXNwTmFtZSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5EaXNwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uRGlzcE5hbWUudHJpbSgpIDogXCJcIjtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpICsgXCIgXCIgOiBcIlwiKSArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRCcmFuZE5hbWUpID8gJygnICsgdEJyYW5kTmFtZSArICcpICcgOiBcIlwiKSArIHN0cmVuZ3RoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgKyBcIiBcIiA6IFwiXCIpICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodEJyYW5kTmFtZSkgPyAnKCcgKyB0QnJhbmROYW1lICsgJykgJyA6IFwiXCIpICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0udHJpbSgpIDogXCJcIikgKyBcIiBcIiArIHN0cmVuZ3RoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IChkaXNwTmFtZSArIFwiIFwiICsgc3RyZW5ndGgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAvLyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSA9IGRpc3BOYW1lICsgXCIgXCIgKyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybS50cmltKCkgOiBcIlwiKSArIFwiIFwiICsgdGhpcy5yeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEJyYW5kRm9ybXVsYXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSA9IHRoaXMuY29tbW9uU2VydmljZXMuZW9wRGlzcGxheU5hbWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lID0gdGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSA9IFwiXCI7XHJcbiAgICAgIC8vIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlID0gXCJcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFRyYWRlTmFtZURpc3BsYXlcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRNUFBOYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgKHR5cGVvZiBzZWxlY3RlZEZvcm11bGF0aW9uKSA9PT0gJ29iamVjdCcgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10KSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0/Lm1wcHMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0/Lm1wcE5hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRNUFBOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEl0ZW1HZW5lcmljSW50ZW50aW9uKGxlbWk6IGJvb2xlYW4sIGlzQnJhbmROYW1lOiBib29sZWFuLCBpc0V4dGVtcDogYm9vbGVhbikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGxlbWkgPT0gdHJ1ZSAmJiBpc0JyYW5kTmFtZSA9PSB0cnVlICYmIGlzRXh0ZW1wICE9IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gJ0InO1xyXG4gICAgICB9IGVsc2UgaWYgKGxlbWkgPT0gdHJ1ZSAmJiBpc0JyYW5kTmFtZSA9PSBmYWxzZSAmJiBpc0V4dGVtcCAhPSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuICdHJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ0cnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEl0ZW1HZW5lcmljSW50ZW50aW9uXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ4U3RyZW5ndGhjYWxjdWxhdGlvbihmb3JtdWxhdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgJiYgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgIT0gMCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKSAmJiBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjayAhPSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGZvcm11bGF0aW9uLnN0clNhY2hldE9yUHVtcCkgPyBmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXAgOiBcIlwiKSArICcgWycgKyBmb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyArICcgeCAnICsgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHludW1iZXJPZlBhY2spLnRyaW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXApID8gZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIikgKyAnIFsnICsgZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgKyAnXScpLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInJ4U3RyZW5ndGhjYWxjdWxhdGlvblwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyByeFN0cmVuZ3RoY2FsY3VsYXRpb25OZXcoZm9ybXVsYXRpb246IGFueSkge1xyXG4gIC8vICAgdHJ5IHtcclxuICAvLyAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkpICYmIGZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5ICE9IDApIHtcclxuICAvLyAgICAgICByZXR1cm4gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmb3JtdWxhdGlvbi5zdHJTYWNoZXRPclB1bXApID8gZm9ybXVsYXRpb24uc3RyU2FjaGV0T3JQdW1wIDogXCJcIjtcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICByZXR1cm4gJyc7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgLy8gICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicnhTdHJlbmd0aGNhbGN1bGF0aW9uTmV3XCIpO1xyXG4gIC8vICAgICByZXR1cm4gXCJcIjtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHNob3dBdXRob3JpdHlCb3goUmVzdHJpY3Rpb25zOiBhbnksIFByZXNjcmliZUFTOiBhbnksIHJ4QXV0aG9yaXR5OiBhbnksIHVubGlzdGVkUkE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KFJlc3RyaWN0aW9ucykgJiYgUmVzdHJpY3Rpb25zLmxlbmd0aCA+IDAgJiYgUmVzdHJpY3Rpb25zWzBdLnJlc3RyaWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdyZXN0cmljdGVkJyAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3VucmVzdHJpY3RlZCcgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJykgfHwgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoUmVzdHJpY3Rpb25zKSAmJiBSZXN0cmljdGlvbnMubGVuZ3RoID4gMCAmJiBSZXN0cmljdGlvbnNbMF0ucmVzdHJpY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ3Jlc3RyaWN0ZWQnICYmIFJlc3RyaWN0aW9uc1swXS5yZXN0cmljdGlvblR5cGUudG9Mb3dlckNhc2UoKSAhPSAndW5yZXN0cmljdGVkJyAmJiBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykgfHwgKHJ4QXV0aG9yaXR5ID09IHRydWUgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJykgfHwgKHJ4QXV0aG9yaXR5ID09IHRydWUgJiYgUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncnBicycpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncnBicycgJiYgdW5saXN0ZWRSQSA9PSB0cnVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dBdXRob3JpdHlCb3hcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERpcmVjdGlvbnMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZGlyZWN0aW9ucyA9ICcnO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUpKSB7XHJcbiAgICAgICAgZGlyZWN0aW9ucyA9IGRpcmVjdGlvbnMgKyAnICcgKyB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbikpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuSW5zdHJ1Y3Rpb25EZXNjcmlwdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkpIHtcclxuICAgICAgICBkaXJlY3Rpb25zID0gZGlyZWN0aW9ucyArICcgJyArIHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZGlyZWN0aW9ucy50cmltKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldERpcmVjdGlvbnNcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdGF0ZSBuYW1lIGZ1bGwgZm9ybVxyXG4gIGdldFN0YXRlTmFtZUZyb21TdGF0ZUNvZGUocnRwbXN0YXRlTmFtZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzd2l0Y2ggKHJ0cG1zdGF0ZU5hbWUgJiYgcnRwbXN0YXRlTmFtZSAhPSAnJyA/IHJ0cG1zdGF0ZU5hbWUudG9VcHBlckNhc2UoKSA6ICcnKSB7XHJcbiAgICAgICAgY2FzZSAnTlNXJzpcclxuICAgICAgICAgIHJldHVybiAnTmV3IFNvdXRoIFdhbGVzJztcclxuICAgICAgICBjYXNlICdRTEQnOlxyXG4gICAgICAgICAgcmV0dXJuICdRdWVlbnNsYW5kJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1NvdXRoIEF1c3RyYWxpYSc7XHJcbiAgICAgICAgY2FzZSAnVEFTJzpcclxuICAgICAgICAgIHJldHVybiAnVGFzbWFuaWEnO1xyXG4gICAgICAgIGNhc2UgJ1ZJQyc6XHJcbiAgICAgICAgICByZXR1cm4gJ1ZpY3RvcmlhJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1dlc3Rlcm4gQXVzdHJhbGlhJztcclxuICAgICAgICBjYXNlICdBQ1QnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXN0cmFsaWFuIENhcGl0YWwgVGVycml0b3J5JztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ05vcnRoZXJuIFRlcnJpdG9yeSc7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBydHBtc3RhdGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlTmFtZUZyb21TdGF0ZUNvZGVcIik7XHJcbiAgICAgIHJldHVybiBydHBtc3RhdGVOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdXBlcnNjcmlwdCBjb2RlXHJcbiAgc2hyaW5rU3VwZXJTY3JpcHRDb2RlID0gKGlucHV0OiBhbnkpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkdXByZXN1bHQgPSBpbnB1dDtcclxuICAgICAgbGV0IGEgPSBpbnB1dC5zcGxpdCgnPHN1cD4nKTtcclxuXHJcbiAgICAgIC8vIHNlYXJjaCBmb3IgcGF0dGVybiBpbiBhXHJcbiAgICAgIGxldCBjb3VudCA9IGEubGVuZ3RoIC0gMTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xyXG4gICAgICAgIC8vIGlmIG1hdGNoIGZvdW5kIGluY3JlYXNlIGNvdW50XHJcbiAgICAgICAgbGV0IHN0YXJ0ID0gJzxzdXA+JztcclxuICAgICAgICBsZXQgZW5kID0gJzwvc3VwPic7XHJcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihzdGFydCkgKyBzdGFydC5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gZHVwcmVzdWx0LmluZGV4T2YoZW5kLCBzdGFydEluZGV4KTtcclxuICAgICAgICBsZXQgZXh0cmFjdGVkVmFsdWUgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHN0YXJ0SW5kZXggIT0gLTEgJiYgZW5kSW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgIGV4dHJhY3RlZFZhbHVlID0gZHVwcmVzdWx0LnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdHJpbmdOdW1iZXIgPSB0aGlzLmNvbnZlcnRUb1N1cGVyc2NyaXB0KGV4dHJhY3RlZFZhbHVlKTtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICdUaGUgbnVtYmVyICcgKyBzdHJpbmdOdW1iZXIgKyAnIGlzIHN1cGVyc2NyaXB0ZWQuJztcclxuXHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2UoLzxzdXA+Lio8XFwvc3VwPi8sICc8c3VwPjwvc3VwPicpO1xyXG4gICAgICAgIC8vIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlRmlyc3QoXCJcXFxcPHN1cD4uKj9cXFxcPC9zdXA+XCIsIFwiPHN1cD5cIiArIFwiXCIgKyBcIjwvc3VwPlwiKTtcclxuICAgICAgICBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZShcclxuICAgICAgICAgICc8c3VwPicgKyBleHRyYWN0ZWRWYWx1ZSArICc8L3N1cD4nLFxyXG4gICAgICAgICAgc3RyaW5nTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyByZXR1cm4gZHVwcmVzdWx0O1xyXG4gICAgICByZXR1cm4gdGhpcy5zaHJpbmtTdWJTY3JpcHRDb2RlKGR1cHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNocmlua1N1cGVyU2NyaXB0Q29kZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy9zdWJzY3JpcHQgY29kZVxyXG4gIHNocmlua1N1YlNjcmlwdENvZGUgPSAoaW5wdXQ6IGFueSkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGR1cHJlc3VsdCA9IGlucHV0O1xyXG4gICAgICBsZXQgYSA9IGlucHV0LnNwbGl0KCc8c3ViPicpO1xyXG5cclxuICAgICAgLy8gc2VhcmNoIGZvciBwYXR0ZXJuIGluIGFcclxuICAgICAgbGV0IGNvdW50ID0gYS5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgLy8gaWYgbWF0Y2ggZm91bmQgaW5jcmVhc2UgY291bnRcclxuICAgICAgICBsZXQgc3RhcnQgPSAnPHN1Yj4nO1xyXG4gICAgICAgIGxldCBlbmQgPSAnPC9zdWI+JztcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IGR1cHJlc3VsdC5pbmRleE9mKHN0YXJ0KSArIHN0YXJ0Lmxlbmd0aDtcclxuICAgICAgICBsZXQgZW5kSW5kZXggPSBkdXByZXN1bHQuaW5kZXhPZihlbmQsIHN0YXJ0SW5kZXgpO1xyXG4gICAgICAgIGxldCBleHRyYWN0ZWRWYWx1ZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoc3RhcnRJbmRleCAhPSAtMSAmJiBlbmRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgZXh0cmFjdGVkVmFsdWUgPSBkdXByZXN1bHQuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0cmluZ051bWJlciA9IHRoaXMuc3Vic2NyaXB0TnVtYmVycyhleHRyYWN0ZWRWYWx1ZSk7XHJcblxyXG4gICAgICAgIGxldCByZXN1bHQgPSAnVGhlIG51bWJlciAnICsgc3RyaW5nTnVtYmVyICsgJyBpcyBzdXBlcnNjcmlwdGVkLic7XHJcbiAgICAgICAgLy8gZHVwcmVzdWx0ID0gZHVwcmVzdWx0LnJlcGxhY2UoLzxzdXA+Lio8XFwvc3VwPi8sICc8c3VwPjwvc3VwPicpO1xyXG4gICAgICAgIC8vIGR1cHJlc3VsdCA9IGR1cHJlc3VsdC5yZXBsYWNlRmlyc3QoXCJcXFxcPHN1cD4uKj9cXFxcPC9zdXA+XCIsIFwiPHN1cD5cIiArIFwiXCIgKyBcIjwvc3VwPlwiKTtcclxuICAgICAgICBkdXByZXN1bHQgPSBkdXByZXN1bHQucmVwbGFjZShcclxuICAgICAgICAgICc8c3ViPicgKyBleHRyYWN0ZWRWYWx1ZSArICc8L3N1Yj4nLFxyXG4gICAgICAgICAgc3RyaW5nTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZHVwcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzaHJpbmtTdWJTY3JpcHRDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb252ZXJ0VG9TdXBlcnNjcmlwdCA9IChpbnB1dDogYW55KSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdXBlcnNjcmlwdERpZ2l0czogYW55ID0ge1xyXG4gICAgICAgICcwJzogJ1xcdTIwNzAnLFxyXG4gICAgICAgICcxJzogJ1xcdTAwQjknLFxyXG4gICAgICAgICcyJzogJ1xcdTAwQjInLFxyXG4gICAgICAgICczJzogJ1xcdTAwQjMnLFxyXG4gICAgICAgICc0JzogJ1xcdTIwNzQnLFxyXG4gICAgICAgICc1JzogJ1xcdTIwNzUnLFxyXG4gICAgICAgICc2JzogJ1xcdTIwNzYnLFxyXG4gICAgICAgICc3JzogJ1xcdTIwNzcnLFxyXG4gICAgICAgICc4JzogJ1xcdTIwNzgnLFxyXG4gICAgICAgICc5JzogJ1xcdTIwNzknLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgbGV0IG91dHB1dCA9ICcnO1xyXG4gICAgICBmb3IgKGxldCBjaGFyIG9mIGlucHV0KSB7XHJcbiAgICAgICAgaWYgKGNoYXIgaW4gc3VwZXJzY3JpcHREaWdpdHMpIHtcclxuICAgICAgICAgIG91dHB1dCArPSBzdXBlcnNjcmlwdERpZ2l0c1tjaGFyXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3V0cHV0ICs9IGNoYXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImNvbnZlcnRUb1N1cGVyc2NyaXB0XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzdWJzY3JpcHROdW1iZXJzKHN0cjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgc3Vic2NyaXB0czogYW55ID0ge1xyXG4gICAgICAgICcwJzogJ1xcdTIwODAnLFxyXG4gICAgICAgICcxJzogJ1xcdTIwODEnLFxyXG4gICAgICAgICcyJzogJ1xcdTIwODInLFxyXG4gICAgICAgICczJzogJ1xcdTIwODMnLFxyXG4gICAgICAgICc0JzogJ1xcdTIwODQnLFxyXG4gICAgICAgICc1JzogJ1xcdTIwODUnLFxyXG4gICAgICAgICc2JzogJ1xcdTIwODYnLFxyXG4gICAgICAgICc3JzogJ1xcdTIwODcnLFxyXG4gICAgICAgICc4JzogJ1xcdTIwODgnLFxyXG4gICAgICAgICc5JzogJ1xcdTIwODknLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdmFyIHJlc3VsdCA9ICcnO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzdWJzY3JpcHRzW3N0cltpXV0pIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBzdWJzY3JpcHRzW3N0cltpXV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3VsdCArPSBzdHJbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInN1YnNjcmlwdE51bWJlcnNcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXV0aG9yaXR5TGFiZWwoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWUpO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1FMRCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnU0EnOlxyXG4gICAgICAgICAgcmV0dXJuICdBcHByb3ZhbCBOdW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1RBUyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnVklDJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnQUNUJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgICBjYXNlICdOVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIE51bWJlcic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgTnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRBdXRob3JpdHlMYWJlbFwiKTtcclxuICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXRlQXV0aG9yaXR5TGFiZWwoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZShzdGF0ZU5hbWUpO1xyXG4gICAgICBzd2l0Y2ggKHN0YXRlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICdOU1cnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnUUxEJzpcclxuICAgICAgICAgIHJldHVybiAnQXBwcm92YWwgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdTQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1Blcm1pdCBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1RBUyc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ1ZJQyc6XHJcbiAgICAgICAgICByZXR1cm4gJ1dhcnJhbnQgbnVtYmVyJztcclxuICAgICAgICBjYXNlICdXQSc6XHJcbiAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBudW1iZXInO1xyXG4gICAgICAgIGNhc2UgJ0FDVCc6XHJcbiAgICAgICAgICByZXR1cm4gJ0FwcHJvdmFsIG51bWJlcic7XHJcbiAgICAgICAgY2FzZSAnTlQnOlxyXG4gICAgICAgICAgcmV0dXJuICdBdXRob3Jpc2F0aW9uIG51bWJlcic7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiAnQXV0aG9yaXNhdGlvbiBudW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldFN0YXRlQXV0aG9yaXR5TGFiZWxcIik7XHJcbiAgICAgIHJldHVybiBzdGF0ZU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRFeHRlbXBUVFBOYW1lKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10KSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMpICYmIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzWzBdLnRwcE5hbWUpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrKSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLml0ZW1TdHJlbmd0aFF1YW50aXR5bnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKHNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSArICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkpID8gJyBbJyArIHNlbGVjdGVkRm9ybXVsYXRpb24uaXRlbVN0cmVuZ3RoUXVhbnRpdHkgKyAnXScgKyAnIHggJyA6IFwiXCIpICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eW51bWJlck9mUGFjaykudHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lICsgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSkgPyAnIFsnICsgc2VsZWN0ZWRGb3JtdWxhdGlvbi5pdGVtU3RyZW5ndGhRdWFudGl0eSArICddJyA6IFwiXCIpKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZS50cmltKCkgOiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRFeHRlbXBUVFBOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdW5kRGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgcm91bmRfVmFsID0gTWF0aC5yb3VuZCh2YWx1ZSk7XHJcbiAgICAgIGlmIChyb3VuZF9WYWwgPCAwKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHJvdW5kX1ZhbDEgPSByb3VuZF9WYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAvLyByb3VuZF9WYWwgPSBwYXJzZUludChyb3VuZF9WYWwxLDEwKTtcclxuICAgICAgICByZXR1cm4gcm91bmRfVmFsMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJyb3VuZERhdGFcIik7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXJ4TWVkaWNhcmVDYXJkKG1lZGljYXJlTnVtYmVyOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBtZWRpY2FyZUNhcmQgPSAnJztcclxuICAgICAgbWVkaWNhcmVDYXJkID0gbWVkaWNhcmVOdW1iZXIuc2xpY2UoMCwgMTApO1xyXG4gICAgICByZXR1cm4gbWVkaWNhcmVDYXJkO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJlcnhNZWRpY2FyZUNhcmRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXJ4TWVkaWNhcmVJUk4obWVkaWNhcmVOdW1iZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZElSTiA9ICcnO1xyXG4gICAgICBtZWRpY2FyZUNhcmRJUk4gPSBtZWRpY2FyZU51bWJlci5zbGljZSgtMSk7XHJcbiAgICAgIHJldHVybiBtZWRpY2FyZUNhcmRJUk47XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVyeE1lZGljYXJlSVJOXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFVudXN1YWxRdHlGbGFnKHNGb3JtdWxhdGlvbjogYW55LCBxdWFudGl0eVZhbDogYW55LCBQcmVzY3JpYmVBUzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PSAncGJzJyB8fCBQcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdycGJzJykge1xyXG4gICAgICAgIGlmIChzRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgIT0gcXVhbnRpdHlWYWwpIHtcclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0VW51c3VhbFF0eUZsYWdcIik7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zdGF0ZSBuYW1lIGZyb20gYWRkcmVzc1xyXG4gIGdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUoc3RhdGVOYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN3aXRjaCAoc3RhdGVOYW1lLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlICduZXcgc291dGggd2FsZXMnOlxyXG4gICAgICAgICAgcmV0dXJuICdOU1cnO1xyXG4gICAgICAgIGNhc2UgJ3F1ZWVuc2xhbmQnOlxyXG4gICAgICAgICAgcmV0dXJuICdRTEQnO1xyXG4gICAgICAgIGNhc2UgJ3NvdXRoIGF1c3RyYWxpYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1NBJztcclxuICAgICAgICBjYXNlICd0YXNtYW5pYSc6XHJcbiAgICAgICAgICByZXR1cm4gJ1RBUyc7XHJcbiAgICAgICAgY2FzZSAndmljdG9yaWEnOlxyXG4gICAgICAgICAgcmV0dXJuICdWSUMnO1xyXG4gICAgICAgIGNhc2UgJ3dlc3Rlcm4gYXVzdHJhbGlhJzpcclxuICAgICAgICAgIHJldHVybiAnV0EnO1xyXG4gICAgICAgIGNhc2UgJ2F1c3RyYWxpYW4gY2FwaXRhbCB0ZXJyaXRvcnknOlxyXG4gICAgICAgICAgcmV0dXJuICdBQ1QnO1xyXG4gICAgICAgIGNhc2UgJ25vcnRoZXJuIHRlcnJpdG9yeSc6XHJcbiAgICAgICAgICByZXR1cm4gJ05UJztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHN0YXRlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdlbmRlcihnZW5kZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGdlbmRlclRleHQgPSAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIGdlbmRlclRleHQgPVxyXG4gICAgICAgIGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdtJyA/ICdNYWxlJyA6IGdlbmRlci50b0xvd2VyQ2FzZSgpID09ICdmJyA/ICdGZW1hbGUnIDogJ05vdCBBdmFpbGFibGUnO1xyXG4gICAgICByZXR1cm4gZ2VuZGVyVGV4dDtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0R2VuZGVyXCIpO1xyXG4gICAgICByZXR1cm4gJ05vdCBBdmFpbGFibGUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R2VuZGVyQ29kZShnZW5kZXI6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGdlbmRlckNvZGUgPSAnTm90IEF2YWlsYWJsZSc7XHJcbiAgICAgIGdlbmRlckNvZGUgPSBnZW5kZXIudG9Mb3dlckNhc2UoKSA9PSAnbScgPyAnTScgOiBnZW5kZXIudG9Mb3dlckNhc2UoKSA9PSAnZicgPyAnRicgOiAnVSc7XHJcbiAgICAgIHJldHVybiBnZW5kZXJDb2RlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRHZW5kZXJDb2RlXCIpO1xyXG4gICAgICByZXR1cm4gJ1UnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGFkKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZSA8IDEwID8gJzAnICsgdmFsdWUgOiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicGFkXCIpO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRPZmZzZXQoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIC8vIHZhciBkYXRlID0gdGhpcy5zdGF0ZS5zdGFydERhdGU7XHJcbiAgICAgIHZhciBzaWduID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpID4gMCA/ICctJyA6ICcrJztcclxuICAgICAgdmFyIG9mZnNldCA9IE1hdGguYWJzKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XHJcbiAgICAgIHZhciBob3VycyA9IHRoaXMucGFkKE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApKTtcclxuICAgICAgdmFyIG1pbnV0ZXMgPSB0aGlzLnBhZChvZmZzZXQgJSA2MCk7XHJcbiAgICAgIHJldHVybiBob3VycyArICc6JyArIG1pbnV0ZXM7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldE9mZnNldFwiKTtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaHRtbFRvRm9ybWF0dGVkVGV4dChyZXN0cmljdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gcmVzdHJpY3Rpb24ucmVwbGFjZSgvPGJyIFxcLz4vZywgJyonKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiaHRtbFRvRm9ybWF0dGVkVGV4dFwiKTtcclxuICAgICAgcmV0dXJuIHJlc3RyaWN0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93KEJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9IEJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdztcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJicmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBQUk5DaGFuZ2UoUFJOOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhQUk4gPSBQUk47XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiUFJOQ2hhbmdlXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGlzQ2hhbmdlQnJhbmROYW1lKGlzQnJhbmROYW1lOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPSBpc0JyYW5kTmFtZTtcclxuICAgICAgaWYgKCFpc0JyYW5kTmFtZSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpc0NoYW5nZUJyYW5kTmFtZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbmRUb1BoYXJtYWN5Q2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5KVxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2VuZFRvUGhhcm1hY3lDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlUnRwbU1vZGFsKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuaXNSdHBtTmV4dCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTAuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTAubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzKSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSAmJiBBcnJheS5pc0FycmF5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvblsncnRwbVN0YXRlcyddKSAmJiAodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uWydydHBtU3RhdGVzJ10gYXMgYW55W10pLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IGlzUnRwbVN0YXRlcyA9ICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25bJ3J0cG1TdGF0ZXMnXSBhcyBhbnlbXSkuaW5jbHVkZXModGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSk7XHJcbiAgICAgICAgICAgIGlmIChpc1J0cG1TdGF0ZXMpIHtcclxuICAgICAgICAgICAgICB2YXIgZGF0YSA9IFwiVGhlIHNlbGVjdGVkIGRydWcgY29tZXMgdW5kZXIgUmVhbCBUaW1lIFByZXNjcmlwdGlvbiBNb25pdG9yaW5nIChSVFBNKSBpbiBcIiArIHRoaXMuZ2V0U3RhdGVOYW1lRnJvbVN0YXRlQ29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKSArIFwiLiBQbGVhc2UgcmV2aWV3LlwiXHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzUnRwbU5leHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVEcm9wZG93bigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByZXNjcmliZURyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlRHJvcGRvd24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbmNsdWRlUnRwbU1vZGFsXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRXByZXNjcmlwZVNlbmQoZmxhZzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuZVByZXNjcmlwdGlvblZhbGlkYXRpb24oZmxhZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUgPSAnRSc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChmbGFnID09IDIpIHtcclxuICAgICAgICAgIHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpICYmIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gXCJwYnNcIiAmJiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSkudG9VcHBlckNhc2UoKSA9PSBcIk5TV1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwgMSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSAmJiBmbGFnICE9IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ29uZmlybVBhdGllbnRQb3B1cCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHkgJiYgZmxhZyAhPSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ29uZmlybVBhdGllbnRQb3B1cCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGVtYWlsSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0udG9Mb3dlckNhc2UoKSA9PSAndW5zY2hlZHVsZWQnID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSA6ICcnKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgJiYgc2NoZWR1bGVOdW1iZXIudG9Mb3dlckNhc2UoKSA9PSAnczgnICYmIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5pc1Bhc3N3b3JkQ2hlY2spIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwgMikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZUNvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJFcHJlc2NyaXBlU2VuZFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFBhcGVycHJlc2NyaXBlU2VuZChmbGFnOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9ICdNJztcclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5hYm9ydGRpc2FibGUgPSBmYWxzZTtcclxuICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgIHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgaWYgKHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpICYmIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gXCJwYnNcIiAmJiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSkudG9VcHBlckNhc2UoKSA9PSBcIk5TV1wiKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFBhc3N3b3JkQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIDEpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGZsYWcgIT0gMikge1xyXG4gICAgICAgICAgICB0aGlzLkNvbmZpcm1QYXRpZW50UG9wdXAoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHkgJiYgZmxhZyAhPSAyICYmIHRoaXMuY29tbW9uU2VydmljZXMuaXNTY3JpcHRUb1BoYXJtYWN5ID09IDApIHtcclxuICAgICAgICAgIHRoaXMuQ29uZmlybVBhdGllbnRQb3B1cCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc1NjcmlwdFRvUGhhcm1hY3kgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICB9ICAgICBcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciBzY2hlZHVsZU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/ICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzLmxlbmd0aCAhPSAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0udG9Mb3dlckNhc2UoKSA9PSAndW5zY2hlZHVsZWQnID8gJycgOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlc1swXSA6ICcnKSA6IFwiXCI7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmIHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gJ3M4JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaXNQYXNzd29yZENoZWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGlhbG9nb3BlbihQYXNzd29yZENvbXBvbmVudCwgdGhpcy5jb250ZW50LCAyKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZUNvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiRXByZXNjcmlwZVNlbmRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBDb25maXJtUGF0aWVudFBvcHVwKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKENvbmZpcm1QYXRpZW50Q29udGFjdERldGFpbHNDb21wb25lbnQsIHRoaXMuY29udGVudCwgMSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zY2hlZHVsZU51bWJlci50b0xvd2VyQ2FzZSgpID09ICdzOCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmlzUGFzc3dvcmRDaGVjaykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUGFzc3dvcmRDb21wb25lbnQsIHRoaXMuY29udGVudCwgMikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHJlc3BvbnNlLmlzUHJpbnRBdmFpbGFibGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gcmVzcG9uc2UuQWRkcmVzc1NlbmRUb0FkZFR5cGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyID0gcmVzcG9uc2UucnhudW1iZXI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IHJlc3BvbnNlLnJ4ZW1haWxJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNQcmludEF2YWlsYWJsZSA9IHJlc3BvbnNlLmlzUHJpbnRBdmFpbGFibGU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSByZXNwb25zZS5BZGRyZXNzU2VuZFRvQWRkVHlwZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IHJlc3BvbnNlLnJ4bnVtYmVyO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IHJlc3BvbnNlLnJ4ZW1haWxJZDtcclxuICAgICAgICAgICAgdGhpcy5wcmVzY3JpYmVNZWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gJyc7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlciA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQ29uZmlybVBhdGllbnRQb3B1cFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByZXNjcmlwZVByaW50KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpICE9ICdkcmFmdCcpIHx8ICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJykpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hYm9ydGRpc2FibGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlID0gJ00nO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkFkZHJlc3NTZW5kVG9BZGRUeXBlID0gXCJTTVNcIjtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB2YXIgc2NoZWR1bGVOdW1iZXIgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QgPyAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24ucG9pc29uQ2xhc3Nlcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvbi5wb2lzb25DbGFzc2VzWzBdLnRvTG93ZXJDYXNlKCkgPT0gJ3Vuc2NoZWR1bGVkJyA/ICcnIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uLnBvaXNvbkNsYXNzZXNbMF0gOiAnJykgOiBcIlwiO1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmIHNjaGVkdWxlTnVtYmVyLnRvTG93ZXJDYXNlKCkgPT0gJ3M4JyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuaXNQYXNzd29yZENoZWNrKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFBhc3N3b3JkQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsMikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZUNvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnByZXNjcmliZU1lZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucHJlc2NyaWJlTWVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlUHJpbnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmRpY2F0aW9uQXV0aG9yaXR5KG1heFF0eVVuaXRzOiBhbnksIHF1YW50aXR5VmFsOiBhbnksIHJlcGVhdHM6IGFueSwgcmVwZWF0c1ZhbDogYW55LCBpbmRleDogYW55LCByZXN0cmljdGlvbjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdwcmVzY3JpYmVkJyAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9ICcnO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHZhciB0ZW1wRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICB2YXIgcmVwbGFjZXZhbHVlID0gdGhpcy5odG1sVG9Gb3JtYXR0ZWRUZXh0KHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCk7XHJcbiAgICAgIHRlbXBEaXZFbGVtZW50LmlubmVySFRNTCA9IHJlcGxhY2V2YWx1ZTtcclxuICAgICAgdmFyIHZhbHVlID0gdGVtcERpdkVsZW1lbnQudGV4dENvbnRlbnQgfHwgdGVtcERpdkVsZW1lbnQuaW5uZXJUZXh0IHx8ICcnO1xyXG4gICAgICBpZiAoKCF0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnID8gcGFyc2VGbG9hdChtYXhRdHlVbml0cykgOiAxKSA8IHBhcnNlSW50KHF1YW50aXR5VmFsKSB8fCBwYXJzZUludChyZXBlYXRzKSA8IHBhcnNlSW50KHJlcGVhdHNWYWwpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPSBpbmRleDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSAnJztcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPSBpbmRleDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCA/IHJlc3RyaWN0aW9uLnN0cmVhbWxpbmVkQ29kZSA6ICcnO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJpbmRpY2F0aW9uQXV0aG9yaXR5XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TWF4UXVhbnRpdHkoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjayArIFwieFwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnVuaXRQZXJQYWNrO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubnVtYmVyT2ZQYWNrKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm51bWJlck9mUGFjayAhPSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cykpXHJcbiAgICAgICAgICByZXR1cm4gKHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlXaXRoVW5pdEZsYWcgPyBcIjEgeCBcIiA6IFwiXCIpICsgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0TWF4UXVhbnRpdHlcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdFF1YW50aXR5KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5udW1iZXJPZlBhY2spICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubnVtYmVyT2ZQYWNrICE9IDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm51bWJlck9mUGFjaztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lm1heFF0eVVuaXRzKSkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyA/IFwiMSB4IFwiIDogXCJcIikgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHNcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RGVmYXVsdFF1YW50aXR5XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IG5ld1ZhbHVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIm9uSW5wdXRDaGFuZ2VcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0Y2hhbmdlQXBwcm92YWxObyhuZXdWYWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObyA9IG5ld1ZhbHVlLnJlcGxhY2UoL1teYS16QS1aIDAtOV0vZywgXCJcIikucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJvbklucHV0Y2hhbmdlQXBwcm92YWxOb1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEFkZEF1dGhWYWx1ZShudW06IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobnVtKSkge1xyXG4gICAgICAgIGNvbnN0IGFyck9mRGlnaXRzID0gQXJyYXkuZnJvbShTdHJpbmcobnVtKSwgTnVtYmVyKTtcclxuICAgICAgICBsZXQgdmFsdWVPZkF1dGhvcml0eUFyciA9IHRoaXMuYWRkQXV0aFZhbHVlKGFyck9mRGlnaXRzKTtcclxuICAgICAgICBsZXQgZ2V0UmVtYWluZGVyVmFsdWUgPSB2YWx1ZU9mQXV0aG9yaXR5QXJyICUgOTtcclxuICAgICAgICBsZXQgYWRkUmVtYWluZGVyVmFsdWVBdExhc3QgPSAnJyArIG51bSArIGdldFJlbWFpbmRlclZhbHVlLnRvRml4ZWQoKTtcclxuICAgICAgICByZXR1cm4gYWRkUmVtYWluZGVyVmFsdWVBdExhc3Q7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0QWRkQXV0aFZhbHVlXCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEF1dGhWYWx1ZShhcnJPZkRpZ2l0czogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgYWRkZWRWYWx1ZSA9IDA7XHJcbiAgICAgIGFyck9mRGlnaXRzLm1hcCgobnVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBhZGRlZFZhbHVlID0gbnVtICsgYWRkZWRWYWx1ZTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhZGRlZFZhbHVlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhZGRBdXRoVmFsdWVcIik7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy90aGUgYmVsb3cgY29kZSB3aWxsIGhpdCB0aGUgZVJYIGFuZCByZXR1cm4gdGhlIHZhbHVlIHdpdGggYmFyY29kZVxyXG4gIHByZXNjcmliZU1lZCgpIHtcclxuICAgIHZhciBib2R5ID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5zaG93QXV0aG9yaXR5Qm94KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSkgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNTMubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNTMuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNTMuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNTMubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSBcImVcIikge1xyXG4gICAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdFBCVE5Ecm9wZG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gdHJ1ZTtcclxuICAgICAgdmFyIHBhdGllbnREZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgdmFyIHBoeXNpY2lhbkRldGFpbHMgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgIHZhciBzZWxlY3RlZEZvcm11bGF0aW9uID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uO1xyXG4gICAgICB2YXIgbWVkaWNhcmVDYXJkID0gJyc7XHJcbiAgICAgIGlmIChwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlcikge1xyXG4gICAgICAgIHZhciBtZWRObzEgPSBwYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlci5yZXBsYWNlKC8gL2csICcnKTtcclxuICAgICAgICBtZWRObzEgPSBtZWRObzEucmVwbGFjZSgvXy9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIG1lZGljYXJlQ2FyZCA9IG1lZE5vMTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcGJzTWFudWZhY3R1cmVyQ29kZVNldCA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbikgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNNYW51ZmFjdHVyZXJDb2RlcykgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNNYW51ZmFjdHVyZXJDb2Rlcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24ucGJzTWFudWZhY3R1cmVyQ29kZXNbMF0pID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNNYW51ZmFjdHVyZXJDb2Rlc1swXSA6ICcnO1xyXG4gICAgICBsZXQgY2hlY2tBdXRob3JpdHlCb3ggPSB0aGlzLnNob3dBdXRob3JpdHlCb3goc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksIHRoaXMuY29tbW9uU2VydmljZXMudW5saXN0ZWRSQSk7XHJcbiAgICAgIGJvZHkgPSB7XHJcbiAgICAgICAgaXNTaG93QXV0aG9yaXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzU2hvd0F1dGhvcml0eSxcclxuICAgICAgICBwYnNMaXN0SW5zdHJ1Y3Rpb25zOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnMgOiBcIlwiLFxyXG4gICAgICAgIGlzQnJhbmROYW1lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lLFxyXG4gICAgICAgIGluY2x1ZGVCcmFuZEZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUsXHJcbiAgICAgICAgcmVzdHJpY3RlZFBic1NlbGVjdGVkSW5kZXg6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgKyAxIDogJycsXHJcbiAgICAgICAgcnhJZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkIDogJycsXHJcbiAgICAgICAgbUFQYXRpZW50SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yUGF0aWVudElkLFxyXG4gICAgICAgIG1BUGhhcm1hY2lzdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBoeXNpY2lhbklkLFxyXG4gICAgICAgIG1BRmFjaWxpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JGYWNpbGl0eUlkLFxyXG4gICAgICAgIHByaXZhY3lTdGF0ZW1lbnQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09ICdlJyA/IDAgOiAxLFxyXG4gICAgICAgIGhwaUk6IHBoeXNpY2lhbkRldGFpbHMuaHBpaU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckFocHJhTnVtYmVyOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJBaHByYU51bWJlcixcclxuICAgICAgICBwcmVzY3JpYmVyR2l2ZW5OYW1lczogcGh5c2ljaWFuRGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckZhbWlseU5hbWU6IHBoeXNpY2lhbkRldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVNb2JpbGU6IHBoeXNpY2lhbkRldGFpbHMubW9iaWxlUGhvbmUsXHJcbiAgICAgICAgcHJlc2NyaWJlckhvbWVFbWFpbDogcGh5c2ljaWFuRGV0YWlscy5lbWFpbCxcclxuICAgICAgICBvcmdIcGlPOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMuaHBpb051bWJlciA6ICcnLFxyXG4gICAgICAgIG9yZ05hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdOYW1lIDogJycsXHJcbiAgICAgICAgb3JnRW1haWw6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnRW1haWwgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTE6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUxKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NMaW5lMjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1N1YnVyYjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmIgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzUG9zdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpID8gdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NTdGF0ZSkgOiAnJyxcclxuICAgICAgICBpaGk6IHBhdGllbnREZXRhaWxzLmloaU51bWJlcixcclxuICAgICAgICBtZWRpY2FyZU51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUNhcmQobWVkaWNhcmVDYXJkKSA6ICcnLFxyXG4gICAgICAgIG1lZGljYXJlSXJuOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KG1lZGljYXJlQ2FyZCkgPyB0aGlzLmVyeE1lZGljYXJlSVJOKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZU51bWJlckV4cGlyeTogcGF0aWVudERldGFpbHMubWVkaWNhcmVFeHBpcnksXHJcbiAgICAgICAgZGF0ZU9mQmlydGg6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHBhdGllbnREZXRhaWxzLmRvYiwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgICBmYW1pbHlOYW1lOiBwYXRpZW50RGV0YWlscy5sYXN0TmFtZSxcclxuICAgICAgICBnaXZlbk5hbWVzOiBwYXRpZW50RGV0YWlscy5maXJzdE5hbWUsXHJcbiAgICAgICAgcGF0aWVudFVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5wYXRpZW50VXNlcklkLFxyXG4gICAgICAgIHVzZXJJZFN0cmluZzogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLnVzZXJJZCxcclxuICAgICAgICBnZW5kZXJDb2RlOiB0aGlzLmdldEdlbmRlckNvZGUocGF0aWVudERldGFpbHMuZ2VuZGVyKSxcclxuICAgICAgICBob21lTW9iaWxlOiBwYXRpZW50RGV0YWlscy5waG9uZSxcclxuICAgICAgICBob21lRW1haWw6IHBhdGllbnREZXRhaWxzLmVtYWlsLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMTogcGF0aWVudERldGFpbHMuYWRkcmVzczEsXHJcbiAgICAgICAgYWRkcmVzc0xpbmUyOiBwYXRpZW50RGV0YWlscy5hZGRyZXNzMixcclxuICAgICAgICBhZGRyZXNzU3VidXJiOiBwYXRpZW50RGV0YWlscy5jaXR5LFxyXG4gICAgICAgIGFkZHJlc3NQb3N0Q29kZTogcGF0aWVudERldGFpbHMucG9zdENvZGUsXHJcbiAgICAgICAgYWRkcmVzc1N0YXRlOiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUocGF0aWVudERldGFpbHMuc3RhdGUpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5EYXRlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUsICd5eXl5LU1NLWRkJykgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1UZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LmRvc2FnZUZvcm0pID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBzdHJlbmd0aDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aCA6IFwiIFwiLFxyXG4gICAgICAgIGRpcmVjdGlvbnM6IHRoaXMuZ2V0RGlyZWN0aW9ucygpLFxyXG4gICAgICAgIGJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd2VkOiB0aGlzLmNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgbWF4aW11bU51bWJlck9mUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsLFxyXG4gICAgICAgIG1pbmltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBcIlwiID8gcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCkgOiBcIi0xXCIsXHJcbiAgICAgICAgcGF0aWVudEN0Z0ZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMuQ1RHQ29QYXltZW50ID09IHRydWUgPyAwIDogMSxcclxuICAgICAgICBwYnNJdGVtQ29kZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIDogXCJcIixcclxuICAgICAgICBwYnNJdGVtQ29kZVRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZVRleHQgOiBcIlwiLFxyXG4gICAgICAgIHBic0l0ZW1NYW51ZmFjdHVyZXI6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUgPyBwYnNNYW51ZmFjdHVyZXJDb2RlU2V0IDogJycsXHJcbiAgICAgICAgc3RhdGVBdXRob3JpdHlOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlcikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLlN0YXRlQXV0aG9yaXR5TnVtYmVyLnRyaW0oKSA6ICcnLFxyXG4gICAgICAgIHJlYXNvbkZvclRoZXJhcGV1dGljR29vZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbi50cmltKCkgOiAnJyxcclxuICAgICAgICB1bnVzdWFsUXR5RmxhZzogdGhpcy5zZXRVbnVzdWFsUXR5RmxhZyh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24sIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwsIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMpLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2RRdWFudGl0eTogcGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCksXHJcbiAgICAgICAgY29tcGxleEluc3RydWN0aW9uczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgYW10TXBwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVE1QUENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkFNVE1QUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdE1wcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVFRQUENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkFNVFRQUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHMpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcy5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwc1swXS50cHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UVFBDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5BTVRUUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggIT0gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10LmFtdGNvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5hbXRjb2RlIDogJycsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25NaW1zQ29kZTogJycsXHJcbiAgICAgICAgdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25Mb2NhbENvZGU6ICcnLFxyXG4gICAgICAgIC8vIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uRWFuQ29kZTogXCJcIixcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkVhblRleHQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gJ25vbiBwYnMnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uQ29kZTogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uQ29kZSxcclxuICAgICAgICBwcmVzY3JpYmVyT2NjdXBhdGlvblRleHQ6IHBoeXNpY2lhbkRldGFpbHMub2NjdXBhdGlvblRleHQsXHJcbiAgICAgICAgcHJlc2NyaWJlclBlcnNvblRpdGxlOiBwaHlzaWNpYW5EZXRhaWxzLnByZWZpeCxcclxuICAgICAgICBwcmVzY3JpYmVyUXVhbGlmaWNhdGlvbnM6IHBoeXNpY2lhbkRldGFpbHMuc3VmZml4LFxyXG4gICAgICAgIG9yZ1Bob25lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdNb2JpbGUgOiAnJyxcclxuICAgICAgICBvcmdGYXg6ICcnLFxyXG4gICAgICAgIGxvY2FsU3lzdGVtSUQ6IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudFVzZXJJZCxcclxuICAgICAgICBhZGRyZXNzU2VuZFRvQWRkVHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSxcclxuICAgICAgICBhZGRyZXNzRW1haWw6IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCkgPyBwYXRpZW50RGV0YWlscy5lbWFpbCA6IHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkLFxyXG4gICAgICAgIGFkZHJlc3NTbXM6IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyKSA/IHBhdGllbnREZXRhaWxzLnBob25lIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlcixcclxuICAgICAgICBnZW5kZXJUZXh0OiB0aGlzLmdldEdlbmRlcihwYXRpZW50RGV0YWlscy5nZW5kZXIpLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMzogJycsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y1RpbWU6ICcwMS0wMS0xOTcwIDA5OjA2OjA5JywgLy8gcHJlc2NyaXB0aW9uV3JpdHRlblV0Y1RpbWU6IG1vbWVudChuZXcgRGF0ZSgpKS5mb3JtYXQoXCJNTS1ERC15eXl5IGhoOm1tOnNzXCIpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5VdGNPZmZzZXQ6IHRoaXMuZ2V0T2Zmc2V0KCksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uRXhwaXJlc1ZhbHVlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLmVuZERhdGUsICdNTS9kZC95eXl5JykgOiBcIlwiLFxyXG4gICAgICAgIGFjdGl2ZUluZ3JlZGllbnQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmRvc2FnZUZvcm0gOiBcIlwiLFxyXG4gICAgICAgIGZvcm11bGE6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgOiBcIlwiLFxyXG4gICAgICAgIGFkZGl0aW9uYWxDb21tZW50czogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICBhc2xDb25zZW50OiAxLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbk5vdGVEZXRhaWxOb3RlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZS50cmltKCksXHJcbiAgICAgICAgZHZhTnVtYmVyOiBwYXRpZW50RGV0YWlscy5kdmFOdW1iZXIsXHJcbiAgICAgICAgZHZhVHlwZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnRvTG93ZXJDYXNlKCkgIT0gJ25vbmUnID8gcGF0aWVudERldGFpbHMuZHZhQ2FyZFR5cGUuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSA6ICcnLFxyXG4gICAgICAgIHBic0FwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8udHJpbSgpIDogJycsIC8vaW5mb3JtIHRvIHN0ZXBoZW5cclxuICAgICAgICByb3V0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlLnRyaW0oKSA6ICcnLFxyXG4gICAgICAgIC8vcHJvdmlkZXJOdW1iZXI6JycsXHJcbiAgICAgICAgcHJlc2NyaWJlclR5cGU6IHBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlclR5cGUsXHJcbiAgICAgICAgbWVkaWNpbmVOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdE5hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lIDogXCJcIixcclxuICAgICAgICBicmFuZE5hbWU6IHRoaXMuZ2V0QnJhbmROYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZ2VuZXJpY05hbWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LklzRXh0ZW1wKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmdlbmVyaWNOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSA6IHRoaXMuZ2V0RXh0ZW1wTVBQTmFtZSgpKSxcclxuICAgICAgICAvL2l0ZW1HZW5lcmljSW50ZW50aW9uOiBnZXRJdGVtR2VuZXJpY0ludGVudGlvbih0aGlzLnN0YXRlLmxlbWksdGhpcy5zdGF0ZS5pc0JyYW5kTmFtZSx0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSksXHJcbiAgICAgICAgaXRlbUdlbmVyaWNJbnRlbnRpb246IHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSB0cnVlID8gJ0InIDogJ0cnLFxyXG4gICAgICAgIHNjaGVkdWxlTnVtYmVyOiB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gXCJcIiA/IHRoaXMucGF5TG9hZFN0YXRlU2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSxcclxuICAgICAgICBkb2N0b3JOb3RlczogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICByZWd1bGF0aW9uMjQ6IHRoaXMuY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0ID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgaXNFeHRlbXA6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCAhPSBudWxsID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyAwIDogMSA6IDEsXHJcbiAgICAgICAgLy8gZXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbjogdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gIT0gJycgPyB0aGlzLnN0YXRlLnNlbGVjdGVkRm9ybXVsYXRpb24uRXh0ZW1wb3JhbmVvdXNEZXNjcmlwdGlvbiA6ICcnLFxyXG4gICAgICAgIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gdGhpcy5nZXRFeHRlbXBUVFBOYW1lKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiAnJyxcclxuICAgICAgICBhbm5vdGF0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24udHJpbSgpIDogXCJcIixcclxuICAgICAgICB1blVzdWFsRG9zZUZsYWc6IHRoaXMuY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgdHJhZGVOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHRoaXMuZ2V0VHJhZGVOYW1lKCkpLFxyXG4gICAgICAgIC8vcmVzdHJpY3Rpb25zOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IG51bGwgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSAnJyA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXN0cmljdGlvbnMgOiAnJyxcclxuICAgICAgICAvLyBwcmVzY3JpYmVyUGVyc29uVGl0bGU6IHBoeXNpY2lhbkRldGFpbHMucHJlZml4LFxyXG4gICAgICAgIG1heGltdW1JbnRlcnZhbEJldHdlZW5SZXBlYXRzOiAnJyxcclxuICAgICAgICBjb21wbGV4SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkKSA/IHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkIDogMCxcclxuICAgICAgICB2aXNpdElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZpc2l0SWQsXHJcbiAgICAgICAgc2NyaXB0VHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLFxyXG4gICAgICAgIGRvc2U6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgOiBcIlwiLFxyXG4gICAgICAgIGZyZXF1ZW5jeTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZSA6IFwiXCIsXHJcbiAgICAgICAgZm9vZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA6IFwiXCIsXHJcbiAgICAgICAgcHJlc2NyaWJlQXM6IHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgcHJuOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID09IGZhbHNlID8gMSA6IDAsXHJcbiAgICAgICAgc2NyaXB0RGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIixcclxuICAgICAgICBzdGFydERhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUsICdNTS9kZC95eXl5JykgOiBcIlwiLFxyXG4gICAgICAgIHB1cnBvc2U6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLnRyaW0oKSxcclxuICAgICAgICBwYnNOb3RlczogdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNOb3RlcyxcclxuICAgICAgICBpc0FjdGl2ZTogMCxcclxuICAgICAgICBwcm9kdWN0SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0SWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCA6IFwiXCIsXHJcbiAgICAgICAgYW10VGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmZvcm11bGEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kRG9zZVVuaXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgcHJlc2NyaWJlclJvbGVDb2RlOiAnJyxcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZVRleHQ6ICcnLFxyXG4gICAgICAgIG9yZ0hpY0xvY2F0aW9uSWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnSGljTG9jYXRpb25JZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkIDogJycsXHJcbiAgICAgICAgb3JnUm9sZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZUNvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZUNvZGUgOiAnJyxcclxuICAgICAgICBvcmdSb2xlVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlVGV4dCA6ICcnLFxyXG4gICAgICAgIGF1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8udHJpbSgpIDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXJGbGFnOiBwYXJzZUZsb2F0KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID8gMSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uc1t0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZF0uc3RyZWFtbGluZWRDb2RlKSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpID09IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyAwIDogMSxcclxuICAgICAgICAvLyBwYnNBdXRob3JpdHlQcmVzY3JpcHRpb25OdW1iZXI6dGhpcy5zdGF0ZS5hcHByb3ZhbE5vID8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vIDogXCJcIixcclxuICAgICAgICAvLyBzdHJlYW1saW5lZEF1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiB0aGlzLnN0YXRlLmFwcHJvdmFsTm9cclxuICAgICAgICAvLyAgID8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vXHJcbiAgICAgICAgLy8gICA6IFwiXCIsXHJcbiAgICAgICAgLy8gcGJzQXV0aG9yaXR5QXBwcm92YWxOdW1iZXI6IFwiXCIsXHJcbiAgICAgICAgLy9iYXJjb2RlXHJcbiAgICAgICAgLy9zY3JpcHROdW1iZXI6IFwiXCIsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSksXHJcbiAgICAgICAgZW9wRGlzcGxheU5hbWU6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09IFwiZVwiID8gdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5lb3BEaXNwbGF5TmFtZSkgOiB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWUpLFxyXG4gICAgICAgIGl0ZW1TdHJlbmd0aFhtbDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/Lkl0ZW1TdHJlbmd0aFhtbCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXRlbVN0cmVuZ3RoWG1sIDogXCIgXCIsXHJcbiAgICAgICAgLy9hdXRob3JpdHlWYWx1ZVxyXG4gICAgICAgIHBic0R2YUF1dGhvcml0eU51bWJlcjogY2hlY2tBdXRob3JpdHlCb3ggPyB0aGlzLmNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1ObyA6IDAsXHJcbiAgICAgICAgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSksLy90aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZWRJdGVtUmVzZXJ2ZWRUaHJlZSksXHJcbiAgICAgICAgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZEZvdXI6IHRoaXMuc2hvd0F1dGhvcml0eUJveCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLCB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLCB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LCB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpICYmIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gXCJwYnNcIiAmJiB0aGlzLmdldFN0YXRlQ29kZUZyb21TdGF0ZU5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSkudG9VcHBlckNhc2UoKSA9PSBcIk5TV1wiICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZS50b0xvd2VyQ2FzZSgpID09PSBcImVcIiA/IHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZEZvdXIgOiAnJyxcclxuICAgICAgICB1bmxpc3RlZEl0ZW1SZXBhdEF1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID09IHRydWUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgaXNQcmludEF2YWlsYWJsZTogdGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlLFxyXG4gICAgICAgIHByZXNjcmliZWRJdGVtUmVzZXJ2ZWRPbmU6IHRoaXMuY29tbW9uU2VydmljZXMuZ2V0U2NoZWR1bGVOdW1iZXIodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKS50b0xvd2VyQ2FzZSgpID09IFwiczhcIiA/IHRoaXMubnVtYmVyVG9Xb3JkKHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwpKSA6ICcnLFxyXG4gICAgICAgIG15U0xDb25zZW50OiB0aGlzLmNvbW1vblNlcnZpY2VzLm15U0xDb25zZW50LFxyXG4gICAgICAgIHNlbmRUb1BoYXJtYWN5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5LFxyXG4gICAgICAgIHNlbmRUb1BoYXJtYWN5VmFsdWU6IHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSxcclxuICAgICAgICBlbWVyZ2VuY3lTdXBwbHk6IHRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5LFxyXG4gICAgICAgIG1vbGVjdWxlU3RyZW5ndGhHcmlkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubW9sZWN1bGVTdHJlbmd0aEdyaWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGhHcmlkIDogJycsXHJcbiAgICAgICAgZW50aXR5SWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy5lbnRpdHlJZCxcclxuICAgICAgICBpc1ByZXNjcmliZUFuZFByaW50OiB0aGlzLmlzZXByaXNjcmliZXByaW50LFxyXG4gICAgICAgIGFtdENvZGVTeXN0ZW06ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXRDb2RlU3lzdGVtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRDb2RlU3lzdGVtIDogXCJcIixcclxuICAgICAgICBhbXRWZXJzaW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uYW10VmVyc2lvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10VmVyc2lvbiA6IFwiXCIsXHJcbiAgICAgICAgcXVhbnRpdHlXaXRoVW5pdDogdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubWF4UXR5VW5pdHMpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzIDogXCJcIixcclxuICAgICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgICBwcm9kdWN0UGFja0lkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3RQYWNrSWQgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdFBhY2tJZCA6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlbW92ZUVyclRvYXN0KCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5QUkVTQ1JJQkUpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZTtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZTtcclxuICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YSA9IHJlcztcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRFbmREYXRlQWhlYWQoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5pc1ByaW50QXZhaWxhYmxlICE9IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyZXMuaXNBb3J0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmRpYWxvZ29wZW4oUmVhbFRpbWVQcmVzY3JpcHRpb25Nb25pdG9yaW5nQ29tcG9uZW50LCB0aGlzLmNvbnRlbnQsIHJlcy5yZXNwb25zZV9tZXNzYWdlKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9tZXNzYWdlICE9IG51bGwgJiYgcmVzLnJlc3BvbnNlX21lc3NhZ2UgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlID0gcmVzLmVycm9yX2NvZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlID0gZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQpIHx8ICF0aGlzLmFib3J0ZGlzYWJsZSlcclxuICAgICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc1ByZXNjcmliZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLlByZXNjcmliZU1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcjtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSA9IGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGVcclxuICAgICAgICBpZiAodGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCB8fCAhdGhpcy5hYm9ydGRpc2FibGUpXHJcbiAgICAgICAgICB0aGlzLnNob3dSZXNwb25zZU1lc3NhZ2UoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBNcHJlc2NyaWJlTWVkKGlkOiBudW1iZXIpIHtcclxuICAgIHZhciBib2R5ID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoaWQgPT0gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLmVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKGlkKSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoaWQgPT0gMikge1xyXG4gICAgICAgIGlmICgodGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnTScgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc3RhdHVzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKSB8fCAodGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnNjcmlwdFR5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKSA9PSAnRScpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSB0cnVlO1xyXG4gICAgICBpZiAoaWQgPT0gMSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IFwiRVwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlNNU1wiO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IFwiTVwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuQWRkcmVzc1NlbmRUb0FkZFR5cGUgPSBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNob3dBdXRob3JpdHlCb3godGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucywgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUywgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSwgdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBKSA9PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pKSB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl81My5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl81My5jb2RlKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl81My5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl81My5tZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RQQlRORHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IHRydWU7XHJcbiAgICAgIHZhciBwYXRpZW50RGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgIHZhciBwaHlzaWNpYW5EZXRhaWxzID0gdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICB2YXIgc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbjtcclxuICAgICAgdmFyIG1lZGljYXJlQ2FyZCA9ICcnO1xyXG4gICAgICBpZiAocGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIpIHtcclxuICAgICAgICB2YXIgbWVkTm8xID0gcGF0aWVudERldGFpbHMubWVkaWNhcmVOdW1iZXIucmVwbGFjZSgvIC9nLCAnJyk7XHJcbiAgICAgICAgbWVkTm8xID0gbWVkTm8xLnJlcGxhY2UoL18vZywgJycpO1xyXG4gICAgICAgIG1lZE5vMSA9IG1lZE5vMS5yZXBsYWNlKC8tL2csICcnKTtcclxuICAgICAgICBtZWRpY2FyZUNhcmQgPSBtZWRObzE7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHBic01hbnVmYWN0dXJlckNvZGVTZXQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHNlbGVjdGVkRm9ybXVsYXRpb24/LnBic01hbnVmYWN0dXJlckNvZGVzKSAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLnBic01hbnVmYWN0dXJlckNvZGVzLmxlbmd0aCAhPSAwID8gc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNNYW51ZmFjdHVyZXJDb2Rlc1swXSA6ICcnO1xyXG5cclxuICAgICAgbGV0IGNoZWNrQXV0aG9yaXR5Qm94ID0gdGhpcy5zaG93QXV0aG9yaXR5Qm94KFxyXG4gICAgICAgIHNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zLFxyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEF1dGhvcml0eSxcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcclxuICAgICAgKTtcclxuICAgICAgYm9keSA9IHtcclxuICAgICAgICByeElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhpZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4aWQgOiAnJyxcclxuICAgICAgICBpc1Nob3dBdXRob3JpdHk6IHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5LFxyXG4gICAgICAgIHBic0xpc3RJbnN0cnVjdGlvbnM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zKSA/IHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA6IFwiXCIsXHJcbiAgICAgICAgaXNCcmFuZE5hbWU6IHRoaXMuY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWUsXHJcbiAgICAgICAgaW5jbHVkZUJyYW5kRmxhZzogdGhpcy5jb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZSxcclxuICAgICAgICByZXN0cmljdGVkUGJzU2VsZWN0ZWRJbmRleDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZCArIDEgOiBcIlwiLFxyXG4gICAgICAgIG1BUGF0aWVudElkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnZlbmRvclBhdGllbnRJZCxcclxuICAgICAgICBtQVBoYXJtYWNpc3RJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52ZW5kb3JQaHlzaWNpYW5JZCxcclxuICAgICAgICBtQUZhY2lsaXR5SWQ6IHRoaXMuY29tbW9uU2VydmljZXMudmVuZG9yRmFjaWxpdHlJZCxcclxuICAgICAgICBwcml2YWN5U3RhdGVtZW50OiB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdFR5cGUudG9Mb3dlckNhc2UoKSA9PSAnZScgPyAwIDogMSxcclxuICAgICAgICBocGlJOiBwaHlzaWNpYW5EZXRhaWxzLmhwaWlOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlck51bWJlcjogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyTnVtYmVyLFxyXG4gICAgICAgIHByZXNjcmliZXJBaHByYU51bWJlcjogcGh5c2ljaWFuRGV0YWlscy5wcmVzY3JpYmVyQWhwcmFOdW1iZXIsXHJcbiAgICAgICAgcHJlc2NyaWJlckdpdmVuTmFtZXM6IHBoeXNpY2lhbkRldGFpbHMuZmlyc3ROYW1lLFxyXG4gICAgICAgIHByZXNjcmliZXJGYW1pbHlOYW1lOiBwaHlzaWNpYW5EZXRhaWxzLmxhc3ROYW1lLFxyXG4gICAgICAgIHByZXNjcmliZXJIb21lTW9iaWxlOiBwaHlzaWNpYW5EZXRhaWxzLm1vYmlsZVBob25lLFxyXG4gICAgICAgIHByZXNjcmliZXJIb21lRW1haWw6IHBoeXNpY2lhbkRldGFpbHMuZW1haWwsXHJcbiAgICAgICAgb3JnSHBpTzogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5ocGlvTnVtYmVyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLmhwaW9OdW1iZXIgOiAnJyxcclxuICAgICAgICBvcmdOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ05hbWUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnTmFtZSA6ICcnLFxyXG4gICAgICAgIG9yZ0VtYWlsOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0VtYWlsKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ0VtYWlsIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc0xpbmUxOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzTGluZTEgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzTGluZTI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc0xpbmUyKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NMaW5lMiA6ICcnLFxyXG4gICAgICAgIG9yZ1Bvc3RhbEFkZHJlc3NTdWJ1cmI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N1YnVyYikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3VidXJiIDogJycsXHJcbiAgICAgICAgb3JnUG9zdGFsQWRkcmVzc1Bvc3RDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ1Bvc3RhbEFkZHJlc3NQb3N0Q29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzUG9zdENvZGUgOiAnJyxcclxuICAgICAgICBvcmdQb3N0YWxBZGRyZXNzU3RhdGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUG9zdGFsQWRkcmVzc1N0YXRlKSA/IHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdQb3N0YWxBZGRyZXNzU3RhdGUpIDogJycsXHJcbiAgICAgICAgaWhpOiBwYXRpZW50RGV0YWlscy5paGlOdW1iZXIsXHJcbiAgICAgICAgbWVkaWNhcmVOdW1iZXI6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkobWVkaWNhcmVDYXJkKSA/IHRoaXMuZXJ4TWVkaWNhcmVDYXJkKG1lZGljYXJlQ2FyZCkgOiAnJyxcclxuICAgICAgICBtZWRpY2FyZUlybjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShtZWRpY2FyZUNhcmQpID8gdGhpcy5lcnhNZWRpY2FyZUlSTihtZWRpY2FyZUNhcmQpIDogJycsXHJcbiAgICAgICAgbWVkaWNhcmVOdW1iZXJFeHBpcnk6IHBhdGllbnREZXRhaWxzLm1lZGljYXJlRXhwaXJ5LFxyXG4gICAgICAgIGRhdGVPZkJpcnRoOiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShwYXRpZW50RGV0YWlscy5kb2IsICd5eXl5LU1NLWRkJyksXHJcbiAgICAgICAgZmFtaWx5TmFtZTogcGF0aWVudERldGFpbHMubGFzdE5hbWUsXHJcbiAgICAgICAgZ2l2ZW5OYW1lczogcGF0aWVudERldGFpbHMuZmlyc3ROYW1lLFxyXG4gICAgICAgIHBhdGllbnRVc2VySWRTdHJpbmc6IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudFVzZXJJZCxcclxuICAgICAgICB1c2VySWRTdHJpbmc6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgZ2VuZGVyQ29kZTogdGhpcy5nZXRHZW5kZXJDb2RlKHBhdGllbnREZXRhaWxzLmdlbmRlciksXHJcbiAgICAgICAgaG9tZU1vYmlsZTogcGF0aWVudERldGFpbHMucGhvbmUsXHJcbiAgICAgICAgaG9tZUVtYWlsOiBwYXRpZW50RGV0YWlscy5lbWFpbCxcclxuICAgICAgICBhZGRyZXNzTGluZTE6IHBhdGllbnREZXRhaWxzLmFkZHJlc3MxLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMjogcGF0aWVudERldGFpbHMuYWRkcmVzczIsXHJcbiAgICAgICAgYWRkcmVzc1N1YnVyYjogcGF0aWVudERldGFpbHMuY2l0eSxcclxuICAgICAgICBhZGRyZXNzUG9zdENvZGU6IHBhdGllbnREZXRhaWxzLnBvc3RDb2RlLFxyXG4gICAgICAgIGFkZHJlc3NTdGF0ZTogdGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHBhdGllbnREZXRhaWxzLnN0YXRlKSxcclxuICAgICAgICBwcmVzY3JpcHRpb25Xcml0dGVuRGF0ZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIixcclxuICAgICAgICBmb3JtVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShzZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgc3RyZW5ndGg6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoc2VsZWN0ZWRGb3JtdWxhdGlvbj8ubW9sZWN1bGVTdHJlbmd0aCkgPyBzZWxlY3RlZEZvcm11bGF0aW9uLm1vbGVjdWxlU3RyZW5ndGggOiBcIiBcIixcclxuICAgICAgICBkaXJlY3Rpb25zOiB0aGlzLmdldERpcmVjdGlvbnMoKSxcclxuICAgICAgICBicmFuZFN1YnN0aXR1dGVzTm90QWxsb3dlZDogdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPT0gdHJ1ZSA/IDAgOiAxLFxyXG4gICAgICAgIG1heGltdW1OdW1iZXJPZlJlcGVhdHM6IHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICBtaW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0czogdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSB1bmRlZmluZWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbCAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgIT0gXCJcIiA/IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwpIDogXCItMVwiLFxyXG4gICAgICAgIHBhdGllbnRDdGdGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9PSB0cnVlID8gMCA6IDEsXHJcbiAgICAgICAgcGJzSXRlbUNvZGVDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgcGJzSXRlbUNvZGVUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucGJzQ29kZVRleHQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGVUZXh0IDogXCJcIixcclxuICAgICAgICBwYnNJdGVtTWFudWZhY3R1cmVyOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID8gcGJzTWFudWZhY3R1cmVyQ29kZVNldCA6ICcnLFxyXG4gICAgICAgIHN0YXRlQXV0aG9yaXR5TnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuU3RhdGVBdXRob3JpdHlOdW1iZXIpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlci50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIHJlYXNvbkZvclRoZXJhcGV1dGljR29vZDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbikgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbi50cmltKCkgOiBcIlwiLFxyXG4gICAgICAgIHVudXN1YWxRdHlGbGFnOiB0aGlzLnNldFVudXN1YWxRdHlGbGFnKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiwgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCwgdGhpcy5jb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyksXHJcbiAgICAgICAgcXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5OiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSxcclxuICAgICAgICBjb21wbGV4SW5zdHJ1Y3Rpb25zOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUudHJpbSgpIDogXCJcIixcclxuICAgICAgICBhbXRNcHBDb2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uQU1UTVBQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UTVBQQ29kZSA6IFwiXCIsXHJcbiAgICAgICAgYW10TXBwTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdC5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS5tcHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXS5tcHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10VHBwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVFRQUENvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLkFNVFRQUENvZGUgOiBcIlwiLFxyXG4gICAgICAgIGFtdFRwcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBwcykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdFswXS50cHBzLmxlbmd0aCA+IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLnRwcHNbMF0udHBwTmFtZSA6ICcnLFxyXG4gICAgICAgIGFtdFRwQ29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LkFNVFRQQ29kZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uQU1UVFBDb2RlIDogXCJcIixcclxuICAgICAgICBhbXRUcE5hbWU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0udHBOYW1lIDogJycsXHJcbiAgICAgICAgYW10Q29kZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10LmFtdGNvZGUgOiAnJyxcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbk1pbXNDb2RlOiAnJyxcclxuICAgICAgICB0aGVyZXBldXRpY0dvb2RJZGVudGlmaWNhdGlvbkxvY2FsQ29kZTogJycsXHJcbiAgICAgICAgLy8gdGhlcmVwZXV0aWNHb29kSWRlbnRpZmljYXRpb25FYW5Db2RlOiBcIlwiLFxyXG4gICAgICAgIHRoZXJlcGV1dGljR29vZElkZW50aWZpY2F0aW9uRWFuVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic1R5cGUpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gJ25vbiBwYnMnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6ICcnLFxyXG4gICAgICAgIHByZXNjcmliZXJPY2N1cGF0aW9uQ29kZTogcGh5c2ljaWFuRGV0YWlscy5vY2N1cGF0aW9uQ29kZSxcclxuICAgICAgICBwcmVzY3JpYmVyT2NjdXBhdGlvblRleHQ6IHBoeXNpY2lhbkRldGFpbHMub2NjdXBhdGlvblRleHQsXHJcbiAgICAgICAgcHJlc2NyaWJlclBlcnNvblRpdGxlOiBwaHlzaWNpYW5EZXRhaWxzLnByZWZpeCxcclxuICAgICAgICBwcmVzY3JpYmVyUXVhbGlmaWNhdGlvbnM6IHBoeXNpY2lhbkRldGFpbHMuc3VmZml4LFxyXG4gICAgICAgIG9yZ1Bob25lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzKSAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZmFjaWxpdHlEZXRhaWxzLm9yZ01vYmlsZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdNb2JpbGUgOiAnJyxcclxuICAgICAgICBvcmdGYXg6ICcnLFxyXG4gICAgICAgIGxvY2FsU3lzdGVtSUQ6IHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudFVzZXJJZCxcclxuICAgICAgICBhZGRyZXNzU2VuZFRvQWRkVHlwZTogdGhpcy5jb21tb25TZXJ2aWNlcy5BZGRyZXNzU2VuZFRvQWRkVHlwZSxcclxuICAgICAgICBhZGRyZXNzRW1haWw6IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4ZW1haWxJZCkgPyBwYXRpZW50RGV0YWlscy5lbWFpbCA6IHRoaXMuY29tbW9uU2VydmljZXMucnhlbWFpbElkLFxyXG4gICAgICAgIGFkZHJlc3NTbXM6IHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4bnVtYmVyKSA/IHBhdGllbnREZXRhaWxzLnBob25lIDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeG51bWJlcixcclxuICAgICAgICBnZW5kZXJUZXh0OiB0aGlzLmdldEdlbmRlcihwYXRpZW50RGV0YWlscy5nZW5kZXIpLFxyXG4gICAgICAgIGFkZHJlc3NMaW5lMzogJycsXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uV3JpdHRlblV0Y1RpbWU6ICcwMS0wMS0xOTcwIDA5OjA2OjA5JywgLy8gcHJlc2NyaXB0aW9uV3JpdHRlblV0Y1RpbWU6IG1vbWVudChuZXcgRGF0ZSgpKS5mb3JtYXQoXCJNTS1ERC15eXl5IGhoOm1tOnNzXCIpLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbldyaXR0ZW5VdGNPZmZzZXQ6IHRoaXMuZ2V0T2Zmc2V0KCksXHJcbiAgICAgICAgcHJlc2NyaXB0aW9uRXhwaXJlc1ZhbHVlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSkgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmNvbW1vblNlcnZpY2VzLmVuZERhdGUsICdNTS9kZC95eXl5JykgOiBcIlwiLFxyXG4gICAgICAgIGFjdGl2ZUluZ3JlZGllbnQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiBcIlwiLFxyXG4gICAgICAgIGZvcm1Db2RlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgZm9ybXVsYTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmZvcm11bGEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgOiBcIlwiLFxyXG4gICAgICAgIGFkZGl0aW9uYWxDb21tZW50czogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzKSA/IHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMudHJpbSgpIDogXCJcIixcclxuICAgICAgICBhc2xDb25zZW50OiAxLFxyXG4gICAgICAgIHByZXNjcmlwdGlvbk5vdGVEZXRhaWxOb3RlOiB0aGlzLmNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZSxcclxuICAgICAgICBkdmFOdW1iZXI6IHBhdGllbnREZXRhaWxzLmR2YU51bWJlcixcclxuICAgICAgICBkdmFUeXBlOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlKSAmJiBwYXRpZW50RGV0YWlscy5kdmFDYXJkVHlwZS50b0xvd2VyQ2FzZSgpICE9ICdub25lJyA/IHBhdGllbnREZXRhaWxzLmR2YUNhcmRUeXBlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgOiAnJyxcclxuICAgICAgICBwYnNBcHByb3ZhbE51bWJlcjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hcHByb3ZhbE5vIDogJycsXHJcbiAgICAgICAgcm91dGU6IHRoaXMuY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSAhPSAnLScgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgOiAnJyxcclxuICAgICAgICAvL3Byb3ZpZGVyTnVtYmVyOicnLFxyXG4gICAgICAgIHByZXNjcmliZXJUeXBlOiBwaHlzaWNpYW5EZXRhaWxzLnByZXNjcmliZXJUeXBlLFxyXG4gICAgICAgIG1lZGljaW5lTmFtZTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnByb2R1Y3ROYW1lKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSA6IFwiXCIsXHJcbiAgICAgICAgYnJhbmROYW1lOiB0aGlzLmdldEJyYW5kTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLFxyXG4gICAgICAgIGdlbmVyaWNOYW1lOiB0aGlzLmh0bWxUb1RleHRDb252ZXJ0KCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5Jc0V4dGVtcCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0aGlzLmdldEV4dGVtcFRUUE5hbWUodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uKSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5nZW5lcmljTmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUgOiB0aGlzLmdldEV4dGVtcE1QUE5hbWUoKSksXHJcbiAgICAgICAgLy9pdGVtR2VuZXJpY0ludGVudGlvbjogZ2V0SXRlbUdlbmVyaWNJbnRlbnRpb24odGhpcy5zdGF0ZS5sZW1pLHRoaXMuc3RhdGUuaXNCcmFuZE5hbWUsdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLklzRXh0ZW1wID09IHRydWUgPyB0cnVlIDogZmFsc2UpLFxyXG4gICAgICAgIGl0ZW1HZW5lcmljSW50ZW50aW9uOiB0aGlzLmNvbW1vblNlcnZpY2VzLmxlbWkgPT0gdHJ1ZSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgIT0gdHJ1ZSA/ICdCJyA6ICdHJyxcclxuICAgICAgICBzY2hlZHVsZU51bWJlcjogdGhpcy5wYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pICE9IFwiXCIgPyB0aGlzLnBheUxvYWRTdGF0ZVNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgOiB0aGlzLmNvbW1vblNlcnZpY2VzLmdldFNjaGVkdWxlTnVtYmVyKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiksXHJcbiAgICAgICAgZG9jdG9yTm90ZXM6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3RlcykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmRvY3Rvck5vdGVzLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgcmVndWxhdGlvbjI0OiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNCA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIGlzRXh0ZW1wOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgIT0gbnVsbCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5Jc0V4dGVtcCA9PSB0cnVlID8gMCA6IDEgOiAxLFxyXG4gICAgICAgIC8vIGV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb246IHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsICYmIHRoaXMuc3RhdGUuc2VsZWN0ZWRGb3JtdWxhdGlvbi5FeHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uICE9ICcnID8gdGhpcy5zdGF0ZS5zZWxlY3RlZEZvcm11bGF0aW9uLkV4dGVtcG9yYW5lb3VzRGVzY3JpcHRpb24gOiAnJyxcclxuICAgICAgICBleHRlbXBvcmFuZW91c0Rlc2NyaXB0aW9uOiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uSXNFeHRlbXAgPT0gdHJ1ZSA/IHRoaXMuZ2V0RXh0ZW1wVFRQTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pIDogJycsXHJcbiAgICAgICAgYW5ub3RhdGlvbjogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmFubm90YXRpb24pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uLnRyaW0oKSA6IFwiXCIsXHJcbiAgICAgICAgdW5Vc3VhbERvc2VGbGFnOiB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIHRyYWRlTmFtZTogdGhpcy5odG1sVG9UZXh0Q29udmVydCh0aGlzLmdldFRyYWRlTmFtZSgpKSxcclxuICAgICAgICAvL3Jlc3RyaWN0aW9uczogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gJycgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVzdHJpY3Rpb25zIDogJycsXHJcbiAgICAgICAgLy8gcHJlc2NyaWJlclBlcnNvblRpdGxlOiBwaHlzaWNpYW5EZXRhaWxzLnByZWZpeCxcclxuICAgICAgICBtYXhpbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0czogJycsXHJcbiAgICAgICAgY29tcGxleElkOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSkgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmNvbXBsZXhJZCA6IDAsXHJcbiAgICAgICAgdmlzaXRJZDogdGhpcy5jb21tb25TZXJ2aWNlcy52aXNpdElkLFxyXG4gICAgICAgIHNjcmlwdFR5cGU6IHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSxcclxuICAgICAgICBkb3NlOiB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSxcclxuICAgICAgICBmcmVxdWVuY3k6IHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlLFxyXG4gICAgICAgIGZvb2Q6IHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlLFxyXG4gICAgICAgIHByZXNjcmliZUFzOiB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLFxyXG4gICAgICAgIHBybjogdGhpcy5jb21tb25TZXJ2aWNlcy5yeFBSTiA9PSBmYWxzZSA/IDEgOiAwLFxyXG4gICAgICAgIHNjcmlwdERhdGU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZSwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY29tbW9uU2VydmljZXMuc3RhcnREYXRlLCAnTU0vZGQveXl5eScpLFxyXG4gICAgICAgIHB1cnBvc2U6IHRoaXMuY29tbW9uU2VydmljZXMucHVycG9zZVNlYXJjaFZhbHVlLnRyaW0oKSxcclxuICAgICAgICBwYnNOb3RlczogdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNOb3RlcyxcclxuICAgICAgICBpc0FjdGl2ZTogMCxcclxuICAgICAgICBwcm9kdWN0SWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0SWQpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RJZCA6IFwiXCIsXHJcbiAgICAgICAgYW10VGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmZvcm11bGEpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmZvcm11bGEgOiBcIlwiLFxyXG4gICAgICAgIHF1YW50aXR5T2ZUaGVyYXBldXRpY0dvb2REb3NlVW5pdENvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5kb3NhZ2VGb3JtKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5kb3NhZ2VGb3JtIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eU9mVGhlcmFwZXV0aWNHb29kRG9zZVVuaXRUZXh0OiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uZG9zYWdlRm9ybSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZG9zYWdlRm9ybSA6IFwiXCIsXHJcbiAgICAgICAgcHJlc2NyaWJlclJvbGVDb2RlOiAnJyxcclxuICAgICAgICBwcmVzY3JpYmVyUm9sZVRleHQ6ICcnLFxyXG4gICAgICAgIG9yZ0hpY0xvY2F0aW9uSWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnSGljTG9jYXRpb25JZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdIaWNMb2NhdGlvbklkIDogJycsXHJcbiAgICAgICAgb3JnUm9sZUNvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZUNvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5mYWNpbGl0eURldGFpbHMub3JnUm9sZUNvZGUgOiAnJyxcclxuICAgICAgICBvcmdSb2xlVGV4dDogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscykgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlVGV4dCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhY2lsaXR5RGV0YWlscy5vcmdSb2xlVGV4dCA6ICcnLFxyXG4gICAgICAgIGF1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8udHJpbSgpIDogJycsXHJcbiAgICAgICAgYXV0aG9yaXR5QXBwcm92YWxOdW1iZXJGbGFnOiBwYXJzZUZsb2F0KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsKSB8fCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0cykgPCBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwpID8gMSA6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQpICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uc1t0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNJZF0uc3RyZWFtbGluZWRDb2RlKSAmJiBwYXJzZUludCh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zW3RoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkXS5zdHJlYW1saW5lZENvZGUpID09IHBhcnNlSW50KHRoaXMuY29tbW9uU2VydmljZXMuYXBwcm92YWxObykgPyAwIDogMSxcclxuICAgICAgICBzdGF0dXM6IFwiRHJhZnRcIixcclxuICAgICAgICAvLyBwYnNBdXRob3JpdHlQcmVzY3JpcHRpb25OdW1iZXI6dGhpcy5zdGF0ZS5hcHByb3ZhbE5vID8gdGhpcy5zdGF0ZS5hcHByb3ZhbE5vIDogXCJcIixcclxuICAgICAgICAvLyBzdHJlYW1saW5lZEF1dGhvcml0eUFwcHJvdmFsTnVtYmVyOiB0aGlzLnN0YXRlLmFwcHJvdmFsTm8/IHRoaXMuc3RhdGUuYXBwcm92YWxObzogXCJcIixcclxuICAgICAgICAvLyBwYnNBdXRob3JpdHlBcHByb3ZhbE51bWJlcjogXCJcIixcclxuICAgICAgICAvL2JhcmNvZGVcclxuICAgICAgICAvL3NjcmlwdE51bWJlcjogXCJcIixcclxuICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5zaHJpbmtTdXBlclNjcmlwdENvZGUodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSxcclxuICAgICAgICBlb3BEaXNwbGF5TmFtZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zY3JpcHRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJlXCIgPyB0aGlzLnNocmlua1N1cGVyU2NyaXB0Q29kZSh0aGlzLmNvbW1vblNlcnZpY2VzLmVvcERpc3BsYXlOYW1lKSA6IHRoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZSksXHJcbiAgICAgICAgaXRlbVN0cmVuZ3RoWG1sOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8uSXRlbVN0cmVuZ3RoWG1sKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5JdGVtU3RyZW5ndGhYbWwgOiBcIiBcIixcclxuICAgICAgICAvL2F1dGhvcml0eVZhbHVlXHJcbiAgICAgICAgcGJzRHZhQXV0aG9yaXR5TnVtYmVyOiBjaGVja0F1dGhvcml0eUJveCA/IHRoaXMuY29tbW9uU2VydmljZXMuYXV0aG9yaXR5Rm9ybU5vIDogMCxcclxuICAgICAgICBwcmVzY3JpYmVkSXRlbVJlc2VydmVkVGhyZWU6IHRoaXMuaHRtbFRvVGV4dENvbnZlcnQodGhpcy5jb21tb25TZXJ2aWNlcy5yeERpc3BsYXlOYW1lKSwvL3RoaXMuc2hyaW5rU3VwZXJTY3JpcHRDb2RlKHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlZEl0ZW1SZXNlcnZlZFRocmVlKSxcclxuICAgICAgICB1bmxpc3RlZEl0ZW1SZXBhdEF1dGhvcml0eTogdGhpcy5jb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBID09IHRydWUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgcHJlc2NyaWJlZEl0ZW1SZXNlcnZlZE9uZTogdGhpcy5jb21tb25TZXJ2aWNlcy5nZXRTY2hlZHVsZU51bWJlcih0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24pLnRvTG93ZXJDYXNlKCkgPT0gXCJzOFwiID8gdGhpcy5udW1iZXJUb1dvcmQocGFyc2VJbnQodGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCkpIDogJycsXHJcbiAgICAgICAgbXlTTENvbnNlbnQ6IHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQsXHJcbiAgICAgICAgc2VuZFRvUGhhcm1hY3k6IHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3ksXHJcbiAgICAgICAgc2VuZFRvUGhhcm1hY3lWYWx1ZTogdGhpcy5jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlLFxyXG4gICAgICAgIGVtZXJnZW5jeVN1cHBseTogdGhpcy5jb21tb25TZXJ2aWNlcy5lbWVyZ2VuY3lTdXBwbHksXHJcbiAgICAgICAgbW9sZWN1bGVTdHJlbmd0aEdyaWQ6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tb2xlY3VsZVN0cmVuZ3RoR3JpZCkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubW9sZWN1bGVTdHJlbmd0aEdyaWQgOiAnJyxcclxuICAgICAgICBlbnRpdHlJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVudGl0eUlkLFxyXG4gICAgICAgIGlzUHJlc2NyaWJlQW5kUHJpbnQ6IHRoaXMuaXNlcHJpc2NyaWJlcHJpbnQsXHJcbiAgICAgICAgYW10Q29kZVN5c3RlbTogIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LmFtdENvZGVTeXN0ZW0pID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmFtdENvZGVTeXN0ZW0gOiBcIlwiLFxyXG4gICAgICAgIGFtdFZlcnNpb246ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5hbXRWZXJzaW9uKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRWZXJzaW9uIDogXCJcIixcclxuICAgICAgICBxdWFudGl0eVdpdGhVbml0OiB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5V2l0aFVuaXRGbGFnICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5tYXhRdHlVbml0cykgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHMgOiBcIlwiLFxyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICAgIHByb2R1Y3RQYWNrSWQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdFBhY2tJZCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0UGFja0lkIDogJycsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZW1vdmVFcnJUb2FzdCgpO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5Qb3N0KGJvZHksIGNvbmZpZy5QSFlTSUNJQU4uTV9QUkVTQ1JJQkUpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSwgcmVzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2xvc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfbWVzc2FnZSAhPSBudWxsICYmIHJlcy5yZXNwb25zZV9tZXNzYWdlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTXByZXNjcmliZU1lZFwiLCBib2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1wcmVzY3JpYmVNZWRcIiwgYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJNcHJlc2NyaWJlTWVkXCIsIGJvZHkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlVG9vbFRpcChldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ19fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXAnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICd0eXBlLWRhcmsnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICdwbGFjZS1sZWZ0Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnei1pbmRleCcsICc5OTk5OTk5OScpO1xyXG4gICAgICBjb25zdCB2aWV3UmVmID0gdGhpcy52aWV3UmVmQ29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm15VGVtcGxhdGUpO1xyXG4gICAgICB2aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgY29uc3QgdG9vbHRpcENvbnRlbnQgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHZpZXdSZWYucm9vdE5vZGVzKSAmJiB2aWV3UmVmLnJvb3ROb2Rlcy5sZW5ndGggIT0gMCA/IHZpZXdSZWYucm9vdE5vZGVzWzBdIDogXCJcIjtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXAsIHRvb2x0aXBDb250ZW50KTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMudG9vbHRpcCk7XHJcbiAgICAgIHZhciB0b29sOiBhbnkgPSB0aGlzLnRvb2x0aXA7XHJcbiAgICAgIHZhciBsZWZ0ID0gZXZlbnQueCAtICh0b29sLmNsaWVudFdpZHRoICsgMTUpO1xyXG4gICAgICB2YXIgaGVpZ2h0dmFsdWUgPSBldmVudC55IC0gKHRvb2wuY2xpZW50SGVpZ2h0IC8gMik7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnbGVmdCcsIGxlZnQgKyAncHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd0b3AnLCBoZWlnaHR2YWx1ZSArICdweCcpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJjcmVhdGVUb29sVGlwXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd3Rvb2x0aXAobGVtaXByb2R1Y3Q6IGJvb2xlYW4sIGJyYW5kdG9vbHRpcDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAobGVtaXByb2R1Y3QpIHtcclxuICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwLCAnbGVtaS10b29sdGlwJyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXAsICd0eXBlLWRhcmsnKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRSZWN0ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZpZXdSZWZDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGJyYW5kdG9vbHRpcCk7XHJcbiAgICAgICAgdmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdmFyIG15ZG9tOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImJyYW5kbmFtZXRvb2x0aXBcIik7XHJcbiAgICAgICAgdmFyIHJlY3QgPSBteWRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCB0b29sdGlwQ29udGVudCA9IHZpZXdSZWYucm9vdE5vZGVzWzBdO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwLCB0b29sdGlwQ29udGVudCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMudG9vbHRpcCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICdsZWZ0JywgcmVjdC5sZWZ0ICsgJ3B4Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd0b3AnLCByZWN0LnRvcCAtIG15ZG9tLm9mZnNldEhlaWdodCAtIDEwICsgJ3B4Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd3aWR0aCcsIG15ZG9tLmNsaWVudFdpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd3Rvb2x0aXBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL2VkaXQgcnhcclxuICBzZXRFZGl0VmFsdWVzKHJ4TGlzdDogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IHRydWU7XHJcbiAgICAgIHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUgPSByeExpc3QucGJzSXRlbUNvZGVDb2RlICE9IG51bGwgPyByeExpc3QucGJzSXRlbUNvZGVDb2RlIDogXCJcIjtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcHJvZHVjdElkOiByeExpc3QucHJvZHVjdElkLFxyXG4gICAgICAgIHBic0NvZGU6IHJ4TGlzdC5wYnNJdGVtQ29kZUNvZGUsXHJcbiAgICAgICAgcnhJZDogdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkLFxyXG4gICAgICAgIHByb2R1Y3RQYWNrSWQ6IHJ4TGlzdC5wcm9kdWN0UGFja0lkID8gcnhMaXN0LnByb2R1Y3RQYWNrSWQgOiAnJyxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLkdFVF9NRURfREVUX0JZX0lEICsgXCI/cHJvZHVjdElkPVwiICsgcnhMaXN0LnByb2R1Y3RJZCArIFwiJnBic0NvZGU9XCIgKyAgcnhMaXN0LnBic0l0ZW1Db2RlQ29kZSAgKyBcIiZyeElkPVwiICsgdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkICsgXCImcHJvZHVjdFBhY2tJZD1cIiArIChyeExpc3QucHJvZHVjdFBhY2tJZCA/IHJ4TGlzdC5wcm9kdWN0UGFja0lkIDogJycpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7IHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHZhciBlZGl0UmVzdHJpY3RGbGFnID0gKHRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0ICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0Py5zdGF0dXMpICYmIHJ4TGlzdC5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSBcImRyYWZ0XCIpIHx8ICF0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGVkaXRSZXN0cmljdEZsYWcpIHtcclxuICAgICAgICAgICAgICB2YXIgTWVkID0gW107XHJcbiAgICAgICAgICAgICAgTWVkLnB1c2gocmVzLnJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpY2luZUxpc3RPcmdpbmFsID0gTWVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0UmVzdHJpY3RlZE1lZGljaW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMucnhPbmx5UEJTID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWwgPSByeExpc3QucXVhbnRpdHlPZlRoZXJhcGV1dGljR29vZFF1YW50aXR5O1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwgPSByeExpc3QubWF4aW11bU51bWJlck9mUmVwZWF0cyA/IHJ4TGlzdC5tYXhpbXVtTnVtYmVyT2ZSZXBlYXRzIDogXCIwXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlID0gcnhMaXN0LmRvc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gcnhMaXN0LmZyZXF1ZW5jeSA/IHJ4TGlzdC5mcmVxdWVuY3kgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSA9IHJ4TGlzdC5mb29kID8gcnhMaXN0LmZvb2QgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuY29tcGxleEluc3RydWN0aW9ucykgJiYgdGhpcy5pbnN0cnVjdGlvbkRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5pbnN0cnVjdGlvbkRhdGEuZmlsdGVyKCgoeDogeyB0ZXh0OiBhbnk7IH0pID0+IHgudGV4dCA9PSByeExpc3QuY29tcGxleEluc3RydWN0aW9ucykpO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGRhdGFbMF0uZGVzY3JpcHRpb24pID8gZGF0YVswXS5kZXNjcmlwdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID0gcnhMaXN0LmNvbXBsZXhJbnN0cnVjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zKSA/IHJ4TGlzdC5jb21wbGV4SW5zdHJ1Y3Rpb25zIDogXCJcIjtcclxuICAgICAgICAgICAgICB0aGlzLkluc3RydWN0aW9uRGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY29tcGxleElkID0gcnhMaXN0LmNvbXBsZXhJZCA/IHJ4TGlzdC5jb21wbGV4SWQgOiAwO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSByeExpc3Qucm91dGUgPyByeExpc3Qucm91dGUgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4UFJOID0gcnhMaXN0LnBybiA9PSAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTID0gcnhMaXN0LnByZXNjcmliZUFzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zY3JpcHREYXRlKSA/IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5zY3JpcHREYXRlLCAneXl5eS1NTS1kZCcpIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zdGFydERhdGUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5zdGFydERhdGUpID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0ocnhMaXN0LnN0YXJ0RGF0ZSwgJ3l5eXktTU0tZGQnKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZW5kRGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHJ4TGlzdC5wcmVzY3JpcHRpb25FeHBpcmVzVmFsdWUsICd5eXl5LU1NLWRkJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwgPSByeExpc3QubWluaW11bUludGVydmFsQmV0d2VlblJlcGVhdHMgPT0gLTEgPyAnJyA6IHJ4TGlzdC5taW5pbXVtSW50ZXJ2YWxCZXR3ZWVuUmVwZWF0cztcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wdXJwb3NlKSA/IHJ4TGlzdC5wdXJwb3NlIDogXCJcIjtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cgPSByeExpc3QuYnJhbmRTdWJzdGl0dXRlc05vdEFsbG93ZWQgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hbm5vdGF0aW9uID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QuYW5ub3RhdGlvbikgPyByeExpc3QuYW5ub3RhdGlvbiA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZG9jdG9yTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5kb2N0b3JOb3RlcykgPyByeExpc3QuZG9jdG9yTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmlwdGlvblJlYXNvbiA9IHJ4TGlzdC5yZWFzb25Gb3JUaGVyYXBldXRpY0dvb2Q7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9ucyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTm90ZXMgPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNOb3RlcykgPyByeExpc3QucGJzTm90ZXMgOiBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnBic0xpc3RJbnN0cnVjdGlvbnNBdXQgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmFwcHJvdmFsTm8gPSByeExpc3QuYXV0aG9yaXR5QXBwcm92YWxOdW1iZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgPSByeExpc3Quc2VuZFRvUGhhcm1hY3k7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZSA9IHJ4TGlzdC5zZW5kVG9QaGFybWFjeVZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseSA9IHJ4TGlzdC5lbWVyZ2VuY3lTdXBwbHk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubXlTTENvbnNlbnQgPSByeExpc3QubXlTTENvbnNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjQgPSByeExpc3QucmVndWxhdGlvbjI0ID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0VHlwZSA9IHJ4TGlzdC5zY3JpcHRUeXBlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudCA9IHJ4TGlzdC5wYXRpZW50Q3RnRmxhZyA9PSAwID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMubGVtaSA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlLmFpcCkgPyByZXMucmVzcG9uc2UuYWlwLmxlbWkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5sbWJjID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMucmVzcG9uc2UuYWlwKSA/IHJlcy5yZXNwb25zZS5haXAubG1iYyA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnVuVXN1YWxEb3NlRmxhZyA9IHJ4TGlzdC51blVzdWFsRG9zZUZsYWcgPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocnhMaXN0LnN0YXRlQXV0aG9yaXR5TnVtYmVyKSA/IHJ4TGlzdC5zdGF0ZUF1dGhvcml0eU51bWJlciA6IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucGJzTGlzdEluc3RydWN0aW9uc0lkID0gcnhMaXN0LnJlc3RyaWN0ZWRQYnNTZWxlY3RlZEluZGV4ICE9IDAgPyByeExpc3QucmVzdHJpY3RlZFBic1NlbGVjdGVkSW5kZXggLSAxIDogbnVsbDsgdGhpcy5jb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zID0gIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyeExpc3QucGJzTGlzdEluc3RydWN0aW9ucykgPyByeExpc3QucGJzTGlzdEluc3RydWN0aW9ucyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID0gcnhMaXN0LmlzQnJhbmROYW1lID8gcnhMaXN0LmlzQnJhbmROYW1lIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuaXNTaG93QXV0aG9yaXR5ID0gcnhMaXN0LmlzU2hvd0F1dGhvcml0eSA/IHJ4TGlzdC5pc1Nob3dBdXRob3JpdHkgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIpICYmIHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgIT0gMCA/IHJ4TGlzdC5wYnNEdmFBdXRob3JpdHlOdW1iZXIgOiBcIlwiO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LmlzU2hvd0F1dGhvcml0eSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucnhBdXRob3JpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmlwdGlvbiA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwicHJlc2NyaWJlZFwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAocnhMaXN0LnN0YXR1cy50b0xvd2VyQ2FzZSgpID09IFwiY2Vhc2VkXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChyeExpc3Quc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gXCJjYW5jZWxsZWRcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWRpdFJlc3RyaWN0RmxhZykge1xyXG4gICAgICAgICAgICAgIHRoaXMuUG9wdXBTY3JlZW5Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5Qb3B1cFNjcmVlbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvL2VuYWJsZSBlLXByZXNjcmlwdGlvblxyXG4gIGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdNJykge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscz8uc2NyaXB0VHlwZSkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc2NyaXB0VHlwZS50b1VwcGVyQ2FzZSgpID09ICdFJyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzPy5zdGF0dXMpICYmIHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09ICdkcmFmdCcgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDAgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy52ZW5kb3JQYXRpZW50Q29uc2VudCA9PSB0cnVlICYmIHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2hwaW9fdmFsaWQgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19paGlfdmFsaWQpIHx8ICh2YWx1ZSA9PSAxICYmICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHM/LnN0YXR1cykgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT0gJ2RyYWZ0JykpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICgodGhpcy5jb21tb25TZXJ2aWNlcy5jcmVhdGVQYXRpZW50UmVzcG9uc2UuaXNfaHBpb192YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLmNyZWF0ZVBhdGllbnRSZXNwb25zZS5pc19ocGlpX3ZhbGlkICYmIHRoaXMuY29tbW9uU2VydmljZXMuY3JlYXRlUGF0aWVudFJlc3BvbnNlLmlzX2loaV92YWxpZCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQgPT0gMCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnZlbmRvclBhdGllbnRDb25zZW50ID09IHRydWUpIHx8IHZhbHVlID09IDEpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImVQcmVzY3JpcHRpb25WYWxpZGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZVNjaGVkdWxlTnVtYmVyKHNlbGVjdGVkRm9ybXVsYXRpb246IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCAmJiBzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzICE9IG51bGwgJiYgc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgdmFyIHN0YXRlU2NoZWR1bGVMaXN0ID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoc3RhdGVTY2hlZHVsZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBzdGF0ZVNjaGVkdWxlTGlzdC5jb25jYXQoc2VsZWN0ZWRGb3JtdWxhdGlvbi5zdGF0ZVNjaGVkdWxlc1tpXS5zY2hlZHVsZXMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3RhdGVTY2hlZHVsZUxpc3QucHVzaChzZWxlY3RlZEZvcm11bGF0aW9uLnN0YXRlU2NoZWR1bGVzW2ldLnNjaGVkdWxlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdGF0ZVNjaGVkdWxlTGlzdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0U3RhdGVTY2hlZHVsZU51bWJlclwiKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXV0aG9yaXR5Tm9WYWxpZGF0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBrZXl2YWx1ZSA9IGV2ZW50LmNoYXJDb2RlO1xyXG4gICAgICByZXR1cm4gKChrZXl2YWx1ZSA+IDY0ICYmIGtleXZhbHVlIDwgOTEpIHx8IChrZXl2YWx1ZSA+IDk2ICYmIGtleXZhbHVlIDwgMTIzKSB8fCAoa2V5dmFsdWUgPj0gNDggJiYga2V5dmFsdWUgPD0gNTcpKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiYXV0aG9yaXR5Tm9WYWxpZGF0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlcihTY2hlZHVsZU51bWJlcjogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgc3RhdGVTY2hlZHVsZU51bWJlciA9IHRoaXMuZ2V0U3RhdGVTY2hlZHVsZU51bWJlcihTY2hlZHVsZU51bWJlcik7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHN0YXRlU2NoZWR1bGVOdW1iZXIpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0U3RhdGVDb2RlRnJvbVN0YXRlTmFtZSh0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlKS50b1VwcGVyQ2FzZSgpID09IFwiVEFTXCIgJiYgc3RhdGVTY2hlZHVsZU51bWJlci5sZW5ndGggIT0gMCAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyWzBdLmluZGV4T2YoXCJTNERcIikgIT0gLTEpIHtcclxuICAgICAgICAgIHJldHVybiBcIlM0RFwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXRTdGF0ZUNvZGVGcm9tU3RhdGVOYW1lKHRoaXMuY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuc3RhdGUpLnRvVXBwZXJDYXNlKCkgPT0gXCJOU1dcIiAmJiBzdGF0ZVNjaGVkdWxlTnVtYmVyLmxlbmd0aCAhPSAwICYmIHN0YXRlU2NoZWR1bGVOdW1iZXJbMF0uaW5kZXhPZihcIlM0QlwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiUzRCXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwYXlMb2FkU3RhdGVTY2hlZHVsZU51bWJlclwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVzY3JpcGVBYm9ydCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICB1c2VySWQ6IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQsXHJcbiAgICAgICAgcGF0VXNlcklkOiB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFib3J0ZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLlJYX1BSRVNDUklCRV9BQk9SVCArIFwiP3VzZXJJZD1cIiArIHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscy51c2VySWQgKyBcIiZwYXRVc2VySWQ9XCIgKyB0aGlzLmNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnBhdGllbnRVc2VySWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuaXNBYm9ydCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZyA9IGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5jb21tb25TZXJ2aWNlcy5yeGlkID0gXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlID0gcmVzLmVycm9yX2NvZGU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSByZXMucmVzcG9uc2VfbWVzc2FnZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlKVxyXG4gICAgICAgICAgICB0aGlzLnNob3dSZXNwb25zZU1lc3NhZ2UoKTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuYWJvcnRCdG5GbGFnID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInByZXNjcmlwZUFib3J0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzQWJvcnQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnID0gZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUgPSBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlXHJcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlKVxyXG4gICAgICAgICAgdGhpcy5zaG93UmVzcG9uc2VNZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmVzY3JpcGVBYm9ydFwiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmFib3J0QnRuRmxhZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJlc2NyaXBlQWJvcnRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93UmVzcG9uc2VNZXNzYWdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShcIlwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZWRhdGEuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5jbG9zZSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmRhdGEpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLmlzUHJpbnRBdmFpbGFibGUgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5maWxlX3VybCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLkdldCh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmZpbGVfdXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGF0b2IocmVzcG9uc2UuZmlsZSkuc3BsaXQoJycpLm1hcChjaGFyID0+IGNoYXIuY2hhckNvZGVBdCgwKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGJiYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmJiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1dpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3cuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByaW50V2FybmluZ1BvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzaG93UmVzcG9uc2VNZXNzYWdlXCIsIHRoaXMucmVzcG9uc2VEYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlZGF0YS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZSh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBvcHVwU2NyZWVuTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcInNob3dSZXNwb25zZU1lc3NhZ2VcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MgJiYgdGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlRXJyb3IpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2csICdzdWNjZXNzJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZVN1Y2Nlc3MgJiYgIXRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgJiYgIXRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2csICdzdWNjZXNzJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yICYmICF0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnZXJyb3InLCB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJfY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5yZXNwb25zZURhdGEucHJlc2NyaWJlU3VjY2VzcyAmJiB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4odGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnLCAnc3VjY2VzcycpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCBcImVycm9yXCIsIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyX2NvZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycm9yICYmIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5QcmVzY3JpYmVNc2csICdlcnJvcicsIHRoaXMucmVzcG9uc2VEYXRhLnByZXNjcmliZUVycl9jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3Blbih0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydE1zZywgXCJlcnJvclwiLCB0aGlzLnJlc3BvbnNlRGF0YS5hYm9ydEVycl9jb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzICYmIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHRoaXMucmVzcG9uc2VEYXRhLmFib3J0TXNnLCBcInN1Y2Nlc3NcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hYm9ydEJ0bkZsYWcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc2VwcmlzY3JpYmVwcmludCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pc0Fib3J0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmlzUHJlc2NyaWJlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0U3VjY2VzcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVFcnJvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVTdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVzcG9uc2VEYXRhLmFib3J0RXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuUHJlc2NyaWJlTXNnID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEuYWJvcnRNc2cgPSBcIlwiO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YS5wcmVzY3JpYmVkYXRhID0gXCJcIjtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2hvd1Jlc3BvbnNlTWVzc2FnZVwiLCB0aGlzLnJlc3BvbnNlRGF0YS5wYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1JTVNQcmltYXJ5U2VhcmNoKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgICAgaWYgKCF0aGlzLmlzU3RpbGxTZWFyY2hpbmcgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgICAgICBwcm9kdWN0TmFtZTogdGhpcy5Qcm9kdWN0U2VhcmNoTmFtZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMubWVkaVNlYXJjaFZhbHVlLnRyaW0oKS5sZW5ndGggPCAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdGlsbFNlYXJjaGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoIDwgOClcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICs9IDE7XHJcbiAgICAgICAgICB2YXIgcGJzVHlwZSA9IHRoaXMucnhPbmx5UEJTICYmIHRoaXMucnhQcml2YXRlID8gXCJcIiA6IHRoaXMucnhPbmx5UEJTID8gXCJQQlMsUlBCU1wiIDogdGhpcy5yeFByaXZhdGUgPyBcIlByaXZhdGVcIiA6IFwiXCI7XHJcbiAgICAgICAgICBjb25zdCBzZWFyY2hNZXRob2QgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNtYXJ0U2VhcmNoID8gY29uZmlnLkdFVF9NRURTX0JZX1NNQVJUX1NFQVJDSCArICc/cHJvZHVjdE5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLlByb2R1Y3RTZWFyY2hOYW1lKSArICcmcGFnZT0nICsgdGhpcy5zZWFyY2hNZWRpY2luZXNQYWdlTnVtYmVyICsgJyZub09mUmVjPTEwJnBic1R5cGU9JyArIHBic1R5cGVcclxuICAgICAgICAgICAgOiBjb25maWcuR0VUX01FRFNfQllfU0VBUkNIICsgJz9wcm9kdWN0TmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuUHJvZHVjdFNlYXJjaE5hbWUpICsgJyZwYWdlPScgKyB0aGlzLnNlYXJjaE1lZGljaW5lc1BhZ2VOdW1iZXIgKyAnJm5vT2ZSZWM9MTAnXHJcblxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoc2VhcmNoTWV0aG9kKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlByaW1hcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1ByaW1hcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZExpc3QgPSByZXMucmVzcG9uc2UuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNQYnNUeXBlTWF0Y2goaXRlbS5wYnNUeXBlLCBwYnNUeXBlKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gZmlsdGVyZWRMaXN0Lmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkTGlzdC5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QuZmlsdGVyKCh4OiBhbnkpID0+IHgucHJvZERpc3BsYXlWYWx1ZSA9PSBkYXRhLnByb2REaXNwbGF5VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvZHVjdCA9IHZhbC5wcm9kSGlkZGVuVmFsdWUuaW5jbHVkZXMoZGF0YS5wcm9kSGlkZGVuVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGRhdGEuc2VhcmNoQmFzZS50b0xvd2VyQ2FzZSgpID09ICdicmFuZGtleScgPyAnQksnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2RwYWNra2V5JyA/ICdQUEsnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3ZpcnR1YWxuYW1lJyA/ICdWTicgOiBkYXRhLnNlYXJjaEJhc2UudG9Mb3dlckNhc2UoKSA9PSAncHJvZHVjdGtleScgPyAnUEsnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ3Byb2R1Y3RrZXlhY3RpdmVpbmdyZWRpZW50JyA/ICdQS0EnIDogZGF0YS5zZWFyY2hCYXNlLnRvTG93ZXJDYXNlKCkgPT0gJ2Z1bGxwaScgPyAnRlBJJyA6ICdQTic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjdCAmJiB0eXBlICE9ICdQS0EnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnByb2RIaWRkZW5WYWx1ZSArPSAnLCcgKyBkYXRhLnByb2RIaWRkZW5WYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPiA3IHx8IHJlcy5yZXNwb25zZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPCA4ICYmIHRoaXMuaXNTdGlsbFNlYXJjaGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLk1JTVNQcmltYXJ5U2VhcmNoKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcInByaW1hcnlNSU1TU2VhcmNoXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaE1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNZWRpY2luZXNMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbWFyeU1JTVNTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5QcmltYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaE1lZGljaW5lc0xlbmd0aCA9IDA7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJwcmltYXJ5TUlNU1NlYXJjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE1JTVNTZWNvbmRhcnlTZWFyY2goKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTdGlsbFNlYXJjaGluZyAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZykge1xyXG4gICAgICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoICE9IDAgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwicGtcIiAmJiB0aGlzLlByb2R1Y3RUeXBlLnRvTG93ZXJDYXNlKCkgIT0gXCJwblwiICYmIHRoaXMuUHJvZHVjdFR5cGUudG9Mb3dlckNhc2UoKSAhPSBcInZuXCIgJiYgdGhpcy5Qcm9kdWN0VHlwZS50b0xvd2VyQ2FzZSgpICE9IFwiZnBpXCIpIHtcclxuICAgICAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHRoaXMucHJvZEhpZGRlbk5hbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IHRoaXMuUHJvZHVjdFR5cGUsXHJcbiAgICAgICAgICAgIHByZXNjcmliZXJUeXBlOiBcIk1QXCJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0Lmxlbmd0aCA8PSAzKVxyXG4gICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgKz0gMTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaSA9IHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLkdFVF9NRURTX0JZX05BTUUgKyAnP3Byb2R1Y3ROYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5wcm9kSGlkZGVuTmFtZSkgKyAnJnR5cGU9JyArIHRoaXMuUHJvZHVjdFR5cGUgKyAnJnByZXNjcmliZXJUeXBlPU1QJnBhZ2U9JyArIHRoaXMuc2VhcmNoQnluYW1lUGFnZU51bWJlciArICcmbm9PZlJlYz0xMCcpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlOyB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZVBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uY2xpY2tNZWRpY2luZUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICByZXMucmVzcG9uc2UuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQnluYW1lTGVuZ3RoID0gcmVzLnJlc3BvbnNlLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXNOb25QYnNGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgdGhpcy5yeE9ubHlOT05QQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgLy8gICBpZiAodGhpcy5yeE9ubHlQQlMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5yeE9ubHlQQlNGaWx0ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWw7XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25DaGVja2JveENoYW5nZSgyKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCkgJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5sZW5ndGggPD0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzLnJlc3BvbnNlKSAmJiByZXMucmVzcG9uc2UubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLk1JTVNTZWNvbmRhcnlTZWFyY2goKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEJ5bmFtZUxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlYXJjaEFwaVN0b3BGbGFnID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5TZWNvbmRhcnlTZWFyY2hTcGlubmVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hCeW5hbWVMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIk1JTVNTZWNvbmRhcnlTZWFyY2hcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWFyY2hBcGlTdG9wRmxhZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLlNlY29uZGFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMub25jbGlja01lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiTUlNU1NlY29uZGFyeVNlYXJjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaW50V2FybmluZ1BvcCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gXCJQbGVhc2UgZW5hYmxlIHBvcHVwIG9uIHRoZSBicm93c2VyIHRvIHZpZXcvcHJpbnQgdGhlIHByZXNjcmlwdGlvbi5cIjtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kaWFsb2dvcGVuKFJlYWxUaW1lUHJlc2NyaXB0aW9uTW9uaXRvcmluZ0NvbXBvbmVudCwgdGhpcy5jb250ZW50LCBkYXRhKS5zdWJzY3JpYmUoKHJlcykgPT4geyB9KTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwicHJpbnRXYXJuaW5nUG9wXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbnVtYmVyVG9Xb3JkKG46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKG4gPCAwKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgdmFyIHNpbmdsZV9kaWdpdCA9IFsnJywgJ09uZScsICdUd28nLCAnVGhyZWUnLCAnRm91cicsICdGaXZlJywgJ1NpeCcsICdTZXZlbicsICdFaWdodCcsICdOaW5lJ11cclxuICAgICAgdmFyIGRvdWJsZV9kaWdpdCA9IFsnVGVuJywgJ0VsZXZlbicsICdUd2VsdmUnLCAnVGhpcnRlZW4nLCAnRm91cnRlZW4nLCAnRmlmdGVlbicsICdTaXh0ZWVuJywgJ1NldmVudGVlbicsICdFaWdodGVlbicsICdOaW5ldGVlbiddXHJcbiAgICAgIHZhciBiZWxvd19odW5kcmVkID0gWydUd2VudHknLCAnVGhpcnR5JywgJ0ZvcnR5JywgJ0ZpZnR5JywgJ1NpeHR5JywgJ1NldmVudHknLCAnRWlnaHR5JywgJ05pbmV0eSddXHJcbiAgICAgIGlmIChuID09PSAwKSByZXR1cm4gJ1plcm8nO1xyXG4gICAgICBmdW5jdGlvbiB0cmFuc2xhdGUobjogYW55KSB7XHJcbiAgICAgICAgdmFyIHdvcmQ6IGFueSA9ICcnXHJcbiAgICAgICAgaWYgKG4gPCAxMCkge1xyXG4gICAgICAgICAgd29yZCA9IHNpbmdsZV9kaWdpdFtuXSArICcgJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMjApIHtcclxuICAgICAgICAgIHdvcmQgPSBkb3VibGVfZGlnaXRbbiAtIDEwXSArICcgJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwKSB7XHJcbiAgICAgICAgICB2YXIgcmVtID0gdHJhbnNsYXRlKG4gJSAxMClcclxuICAgICAgICAgIHdvcmQgPSBiZWxvd19odW5kcmVkWyhuIC0gbiAlIDEwKSAvIDEwIC0gMl0gKyAnICcgKyByZW1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAobiA8IDEwMDApIHtcclxuICAgICAgICAgIHdvcmQgPSBzaW5nbGVfZGlnaXRbTWF0aC50cnVuYyhuIC8gMTAwKV0gKyAnIEh1bmRyZWQgJyArIHRyYW5zbGF0ZShuICUgMTAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwMDAwMCkge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMCkudHJpbSgpICsgJyBUaG91c2FuZCAnICsgdHJhbnNsYXRlKG4gJSAxMDAwKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuIDwgMTAwMDAwMDAwMCkge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMDAwMCkudHJpbSgpICsgJyBNaWxsaW9uICcgKyB0cmFuc2xhdGUobiAlIDEwMDAwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgd29yZCA9IHRyYW5zbGF0ZShuIC8gMTAwMDAwMDAwMCkudHJpbSgpICsgJyBCaWxsaW9uICcgKyB0cmFuc2xhdGUobiAlIDEwMDAwMDAwMDApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB3b3JkXHJcbiAgICAgIH1cclxuICAgICAgdmFyIHJlc3VsdCA9IHRyYW5zbGF0ZShuKVxyXG4gICAgICByZXR1cm4gcmVzdWx0LnRyaW0oKVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJudW1iZXJUb1dvcmRcIik7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXh0ZW1wTVBQTmFtZSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbikgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQpICYmIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXQubGVuZ3RoICE9IDAgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdPy5tcHBzKSAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHMubGVuZ3RoID4gMCAmJiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5hbXRbMF0ubXBwc1swXT8ubXBwTmFtZSkpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uYW10WzBdLm1wcHNbMF0ubXBwTmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wcm9kdWN0TmFtZSkgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUudHJpbSgpIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RXh0ZW1wTVBQTmFtZVwiKTtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBodG1sVG9UZXh0Q29udmVydCh2YWx1ZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB0bXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKTtcclxuICAgICAgdG1wLmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgICByZXR1cm4gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJyc7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImh0bWxUb1RleHRDb252ZXJ0XCIpO1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF1dGhvcml0eU5vQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlciA9IHZhbHVlLnJlcGxhY2UoL1teYS16QS1aIDAtOV0vZywgXCJcIikucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhdXRob3JpdHlOb0NoYW5nZVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFscGhhUmVzdHJpY3Rpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGtleXZhbHVlID0gZXZlbnQuY2hhckNvZGU7XHJcbiAgICAgIHJldHVybiAoKGtleXZhbHVlID4gNjQgJiYga2V5dmFsdWUgPCA5MSkgfHwgKGtleXZhbHVlID4gOTYgJiYga2V5dmFsdWUgPCAxMjMpIHx8IChrZXl2YWx1ZSA+PSA0OCAmJiBrZXl2YWx1ZSA8PSA1NykgfHwga2V5dmFsdWUgPT0gMzIpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJhbHBoYVJlc3RyaWN0aW9uXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFkZFRvRmF2b3VyaXRlcygpIHtcclxuICAgIGNvbnN0IGlzSW5GYXZvdXJpdGVzID0gdGhpcy5pc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpO1xyXG4gICAgY29uc3QgaXNBZGRpbmcgPSAhaXNJbkZhdm91cml0ZXM7XHJcbiAgICB2YXIgcGh5c2ljaWFuRGV0YWlscyA9IHRoaXMuY29tbW9uU2VydmljZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgIHZhciBib2R5ID0ge1xyXG4gICAgICB1c2VySWRTdHJpbmc6IHBoeXNpY2lhbkRldGFpbHMudXNlcklkLFxyXG4gICAgICBwcm9kdWN0SWQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0SWQsXHJcbiAgICAgIHByb2R1Y3ROYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSk/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3ROYW1lOlwiXCIsXHJcbiAgICAgIHF1YW50aXR5OiB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICByZXBlYXRzOiB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgIHJlc3RyaWN0aW9uOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3Q/KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSArIFwiIChcIiArIHRoaXMuZ2V0UmVzdHJpY3Rpb25zKHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMpICsgXCIpIFwiXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUpOlwiXCIsXHJcbiAgICAgIGdlbmVyaWNOYW1lOiAhdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5nZW5lcmljTmFtZSk/dGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lOlwiXCIsXHJcbiAgICAgIHBic0NvZGU6ICF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKT90aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGU6XCJcIixcclxuICAgICAgYWN0aXZlOiBpc0FkZGluZyxcclxuICAgICAgcmVzdHJpY3RlZE1lZGljaW5lOiB0aGlzLmNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdCxcclxuICAgICAgZG9zZTogdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUsXHJcbiAgICAgIGZyZXF1ZW5jeTogdGhpcy5jb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWUsXHJcbiAgICAgIGZvb2Q6dGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWUsXHJcbiAgICAgIGluc3RydWN0aW9uOnRoaXMuY29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZSxcclxuICAgICAgcm91dGU6dGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlLFxyXG4gICAgICAuLi4oIWlzQWRkaW5nICYmIHsgZW5jcnlwdGVkSWQ6IHRoaXMuZ2V0Q3VycmVudEZhdkVuY3J5cHRlZElkKCkgfSksXHJcbiAgICAgIHByb2R1Y3RQYWNrSWQ6IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbj8ucHJvZHVjdFBhY2tJZCA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0UGFja0lkIDogJycsXHJcbiAgICB9XHJcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLlBvc3QoYm9keSwgY29uZmlnLlBIWVNJQ0lBTi5BRERfRkFWT1VSSVRFX01FRElDSU5FKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJBZGRGYXZvdXJpdGVzXCIsIGJvZHkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHJlcy5mYXZvdXJ0aWVzTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm9yaWdpbmFsRmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gcmVzLmZhdm91cnRpZXNMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgIGlmICghaXNBZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuc2hvd0Zhdm91cml0ZU1lZCl7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkZhdm91cml0ZURhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmICghcmVzLmZhdm91cnRpZXNMaXN0IHx8IHJlcy5mYXZvdXJ0aWVzTGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgXCJObyBtb3JlIGZhdm91cml0ZXMgcmVtYWluaW5nLiBZb3UgY2FuIGFkZCBtZWRpY2luZXMgdG8gZmF2b3VyaXRlcyBmcm9tIHRoZSBzZWFyY2ggcmVzdWx0cy5cIixcclxuICAgICAgICAgICAgICAgICAgICBcImluZm9cIlxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZUVuY3J5cHRlZElkID0gcmVzLmZhdm91cnRpZXNMaXN0ICYmIHJlcy5mYXZvdXJ0aWVzTGlzdC5sZW5ndGggPiAwID8gcmVzLmZhdm91cnRpZXNMaXN0W3Jlcy5mYXZvdXJ0aWVzTGlzdC5sZW5ndGggLSAxXS5lbmNyeXB0ZWRJZCA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHRoaXMuc2hvd0Zhdm91cml0ZU1lZCAmJiBpc0FkZGluZyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJSeENvbXBvbmVudFwiLCBcIkFkZEZhdm91cml0ZXNcIiwgYm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiQWRkRmF2b3VyaXRlc1wiLCBib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcIkFkZEZhdm91cml0ZXNcIiwgYm9keSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgIGdldEZhdm91cnRpZXNMaXN0KCkge1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHBheWxvYWQgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMudXNlcklkO1xyXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uR0VUX0ZBVk9VUklURV9NRURJQ0lORV9MSVNUICsgXCI/dXNlcklkU3RyaW5nPVwiICsgcGF5bG9hZCtcIiZyZXN0cmljdGVkTWVkaWNpbmU9XCIrdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPSByZXMuZmF2b3VyaXRlc0xpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3QgPSByZXMuZmF2b3VyaXRlc0xpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm9yaWdpbmFsRmF2b3VyaXRlTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RmF2b3VydGllc0xpc3RcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJnZXRGYXZvdXJ0aWVzTGlzdFwiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJSeENvbXBvbmVudFwiLCBcImdldEZhdm91cnRpZXNMaXN0XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwiZ2V0RmF2b3VydGllc0xpc3RcIiwgcGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93RmF2b3VydGllcygpIHtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuZmF2b3VyaXRlRW5jcnlwdGVkSWQgPSBcIlwiO1xyXG4gICAgdGhpcy5zaG93RmF2b3VyaXRlTWVkID0gIXRoaXMuc2hvd0Zhdm91cml0ZU1lZDtcclxuICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3QpIHtcclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TUHJpbWFyeWFwaSkpIHtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLk1JTVNQcmltYXJ5YXBpLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5NSU1TU2Vjb25kYXJ5YXBpKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuTUlNU1NlY29uZGFyeWFwaS51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5zaG93RmF2b3VyaXRlTWVkKSB7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1lZGljaW5lTGlzdE9yZ2luYWwgPSBbXTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA9IHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3Q7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGEoKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuY2xlYXJNZWRpY2FsUHJlc2NyaXB0aW9uRmF2b3VyaXRlRGF0YSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gbnVsbDtcclxuICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuUHJpbWFyeVNlYXJjaFNwaW5uZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoTWVkaWNpbmVzTGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2VhcmNoQXBpU3RvcEZsYWcgPSB0cnVlO1xyXG4gICAgdGhpcy5vbmNsaWNrTWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lciA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICB0aGlzLnNlYXJjaGVkTWVkaWNpbmVMaXN0ID0gW107XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICB0aGlzLnRlbXBNZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy9GYXZvdXJpdGVNZWRpY2luZSBMb2FkaW5nXHJcbiAgZmF2b3VyaXRlTWVkaWNpbmVMb2FkaW5nKHJ4TGlzdDogYW55KSB7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYoIXRoaXMuY29tbW9uU2VydmljZXMuaXNNZWRpY2luZVJlc3RyaWN0KXtcclxuICAgICAgcnhMaXN0LnBic0NvZGUgPSByeExpc3QucGJzQ29kZSAhPSBudWxsID8gcnhMaXN0LnBic0NvZGUgOiBcIlwiO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICBwcm9kdWN0SWQ6IHJ4TGlzdC5wcm9kdWN0SWQsXHJcbiAgICAgICAgcGJzQ29kZTogcnhMaXN0LnBic0NvZGUsXHJcbiAgICAgICAgcnhJZDogMCxcclxuICAgICAgICBwcm9kdWN0UGFja0lkOiByeExpc3QucHJvZHVjdFBhY2tJZCA/IHJ4TGlzdC5wcm9kdWN0UGFja0lkIDogJycsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZUVuY3J5cHRlZElkID0gcnhMaXN0LmVuY3J5cHRlZElkO1xyXG4gICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuYXBpU2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5HRVRfTUVEX0RFVF9CWV9JRCArIFwiP3Byb2R1Y3RJZD1cIiArIHJ4TGlzdC5wcm9kdWN0SWQgKyBcIiZwYnNDb2RlPVwiICsgIHJ4TGlzdC5wYnNDb2RlICArIFwiJnJ4SWQ9XCIgKyAwICsgXCImcHJvZHVjdFBhY2tJZD1cIiArIChyeExpc3QucHJvZHVjdFBhY2tJZCA/IHJ4TGlzdC5wcm9kdWN0UGFja0lkIDogJycpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJSeENvbXBvbmVudFwiLCBcInNldEVkaXRWYWx1ZXNcIiwgdGhpcy5yZXNwb25zZURhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIE1lZCA9IFtdO1xyXG4gICAgICAgICAgICBNZWQucHVzaChyZXMucmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0ID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWNpbmVMaXN0T3JnaW5hbCA9IE1lZDtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gTWVkO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmNsZWFyTWVkaWNhbFByZXNjcmlwdGlvbkRhdGFPbmNoYW5nZW9mTWVkaWNpbmUoTWVkKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGb3JtdWxhdGlvbihyZXMucmVzcG9uc2UsIDApO1xyXG4gICAgICAgICAgICB0aGlzLmFzc2lnbkNvbWJpbmF0aW9ucyhyeExpc3QpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5tZWRpU2VhcmNoVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB0aGlzLm1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMudGVtcE1lZGlTZWFyY2hWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRNZWRpY2luZUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5yeE9ubHlQQlMgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiUnhDb21wb25lbnRcIiwgXCJzZXRFZGl0VmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZXMuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIlJ4Q29tcG9uZW50XCIsIFwic2V0RWRpdFZhbHVlc1wiLCBwYXlsb2FkKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmF2TWVkaWNpbmVMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB2YXIgc2VsZWN0ZWRkYXRhID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZUVuY3J5cHRlZElkID0gcnhMaXN0LmVuY3J5cHRlZElkO1xyXG4gICAgICAgIGlmICghdGhpcy5jb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KHJ4TGlzdD8ucHJvZHVjdElkKSkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRkYXRhID0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdC5maWx0ZXIoKHg6IHsgcHJvZHVjdElkOiBhbnk7IH0pID0+IHgucHJvZHVjdElkID09IE51bWJlcihyeExpc3QucHJvZHVjdElkKSk7XHJcbiAgICAgICAgICAvLyBzZWxlY3RlZGRhdGEgPSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkTWVkaWNpbmVMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uID0gc2VsZWN0ZWRkYXRhWzBdO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5jbGVhck1lZGljYWxQcmVzY3JpcHRpb25EYXRhT25jaGFuZ2VvZk1lZGljaW5lKHNlbGVjdGVkZGF0YVswXSk7XHJcbiAgICAgICAgICB0aGlzLmFzc2lnbkNvbWJpbmF0aW9ucyhyeExpc3QpO1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzUnRwbU5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm8gPSB0aGlzLmdldEFkZEF1dGhWYWx1ZSh0aGlzLnRlbXBBdXRob3JpdHlGb3JtTm8pO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKCk7XHJcbiAgICAgICAgICB0aGlzLmVuYWJsZVByZXNjcmliZUFzKHNlbGVjdGVkZGF0YVswXSk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkQnJhbmRGb3JtdWxhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmZhdk1lZGljaW5lTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25TZXJ2aWNlcy5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiUnhDb21wb25lbnRcIiwgXCJzZXRFZGl0VmFsdWVzXCIsIHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNDdXJyZW50TWVkaWNpbmVJbkZhdm91cml0ZXMoKSB7XHJcbiAgICBsZXQgZmF2b3VyaXRlc0xpc3QgPSB0aGlzLnNob3dGYXZvdXJpdGVNZWQgPyB0aGlzLmNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdCA6IHRoaXMuY29tbW9uU2VydmljZXMub3JpZ2luYWxGYXZvdXJpdGVNZWRpY2luZUxpc3Q7XHJcbiAgICBpZiAoIXRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiB8fCAhZmF2b3VyaXRlc0xpc3QgfHwgZmF2b3VyaXRlc0xpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYXZvdXJpdGVzTGlzdC5zb21lKChmYXZNZWQ6IHsgcHJvZHVjdElkOiBhbnk7IHBic0NvZGU6IGFueTsgcHJvZHVjdE5hbWU6IGFueTsgcXVhbnRpdHk6YW55OyByZXBlYXRzOmFueTsgZG9zZTphbnk7IGZyZXF1ZW5jeTphbnk7IGZvb2Q6YW55OyBpbnN0cnVjdGlvbjphbnk7IHJvdXRlOmFueSwgcHJvZHVjdFBhY2tJZDphbnkgfSkgPT5cclxuICAgICAgZmF2TWVkLnByb2R1Y3RJZC50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkLnRvU3RyaW5nKCkgJiYgZmF2TWVkLnByb2R1Y3RQYWNrSWQudG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RQYWNrSWQudG9TdHJpbmcoKSAmJiBcclxuICAgICAgKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoZmF2TWVkLnBic0NvZGUpID8gZmF2TWVkLnBic0NvZGUgOiBcIlwiKSA9PT0gKCF0aGlzLmNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uPy5wYnNDb2RlKSA/IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNDb2RlIDogXCJcIikgJiZcclxuICAgICAgZmF2TWVkLnByb2R1Y3ROYW1lID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUgJiYgZmF2TWVkLnF1YW50aXR5Py50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsPy50b1N0cmluZygpICYmIGZhdk1lZC5yZXBlYXRzPy50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWw/LnRvU3RyaW5nKCkgJiYgXHJcbiAgICAgIGZhdk1lZC5kb3NlPy50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZT8udG9TdHJpbmcoKSAmJiBmYXZNZWQuZnJlcXVlbmN5Py50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZT8udG9TdHJpbmcoKSAmJiBmYXZNZWQuZm9vZD8udG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5mb29kU2VhcmNoVmFsdWU/LnRvU3RyaW5nKCkgJiYgXHJcbiAgICAgIGZhdk1lZC5pbnN0cnVjdGlvbj8udG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlPy50b1N0cmluZygpICYmIGZhdk1lZC5yb3V0ZT8udG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlPy50b1N0cmluZygpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNQYnNUeXBlTWF0Y2goaXRlbVBic1R5cGU6IGFueSwgcGJzVHlwZUZpbHRlcjogYW55KTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKCFwYnNUeXBlRmlsdGVyPy50cmltKCkpIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IHBic1R5cGVGaWx0ZXJcclxuICAgICAgLnNwbGl0KC9bLDtdKy8pXHJcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4geC50cmltKCkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICBjb25zdCBpc1ByaXZhdGVGaWx0ZXIgPSBhbGxvd2VkVHlwZXMuaW5jbHVkZXMoJ3ByaXZhdGUnKTtcclxuXHJcbiAgICBpZiAoIWl0ZW1QYnNUeXBlPy50cmltKCkpIHtcclxuICAgICAgcmV0dXJuIGlzUHJpdmF0ZUZpbHRlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtVHlwZXMgPSBpdGVtUGJzVHlwZVxyXG4gICAgICAuc3BsaXQoL1ssO10rLylcclxuICAgICAgLm1hcCgoeDogYW55KSA9PiB4LnRyaW0oKS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICAgIHJldHVybiBpdGVtVHlwZXMuc29tZSgodHlwZTogYW55KSA9PiBhbGxvd2VkVHlwZXMuaW5jbHVkZXModHlwZSkpO1xyXG4gIH1cclxuXHJcbiAgYXNzaWduQ29tYmluYXRpb25zKG1lZDogYW55KSB7IFxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCA9IG1lZC5xdWFudGl0eTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCA9IG1lZC5yZXBlYXRzO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlcy5kb3NlU2VhcmNoVmFsdWUgPSBtZWQuZG9zZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlID0gbWVkLmZyZXF1ZW5jeTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZXMuZm9vZFNlYXJjaFZhbHVlID0gbWVkLmZvb2Q7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUgPSBtZWQuaW5zdHJ1Y3Rpb247XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWUgPSBtZWQucm91dGU7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0JvdHRvbSgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBlbCA9IHRoaXMuZmF2TWVkaWNpbmVDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgICAgZWwuc2Nyb2xsKHtcclxuICAgICAgICB0b3A6IGVsLnNjcm9sbEhlaWdodCxcclxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcclxuICAgICAgfSk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudEZhdkVuY3J5cHRlZElkKCkge1xyXG4gICAgbGV0IGZhdm91cml0ZXNMaXN0ID0gdGhpcy5jb21tb25TZXJ2aWNlcy5vcmlnaW5hbEZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgIHJldHVybiBmYXZvdXJpdGVzTGlzdC5maW5kKChmYXZNZWQ6IHsgcHJvZHVjdElkOiBhbnk7IHBic0NvZGU6IGFueTsgcHJvZHVjdE5hbWU6IGFueTsgcXVhbnRpdHk6YW55OyByZXBlYXRzOmFueTsgZG9zZTphbnk7IGZyZXF1ZW5jeTphbnk7IGZvb2Q6YW55OyBpbnN0cnVjdGlvbjphbnk7IHJvdXRlOmFueSwgcHJvZHVjdFBhY2tJZDphbnkgfSkgPT5cclxuICAgICAgZmF2TWVkLnByb2R1Y3RJZC50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdElkLnRvU3RyaW5nKCkgJiYgZmF2TWVkLnByb2R1Y3RQYWNrSWQudG9TdHJpbmcoKSA9PT0gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByb2R1Y3RQYWNrSWQudG9TdHJpbmcoKSAmJlxyXG4gICAgICAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShmYXZNZWQucGJzQ29kZSkgPyBmYXZNZWQucGJzQ29kZSA6IFwiXCIpID09PSAoIXRoaXMuY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24/LnBic0NvZGUpID8gdGhpcy5jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgOiBcIlwiKSAmJlxyXG4gICAgICBmYXZNZWQucHJvZHVjdE5hbWUgPT09IHRoaXMuY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSAmJiBmYXZNZWQucXVhbnRpdHk/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMucXVhbnRpdHlWYWw/LnRvU3RyaW5nKCkgJiYgZmF2TWVkLnJlcGVhdHM/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbD8udG9TdHJpbmcoKSAmJiBcclxuICAgICAgZmF2TWVkLmRvc2U/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlPy50b1N0cmluZygpICYmIGZhdk1lZC5mcmVxdWVuY3k/LnRvU3RyaW5nKCkgPT09IHRoaXMuY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlPy50b1N0cmluZygpICYmIGZhdk1lZC5mb29kPy50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZT8udG9TdHJpbmcoKSAmJiBcclxuICAgICAgZmF2TWVkLmluc3RydWN0aW9uPy50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWU/LnRvU3RyaW5nKCkgJiYgZmF2TWVkLnJvdXRlPy50b1N0cmluZygpID09PSB0aGlzLmNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWU/LnRvU3RyaW5nKClcclxuICAgICk/LmVuY3J5cHRlZElkIHx8IFwiXCI7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIiwiPG5nLXRlbXBsYXRlICNyeHdpZGdldHM+IDwvbmctdGVtcGxhdGU+XHJcbjxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbWltc1wiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiUmVhY3RNb2RhbF9fT3ZlcmxheSBSZWFjdE1vZGFsX19PdmVybGF5LS1hZnRlci1vcGVuIFJlYWN0X19PdmVybGF5X09wZW5fUG9wdXAgbmV3X3J4X21pbXNfT3ZlcmxheV9PcGVuX1BvcHVwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiUmVhY3RNb2RhbF9fQ29udGVudCBSZWFjdE1vZGFsX19Db250ZW50LS1hZnRlci1vcGVuIFJlYWN0X19Db250ZW50IG5ld19yeF9taW1zX1JlYWN0X19Db250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cCBuZXdfcnhfbWltc19SZWFjdE1vZGFsX3BvcHVwXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxhcHAtc3BsYXNoc2NyZWVuICpuZ0lmPVwiUG9wdXBTY3JlZW5Mb2FkZXJcIiBbaGVpZ2h0XT1cIidoZWlnaHQtcngtc3BpbidcIj4gPC9hcHAtc3BsYXNoc2NyZWVuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGVudFwiICpuZ0lmPVwiIVBvcHVwU2NyZWVuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTMtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8xXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbW1vblNlcnZpY2VzLnJ4aWQgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeGlkICE9Jyc/J21kbC1jZWxsLS0yLWNvbCc6J21kbC1jZWxsLS0zLWNvbCdcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1ob2xhLWhlYWx0aC1sb2dvLTEucG5nXCIgYWx0PVwiaG9sYV9oZWFsdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogYXV0bztoZWlnaHQ6IDM3cHg7Ym9yZGVyLXJhZGl1czogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaGVhZGVyLWxvZ28ucG5nXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB7e2NvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgPyAnRWRpdCBTY3JpcHQnIDogJ05ldyBTY3JpcHQnfX1cclxuICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfZGVza3RvcF90aXRsZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYWxpZ24tc2VsZjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9oZWFkZXJfYm94X3RleHRcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDYwMDtcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4vPHNwYW4gc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZG9iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJkZC1NTS15eXl5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCAgbWRsLWNlbGwtLTUtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X3BvcHVwX2hlYWRlcl9ib3hfY29sIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIHJ4X2lwYWRfaGVhZGVyX2JveF8yIG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29tbW9uU2VydmljZXMucnhpZCAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4aWQgIT0nJz8nbWRsLWNlbGwtLTYtY29sJzonbWRsLWNlbGwtLTUtY29sJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2J0bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZShudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBiYWNrQnV0dG9uIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBDbG9zZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7cG9zaXRpb246IHJlbGF0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbW9uU2VydmljZXMucnhpZCAhPSBudWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4aWQgIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWJ1dHRvbi0tY29sb3JlZCBuZXh0QnV0dG9uIHNlbGVjdC1hY3Rpb24tYnRuIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDE0MHB4O2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdzthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogY2VudGVyO3BhZGRpbmc6IDEwcHggIWltcG9ydGFudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFjdGlvbkRyb3Bkb3dub3BlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25idG5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X2xvYWRlcl9idXR0b24gbS12NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAyMHB4O2hlaWdodDogMjBweDttYXJnaW46IDBweCAhaW1wb3J0YW50O21hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0aW9uYnRuTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IEFjdGlvbiA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGRycC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNzZWxlY3RBY3Rpb25Ecm9wZG93biBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfYm94IHNlbGVjdC1hY3Rpb24tdWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEFjdGlvbkJ0bkRyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF91bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PSAnZHJhZnQnP2NhbmNlbERyYWZ0KCk6Y2FuY2VsUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyw0KT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWw8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwicHJpbnRQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLDEpPycnOidlZGl0LWRpc2FibGUtZGF0YSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInJlaXNzdWVQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2hlY2tTdGF0dXNBbmRTY3JpcHR0eXBlKHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUsdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLDMpPycnOidlZGl0LWRpc2FibGUtZGF0YSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlLUlzc3VlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cImNlYXNlUHJlc2NyaWJlTWVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cywyKT8nJzonZWRpdC1kaXNhYmxlLWRhdGEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZWFzZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJyZXNlbmRQcmVzY3JpYmVNZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29tbW9uU2VydmljZXMuZW5hYmxlU2VuZFBhcGVyU2NyaXB0SW5NYWlsICYmIGNoZWNrU3RhdHVzQW5kU2NyaXB0dHlwZSh0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLHRoaXMuY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyw1KSA/Jyc6J2VkaXQtZGlzYWJsZS1kYXRhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZW5kPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlICE9IDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgYmFja0J1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCIgW2Rpc2FibGVkXT1cInRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIHx8IHNlbGVjdGlvbmJ0bkxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlID09IDFcIiAoY2xpY2spPVwicGFnZU51bWJlck9uZVRvTmV4dCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkIG5leHRCdXR0b24gbmV3X21vYmlsZV9yeF9idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlciB8fCBzZWxlY3Rpb25idG5Mb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIE5leHRcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtYnV0dG9uLS1jb2xvcmVkIG5ld19tb2JpbGVfcnhfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJhYm9ydGRpc2FibGU/J25leHRCdXR0b24nOidhYm9ydGJ1dHRvbidcIiAqbmdJZj1cImFib3J0QnRuRmxhZ1wiIFtkaXNhYmxlZF09XCJhYm9ydGRpc2FibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXNjcmlwZUFib3J0KClcIj48c3BhbiAqbmdJZj1cImFib3J0ZGlzYWJsZVwiIGNsYXNzPVwicnhfbG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfbG9hZGVyX2J1dHRvbiBtLXY0IHJ4X2J0bl9zcGluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiAqbmdJZj1cIiFhYm9ydGRpc2FibGVcIj5BYm9ydDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrXCIgKm5nSWY9XCJwYWdlID09IDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWQgbmV4dEJ1dHRvbiBuZXdfbW9iaWxlX3J4X2J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO3dpZHRoOiAxMzVweDtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7YWxpZ24taXRlbXM6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5wcmVzY3JpYmVNZWRMb2FkZXIgfHwgc2VsZWN0aW9uYnRuTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImluY2x1ZGVSdHBtTW9kYWwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbW9uU2VydmljZXMucHJlc2NyaWJlTWVkTG9hZGVyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfbG9hZGVyX2J1dHRvbiBtLXY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDIwcHg7aGVpZ2h0OiAyMHB4O21hcmdpbjogMHB4ICFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDttYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0aGlzLmNvbW1vblNlcnZpY2VzLnByZXNjcmliZU1lZExvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZSA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGRycC1pY29uXCI+ZXhwYW5kX21vcmU8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNQcmVzY3JpYmVEcm9wZG93biBjbGFzcz1cIm5ld19yeF9QcmVzY3JpYmVfYnRuX2Ryb3Bkb3duX2xpc3RfYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RQQlRORHJvcGRvd24gPT0gdHJ1ZVwiIFtjbGFzc109XCJ7IE1fbGlzdF9ib3hfc2hvdzogc2VsZWN0UEJUTkRyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X1ByZXNjcmliZV9idG5fZHJvcGRvd25fbGlzdF91bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVuYWJsZUVTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDEpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTXByZXNjcmliZU1lZCgxKVwiPkUtUHJlc2NyaWJlIChEcmFmdCk8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDIpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgxKVwiICpuZ0lmPVwiIXRoaXMuY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3kgJiYgIXRoaXMuY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5ICYmIGNvbW1vblNlcnZpY2VzLmVuYWJsZVNlbmRFU2NyaXB0SW5NYWlsXCI+RS1QcmVzY3JpYmUgYW5kIFNlbmQ8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVuYWJsZUVTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGVQcmVzY3JpcHRpb25WYWxpZGF0aW9uKDIpfVwiIChjbGljayk9XCJFcHJlc2NyaXBlU2VuZCgyKVwiPkUtUHJlc2NyaWJlIGFuZCBQcmludDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW5hYmxlUGFwZXJTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKXx8IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnRScpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTXByZXNjcmliZU1lZCgyKVwiPlByZXNjcmliZSAoRHJhZnQpPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5lbmFibGVTZW5kUGFwZXJTY3JpcHRJbk1haWxcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnTScmJiB0aGlzLmNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSAhPSAnZHJhZnQnKXx8IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCk9PSAnRScpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUGFwZXJwcmVzY3JpcGVTZW5kKDEpXCI+IFByZXNjcmliZSBhbmQgU2VuZDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZW5hYmxlUGFwZXJTY3JpcHRcIiBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IChjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaXB0aW9uID09PSB0cnVlICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zY3JpcHRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gJ00nJiYgdGhpcy5jb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT0gJ2RyYWZ0JykgfHwgKGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpcHRpb24gPT09IHRydWUgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnNjcmlwdFR5cGUudG9VcHBlckNhc2UoKT09ICdFJyl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmVzY3JpcGVQcmludCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzY3JpYmUgYW5kIFByaW50PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCByeF9pcGFkX2hlYWRlcl9ib3hfMyBuZXdfcnhfbW9iaWxlX3RpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF90ZXh0IG5ld19tb2JpbGVfcnhfcG9wdXBfaGVhZGVyX3RleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj4vPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZG9iLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJkZC1NTS15eXl5XCJcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlID09IDFcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNNZWRpY2luZURyb3Bkb3duIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm1lZGljaW5lIHNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIE1lZGljaW5lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IG1lZGlTZWFyY2hWYWx1ZSB9fVwiIChpbnB1dCk9XCJzZWFyY2hIYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiTWVkaWNpbmVEcm9wZG93bkxpc3QoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIG1kLTI0IG5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2hcIj5zZWFyY2g8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9pbnB1dF9zZWFyY2hcIj48L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3RfYm94XCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgTV9saXN0X2JveF9zaG93OiBzZWxlY3RlZE1lZGljaW5lRHJvcGRvd24gPT09IHRydWVcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaE1lZGljaW5lTG9hZGVyXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWVkaWNpbmVMaXN0IG9mIHNlYXJjaGVkTWVkaWNpbmVMaXN0XCIgW2NsYXNzXT1cImdldGN1cnJlbnRpZChtZWRpY2luZUxpc3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJvZHVjdExpc3RCeU5hbWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWNpbmVMaXN0Wydwcm9kSGlkZGVuVmFsdWUnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3Byb2REaXNwbGF5VmFsdWUnXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpY2luZUxpc3RbJ3NlYXJjaEJhc2UnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIiBbaW5uZXJIVE1MXT1cIm1lZGljaW5lTGlzdFsncHJvZERpc3BsYXlWYWx1ZSddXCI+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJzZWFyY2hlZE1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFwiPk5vIERhdGE8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiUHJpbWFyeVNlYXJjaFNwaW5uZXJcIiBjbGFzcz1cImxvYWRlciBtbC1sb2FkLTQ1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoIG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWRSeENvbnRlbnQnOnRoaXMuaXNOb25QYnNGbGFnfHwoY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscyE9JycgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzLnN0YXR1cyE9bnVsbCAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzLnRvTG93ZXJDYXNlKCkhPSdkcmFmdCcpfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG5ld19tb2JpbGVfcnhfdG9wX2JvdHRvbV8wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwicnhPbmx5UEJTXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKDEpXCIgdmFsdWU9XCJQQlMvUlBCU1wiIFtkaXNhYmxlZF09XCJ0aGlzLmlzTm9uUGJzRmxhZ1wiIC8+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5QQlMvUlBCUzwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoZWNrYm94MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInJ4UHJpdmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgxKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2wgbWRsLWNlbGwtLTItY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZFJ4Q29udGVudCc6dGhpcy5pc05vblBic0ZsYWd8fChjb21tb25TZXJ2aWNlcy5yeERldGFpbHMhPW51bGwgJiYgY29tbW9uU2VydmljZXMucnhEZXRhaWxzIT0nJyAmJiBjb21tb25TZXJ2aWNlcy5yeERldGFpbHMuc3RhdHVzIT1udWxsICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMhPScnICYmIGNvbW1vblNlcnZpY2VzLnJ4RGV0YWlscy5zdGF0dXMudG9Mb3dlckNhc2UoKSE9J2RyYWZ0Jyl9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbmV3X21vYmlsZV9yeF90b3BfYm90dG9tXzBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyeFByaXZhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIHZhbHVlPVwiUHJpdmF0ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5Qcml2YXRlPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS01LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS02LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aCBuZXdfbW9iaWxlX3J4X3RvcF9ib3R0b21fMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcGFzc2V0cy5ob2xhLmhlYWx0aC9yeC13aWRnZXRzL3J4LW1pbXMucG5nXCIgYWx0PVwiTUlNUyBsb2dvXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogYXV0b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4cHg7XCIgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmF2b3VyaXRlcy10b2dnbGUtbGlua1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNob3dGYXZvdXJ0aWVzKClcIj5cclxuICAgICAgICAgICAgICAgICAge3sgc2hvd0Zhdm91cml0ZU1lZCA/ICdIaWRlIGZhdm91cml0ZXMnIDogJ1Nob3cgZmF2b3VyaXRlcycgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjZmF2TWVkaWNpbmVDb250YWluZXIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFibGVfYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX3RpdGxlXCIgc3R5bGU9XCJwYWRkaW5nOiA1cHggMTBweDsgbWFyZ2luOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEF2YWlsYWJsZSBGb3JtdWxhdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd0Zhdm91cml0ZU1lZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9uY2xpY2tNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyIG0tdjRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb25jbGlja01lZGljaW5lTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdCA9PSBudWxsIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRNZWRpY2luZUxpc3QubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICAgICAgXCIgY2xhc3M9XCJub0RhdGFQcmVzY3JpYmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5ObyBEYXRhPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfY29udGFpbmVyXCIgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lZCBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZE1lZGljaW5lTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiIFtjbGFzc109XCJnZXRDbGFzc0Zvck1lZChtZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGb3JtdWxhdGlvbihtZWQsIGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfaGVhZGVyXCIgW2lubmVySFRNTF09XCJtZWQucHJvZHVjdE5hbWVcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF90ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGI+UXVhbnRpdHk6PC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ttZWQucGJzVHlwZSE9dW5kZWZpbmVkICYmIG1lZC5wYnNUeXBlIT1udWxsICYmIG1lZC5wYnNUeXBlLnRvTG93ZXJDYXNlKCkgPT0gXCJub24gcGJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVkLm51bWJlck9mUGFjayArIFwieFwiICsgbWVkLnVuaXRQZXJQYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lZC5tYXhRdHlVbml0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+PHNwYW4+PGI+UnB0czo8L2I+IHt7IG1lZC5yZXBlYXRzIH19PC9zcGFuPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIj48Yj5SZXN0cmljdGlvbjo8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e21lZC5SZXN0cmljdGlvbnMhPXVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmIG1lZC5SZXN0cmljdGlvbnMgIT0gXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZWQucGJzVHlwZSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAoXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVzdHJpY3Rpb25zKG1lZC5SZXN0cmljdGlvbnMpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAobWVkLnBic1R5cGUhPXVuZGVmaW5lZCYmbWVkLnBic1R5cGUhPW51bGw/bWVkLnBic1R5cGU6XCJcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IDwvc3Bhbj48c3Bhbj48Yj5HZW5lcmljIE5hbWU6IDwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibWVkLmdlbmVyaWNOYW1lXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiU2Vjb25kYXJ5U2VhcmNoU3Bpbm5lclwiIGNsYXNzPVwibG9hZGVyIG1sLWxvYWQtNDVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RmF2b3VyaXRlTWVkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9uY2xpY2tNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyIG0tdjRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb25jbGlja01lZGljaW5lTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5mYXZvdXJpdGVNZWRpY2luZUxpc3QgPT0gbnVsbCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdC5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIiBjbGFzcz1cIm5vRGF0YVByZXNjcmliZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk5vIEZhdm91cml0ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmV3X3J4X3BvcHVwX2JveF9jb250YWluZXJcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVkIG9mIGNvbW1vblNlcnZpY2VzLmZhdm91cml0ZU1lZGljaW5lTGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCBhcyBpXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbmV3X3J4X3BvcHVwX2JveFwiIFtjbGFzc109XCJnZXRDbGFzc0ZvckZhdm91cml0ZU1lZChtZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmYXZvdXJpdGVNZWRpY2luZUxvYWRpbmcobWVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfYm94X2hlYWRlclwiIFtpbm5lckhUTUxdPVwibWVkLnByb2R1Y3ROYW1lXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9ib3hfdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiPlF1YW50aXR5OjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLnF1YW50aXR5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4+PGI+UnB0czo8L2I+IHt7IG1lZC5yZXBlYXRzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiPjxiPlJlc3RyaWN0aW9uOjwvYj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bWVkLnJlc3RyaWN0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4+PGI+R2VuZXJpYyBOYW1lOiA8L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm1lZC5nZW5lcmljTmFtZVwiPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlNlY29uZGFyeVNlYXJjaFNwaW5uZXJcIiBjbGFzcz1cImxvYWRlciBtbC1sb2FkLTQ1XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmYXZNZWRpY2luZUxvYWRlclwiIGNsYXNzPVwibG9hZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZhdk1lZGljaW5lTG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNS1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX3RpdGxlXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbCYmY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcm9kdWN0TmFtZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWUhPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJvZHVjdE5hbWU6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpYyBOYW1lOjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwmJmNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uZ2VuZXJpY05hbWUhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLmdlbmVyaWNOYW1lIDogJydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBOYW1lOjxzcGFuIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRCcmFuZE5hbWUoY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbilcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgU2NoZWR1bGU6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uICE9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucG9pc29uQ2xhc3NpZmljYXRpb24hPW51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMhPXVuZGVmaW5lZCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXMhPW51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wb2lzb25DbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wb2lzb25DbGFzc2VzLmxlbmd0aD4wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBvaXNvbkNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnBvaXNvbkNsYXNzZXNbMF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTm8gU2NoZWR1bGVkIEluZm9ybWF0aW9uIEF2YWlsYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQQlMgTGlzdGluZzo8c3Bhbj57e2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzVHlwZSE9dW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUhPXVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucGJzQ29kZSE9bnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCIgKFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic0NvZGUgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbjowcHggO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1heCBRdWFudGl0eSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRNYXhRdWFudGl0eSgpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgUmVwZWF0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XCJcIn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wcmVnbmFuY3lDYXRlZ29yeSE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnkgIT0gbnVsbCAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGVnb3J5Q29kZSE9dW5kZWZpbmVkICYmIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0ZWdvcnlDb2RlIT1udWxsXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVnbmFuY3kgQ2F0ZWdvcnk6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGVnb3J5Q29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnByZWduYW5jeUNhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRpdGlvbmFsTm90ZSAhPXVuZGVmaW5lZCAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucHJlZ25hbmN5Q2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZGl0aW9uYWxOb3RlICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbE5vdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZ25hbmN5Q2F0ZWdvcnkuYWRkaXRpb25hbE5vdGVcclxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtpbm5lckhUTUxdPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dSZXN0cmljdGlvbnMgPT0gdHJ1ZSAmJiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyE9dW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9ucyAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVzdHJpY3Rpb25zOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxvbCBzdHlsZT1cIm1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDE1cHhcIiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zIT11bmRlZmluZWQgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuZXdfcnhfcG9wX2F1dF9pbnRcIiAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN0cmljdGlvbiBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5SZXN0cmljdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCIgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9IG51bGwgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dCAhPSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3Jlc3RyaWN0aW9uVGV4dFwiICpuZ0lmPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0Lmxlbmd0aCA8IDYwXCI+PGI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgfX08L2I+IC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaHRtbFRvRm9ybWF0dGVkVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoID4gNjBcIj48Yj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sVG9Gb3JtYXR0ZWRUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic3RyaW5nKDAsIDYwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj4uLi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjZmY5OTc4XCIgaWQ9XCJzaG93LXRvb2x0aXAtaWRcIj5TaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3JlPC9hPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBkZW1vPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJ4X3Rvb2x0aXBfaW5uZXJfYm94XCIgW2lubmVySFRNTF09XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHRcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfM19zbWFsbF9ib3hcIiBbc3R5bGUuZGlzcGxheV09XCJpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpID8gJ2lubGluZS1mbGV4JyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKCkgPyAnbWF4LWNvbnRlbnQnIDogbnVsbFwiICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6IDEwcHg7XCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfaGVhZGVyX2JveF9jb2xcIiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24gIT0gbnVsbFwiIChjbGljayk9XCJhZGRUb0Zhdm91cml0ZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1idXR0b24tLWNvbG9yZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5leHRCdXR0b25dPVwiIWlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnJtZmF2YnV0dG9uXT1cImlzQ3VycmVudE1lZGljaW5lSW5GYXZvdXJpdGVzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0N1cnJlbnRNZWRpY2luZUluRmF2b3VyaXRlcygpOyBlbHNlIGFkZFRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUgZnJvbSBmYXZvdXJpdGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhZGRUZXh0PisgQWRkIHRvIGZhdm91cml0ZXM8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazsgbWFyZ2luLXJpZ2h0OiAxMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlF1YW50aXR5OiA8L3NwYW4+PGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiIG5hbWU9XCJxdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHN0ZXA9XCIxXCIgW21pbl09XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbFwiIChrZXlwcmVzcyk9XCJjaGVja01vYmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInF1YW50aXR5Q2hhbmdlKClcIiAocGFzdGUpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UmVwZWF0czogPC9zcGFuPjxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3R9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInJwdHNcIiBwbGFjZWhvbGRlcj1cIlwiIFttaW5dPVwiMFwiIChpbnB1dCk9XCJyZXBlYXRzQ2hhbmdlKClcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWxcIiAocGFzdGUpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiY2hlY2tNb2JpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiB8fCBjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgZGlzYWJsZWRSeENvbnRlbnQ6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmd9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICBEb3NlOlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj48aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNoZWNrYm94MVwiIGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dCByeF9uZXdfZ3JvdXBfY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy51blVzdWFsRG9zZUZsYWdcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7Zm9udC1zaXplOiAxNnB4O21hcmdpbi10b3A6IC03cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlVudXN1YWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvc2U8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIiBpZD1cInNlbGVjdGVkZG9zZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlXCIgKGNsaWNrKT1cImRvc2VEcm9wZG93bigpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjRG9zZURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3REb3NlRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0RG9zZVZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRvc2Ugb2YgZG9zZURhdGFcIiAoY2xpY2spPVwic2VsZWN0RG9zZVZhbHVlKGRvc2UpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OiBkb3NlWyd0ZXh0J10gPT0gY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZG9zZVtcInRleHRcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkZyZXF1ZW5jeTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRGcmVxdWVuY3k6XCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBGcmVxdWVuY3lcIiByZWFkT25seSBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmZyZXFTZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZyZXFEcm9wZG93bigpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjRnJlcURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RGcmVxRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdEZyZXF1ZW5jeVZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZyZXF1ZW5jeSBvZiBmcmVxdWVuY3lEYXRhXCIgKGNsaWNrKT1cInNlbGVjdEZyZXF1ZW5jeVZhbHVlKGZyZXF1ZW5jeSlcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3lbJ3RleHQnXSA9PSBjb21tb25TZXJ2aWNlcy5mcmVxU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmcmVxdWVuY3lbXCJ0ZXh0XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Gb29kOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZEZyZXF1ZW5jeTpcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZvb2RcIiByZWFkT25seSBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvb2REcm9wZG93bigpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjRm9vZERyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RGb29kRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdEZvb2RWYWx1ZShudWxsKVwiIGNsYXNzPVwicC0xMlwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmb29kIG9mIGZvb2REYXRhXCIgKGNsaWNrKT1cInNlbGVjdEZvb2RWYWx1ZShmb29kKVwiIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2hsaWdodDogZm9vZFsndGV4dCddID09IGNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvb2RbXCJ0ZXh0XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5JbnN0cnVjdGlvbjo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwiSW5zdHJ1Y3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEluc3RydWN0aW9uXCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5zdHJ1Y3Rpb25Ecm9wZG93bigpXCIgKGNoYW5nZSk9XCJpbnN0cnVjdGlvbk9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJhbHBoYVJlc3RyaWN0aW9uKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNJbnN0cnVjdGlvbkRyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntNX2xpc3RfYm94X3Nob3c6IHNlbGVjdEluc3RydWN0aW9uRHJvcGRvd24gPT09IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEluc3RydWN0aW9uRHJvcGRvd25MaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwiQ2hhbmdlSW5zdHJ1Y3Rpb24obnVsbClcIiBjbGFzcz1cInAtMTJcIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uaWQgPT0gY29tbW9uU2VydmljZXMuY29tcGxleElkICYmIGl0ZW0udGV4dCA9PSBjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvblNlYXJjaFZhbHVlID8gJ2hlaWdobGlnaHQnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGluc3RydWN0aW9uRGF0YTsgaW5kZXggYXMgaVwiIChjbGljayk9XCJDaGFuZ2VJbnN0cnVjdGlvbihpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS51c2VyaWQgIT09IDBcIiBjbGFzcz1cInNwYW5faWNvblwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgc3R5bGU9XCJwYWRkaW5nOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEluc3RydWN0aW9uKGl0ZW0uaWQsIGl0ZW0pXCI+Y3JlYXRlPC9pPjxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4OyBwYWRkaW5nOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlSW5zdHJ1Y3Rpb24oaXRlbS5pZClcIj5jbGVhcjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIlJYX0FERF9kcm9wZG93bl9idG5cIiAoY2xpY2spPVwiYWRkTmV3SW5zdHJ1Y3Rpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgQWRkIENvbXBsZXggSW5zdHJ1Y3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RJbnN0cnVjdGlvbkRyb3Bkb3duTGlzdCA9PSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGxleF9pbnN0cnVjdGlvbl9ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4OyBtYXJnaW46IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXggSW5zdHJ1Y3Rpb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnN0cnVjdGlvbl9maWVsZF9jbHIgbWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dCBcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIkluc3RydWN0aW9uXCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5JbnN0cnVjdGlvbnRpbHRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIENvbXBsZXggSW5zdHJ1Y3Rpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IG1hcmdpbjogMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxleCBJbnN0cnVjdGlvbiBEZXNjcmlwdGlvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIyXCIgbWF4TGVuZ3RoPVwiNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGVtcEluc3RydWN0aW9uRGVzY3JpcHRpb25cIiBwbGFjZWhvbGRlcj1cIkVudGVyIENvbXBsZXggSW5zdHJ1Y3Rpb24gRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnN0cnVjdGlvbl9maWVsZF9jbHIgdy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlJYX0FERF9kcm9wZG93bl9idG5fMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXJJbnN0cnVjdGlvbigpXCIgY2xhc3M9XCJyeC1pbnN0cnVjdGlvbi1idG5cIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNhdmVJbnN0cnVjdGlvbigpXCIgY2xhc3M9XCJyeC1pbnN0cnVjdGlvbi1idG5cIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJvdXRlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgbmV3X3J4X3BvcHVwX3RhYl9pbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZFJvdXRlOlwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUm91dGVcIiBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWVcIiBtYXhsZW5ndGg9XCI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJvdXRlRHJvcGRvd24oKVwiIChrZXlwcmVzcyk9XCJhbHBoYVJlc3RyaWN0aW9uKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNSb3V0ZURyb3Bkb3duIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl9kcm9wZG93bl9saXN0X2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RSb3V0ZURyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMTBweDsgcG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcm91dGVfX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIFt2YWx1ZV09XCJyb3V0ZURhdGFGaWx0ZXIgPyByb3V0ZURhdGFGaWx0ZXIgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJyb3V0ZUZpbHRlcigkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgbWQtMjQgbmV3X3J4X3BvcHVwX3RhYl8xX2lucHV0X3NlYXJjaCByeC1zZWFyY2gtaWNvblwiPnNlYXJjaDwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgKm5nSWY9XCJmaWx0ZXJSb3V0ZUl0ZW1zKHJvdXRlRGF0YSwgcm91dGVEYXRhRmlsdGVyKS5sZW5ndGggIT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMV9saXN0IHJ4X2Ryb3Bkb3duIHJ4X2Ryb3Bkb3duX3JvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvdXRlIG9mIGZpbHRlclJvdXRlSXRlbXMocm91dGVEYXRhLCByb3V0ZURhdGFGaWx0ZXIpXHJcbiAgICAgICAgICAgICAgICAgIFwiIChjbGljayk9XCJzZWxlY3RSb3V0ZXNlYXJjVmFsdWUocm91dGUpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaGxpZ2h0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm91dGVbJ3JvdXRlTmFtZSddID09IGNvbW1vblNlcnZpY2VzLnJvdXRlU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByb3V0ZVtcInJvdXRlTmFtZVwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cImZpbHRlclJvdXRlSXRlbXMocm91dGVEYXRhLCByb3V0ZURhdGFGaWx0ZXIpLmxlbmd0aCA9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd24gcnhfZHJvcGRvd25fcm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaT5ubyBkYXRhPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+UHJvIFJlIE5hdGEgUHJlc2NyaXB0aW9uOjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMucnhQUk5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJQUk5DaGFuZ2UoY29tbW9uU2VydmljZXMucnhQUk4pXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlByb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZSBOYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmlwdGlvbjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlByZXNjcmliZSBBczo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3JhZGlvYm94X2J1dHRvbiByeF9yYWRpb19vdmVyYWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyeF9yYWRpb19sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInJhZGlvXCIgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvbiBjdXN0b20tcmFkaW8tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiUHJlc2NyaWJlQXNcIiBbdmFsdWVdPVwiJ1ByaXZhdGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMudG9Mb3dlckNhc2UoKSA9PT0gJ3ByaXZhdGUnXCIgKGNsaWNrKT1cInByaXZhdGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBU1wiIC8+PHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsIHJhZGlvX3R4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UHJpdmF0ZTwvc3Bhbj48L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJ4X3JhZGlvX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwicmFkaW9cIiBjaGVja2VkPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uIGQtaW5saW5lIHJhZGlvIGN1c3RvbS1yYWRpby1idXR0b25cIiBuYW1lPVwiUHJlc2NyaWJlQXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCInUEJTJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXNjcmliZUFTX1BCUyB8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSAncGJzJ1wiIChjbGljayk9XCJQQlMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBU1wiIC8+PHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsIHJhZGlvX3R4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgJ2Rpc2FibGVkLXN0eWxlJzogcHJlc2NyaWJlQVNfUEJTID09IHRydWV8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlBCUzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyeF9yYWRpb19sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInJhZGlvXCIgY2hlY2tlZD1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvbiBkLWlubGluZSByYWRpbyBjdXN0b20tcmFkaW8tYnV0dG9uXCIgbmFtZT1cIlByZXNjcmliZUFzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJ1JQQlMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJlc2NyaWJlQVNfUlBCUyB8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09PSAncnBicydcIiAoY2xpY2spPVwiUlBCUygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTXCIgLz48c3BhbiBjbGFzcz1cIm1kbC1yYWRpb19fbGFiZWwgcmFkaW9fdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyAnZGlzYWJsZWQtc3R5bGUnOiBwcmVzY3JpYmVBU19SUEJTID09IHRydWV8fCBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPlJQQlM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveFwiICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uICE9IG51bGwgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT11bmRlZmluZWQgJiYgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5wYnNUeXBlIT1udWxsICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnBic1R5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ25vbiBwYnMnICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5kdmFOdW1iZXIgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZHZhTnVtYmVyICE9ICcnICYmIGlzTm9uUGJzRmxhZyA9PSBmYWxzZSAmJiAhaXNQcmVzY3JpYmVBc1ByaXZhdGVPbmx5XHJcbiAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3hcIiBjbGFzcz1cImNoZWNrX2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcIiAoY2xpY2spPVwidW5saXN0ZWRSQSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbCBjaGVja19ib3hfbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgVW5saXN0ZWQgUkFcclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgTV9DVEdfYm94X2hpZGU6ICEoXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscyAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudEN0Z0ZsYWcgPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMucGF0aWVudEN0Z0NvUGF5bWVudCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUy50b0xvd2VyQ2FzZSgpID09ICdwYnMnXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5DVEcvUEJTIENvIFBheW1lbnQ6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnQgPT0gdHJ1ZVwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5DVEcvUEJTXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENvIFBheW1lbnQ8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgZGlzYWJsZWRSeENvbnRlbnQ6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmd9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+U2NyaXB0IERhdGU6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cIlJ4U2NyaXB0RGF0ZVwiIHBsYWNlaG9sZGVyPVwiIC4uLy4uLy4uLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnNjcmlwdERhdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+U3RhcnQgRGF0ZTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIiBpZD1cIlJ4U3RhcnREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiAuLi8uLi8uLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5zdGFydERhdGVcIiAobmdNb2RlbENoYW5nZSk9XCJjb21tb25TZXJ2aWNlcy5yeEVuZERhdGVDYWxjdWxhdGVyKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+RW5kIERhdGU6PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCIgaWQ9XCJSeEVuZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiLi4vLi4vLi4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZW5kRGF0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5EYXlzIEJldHdlZW4gUmVwZWF0czo8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiAocGFzdGUpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBwbGFjZWhvbGRlcj1cIkVudGVyIERheXMgQmV0d2VlbiBSZXBlYXRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfHxjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3R9XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgaWQ9XCJEYXliZXR3ZWVucmVwZWF0c1wiIFttaW5dPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb258fGNvbW1vblNlcnZpY2VzLmlzTWVkaWNpbmVSZXN0cmljdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbFwiIChrZXlwcmVzcyk9XCJjaGVja01vYmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZGF5c2NoYW5nZSgpXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5QdXJwb3NlOjwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dCBuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgaWQ9XCJzZWxlY3RlZFB1cnBvc2U6XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFB1cnBvc2VcIiByZWFkT25seSBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnB1cnBvc2VTZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHVycG9zZURyb3Bkb3duKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI1B1cnBvc2VEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3ggbmV3X3J4X3BvcHVwX3RhYl9wdXJwb3NlX2JveCBoLTE2MHBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9saXN0X2JveF9zaG93OiBzZWxlY3RQdXJwb3NlRHJvcGRvd24gPT09IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibmV3X3J4X3BvcHVwX3RhYl8xX2xpc3QgcnhfZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJzZWxlY3RQdXJwb3NlVmFsdWUobnVsbClcIiBjbGFzcz1cInAtMTJcIj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHB1cnBvc2Ugb2YgcHVycG9zZURhdGFcIiAoY2xpY2spPVwic2VsZWN0UHVycG9zZVZhbHVlKHB1cnBvc2UpXCIgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdobGlnaHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1cnBvc2VbJ2xvb2t1cFRleHQnXSA9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHVycG9zZVtcImxvb2t1cFRleHRcIl0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsgTV9DVEdfYm94X2hpZGU6IGNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lICE9IHRydWUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+U3Vic3RpdHV0aW9uOjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lID09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0aGlzLmJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvdyhjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3cpXCIgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuQnJhbmRTdWJzdGl0dXRlc05vdEFsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICBcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+QnJhbmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgU3Vic3RpdHV0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBQZXJtaXR0ZWQ8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX0NUR19ib3hfaGlkZV9icmFuZDogY29tbW9uU2VydmljZXMubGVtaSA9PSB0cnVlIH1cIiBpZD1cImJyYW5kbmFtZXRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJoaWRlVG9vbFRpcCgpXCIgKG1vdXNlZW50ZXIpPVwic2hvd3Rvb2x0aXAoY29tbW9uU2VydmljZXMubGVtaSxicmFuZHRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5CcmFuZCBOYW1lOjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnJhbmR0b29sdGlwPjxzcGFuIGNsYXNzPVwiaW5jbHVkZV9icmFuZF90b29sdGlwXCI+VGhlIHNlbGVjdGVkIHByb2R1Y3QgaXMgTEVNSVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllZC4gVGhlcmVmb3JlIGl0IG1heSBiZVxyXG4gICAgICAgICAgICAgICAgICAgICAgcHJlc2NyaWJlZCBieSB0aGUgYnJhbmQgbmFtZSBvbmx5Ljwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfbmV3X3BvcHVwX2NoZWNrYm94IG0tdC0zNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1kbC1jaGVja2JveCBtZGwtanMtY2hlY2tib3ggbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBNX0NUR19ib3hfaGlkZV9icmFuZF9uYW1lOiBjb21tb25TZXJ2aWNlcy5sZW1pID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgW2NoZWNrZWRdPVwiY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0aGlzLmlzQ2hhbmdlQnJhbmROYW1lKGNvbW1vblNlcnZpY2VzLmlzQnJhbmROYW1lKVwiIC8+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIj5JbmNsdWRlIEJyYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJlZ3VsYXRpb24gMjQ6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb21tb25TZXJ2aWNlcy5yZWd1bGF0aW9uMjRcIiAvPjxzcGFuIGNsYXNzPVwibWRsLWNoZWNrYm94X19sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1zaXplOiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZGlzYWJsZWQtc3R5bGUnOiBjb21tb25TZXJ2aWNlcy5pc0ZldGNoaW5nID09IHRydWUgfHwgY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCI+UmVndWxhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAyNDwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBkaXNhYmxlZFJ4Q29udGVudDogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZ31cIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2wgbWRsLWNlbGwtLTQtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkRPIE5PVCBzZW5kIHRvIE15U0w6PC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ4X25ld19wb3B1cF9jaGVja2JveCBtLXQtMzZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVja2JveDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXQgcnhfbmV3X2dyb3VwX2NoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudFwiIC8+PHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogNDAwOyBmb250LXNpemU6IDE2cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5ET1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBOT1Qgc2VuZCB0byBNeVNMPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFBoYXJtYWN5OiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+PGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWVcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5XCIgKGNoYW5nZSk9XCJzZW5kVG9QaGFybWFjeUNoYW5nZSgpXCIgLz48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwO2ZvbnQtc2l6ZTogMTZweDttYXJnaW4tdG9wOiAtN3B4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydkaXNhYmxlZC1zdHlsZSc6IGNvbW1vblNlcnZpY2VzLmlzRmV0Y2hpbmcgPT0gdHJ1ZSB8fCBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIj5TZW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBQaGFybWFjeTwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IG5ld19yeF9wb3B1cF90YWJfaW5wdXRcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiIGlkPVwic2VsZWN0ZWRkb3NlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuc2VuZFRvUGhhcm1hY3lWYWx1ZVwiIChjbGljayk9XCJzdHBWYWx1ZURyb3Bkb3duKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7IE1fQ1RHX2JveF9oaWRlOiBjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeSAhPSB0cnVlIH1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNzdHBEcm9wZG93biBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfZHJvcGRvd25fbGlzdF9ib3ggbmV3X3J4X3BvcHVwX3RhYl9zdHBfYm94IGgtOTNwXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieyBNX2xpc3RfYm94X3Nob3c6IHNlbGVjdHN0cERyb3Bkb3duID09PSB0cnVlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiXzFfbGlzdCByeF9kcm9wZG93blwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNlbGVjdFN0cFZhbHVlKG51bGwpXCIgY2xhc3M9XCJwLTEyXCI+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc2VuZHRvcGhhcm1hY3kgb2Ygc2VuZHRvcGhhcm1hY3lEYXRhXCIgKGNsaWNrKT1cInNlbGVjdFN0cFZhbHVlKHNlbmR0b3BoYXJtYWN5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzZW5kdG9waGFybWFjeS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5FbWVyZ2VuY3kgU3VwcGx5OjwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9uZXdfcG9wdXBfY2hlY2tib3ggbS10LTM2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hlY2tib3gyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGwtY2hlY2tib3hfX2lucHV0IHJ4X25ld19ncm91cF9jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5XCIgLz48c3BhbiBjbGFzcz1cIm1kbC1jaGVja2JveF9fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTZweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2Rpc2FibGVkLXN0eWxlJzogY29tbW9uU2VydmljZXMuaXNGZXRjaGluZyA9PSB0cnVlIHx8IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiPkVtZXJnZW5jeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTdXBwbHk8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlID09IDJcIiBjbGFzcz1cIm5ld19yeF9wb3B1cF90YWJfMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweDsgb3BhY2l0eTogMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZSBuZXdfcnhfbW9iaWxlX2Z1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiIGNsYXNzPVwibWRsLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkIG5ld19yeF9wb3B1cF90YWJfMV9ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5SWDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YiBbaW5uZXJIVE1MXT1cImNvbW1vblNlcnZpY2VzLnJ4RGlzcGxheU5hbWVcIj48L2I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIiBzdHlsZT1cIm1hcmdpbjogMHB4XCI+UXVhbnRpdHk6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IHJnYig0NSwgNDUsIDQ1KTsgZm9udC13ZWlnaHQ6IDYwMFwiPnt7IGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IFJlcGVhdHM6IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig0NSwgNDUsIDQ1KTsgZm9udC13ZWlnaHQ6IDYwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsIH19PC9zcGFuPiBEZWZhdWx0IFF1YW50aXR5Ont7Z2V0RGVmYXVsdFF1YW50aXR5KCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBSZXBlYXRzOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsJiZjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMhPW51bGw/Y29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOlwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY29tbW9uU2VydmljZXMuZG9zZVNlYXJjaFZhbHVlICE9ICcnIHx8Y29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlICE9ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbW1vblNlcnZpY2VzLmRvc2VTZWFyY2hWYWx1ZSB9fSA8L3NwYW4+PHNwYW4+e3sgY29tbW9uU2VydmljZXMuZnJlcVNlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSAhPSAnJ1wiIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLmZvb2RTZWFyY2hWYWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e0luc3RydWN0aW9uRGVzY3JpcHRpb24gIT1cIlwiICYmIEluc3RydWN0aW9uRGVzY3JpcHRpb24hPW51bGw/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbkRlc2NyaXB0aW9uOmNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUhPVwiXCIgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLkluc3RydWN0aW9uU2VhcmNoVmFsdWUhPW51bGw/Y29tbW9uU2VydmljZXMuSW5zdHJ1Y3Rpb25TZWFyY2hWYWx1ZTpcIlwifX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5yb3V0ZVNlYXJjaFZhbHVlICE9ICcnXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29tbW9uU2VydmljZXMucm91dGVTZWFyY2hWYWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQLlIuTiA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnJ4UFJOXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5yeFBSTlwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5EYXlzIEJldHdlZW4gUmVwZWF0czpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuZGF5c0J0blJlcGVhdHNWYWwpXCI+e3tjb21tb25TZXJ2aWNlcy5kYXlzQnRuUmVwZWF0c1ZhbH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLmRheXNCdG5SZXBlYXRzVmFsKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVudXN1YWwgRG9zZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29tbW9uU2VydmljZXMudW5Vc3VhbERvc2VGbGFnXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy51blVzdWFsRG9zZUZsYWdcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9wXCI+U2NyaXB0IERhdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3RoaXMuY29tbW9uU2VydmljZXMuc2NyaXB0RGF0ZXxkYXRlOidkZC1NTS15eXl5J319PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlN0YXJ0IERhdGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3RoaXMuY29tbW9uU2VydmljZXMuc3RhcnREYXRlfGRhdGU6J2RkLU1NLXl5eXknfX08L3NwYW4+LCBFbmQgRGF0ZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dGhpcy5jb21tb25TZXJ2aWNlcy5lbmREYXRlfGRhdGU6J2RkLU1NLXl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlByZXNjcmliZSBBczpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLklzTnVsbE9yRW1wdHkoY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMpXCI+e3tjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBU319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5Jc051bGxPckVtcHR5KGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5QdXJwb3NlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUpXCI+e3tjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5wdXJwb3NlU2VhcmNoVmFsdWUpXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSBCcmFuZCBOYW1lOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5pc0JyYW5kTmFtZVwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuaXNCcmFuZE5hbWVcIj4tPC9zcGFuPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5kIFN1YnN0aXR1dGlvbiBOb3QgUGVybWl0dGVkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5CcmFuZFN1YnN0aXR1dGVzTm90QWxsb3dcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLkJyYW5kU3Vic3RpdHV0ZXNOb3RBbGxvd1wiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ3VsYXRpb24gMjQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnJlZ3VsYXRpb24yNFwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMucmVndWxhdGlvbjI0XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1RHL1BCUyBDbyBQYXltZW50OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb21tb25TZXJ2aWNlcy5DVEdDb1BheW1lbnRcIiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGljb24tZG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ICMwMDc3YjZcIj5jaGVjazwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbW1vblNlcnZpY2VzLkNUR0NvUGF5bWVudFwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPIE5PVCBzZW5kIHRvIE15U0w6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLm15U0xDb25zZW50XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5teVNMQ29uc2VudFwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQgdG8gUGhhcm1hY3k6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLnNlbmRUb1BoYXJtYWN5XCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBpY29uLWRvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjMDA3N2I2XCI+Y2hlY2s8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVwiPi08L3NwYW4+LCBTZW5kIHRvIFBoYXJtYWN5IFZhbHVlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3shY29tbW9uU2VydmljZXMuSXNOdWxsT3JFbXB0eShjb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlKT9jb21tb25TZXJ2aWNlcy5zZW5kVG9QaGFybWFjeVZhbHVlOictJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtZXJnZW5jeSBTdXBwbHk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvbW1vblNlcnZpY2VzLmVtZXJnZW5jeVN1cHBseVwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgaWNvbi1kb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogIzAwNzdiNlwiPmNoZWNrPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29tbW9uU2VydmljZXMuZW1lcmdlbmN5U3VwcGx5XCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5Ob3RlIFRvIFBoYXJtYWN5OjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiM1wiIG1heGxlbmd0aD1cIjUwXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwieydlZGl0LWRpc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGhpcy5jb21tb25TZXJ2aWNlcy5kb2N0b3JOb3Rlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYSByeC1tLXctNTM1cFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPkFubm90YXRpb246PC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBhdXRvY29tcGxldGU9XCJvZmZcIiBuYW1lPVwiXCIgaWQ9XCJcIiByb3dzPVwiM1wiIG1heGxlbmd0aD1cIjUwMFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRoaXMuY29tbW9uU2VydmljZXMuYW5ub3RhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYSByeC1tLXctNTM1cFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlJlYXNvbiBGb3IgUHJlc2NyaXB0aW9uOjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgYXV0b2NvbXBsZXRlPVwib2ZmXCIgbmFtZT1cIlwiIGlkPVwiXCIgcm93cz1cIjNcIiBtYXhsZW5ndGg9XCI1MFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRoaXMuY29tbW9uU2VydmljZXMucHJlc2NyaXB0aW9uUmVhc29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhIHJ4LW0tdy01MzVwXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RoaXMuZ2V0U3RhdGVBdXRob3JpdHlMYWJlbChjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luOiAwcHg7bWFyZ2luLXRvcDogLThweDttYXJnaW4tYm90dG9tOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXRlLXR4dC1jb2xvciBuZXdfcnhfcG9wdXBfbGFiZWxfcFwiPihSZWxldmFudCB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLnN0YXRlIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBuYW1lPVwiYXBwcm92YWxcIiBwbGFjZWhvbGRlcj1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5TdGF0ZUF1dGhvcml0eU51bWJlclwiIG1heGxlbmd0aD1cIjI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImF1dGhvcml0eU5vVmFsaWRhdGlvbigkZXZlbnQpXCIgKG5nTW9kZWxDaGFuZ2UpPVwiYXV0aG9yaXR5Tm9DaGFuZ2UoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lIG5ld19yeF9tb2JpbGVfZnVsbHdpZHRoXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ25ld19yeF9ub19hdXRob3JpdHknOiFzaG93QXV0aG9yaXR5Qm94KFxyXG4gICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24hPW51bGw/IGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zOicnLGNvbW1vblNlcnZpY2VzLlByZXNjcmliZUFTLGNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LGNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkEpXHJcbiAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgc2hvd0F1dGhvcml0eUJveChcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zOicnLFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5QcmVzY3JpYmVBUyxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucnhBdXRob3JpdHksXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnVubGlzdGVkUkFcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMHB4XCIgY2xhc3M9XCJtZGwtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS04LWNvbCBtZGwtY2VsbC0tNi1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbF9OZXdcIj5IT1RMSU5FOiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxfc3BhblwiPnt7Y29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMgPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSUEJTJz8nMTgwMDU1MjU4MCc6JzE4MDA4ODgzMzMnfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTQtY29sIG1kbC1jZWxsLS0yLWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtbWltcy5wbmdcIiBhbHQ9XCJNSU1TIGxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogODBweDsgaGVpZ2h0OiBhdXRvXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBzdHlsZT1cInBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNjcmliZXIgTmFtZTo8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucGF0aWVudERldGFpbHMuZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBhdGllbnREZXRhaWxzLmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2NyaWJlciBOdW1iZXI6PHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnBoeXNpY2lhbkRldGFpbHMucHJlc2NyaWJlck51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbCBtZGwtY2VsbC0tNC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGllbnQgTWVkaWNhcmUgTnVtYmVyOjxzcGFuPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5tZWRpY2FyZU51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sIG1kbC1jZWxsLS00LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXR5IEZvcm0gTm86XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLmF1dGhvcml0eUZvcm1Ob1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb21tb25TZXJ2aWNlcy5hdXRob3JpdHlGb3JtTm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmUgbmV3X3J4X21vYmlsZV9mdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5BdXRob3JpdHkgSXRlbTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXV0aG9yaXR5X2l0ZW1fdGV4dFwiIFtpbm5lckhUTUxdPVwiY29tbW9uU2VydmljZXMucnhEaXNwbGF5TmFtZVwiPjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsX3AgbmV3X3J4X3BvcHVwX3RhYl9zbWFsbEJveGVzXCIgc3R5bGU9XCJtYXJnaW46IDBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5OjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig0NSwgNDUsIDQ1KTsgZm9udC13ZWlnaHQ6IDYwMFwiPiB7eyBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+IFJlcGVhdHM6PHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDQ1LCA0NSwgNDUpOyBmb250LXdlaWdodDogNjAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb21tb25TZXJ2aWNlcy5yZXBlYXRzVmFsIH19PC9zcGFuPiBEZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHk6e3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsJiZjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzIT1udWxsPyhjb21tb25TZXJ2aWNlcy5xdWFudGl0eVdpdGhVbml0RmxhZz9cIjFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB4IFwiOlwiXCIpK2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM6XCJcIn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlcGVhdHM6e3tjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsJiZjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHMhPW51bGw/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOlwiXCJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgc3R5bGU9XCJwYWRkaW5nOiAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUEJTIExpc3RlZCBJbmRpY2F0aW9uIEF1dGhvcml0eTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtaW4taGVpZ2h0OiA3MHB4OyBtYXgtaGVpZ2h0OiAxNTBweDsgb3ZlcmZsb3c6IGF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9XCJtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAxNXB4O2xpc3Qtc3R5bGU6IG5vbmU7cGFkZGluZzogMHB4O1wiICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTaG93UmVzdHJpY3Rpb25zID09IHRydWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5SZXN0cmljdGlvbnMgIT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24uUmVzdHJpY3Rpb25zICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtwYWRkaW5nOiAwcHggMTBweDttYXJnaW4tYm90dG9tOiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV3X3J4X3BvcF9hdXRfaW50IGN1cnNvclwiICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN0cmljdGlvbiBvZiBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5SZXN0cmljdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggYXMgaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBbY2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yeF9wb3BfYXV0X2luc19zZWxlY3Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zSWQgPT0gaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXcgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25QcmV2aWV3ICE9ICcnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0ICE9ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZGlzYWJsZS1kYXRhJzogY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb24gPT09IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aW9uQXV0aG9yaXR5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5tYXhRdHlVbml0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD8gY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbi5yZXBlYXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZXN0cmljdGlvbi5yZXN0cmljdGlvblRleHQubGVuZ3RoIDwgODBcIj48Yj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSB9fTwvYj4gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxUb0Zvcm1hdHRlZFRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj48L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnhfcmVzdHJpY3Rpb25UZXh0XCIgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UZXh0Lmxlbmd0aCA+IDgwXCI+PGIgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGlvbkF1dGhvcml0eShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLm1heFF0eVVuaXRzOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5xdWFudGl0eVZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuc2VsZWN0ZWRGb3JtdWxhdGlvbiE9bnVsbD9jb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLnJlcGVhdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJlcGVhdHNWYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlIH19PC9iPiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0aW9uQXV0aG9yaXR5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ubWF4UXR5VW5pdHM6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnF1YW50aXR5VmFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsP2NvbW1vblNlcnZpY2VzLnNlbGVjdGVkRm9ybXVsYXRpb24ucmVwZWF0czonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMucmVwZWF0c1ZhbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBbaW5uZXJIVE1MXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxUb0Zvcm1hdHRlZFRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbi5yZXN0cmljdGlvblByZXZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN1YnN0cmluZygwLCA4MClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPi4uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsgY29sb3I6ICNmZjk5NzhcIiBpZD1cInNob3ctdG9vbHRpcC1pZFwiPlNob3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9yZTwvYT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwZGVtbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnhfdG9vbHRpcF9pbm5lcl9ib3hcIiBbaW5uZXJIVE1MXT1cInJlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVGV4dFwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZzogMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWNlbGwtLTgtY29sLXRhYmxldCBtZGwtY2VsbC0tNC1jb2wtcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5ld19yeF9wb3B1cF9sYWJlbFwiPlBCUyBOb3Rlczo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIyXCIgbWF4bGVuZ3RoPVwiNTAwXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kaXNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBuZXdfcnhfcG9wdXBfdGFiX3RleHRhcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbW1vblNlcnZpY2VzLnBic05vdGVzXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tOC1jb2wtdGFibGV0IG1kbC1jZWxsLS00LWNvbC1waG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmV3X3J4X3BvcHVwX2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRpY2F0aW9uIEZvciBUaGlzIEF1dGhvcml0eTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGF1dG9jb21wbGV0ZT1cIm9mZlwiIG5hbWU9XCJcIiBpZD1cIlwiIHJvd3M9XCIyXCIgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInsnZWRpdC1kc2FibGUtZGF0YSc6IGNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uID09PSB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tbW9uU2VydmljZXMuZWRpdFByZXNjcmliZWRQcmVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb21tb25TZXJ2aWNlcy5wYnNMaXN0SW5zdHJ1Y3Rpb25zXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbmV3X3J4X3BvcHVwX3RhYl90ZXh0YXJlYSByeC1tLXctMTAwXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1jZWxsLS04LWNvbC10YWJsZXQgbWRsLWNlbGwtLTQtY29sLXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuZXdfcnhfcG9wdXBfbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBdXRob3JpdHlMYWJlbChjb21tb25TZXJ2aWNlcy5wYXRpZW50RGV0YWlscy5zdGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJhcHByb3ZhbFwiIHBsYWNlaG9sZGVyPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJ7J2VkaXQtZHNhYmxlLWRhdGEnOiBjb21tb25TZXJ2aWNlcy5lZGl0UHJlc2NyaWJlZFByZXNjcmlwdGlvbiA9PT0gdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbW1vblNlcnZpY2VzLmVkaXRQcmVzY3JpYmVkUHJlc2NyaXB0aW9uXCIgY2xhc3M9XCJuZXdfcnhfcG9wdXBfdGFiX2lucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29tbW9uU2VydmljZXMuYXBwcm92YWxOb1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXRjaGFuZ2VBcHByb3ZhbE5vKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cImF1dGhvcml0eU5vVmFsaWRhdGlvbigkZXZlbnQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICFzaG93QXV0aG9yaXR5Qm94KFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uIT1udWxsPyBjb21tb25TZXJ2aWNlcy5zZWxlY3RlZEZvcm11bGF0aW9uLlJlc3RyaWN0aW9uczonJyxcclxuICAgICAgICAgICAgICAgICAgY29tbW9uU2VydmljZXMuUHJlc2NyaWJlQVMsXHJcbiAgICAgICAgICAgICAgICAgIGNvbW1vblNlcnZpY2VzLnJ4QXV0aG9yaXR5LFxyXG4gICAgICAgICAgICAgICAgICBjb21tb25TZXJ2aWNlcy51bmxpc3RlZFJBXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHRcIiAqbmdJZj1cIiFjb21tb25TZXJ2aWNlcy5pc01lZGljaW5lUmVzdHJpY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtbWltcy5wbmdcIiBhbHQ9XCJNSU1TIGxvZ29cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA4MHB4OyBoZWlnaHQ6IGF1dG9cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJOb19BdXRob3JpdHlfYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cD5ObyBBdXRob3JpdHkgUmVxdWlyZWQ8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnhfZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyeF9mb290ZXJfYnJhbmRcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1sLTEwXCI+PHNwYW4+SG9sYSBDb25zdWx0IHwgMS4wIDxzcGFuICpuZ0lmPVwiY29tbW9uU2VydmljZXMuc2FuZGJveFwiPnwgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicnhfc3RhZ2luZ1wiPlRoaXMgaXMgYSBzYW5kYm94IGVudmlyb25tZW50PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9wPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMTVwXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ4X3BvcHVwX2Zvb3Rlcl90ZXh0XCI+wqkgMjAyNiBIb2xhIEhlYWx0aCwgYSBicmFuZCBvZiBQYWNrYXBpbGwgUHR5IEx0ZCB8IHZcclxuICAgICAgICAgICAgICAgICAgMS4xLjMgfFxyXG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9ob2xhLmhlYWx0aC9jb25zdWx0LXRlcm1zXCIgdGFyZ2V0PVwiX2JsYW5rXCI+VGVybXM8L2E+IHxcclxuICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vaG9sYS5oZWFsdGgvY29uc3VsdC1wcml2YWN5LXBvbGljeVwiIHRhcmdldD1cIl9ibGFua1wiPlByaXZhY3kgUG9saWN5PC9hPiB8XHJcbiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJtYWlsdG86c3VwcG9ydEBob2xhLmhlYWx0aFwiIHRhcmdldD1cIl9ibGFua1wiPkhlbHA8L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19