@james_jayaraj/test-npm 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -338,6 +338,10 @@ export class HolaRx {
338
338
  }
339
339
  }
340
340
  this.commonservice.createPatientResponse = res;
341
+ this.commonservice.enablePaperScript = res.isEnableScript;
342
+ this.commonservice.enableSendPaperScriptInMail = res.isEnableScriptMail;
343
+ this.commonservice.enableSendEScriptInMail = res.isEnableEscriptMail;
344
+ this.commonservice.enableEScript = res.isEnableEscript;
341
345
  if (!this.IsNullOrEmpty(this.commonservice.physicianDetails) && !this.IsNullOrEmpty(this.commonservice.physicianDetails.ePrescriptionAllowed) && this.commonservice.physicianDetails.ePrescriptionAllowed == 0)
342
346
  this.HIvalidation(res);
343
347
  return this.commonservice.openRxWidget(this.content);
@@ -897,4 +901,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
897
901
  type: ViewChild,
898
902
  args: ["rxwidgets", { static: true }]
899
903
  }] } });
900
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sYS1yeC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQVFqQixZQUFvQixhQUE2QixFQUFTLG9CQUEwQyxFQUFVLFVBQXNCLEVBQVUsWUFBK0I7UUFBekosa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFOckssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUM1QixRQUFRO0lBRVIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGFBQWEs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QUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDM0M7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDNUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDOUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDdkM7aUNBQ0ksSUFB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aEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZXMsIENvbW1vbkxvYWRlclNlcnZpY2VzIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb21tb24nO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNvbmZpZywgZXJyb3Jjb25maWcgfSBmcm9tICcuL2Vudmlyb25tZW50cy9jb25maWcnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdob2xhLXJ4JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaG9sYS1yeC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaG9sYS1yeC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEhvbGFSeCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSB0ZW1wUnhEZXRhaWxzOiBhbnk7XHJcbiAgcHJpdmF0ZSBtZXNzYWdlID0gXCJcIjtcclxuICBwcml2YXRlIHRlbXByeGlkID0gXCJcIjtcclxuICBwcml2YXRlIHRlbXByZWZlcnJhbGlkID0gXCJcIjtcclxuICBwcml2YXRlIHNwaW5uZXJmbGFnID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBhdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoXCJyeHdpZGdldHNcIiwgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21tb25zZXJ2aWNlOiBDb21tb25TZXJ2aWNlcywgcHVibGljIGNvbW1vbkxvYWRlclNlcnZpY2VzOiBDb21tb25Mb2FkZXJTZXJ2aWNlcywgcHJpdmF0ZSBhcGlzZXJ2aWNlOiBBcGlTZXJ2aWNlLCBwcml2YXRlIENoYW5nZWRldGVjdDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHsgdGhpcy5zZXRMb2dpbnRlcnZhbCgpOyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRMb2dpbnRlcnZhbCgpIHtcclxuICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlICE9IG51bGwgJiYgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlICE9IFwiXCIpIHtcclxuICAgICAgICB0aGlzLmFwaXNlcnZpY2UuUG9zdCh0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUsIGNvbmZpZy5DUkVBVEVfTE9HX0VYQ0VQVElPTikuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgPSBudWxsO1xyXG4gICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSwgNTAwMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGluaXQoY2xpZW50aWQ6IHN0cmluZywgY2xpZW50c2VjcmV0OiBzdHJpbmcsIHNhbmRib3g6IGJvb2xlYW4sIGZsYWc/OiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJJbml0IEF1dGhlbnRpY2F0aW9uXCI7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSBcImNsaWVudGlkXCJcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcImNsaWVudGlkXCI7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGRhdGEgPSB7XHJcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudGlkLFxyXG4gICAgICAgIGNsaWVudFNlY3JldDogY2xpZW50c2VjcmV0XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3ggPSBzYW5kYm94O1xyXG4gICAgICBpZiAoIXNhbmRib3gpIHtcclxuICAgICAgICBlbnZpcm9ubWVudC5hcGlFbmRwb2ludCA9IGNvbmZpZy5MSVZFX1VSTDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBlbnZpcm9ubWVudC5hcGlFbmRwb2ludCA9IGNvbmZpZy5TVEFHSU5HX1VSTDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSkge1xyXG4gICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChkYXRhLCBcImF1dGhlbnRpY2F0ZVwiKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncnhDcmVkZW50aWFscycsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2tlbkV4cGlyeScsIEpTT04uc3RyaW5naWZ5KHJlcy5leHBpcmVzaW4pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbiA9IHJlcy5hdXRoLmFjY2Vzc190b2tlbjtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUaW1lcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGZsYWcgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3Blbk5ld1J4KHRoaXMudGVtcFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5FZGl0UngodGhpcy50ZW1wUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlblJlZmVycmFsKHRoaXMudGVtcFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvd25sb2FkUngodGhpcy50ZW1wcnhpZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDUpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvd25sb2FkUmVmZXJyYWwodGhpcy50ZW1wcmVmZXJyYWxpZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcy5mbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiZXJyb3JcIiwgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiZXJyb3JcIiwgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZyAmJiB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5hdXRoZW50aWNhdGVCbG9jayA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJpbml0XCIpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUaW1lcigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIHZhciBleHBpcnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2tlbkV4cGlyeScpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZXhwaXJ5KSAmJiB3aW5kb3cubmF2aWdhdG9yLm9uTGluZSAmJiAhdGhpcy5hdXRoZW50aWNhdGVCbG9jayAmJiAobmV3IERhdGUobmV3IERhdGUoZXhwaXJ5KS5zZXRNaW51dGVzKG5ldyBEYXRlKGV4cGlyeSkuZ2V0TWludXRlcygpIC0gMSkpIDw9IG5ldyBEYXRlKCkgfHwgdGhpcy5hcGlzZXJ2aWNlLnVuQXV0aG9yaXplZEZsYWcpKSB7XHJcbiAgICAgICAgICB0aGlzLmFwaXNlcnZpY2UudW5BdXRob3JpemVkRmxhZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyZmxhZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94KS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGVyci5tZXNzYWdlLCBlcnIuc3RhY2ssIFwiSG9sYVJ4XCIsIFwic2V0VGltZXJcIik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcInNldFRpbWVyXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3Blbk5ld1J4KFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJOZXcgUnhcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCkgPyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsIDogXCJcIiA6IFwiXCIgOiBcIlwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJwcmFjdGl0aW9uZXIgZW1haWxcIjtcclxuICAgIHRyeSB7XHJcbiAgICAgIFJ4RGV0YWlscy50eXBlID0gXCIxXCI7XHJcbiAgICAgIFJ4RGV0YWlscy5jbGllbnRJZCA9IHRoaXMuY29tbW9uc2VydmljZS5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gUnhEZXRhaWxzO1xyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShSeERldGFpbHMpLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTik7XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmFwcG9pbnRtZW50aWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcG9pbnRtZW50VmFsaWRhdGlvbihSeERldGFpbHMsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB2YXIgcmVzID0gdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odGhpcy5tZXNzYWdlLCBcImVycm9yXCIsIFwiXCIsIDcwMDApO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2UgPSBudWxsO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLlBvc3QoUnhEZXRhaWxzLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNvbnN1bHRhdGlvbklkID0gUnhEZXRhaWxzLmNvbnN1bHRhdGlvbmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jcmVhdGVQYXRpZW50UmVzcG9uc2UgPSByZXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZWRpdFByZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoYXJtYWN5RW1haWwgPSAhdGhpcy5Jc051bGxPckVtcHR5KHJlcy5waGFybWFjeUVtYWlsKSA/IHJlcy5waGFybWFjeUVtYWlsIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc1NjcmlwdFRvUGhhcm1hY3kgPSAoIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAmJiByZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAhPSAwID8gcmVzLmlzU2NyaXB0VG9QaGFybWFjeSA6IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNNZWRpY2luZVJlc3RyaWN0ID0gIXRoaXMuY29tbW9uc2VydmljZS5Jc051bGxPckVtcHR5KHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSkgPyByZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lbmFibGVQYXBlclNjcmlwdCA9IHJlcy5pc0VuYWJsZVNjcmlwdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lbmFibGVTZW5kUGFwZXJTY3JpcHRJbk1haWwgPSByZXMuaXNFbmFibGVTY3JpcHRNYWlsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVuYWJsZVNlbmRFU2NyaXB0SW5NYWlsID0gcmVzLmlzRW5hYmxlRXNjcmlwdE1haWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZW5hYmxlRVNjcmlwdCA9IHJlcy5pc0VuYWJsZUVzY3JpcHQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscykgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCkgJiYgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQgPT0gMClcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ISXZhbGlkYXRpb24ocmVzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vbnNlcnZpY2Uub3BlblJ4V2lkZ2V0KHRoaXMuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuRWRpdFJ4KFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJFZGl0IFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMVwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5hcHBvaW50bWVudGlkKSkge1xyXG4gICAgICAgICAgdGhpcy5hcHBvaW50bWVudFZhbGlkYXRpb24oUnhEZXRhaWxzLCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb24oUnhEZXRhaWxzLCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB2YXIgcmVzID0gdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odGhpcy5tZXNzYWdlLCBcImVycm9yXCIsIFwiXCIsIDcwMDApO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2UgPSBudWxsO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLlBvc3QoUnhEZXRhaWxzLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzID0gcmVzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGF0aWVudERldGFpbHMgPSByZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZmFjaWxpdHlEZXRhaWxzID0gcmVzLmZhY2lsaXR5RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQYXRpZW50SWQgPSByZXMudmVuZG9yUGF0aWVudElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvckZhY2lsaXR5SWQgPSByZXMudmVuZG9yRmFjaWxpdHlJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQaHlzaWNpYW5JZCA9IHJlcy52ZW5kb3JQaHlzaWNpYW5JZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52aXNpdElkID0gcmVzLnZpc2l0SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNNZWRpY2luZVJlc3RyaWN0ID0gIXRoaXMuY29tbW9uc2VydmljZS5Jc051bGxPckVtcHR5KHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSkgPyByZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waGFybWFjeUVtYWlsID0gIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMucGhhcm1hY3lFbWFpbCkgPyByZXMucGhhcm1hY3lFbWFpbCA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNTY3JpcHRUb1BoYXJtYWN5ID0gKCF0aGlzLklzTnVsbE9yRW1wdHkocmVzLmlzU2NyaXB0VG9QaGFybWFjeSkgJiYgcmVzLmlzU2NyaXB0VG9QaGFybWFjeSkgIT0gMCA/IHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kgOiAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKFJ4RGV0YWlscy5yeGlkICE9IG51bGwgJiYgUnhEZXRhaWxzLnJ4aWQgIT0gXCJcIiAmJiBSeERldGFpbHMucnhpZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yeERldGFpbHMgIT0gbnVsbCAmJiByZXMucnhEZXRhaWxzICE9IFwiXCIgJiYgcmVzLnJ4RGV0YWlscyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZWRpdFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnJ4RGV0YWlscyA9IHJlcy5yeERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnJ4aWQgPSByZXMucnhEZXRhaWxzLnJ4SWQ7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNyZWF0ZVBhdGllbnRSZXNwb25zZSA9IHJlcztcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkKSAmJiB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkhJdmFsaWRhdGlvbihyZXMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5vcGVuUnhXaWRnZXQodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlZmVycmFsKFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJTZW5kIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMlwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDMpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgdGhpcy5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoYXJtYWN5RW1haWwgPSAhdGhpcy5Jc051bGxPckVtcHR5KHJlcy5waGFybWFjeUVtYWlsKSA/IHJlcy5waGFybWFjeUVtYWlsIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc1NjcmlwdFRvUGhhcm1hY3kgPSAoIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAmJiByZXMuaXNTY3JpcHRUb1BoYXJtYWN5KSAhPSAwID8gcmVzLmlzU2NyaXB0VG9QaGFybWFjeSA6IDA7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25zZXJ2aWNlLlBhdGhvbG9neSh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpOyB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgdGhpcy5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkUngoUnhJRDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJEb3dubG9hZCBSeFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSBSeElEO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJyeGlkXCI7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy50ZW1wcnhpZCA9IFJ4SUQ7XHJcbiAgICAgIHZhciBjbGllbnRJZCA9IHRoaXMuY29tbW9uc2VydmljZS5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcnhpZDogUnhJRCxcclxuICAgICAgICB0eXBlOiBcIjBcIixcclxuICAgICAgICBjbGllbnRJZDogY2xpZW50SWRcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSwgY29uZmlnLlBIWVNJQ0lBTi5SWF9QUklOVCArIFJ4SUQgKyBcIiZ0eXBlPTAmY2xpZW50SWQ9XCIgKyBjbGllbnRJZCk7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeElEKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SWF9QUklOVCArIFJ4SUQgKyBcIiZ0eXBlPTAmY2xpZW50SWQ9XCIgKyBjbGllbnRJZCkucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkRvd25sb2FkKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlc3BvbnNlLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCA0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFJlZmVycmFsKFJlZmVycmFsSUQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRG93bmxvYWQgUmVmZXJyYWxcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gUmVmZXJyYWxJRDtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicmVmZXJyYWwgaWRcIjtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnRlbXByZWZlcnJhbGlkID0gUmVmZXJyYWxJRDtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICByZXF1ZXN0X3R5cGU6IFwicGFyYW1ldGVyXCIsXHJcbiAgICAgICAgcmVmZXJyYWxJZDogUmVmZXJyYWxJRFxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLCBjb25maWcuUEhZU0lDSUFOLlJFRkVSUkFMX1BSSU5UICsgUmVmZXJyYWxJRCk7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSZWZlcnJhbElEKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80My5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzQzLmNvZGUpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80My5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80My5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5HZXQoY29uZmlnLlBIWVNJQ0lBTi5SRUZFUlJBTF9QUklOVCArIFJlZmVycmFsSUQpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Eb3dubG9hZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXNwb25zZS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21tb25Eb3dubG9hZChyZXNwb25zZTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpub25lOycpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICBhLmRvd25sb2FkID0gcmVzcG9uc2UuZmlsZU5hbWU7XHJcbiAgICAgIGEuaHJlZiA9IFwiZGF0YTphcHBsaWNhdGlvbi9wZGY7Y2hhcnNldD11dGYtODtiYXNlNjQsXCIgKyByZXNwb25zZS5maWxlO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnc3VjY2VzcycpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJjb21tb25Eb3dubG9hZFwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhcHBvaW50bWVudFZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMuZmFjaWxpdHlpZCkpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJ2YWxpZGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSkge1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmNvbnN1bHRhdGlvbmlkKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZWlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXJpZCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMy5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudGlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5yeGlkKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZSkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmlkKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UubmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmVtYWlsKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl82LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UucGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl83Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LmFkZHJlc3NsaW5lMSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzcxLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcxLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN1YnVyYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzEwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5ocGlvKSkgeyBSeERldGFpbHMucHJhY3RpY2UuaHBpbyA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmZpcnN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmxhc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTYuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZG9iKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTgubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTguY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xOS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yMC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yMC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzID0ge307XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNzIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNzIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzLmFkZHJlc3NsaW5lMiA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5zdGF0ZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIucHJvdmlkZXJudW1iZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI3LmNvZGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuc2lnbmF0dXJlX2ltYWdlKSlcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOC5jb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5ocGlpKSkgeyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmhwaWkgPSAwOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50KSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5maXJzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubGFzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmRvYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5lbWFpbCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQudGltZXpvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcykpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LmFkZHJlc3NsaW5lMikpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnBvc3Rjb2RlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZSA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ubnVtYmVyKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5udW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ucmVmZXJlbmNlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5yZWZlcmVuY2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8uZXhwaXJ5KSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5leHBpcnkgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5paGkpKSB7IFJ4RGV0YWlscy5wYXRpZW50LmloaSA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSEl2YWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciB3YXJuaW5nX21zZyA9ICcnO1xyXG4gICAgICBpZiAoIXZhbHVlLmlzX2hwaW9fdmFsaWQpIHtcclxuICAgICAgICB3YXJuaW5nX21zZyA9IHZhbHVlLmhwaW9fcmVzcG9uc2VfbXNnO1xyXG4gICAgICB9IGlmICghdmFsdWUuaXNfaHBpaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaHBpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaHBpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfSBpZiAoIXZhbHVlLmlzX2loaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaWhpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaWhpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh3YXJuaW5nX21zZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHdhcm5pbmdfbXNnLCBcIndhcm5pbmdcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh2YWx1ZS5paGlfcmVzcG9uc2VfbXNnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odmFsdWUuaWhpX3Jlc3BvbnNlX21zZywgXCJzdWNjZXNzXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIkhJdmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSXNOdWxsT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBTdHJpbmcodmFsdWUpLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiSXNOdWxsT3JFbXB0eVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9udG9hc3QoZXJyb3JfbWVzc2FnZTogYW55LCBlcnJvcl9jb2RlPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZXJyb3JSZXNwb25zZShlcnJvcl9jb2RlLCBlcnJvcl9tZXNzYWdlKTtcclxuICAgICAgaWYgKHRoaXMubWVzc2FnZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlICs9IFwiPGJyPlwiICsgZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvbnRvYXN0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlcnJvclJlc3BvbnNlKGVycm9yX2NvZGU6IGFueSwgZXJyb3JfbWVzc2FnZTogYW55LCBzdWNjZXNzZmxhZzogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByZXNwb25zZTogYW55ID0ge1xyXG4gICAgICAgIHN0YXR1czogc3VjY2Vzc2ZsYWcgPT0gdHJ1ZSA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIHJlc3BvbnNlOiB7XHJcbiAgICAgICAgICByZXNwb25zZV9jb2RlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfY29kZSA6IFwiXCIsXHJcbiAgICAgICAgICByZXNwb25zZV9tZXNzYWdlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfbWVzc2FnZSA6IFwiXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICBlcnJvcl9jb2RlOiBzdWNjZXNzZmxhZyA9PSBmYWxzZSA/IGVycm9yX2NvZGUgOiBcIlwiLFxyXG4gICAgICAgICAgZXJyb3JfbWVzc2FnZTogc3VjY2Vzc2ZsYWcgPT0gZmFsc2UgPyBlcnJvcl9tZXNzYWdlIDogXCJcIlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImVycm9yUmVzcG9uc2VcIik7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXVkaXRsb2codmFsdWU6IGFueSwgYXBpOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGlkZW50aWZpZXJWYWx1ZTogdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIsXHJcbiAgICAgICAgaWRlbnRpZmllclR5cGU6IHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSxcclxuICAgICAgICByZXF1ZXN0UGF5bG9hZDogdmFsdWUsXHJcbiAgICAgICAgcmVzcG9uc2VDb2RlOiBcIlwiLFxyXG4gICAgICAgIHJlc3BvbnNlUGF5bG9hZDogXCJcIixcclxuICAgICAgICBjcmVhdGVkQnk6IFwiVUktUnhcIixcclxuICAgICAgICBhcGk6IGFwaSxcclxuICAgICAgICByZXF1ZXN0VXJsOiB3aW5kb3cub3JpZ2luXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgY29uZmlnLkFVRElUX0xPRykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVyci5tZXNzYWdlLCBlcnIuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiYXVkaXRsb2dcIik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImF1ZGl0bG9nXCIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDx1bCBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIiA+PC91bD5cclxuPGRpdiBbY2xhc3NdPVwieydsb2FkZXJfdmlzaWJsZSc6Y29tbW9uTG9hZGVyU2VydmljZXMuZnVsbFNjcmVlbkxvYWRlciwnbG9hZGVyX2hpZGRlbic6IWNvbW1vbkxvYWRlclNlcnZpY2VzLmZ1bGxTY3JlZW5Mb2FkZXJ9XCJcclxuICAgIGNsYXNzPVwic3BsYXNoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGF1c2VcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPiA8aW1nIGNsYXNzPVwic3Bpbm5lci1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaG9sYS1oZWFsdGgtc3Bpbm5lci5wbmdcIiBhbHQ9XCJob2xhX2hlYWx0aFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+TG9hZGluZy4uLjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcnh3aWRnZXRzPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
904
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sYS1yeC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQVFqQixZQUFvQixhQUE2QixFQUFTLG9CQUEwQyxFQUFVLFVBQXNCLEVBQVUsWUFBK0I7UUFBekosa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFOckssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUM1QixRQUFRO0lBRVIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGFBQWEs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QUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDM0M7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDNUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDOUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDdkM7aUNBQ0ksSUFB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Q0g7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25GO0lBQ0gsQ0FBQzs7bUdBeDFCVSxNQUFNO3VGQUFOLE1BQU0sbUtDWm5CLGtqQkFZYzsyRkRBRCxNQUFNO2tCQUxsQixTQUFTOytCQUNFLFNBQVM7aU1BV3VCLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2VzLCBDb21tb25Mb2FkZXJTZXJ2aWNlcyB9IGZyb20gJy4vc2VydmljZXMvY29tbW9uJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjb25maWcsIGVycm9yY29uZmlnIH0gZnJvbSAnLi9lbnZpcm9ubWVudHMvY29uZmlnJztcclxuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaG9sYS1yeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hvbGEtcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hvbGEtcnguY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb2xhUnggaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgdGVtcFJ4RGV0YWlsczogYW55O1xyXG4gIHByaXZhdGUgbWVzc2FnZSA9IFwiXCI7XHJcbiAgcHJpdmF0ZSB0ZW1wcnhpZCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSB0ZW1wcmVmZXJyYWxpZCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBzcGlubmVyZmxhZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKFwicnh3aWRnZXRzXCIsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tbW9uc2VydmljZTogQ29tbW9uU2VydmljZXMsIHB1YmxpYyBjb21tb25Mb2FkZXJTZXJ2aWNlczogQ29tbW9uTG9hZGVyU2VydmljZXMsIHByaXZhdGUgYXBpc2VydmljZTogQXBpU2VydmljZSwgcHJpdmF0ZSBDaGFuZ2VkZXRlY3Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7IHRoaXMuc2V0TG9naW50ZXJ2YWwoKTsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TG9naW50ZXJ2YWwoKSB7XHJcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gdW5kZWZpbmVkICYmIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSBudWxsICYmIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QodGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlLCBjb25maWcuQ1JFQVRFX0xPR19FWENFUFRJT04pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlID0gbnVsbDtcclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0sIDUwMDAwKTtcclxuICB9XHJcblxyXG5cclxuICBpbml0KGNsaWVudGlkOiBzdHJpbmcsIGNsaWVudHNlY3JldDogc3RyaW5nLCBzYW5kYm94OiBib29sZWFuLCBmbGFnPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiSW5pdCBBdXRoZW50aWNhdGlvblwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gXCJjbGllbnRpZFwiXHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJjbGllbnRpZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGNsaWVudElkOiBjbGllbnRpZCxcclxuICAgICAgICBjbGllbnRTZWNyZXQ6IGNsaWVudHNlY3JldFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94ID0gc2FuZGJveDtcclxuICAgICAgaWYgKCFzYW5kYm94KSB7XHJcbiAgICAgICAgZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQgPSBjb25maWcuTElWRV9VUkw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQgPSBjb25maWcuU1RBR0lOR19VUkw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpO1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgXCJhdXRoZW50aWNhdGVcIikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9rZW5FeHBpcnknLCBKU09OLnN0cmluZ2lmeShyZXMuZXhwaXJlc2luKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4gPSByZXMuYXV0aC5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZXIoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5OZXdSeCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuRWRpdFJ4KHRoaXMudGVtcFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5SZWZlcnJhbCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJ4KHRoaXMudGVtcHJ4aWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJlZmVycmFsKHRoaXMudGVtcHJlZmVycmFsaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMuZmxhZykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzEuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGltZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICB2YXIgZXhwaXJ5ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW5FeHBpcnknKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGV4cGlyeSkgJiYgd2luZG93Lm5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMuYXV0aGVudGljYXRlQmxvY2sgJiYgKG5ldyBEYXRlKG5ldyBEYXRlKGV4cGlyeSkuc2V0TWludXRlcyhuZXcgRGF0ZShleHBpcnkpLmdldE1pbnV0ZXMoKSAtIDEpKSA8PSBuZXcgRGF0ZSgpIHx8IHRoaXMuYXBpc2VydmljZS51bkF1dGhvcml6ZWRGbGFnKSkge1xyXG4gICAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLnVuQXV0aG9yaXplZEZsYWcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lcmZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBlcnIubWVzc2FnZSwgZXJyLnN0YWNrLCBcIkhvbGFSeFwiLCBcInNldFRpbWVyXCIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJzZXRUaW1lclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5OZXdSeChSeERldGFpbHM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiTmV3IFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMVwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5hcHBvaW50bWVudGlkKSkge1xyXG4gICAgICAgICAgdGhpcy5hcHBvaW50bWVudFZhbGlkYXRpb24oUnhEZXRhaWxzLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb24oUnhEZXRhaWxzLCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHRoaXMubWVzc2FnZSwgXCJlcnJvclwiLCBcIlwiLCA3MDAwKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KFJ4RGV0YWlscywgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jb25zdWx0YXRpb25JZCA9IFJ4RGV0YWlscy5jb25zdWx0YXRpb25pZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzID0gcmVzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGF0aWVudERldGFpbHMgPSByZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZmFjaWxpdHlEZXRhaWxzID0gcmVzLmZhY2lsaXR5RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQYXRpZW50SWQgPSByZXMudmVuZG9yUGF0aWVudElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvckZhY2lsaXR5SWQgPSByZXMudmVuZG9yRmFjaWxpdHlJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQaHlzaWNpYW5JZCA9IHJlcy52ZW5kb3JQaHlzaWNpYW5JZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52aXNpdElkID0gcmVzLnZpc2l0SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY3JlYXRlUGF0aWVudFJlc3BvbnNlID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVkaXRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waGFybWFjeUVtYWlsID0gIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMucGhhcm1hY3lFbWFpbCkgPyByZXMucGhhcm1hY3lFbWFpbCA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNTY3JpcHRUb1BoYXJtYWN5ID0gKCF0aGlzLklzTnVsbE9yRW1wdHkocmVzLmlzU2NyaXB0VG9QaGFybWFjeSkgJiYgcmVzLmlzU2NyaXB0VG9QaGFybWFjeSkgIT0gMCA/IHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kgOiAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzTWVkaWNpbmVSZXN0cmljdCA9ICF0aGlzLmNvbW1vbnNlcnZpY2UuSXNOdWxsT3JFbXB0eShyZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUpID8gcmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZW5hYmxlUGFwZXJTY3JpcHQgPSByZXMuaXNFbmFibGVTY3JpcHQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZW5hYmxlU2VuZFBhcGVyU2NyaXB0SW5NYWlsID0gcmVzLmlzRW5hYmxlU2NyaXB0TWFpbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lbmFibGVTZW5kRVNjcmlwdEluTWFpbCA9IHJlcy5pc0VuYWJsZUVzY3JpcHRNYWlsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVuYWJsZUVTY3JpcHQgPSByZXMuaXNFbmFibGVFc2NyaXB0O1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMpICYmICF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQpICYmIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDApXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuSEl2YWxpZGF0aW9uKHJlcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25zZXJ2aWNlLm9wZW5SeFdpZGdldCh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkVkaXRSeChSeERldGFpbHM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRWRpdCBSeFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscykgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsKSA/IFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwgOiBcIlwiIDogXCJcIiA6IFwiXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInByYWN0aXRpb25lciBlbWFpbFwiO1xyXG4gICAgdHJ5IHtcclxuICAgICAgUnhEZXRhaWxzLnR5cGUgPSBcIjFcIjtcclxuICAgICAgUnhEZXRhaWxzLmNsaWVudElkID0gdGhpcy5jb21tb25zZXJ2aWNlLmdldENyZWRldGlhbCgpO1xyXG4gICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBSeERldGFpbHM7XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KFJ4RGV0YWlscyksIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKTtcclxuICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMuYXBwb2ludG1lbnRpZCkpIHtcclxuICAgICAgICAgIHRoaXMuYXBwb2ludG1lbnRWYWxpZGF0aW9uKFJ4RGV0YWlscywgMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uKFJ4RGV0YWlscywgMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHRoaXMubWVzc2FnZSwgXCJlcnJvclwiLCBcIlwiLCA3MDAwKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KFJ4RGV0YWlscywgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscyA9IHJlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBhdGllbnREZXRhaWxzID0gcmVzLnBhdGllbnREZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmZhY2lsaXR5RGV0YWlscyA9IHJlcy5mYWNpbGl0eURldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGF0aWVudElkID0gcmVzLnZlbmRvclBhdGllbnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JGYWNpbGl0eUlkID0gcmVzLnZlbmRvckZhY2lsaXR5SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGh5c2ljaWFuSWQgPSByZXMudmVuZG9yUGh5c2ljaWFuSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmlzaXRJZCA9IHJlcy52aXNpdElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzTWVkaWNpbmVSZXN0cmljdCA9ICF0aGlzLmNvbW1vbnNlcnZpY2UuSXNOdWxsT3JFbXB0eShyZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUpID8gcmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGhhcm1hY3lFbWFpbCA9ICF0aGlzLklzTnVsbE9yRW1wdHkocmVzLnBoYXJtYWN5RW1haWwpID8gcmVzLnBoYXJtYWN5RW1haWwgOiBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzU2NyaXB0VG9QaGFybWFjeSA9ICghdGhpcy5Jc051bGxPckVtcHR5KHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kpICYmIHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kpICE9IDAgPyByZXMuaXNTY3JpcHRUb1BoYXJtYWN5IDogMDtcclxuICAgICAgICAgICAgICAgIGlmIChSeERldGFpbHMucnhpZCAhPSBudWxsICYmIFJ4RGV0YWlscy5yeGlkICE9IFwiXCIgJiYgUnhEZXRhaWxzLnJ4aWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXMucnhEZXRhaWxzICE9IG51bGwgJiYgcmVzLnJ4RGV0YWlscyAhPSBcIlwiICYmIHJlcy5yeERldGFpbHMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVkaXRQcmVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5yeERldGFpbHMgPSByZXMucnhEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5yeGlkID0gcmVzLnJ4RGV0YWlscy5yeElkO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jcmVhdGVQYXRpZW50UmVzcG9uc2UgPSByZXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZW5hYmxlUGFwZXJTY3JpcHQgPSByZXMuaXNFbmFibGVTY3JpcHQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZW5hYmxlU2VuZFBhcGVyU2NyaXB0SW5NYWlsID0gcmVzLmlzRW5hYmxlU2NyaXB0TWFpbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lbmFibGVTZW5kRVNjcmlwdEluTWFpbCA9IHJlcy5pc0VuYWJsZUVzY3JpcHRNYWlsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVuYWJsZUVTY3JpcHQgPSByZXMuaXNFbmFibGVFc2NyaXB0O1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMpICYmICF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQpICYmIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDApXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuSEl2YWxpZGF0aW9uKHJlcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25zZXJ2aWNlLm9wZW5SeFdpZGdldCh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiZXJyb3JcIiwgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuUmVmZXJyYWwoUnhEZXRhaWxzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIlNlbmQgUmVmZXJyYWxcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCkgPyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsIDogXCJcIiA6IFwiXCIgOiBcIlwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJwcmFjdGl0aW9uZXIgZW1haWxcIjtcclxuICAgIHRyeSB7XHJcbiAgICAgIFJ4RGV0YWlscy50eXBlID0gXCIyXCI7XHJcbiAgICAgIFJ4RGV0YWlscy5jbGllbnRJZCA9IHRoaXMuY29tbW9uc2VydmljZS5nZXRDcmVkZXRpYWwoKTtcclxuICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gUnhEZXRhaWxzO1xyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShSeERldGFpbHMpLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTik7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uKFJ4RGV0YWlscywgMyk7XHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB2YXIgcmVzID0gdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgdGhpcy5tZXNzYWdlLCB0aGlzLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHRoaXMubWVzc2FnZSwgXCJlcnJvclwiLCBcIlwiLCA3MDAwKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KFJ4RGV0YWlscywgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscyA9IHJlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBhdGllbnREZXRhaWxzID0gcmVzLnBhdGllbnREZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmZhY2lsaXR5RGV0YWlscyA9IHJlcy5mYWNpbGl0eURldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGF0aWVudElkID0gcmVzLnZlbmRvclBhdGllbnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JGYWNpbGl0eUlkID0gcmVzLnZlbmRvckZhY2lsaXR5SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGh5c2ljaWFuSWQgPSByZXMudmVuZG9yUGh5c2ljaWFuSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmlzaXRJZCA9IHJlcy52aXNpdElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzTWVkaWNpbmVSZXN0cmljdCA9ICF0aGlzLmNvbW1vbnNlcnZpY2UuSXNOdWxsT3JFbXB0eShyZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUpID8gcmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGhhcm1hY3lFbWFpbCA9ICF0aGlzLklzTnVsbE9yRW1wdHkocmVzLnBoYXJtYWN5RW1haWwpID8gcmVzLnBoYXJtYWN5RW1haWwgOiBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzU2NyaXB0VG9QaGFybWFjeSA9ICghdGhpcy5Jc051bGxPckVtcHR5KHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kpICYmIHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kpICE9IDAgPyByZXMuaXNTY3JpcHRUb1BoYXJtYWN5IDogMDtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vbnNlcnZpY2UuUGF0aG9sb2d5KHRoaXMuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7IHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiZXJyb3JcIiwgcmVzLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCB0aGlzLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRSeChSeElEOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkRvd25sb2FkIFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9IFJ4SUQ7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInJ4aWRcIjtcclxuICAgIHZhciBwYXlsb2FkID0ge307XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnRlbXByeGlkID0gUnhJRDtcclxuICAgICAgdmFyIGNsaWVudElkID0gdGhpcy5jb21tb25zZXJ2aWNlLmdldENyZWRldGlhbCgpO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICByeGlkOiBSeElELFxyXG4gICAgICAgIHR5cGU6IFwiMFwiLFxyXG4gICAgICAgIGNsaWVudElkOiBjbGllbnRJZFxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLCBjb25maWcuUEhZU0lDSUFOLlJYX1BSSU5UICsgUnhJRCArIFwiJnR5cGU9MCZjbGllbnRJZD1cIiArIGNsaWVudElkKTtcclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4SUQpKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLlJYX1BSSU5UICsgUnhJRCArIFwiJnR5cGU9MCZjbGllbnRJZD1cIiArIGNsaWVudElkKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXNwb25zZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uRG93bmxvYWQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzcG9uc2UuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkUmVmZXJyYWwoUmVmZXJyYWxJRDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJEb3dubG9hZCBSZWZlcnJhbFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSBSZWZlcnJhbElEO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJyZWZlcnJhbCBpZFwiO1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudGVtcHJlZmVycmFsaWQgPSBSZWZlcnJhbElEO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHJlcXVlc3RfdHlwZTogXCJwYXJhbWV0ZXJcIixcclxuICAgICAgICByZWZlcnJhbElkOiBSZWZlcnJhbElEXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksIGNvbmZpZy5QSFlTSUNJQU4uUkVGRVJSQUxfUFJJTlQgKyBSZWZlcnJhbElEKTtcclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJlZmVycmFsSUQpKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNDMuY29kZSk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzQzLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzQzLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLkdldChjb25maWcuUEhZU0lDSUFOLlJFRkVSUkFMX1BSSU5UICsgUmVmZXJyYWxJRCkucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkRvd25sb2FkKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsICdlcnJvcicsIHJlc3BvbnNlLmVycm9yX2NvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCA1KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbW1vbkRvd25sb2FkKHJlc3BvbnNlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5Om5vbmU7Jyk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcbiAgICAgIGEuZG93bmxvYWQgPSByZXNwb25zZS5maWxlTmFtZTtcclxuICAgICAgYS5ocmVmID0gXCJkYXRhOmFwcGxpY2F0aW9uL3BkZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIiArIHJlc3BvbnNlLmZpbGU7XHJcbiAgICAgIGEuY2xpY2soKTtcclxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsICdzdWNjZXNzJyk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImNvbW1vbkRvd25sb2FkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIGFwcG9pbnRtZW50VmFsaWRhdGlvbihSeERldGFpbHM6IGFueSwgZmxhZzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5mYWNpbGl0eWlkKSkge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNC5jb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5yeGlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcInZhbGlkYXRpb25cIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgdmFsaWRhdGlvbihSeERldGFpbHM6IGFueSwgZmxhZzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMuY29uc3VsdGF0aW9uaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzIuY29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlaWQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMuY29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcmlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzEzLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEzLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50aWQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudCkpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI5Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI5LmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5yeGlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnJ4aWQpKSB7XHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5yeGlkID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuaWQpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzQuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5uYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl81LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuZW1haWwpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl82Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzYuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5waG9uZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MpKVxyXG4gICAgICAgICAgICBSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcyA9IHt9O1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNzEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzPy5hZGRyZXNzbGluZTIpKVxyXG4gICAgICAgICAgICBSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcy5hZGRyZXNzbGluZTIgPSBcIlwiO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzPy5wb3N0Y29kZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzExLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzExLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uc3RhdGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmhwaW8pKSB7IFJ4RGV0YWlscy5wcmFjdGljZS5ocGlvID0gMDsgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyKSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmlkKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTQuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZmlyc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTUuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIubGFzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xNi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5nZW5kZXIpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xNy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5kb2IpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xOC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xOC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE5Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE5LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLm1vYmlsZV9waG9uZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzIwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzIwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmFkZHJlc3MpKVxyXG4gICAgICAgICAgICBSeERldGFpbHMucHJhY3RpdGlvbmVyLmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5hZGRyZXNzbGluZTEpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl83Mi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl83Mi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5hZGRyZXNzbGluZTIpKVxyXG4gICAgICAgICAgICBSeERldGFpbHMucHJhY3RpdGlvbmVyLmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5zdWJ1cmIpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yMy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5wb3N0Y29kZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjUuY29kZSk7XHJcbiAgICAgICAgICBpZiAoZmxhZyA9PSAzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5wcm92aWRlcm51bWJlcikpXHJcbiAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjcuY29kZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5zaWduYXR1cmVfaW1hZ2UpKVxyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI4Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI4LmNvZGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmhwaWkpKSB7IFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuaHBpaSA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQpKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmlkKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmZpcnN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMxLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMxLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5sYXN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMyLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMyLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5nZW5kZXIpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZG9iKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzQuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmVtYWlsKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzUuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1vYmlsZV9waG9uZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM2Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM2LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC50aW1lem9uZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM3LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcyA9IHt9O1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5hZGRyZXNzPy5hZGRyZXNzbGluZTEpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl82Ny5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl82Ny5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcy5hZGRyZXNzbGluZTIgPSBcIlwiO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5hZGRyZXNzPy5zdWJ1cmIpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80MC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80MC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80MS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80MS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uc3RhdGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl80Mi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80Mi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubWVkaWNhcmUpKSB7XHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlID0ge307XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlPy5udW1iZXIpKSB7XHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlLm51bWJlciA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlPy5yZWZlcmVuY2UpKSB7XHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlLnJlZmVyZW5jZSA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlPy5leHBpcnkpKSB7XHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlLmV4cGlyeSA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmloaSkpIHsgUnhEZXRhaWxzLnBhdGllbnQuaWhpID0gMDsgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJ2YWxpZGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBISXZhbGlkYXRpb24odmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHdhcm5pbmdfbXNnID0gJyc7XHJcbiAgICAgIGlmICghdmFsdWUuaXNfaHBpb192YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnID0gdmFsdWUuaHBpb19yZXNwb25zZV9tc2c7XHJcbiAgICAgIH0gaWYgKCF2YWx1ZS5pc19ocGlpX3ZhbGlkKSB7XHJcbiAgICAgICAgd2FybmluZ19tc2cgKz0gd2FybmluZ19tc2cgPT0gJycgPyB2YWx1ZS5ocGlfcmVzcG9uc2VfbXNnIDogXCI8YnI+XCIgKyB2YWx1ZS5ocGlfcmVzcG9uc2VfbXNnO1xyXG4gICAgICB9IGlmICghdmFsdWUuaXNfaWhpX3ZhbGlkKSB7XHJcbiAgICAgICAgd2FybmluZ19tc2cgKz0gd2FybmluZ19tc2cgPT0gJycgPyB2YWx1ZS5paGlfcmVzcG9uc2VfbXNnIDogXCI8YnI+XCIgKyB2YWx1ZS5paGlfcmVzcG9uc2VfbXNnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHdhcm5pbmdfbXNnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4od2FybmluZ19tc2csIFwid2FybmluZ1wiKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHZhbHVlLmloaV9yZXNwb25zZV9tc2cpKSB7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih2YWx1ZS5paGlfcmVzcG9uc2VfbXNnLCBcInN1Y2Nlc3NcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiSEl2YWxpZGF0aW9uXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBJc051bGxPckVtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IFN0cmluZyh2YWx1ZSkudHJpbSgpID09PSBcIlwiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJJc051bGxPckVtcHR5XCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRpb250b2FzdChlcnJvcl9tZXNzYWdlOiBhbnksIGVycm9yX2NvZGU/OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5lcnJvclJlc3BvbnNlKGVycm9yX2NvZGUsIGVycm9yX21lc3NhZ2UpO1xyXG4gICAgICBpZiAodGhpcy5tZXNzYWdlID09IFwiXCIpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBlcnJvcl9jb2RlICsgXCI6IFwiICsgZXJyb3JfbWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2UgKz0gXCI8YnI+XCIgKyBlcnJvcl9jb2RlICsgXCI6IFwiICsgZXJyb3JfbWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJ2YWxpZGF0aW9udG9hc3RcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVycm9yUmVzcG9uc2UoZXJyb3JfY29kZTogYW55LCBlcnJvcl9tZXNzYWdlOiBhbnksIHN1Y2Nlc3NmbGFnOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIHJlc3BvbnNlOiBhbnkgPSB7XHJcbiAgICAgICAgc3RhdHVzOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgcmVzcG9uc2U6IHtcclxuICAgICAgICAgIHJlc3BvbnNlX2NvZGU6IHN1Y2Nlc3NmbGFnID09IHRydWUgPyBlcnJvcl9jb2RlIDogXCJcIixcclxuICAgICAgICAgIHJlc3BvbnNlX21lc3NhZ2U6IHN1Y2Nlc3NmbGFnID09IHRydWUgPyBlcnJvcl9tZXNzYWdlIDogXCJcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgIGVycm9yX2NvZGU6IHN1Y2Nlc3NmbGFnID09IGZhbHNlID8gZXJyb3JfY29kZSA6IFwiXCIsXHJcbiAgICAgICAgICBlcnJvcl9tZXNzYWdlOiBzdWNjZXNzZmxhZyA9PSBmYWxzZSA/IGVycm9yX21lc3NhZ2UgOiBcIlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZXJyb3JSZXNwb25zZVwiKTtcclxuICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhdWRpdGxvZyh2YWx1ZTogYW55LCBhcGk6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdmFyIGRhdGEgPSB7XHJcbiAgICAgICAgaWRlbnRpZmllclZhbHVlOiB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllcixcclxuICAgICAgICBpZGVudGlmaWVyVHlwZTogdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlLFxyXG4gICAgICAgIHJlcXVlc3RQYXlsb2FkOiB2YWx1ZSxcclxuICAgICAgICByZXNwb25zZUNvZGU6IFwiXCIsXHJcbiAgICAgICAgcmVzcG9uc2VQYXlsb2FkOiBcIlwiLFxyXG4gICAgICAgIGNyZWF0ZWRCeTogXCJVSS1SeFwiLFxyXG4gICAgICAgIGFwaTogYXBpLFxyXG4gICAgICAgIHJlcXVlc3RVcmw6IHdpbmRvdy5vcmlnaW5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwaXNlcnZpY2UuUG9zdChkYXRhLCBjb25maWcuQVVESVRfTE9HKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyLm1lc3NhZ2UsIGVyci5zdGFjaywgXCJIb2xhUnhcIiwgXCJhdWRpdGxvZ1wiKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiYXVkaXRsb2dcIik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPHVsIGNsYXNzPVwibm90aWZpY2F0aW9uc1wiID48L3VsPlxyXG48ZGl2IFtjbGFzc109XCJ7J2xvYWRlcl92aXNpYmxlJzpjb21tb25Mb2FkZXJTZXJ2aWNlcy5mdWxsU2NyZWVuTG9hZGVyLCdsb2FkZXJfaGlkZGVuJzohY29tbW9uTG9hZGVyU2VydmljZXMuZnVsbFNjcmVlbkxvYWRlcn1cIlxyXG4gICAgY2xhc3M9XCJzcGxhc2hcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYXVzZVwiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+IDxpbWcgY2xhc3M9XCJzcGlubmVyLWltZ1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL3Bhc3NldHMuaG9sYS5oZWFsdGgvcngtd2lkZ2V0cy9yeC1ob2xhLWhlYWx0aC1zcGlubmVyLnBuZ1wiIGFsdD1cImhvbGFfaGVhbHRoXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj5Mb2FkaW5nLi4uPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyeHdpZGdldHM+XHJcbjwvbmctdGVtcGxhdGU+Il19