application-sidebar 1.0.26 → 1.0.28

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.
@@ -506,6 +506,7 @@ export class ApplicationSidebarComponent {
506
506
  }
507
507
  }
508
508
  goToApplication(item) {
509
+ window.localStorage.removeItem('selectedAppId');
509
510
  if (item.defaulturl) {
510
511
  this.goToAppDefaultPage(item, item.id);
511
512
  }
@@ -568,4 +569,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
568
569
  type: ViewChild,
569
570
  args: ['navMenusComponent']
570
571
  }] } });
571
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFlLGVBQWUsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBMkIsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTcEUsTUFBTSxPQUFPLDJCQUEyQjtJQXlCN0I7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUJELGtCQUFrQixDQUFhO0lBRS9CLE9BQU8sQ0FBYTtJQUVLLFNBQVMsQ0FBZ0M7SUFD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LEtBQUssSUFBSSxRQUFRLENBQUMsRUFBRTt3QkFDcEgsT0FBTyxJQUFJLENBQUM7cUJBQ2I7b0JBQUEsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQTthQUNIO1lBQ0QsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLElBQUksQ0FBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7U0FDM0o7SUFDTCxDQUFDOzJIQXpqQlUsMkJBQTJCOytHQUEzQiwyQkFBMkIsOEtBTzNCLG1CQUFtQix3S0FEaEIsa0JBQWtCLHFFQ3pCbEMsZzBZQWlNVTs7NEZEOUtHLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSx3QkFBd0I7K1BBT3pCLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRTRCLFNBQVM7c0JBQTFDLFlBQVk7dUJBQUMsa0JBQWtCO2dCQUNBLElBQUk7c0JBQW5DLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNFLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJFdmVudCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU2lkZWJhclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcGxpY2F0aW9uLXNpZGViYXIuc2VydmljZSdcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IGFwcERldGFpbHMgfSBmcm9tICcuL2FwcC1kZXRhaWxzJ1xuaW1wb3J0IHsgT2Zmc2V0VG9wRGlyZWN0aXZlLCBTY3JvbGxhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9uYXYtbWVudS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmVzdEFwaVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3Jlc3QtYXBpLnNlcnZpY2VzJ1xuaW1wb3J0IHsgTmF2TWVudXNDb21wb25lbnQgfSBmcm9tICcuL25hdi1tZW51cy9uYXYtbWVudXMuY29tcG9uZW50J1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgR0xPQkFMX0xJU1QgfSBmcm9tICcuL25hdm1lbnUxJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbG5jLW5hdmlnYXRpb24tc2lkZWJhcicsXG4gIHRlbXBsYXRlVXJsOicuL2FwcGxpY2F0aW9uLXNpZGViYXIudGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczpbJy4vYXBwbGljYXRpb24tc2lkZWJhci5zY3NzJywnYXBwbGljYXRpb24tc2lkZWJhci50aGVtZS5zY3NzJ10sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBhcHBsaWNhdGlvbkRldGFpbHMgOmFwcERldGFpbHM7XG5cbiAgQElucHV0KCkgc2lkZW5hdjogTWF0U2lkZW5hdjtcblxuICBAVmlld0NoaWxkcmVuKE9mZnNldFRvcERpcmVjdGl2ZSkgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgQFZpZXdDaGlsZChTY3JvbGxhYmxlRGlyZWN0aXZlKSBsaXN0OiBTY3JvbGxhYmxlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCduYXZNZW51c0NvbXBvbmVudCcpIG5hdk1lbnVzQ29tcG9uZW50Ok5hdk1lbnVzQ29tcG9uZW50O1xuXG4gIGFjY291bnROYW1lOiBhbnk7XG4gIGFjdGl2ZVBhbmVsOiBhbnk7XG4gIG5hdkNvbGxhcHNlZDpib29sZWFuID0gZmFsc2U7XG4gIG9sZExpc3RJdGVtczogUXVlcnlMaXN0PE9mZnNldFRvcERpcmVjdGl2ZT47XG4gIGlzQWRtaW5Sb2xlOiBib29sZWFuID0gZmFsc2U7XG4gIGFkbWluUm9sZXMgPSBbJ1NVUEVSX0FETUlOJywnU1VQRVJfQURNSU5fUkVBRF9PTkxZJ107XG4gIGN1cnJlbnRBcHA6IGFueTtcbiAgc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbjogYW55O1xuICBteU9ic2VydmVyOiBhbnk7XG4gIGV4cGFuZEdsb2JhbFNldHRpbmdzOiBhbnkgPSBmYWxzZTtcbiAgaW5Db250ZXh0SW5zaWdodHNXTEFwcDogYm9vbGVhbjtcblxuICAvLyBpc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZTpib29sZWFuID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmF2aWdhdGlvbjogQXBwbGljYXRpb25TaWRlYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgUmVzdEFwaVNlcnZpY2U6IFJlc3RBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29va2llOiBDb29raWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246VHJhbnNsYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICB0aGlzLm15T2JzZXJ2ZXIgPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLmV4cGFuZEdsb2JhbFNldHRpbmdzID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKS5leHRyYXMuc3RhdGUgJiYgdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKS5leHRyYXMuc3RhdGUuZXhwYW5kUGFuZWw7ICAgICAgICBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICBtYWluUGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgcHVibGljIHByZXZBY3RpdmVIZWFkTWVudTtcbiAgcHVibGljIHRvRGlzcGxheUFwcGxpY2F0aW9ucyA9IFtdO1xuICBwdWJsaWMgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51OiBhbnlbXTtcbiAgcHVibGljIGVycm9yTXNnOnN0cmluZztcblxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXSl7XG4gICAgICBsZXQgdXNlclJvbGUgPSB0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlO1xuICAgICAgdGhpcy5pc0FkbWluUm9sZSA9IHRoaXMuYWRtaW5Sb2xlcy5pbmRleE9mKHVzZXJSb2xlKSA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNhbGN1bGF0ZUxlZnRuYXZTdGF0dXMoKTtcbiAgICAvLyBjb25zdCBjb25maWdzID0gdGhpcy5yb3V0ZXIuY29uZmlnO1xuICAgIC8vIGZvcihsZXQgY29uZmlnIG9mIGNvbmZpZ3Mpe1xuICAgIC8vICAgaWYoY29uZmlnLmNoaWxkcmVuKXtcbiAgICAvLyAgICAgZm9yKGxldCBjaGlsZCBvZiBjb25maWcuY2hpbGRyZW4pe1xuICAgIC8vICAgICAgIGNoaWxkLmNhbkFjdGl2YXRlID0gW0NhbkxvYWRHdWFyZF1cbiAgICAvLyAgICAgfVxuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICAvLyB0aGlzLnJvdXRlci5yZXNldENvbmZpZyhjb25maWdzKTtcbiAgICB0aGlzLmNoZWNrQXBwbGljYXRpb25EZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUxlZnRuYXZTdGF0dXMoKXtcbiAgICBpZih0aGlzLnNpZGVuYXYgJiYgdGhpcy5zaWRlbmF2Lm9wZW5lZENoYW5nZSl7XG4gICAgICBsZXQgc3RhdHVzICAgICAgICAgID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnbGVmdE5hdk9wZW5TdGF0dXMnKTtcbiAgICAgIHRoaXMubmF2Q29sbGFwc2VkICAgPSBzdGF0dXMgJiYgc3RhdHVzID09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbmVkID0gc3RhdHVzICYmIHN0YXR1cyA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAgICAgdGhpcy5zaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uID0gdGhpcy5zaWRlbmF2Lm9wZW5lZENoYW5nZS5zdWJzY3JpYmUoKHN0YXR1cyk9PntcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnbGVmdE5hdk9wZW5TdGF0dXMnLEpTT04uc3RyaW5naWZ5KHN0YXR1cykpO1xuICAgICAgICB0aGlzLm5hdkNvbGxhcHNlZCAgID0gc3RhdHVzO1xuICAgICAgICB0aGlzLnNpZGVuYXYub3BlbmVkID0gc3RhdHVzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljICBjaGVja0FwcGxpY2F0aW9uRGV0YWlscyhhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgICB0aGlzLmVycm9yTXNnID0gJyc7XG4gICAgaWYoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQgIT0gJ2Fkc19hbWF6b25fZHNwJyl7XG4gICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVBcHBEZXRhaWxzKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscyl7XG4gICAgdGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2lkZUJhcih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgLy8gaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQpe1xuICAgIC8vICAgdGhpcy5nZXRBY3RpdmVSZWNvQ291bnQodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVOYXZpZ2F0aW9uU2lkZUJhcihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldGpzb25NZW51bGlzdHMoYXBwbGljYXRpb25EZXRhaWxzKS5zdWJzY3JpYmUoKG1lbnVsaXN0czogYW55KSA9PiB7XG4gICAgICAvLyBsZXQgbWVudWxpc3RzID0gR0xPQkFMX0xJU1RcbiAgICAgIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zID0gdGhpcy5uYXZpZ2F0aW9uLmdldE1lbnVMaXN0KGFwcGxpY2F0aW9uRGV0YWlscywgbWVudWxpc3RzKTtcbiAgICAgIHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51ID0gdGhpcy5uYXZpZ2F0aW9uLmdldEdsb2JhbFNldHRpbmdzTWVudShhcHBsaWNhdGlvbkRldGFpbHMsIG1lbnVsaXN0cyk7XG4gICAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seShhcHBsaWNhdGlvbkRldGFpbHMsIGZhbHNlKTtcbiAgICAgIHRoaXMuZXhwYW5kQ2hpbGRNZW51T25seSh0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSk7XG4gICAgICB0aGlzLmNoZWNrRm9yUmVkaXJlY3Rpb24odGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMsdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUsYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zICwgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpO1xuICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1lbnUoKTtcbiAgICAgIHRoaXMuc2V0TWVudUxpc3QoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQsdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMpO1xuICAgICAgdGhpcy5pbkNvbnRleHRJbnNpZ2h0c1dMQXBwID0gdGhpcy5oaWRlTWVudUZvcldMKCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVudUxpc3QoYXBwSWQsbWVudUxpc3Qpe1xuICAgIHZhciBhcHBEZXRhaWxzOmFueSA9IG5ldyBPYmplY3QoKTtcbiAgICBhcHBEZXRhaWxzLmFwcGljYXRpb25JZCA9IGFwcElkO1xuICAgIGFwcERldGFpbHMubWVudUxpc3QgPSBtZW51TGlzdC5maW5kKChtZW51KT0+eyByZXR1cm4gbWVudS5pZCA9PSBhcHBJZH0pXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcERldGFpbHMnLEpTT04uc3RyaW5naWZ5KGFwcERldGFpbHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBtZW51Q2xpY2tlZChvYmo6IGFueSkge1xuICAgIHRoaXMuZXhwYW5kQ3VycmVudE1lbnVPbmx5KHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLCB0cnVlKTtcbiAgICB0aGlzLmV4cGFuZENoaWxkTWVudU9ubHkodGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpO1xuICAgIGlmKG9iaikge1xuICAgICAgdGhpcy5hY3RpdmVQYW5lbCA9IG9iai5hY3RpdmVQYW5lbDtcbiAgICB9XG4gIH1cbiAgXG4gIHB1YmxpYyBleHBhbmRDaGlsZE1lbnVPbmx5KHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSkge1xuICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAvLyB0aGlzLmlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAgIGxldCByb3V0ZVVybCA9IHVybEFycmF5W3VybEFycmF5Lmxlbmd0aCAtIDFdO1xuICAgICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgIGlmKHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSAmJiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUubGVuZ3RoKSB7XG4gICAgICAgICAgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gICAgICAgIGlmKHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5jaGlsZHJlbiAmJiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0uY2hpbGRyZW4ubGVuZ3RoKXtcbiAgICAgICAgICBmb3IobGV0IG1lbnUgb2YgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLmNoaWxkcmVuKXtcbiAgICAgICAgICAgIGlmKG1lbnUucm91dGU9PWN1cnJlbnRSb3V0ZSl7XG4gICAgICAgICAgICAgIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgIC8vIHRoaXMuaXNHbG9iYWxTZXR0aW5nc01lbnVBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxMDApXG4gICBcbiAgfVxuXG4gIHB1YmxpYyBleHBhbmRDdXJyZW50TWVudU9ubHkoYXBwbGljYXRpb25EZXRhaWxzLCBvbk1lbnVDbGlja2VkKSB7XG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucykge1xuICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB9XG4gICAgXG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucykge1xuICAgICAgICBpZihoZWFkTWVudS5pZCA9PSBhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgfSBlbHNlIGlmKGhlYWRNZW51LmlkLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID4gLTEpIHtcbiAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYoKGhlYWRNZW51LmlkPT0gXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgfHwgaGVhZE1lbnUuaWQ9PSBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIikgJiYgdXJsQXJyYXkubGVuZ3RoID4yKXtcbiAgICAgICAgICAgIHVybEFycmF5PSB1cmxBcnJheS5zbGljZSh1cmxBcnJheS5sZW5ndGgtMik7XG4gICAgICAgICAgICByb3V0ZVVybD0gdXJsQXJyYXkuam9pbignLycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fY29udGVudF9jb250ZW50X2FuYWx5dGljc1wiICYmIHRoaXMubmF2aWdhdGlvbi5jb250ZW50QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSApIHtcbiAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgIH0gZWxzZSBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fY29udGVudF9zaGFyZV9vZl92b2ljZVwiICYmIHRoaXMubmF2aWdhdGlvbi5zb3ZBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xKSB7XG4gICAgICAgICAgICAgIGlmKChjdXJyZW50Um91dGUgIT0gJ3Byb2R1Y3QtbWV0YS1kYXRhJyAmJiBjdXJyZW50Um91dGUgIT0gJ2JyYW5kLXRlcm1zLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2xhYmVscy1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMtbWFwcGluZycgJiYgY3VycmVudFJvdXRlICE9ICdzb3Ytc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnY29udGVudC1zZXR0aW5ncycpIHx8ICF0aGlzLmN1cnJlbnRBcHAgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1NoYXJlIE9mIFZvaWNlJykge1xuICAgICAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICAgICAgICBpZihvbk1lbnVDbGlja2VkIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdTaGFyZSBPZiBWb2ljZScpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnNlbGxlckFuYWx5dGljc0FwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpe1xuICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnZlbmRvckFuYWx5dGljc0FwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpIHtcbiAgICAgICAgICAgIGlmKChjdXJyZW50Um91dGUgIT0gJ3Byb2R1Y3QtbWV0YS1kYXRhJyAmJiBjdXJyZW50Um91dGUgIT0gJ2JyYW5kLXRlcm1zLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2xhYmVscy1zZXR0aW5ncycgICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzLW1hcHBpbmcnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc292LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2NvbnRlbnQtc2V0dGluZ3MnKSB8fCAhdGhpcy5jdXJyZW50QXBwIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdWZW5kb3IgQW5hbHl0aWNzJykge1xuICAgICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgICAgICBpZihvbk1lbnVDbGlja2VkIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdWZW5kb3IgQW5hbHl0aWNzJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gIGlmKGhlYWRNZW51LmNoaWxkcmVuKXtcbiAgICAgICAgLy8gICAgaGVhZE1lbnUuY2hpbGRyZW4uZm9yRWFjaChtZW51ID0+IHtcbiAgICAgICAgLy8gICAgICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LnR5cGUgPT0gXCJleHBhbmRhYmxlXCIpIHtcbiAgICAgICAgLy8gICAgICAgIGhlYWRNZW51LmNoaWxkcmVuLmZvckVhY2goc3VibWVudSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYodGhpcy5pc0NoZWNrQWN0aXZlUm91dGUoc3VibWVudS5yb3V0ZSxoZWFkTWVudSkpe1xuICAgICAgICAvLyAgICAgICAgICAgIG1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAvLyAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcblxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgIH0pXG4gICAgICAgIC8vICAgICAgfVxuICAgICAgICAvLyAgICB9KTtcbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gIHB1YmxpYyBnZXRUb29sdGlwSW5mbyhoZWFkbWVudSl7XG4gICAgaWYodGhpcy5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5vcGVuZWQpe1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfWVsc2V7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSl7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VsZWN0ZWRBcHBsaWNhdGlvbih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscywgaGVhZG1lbnUpO1xuICB9XG4gIGdldCBzaWRlSWRJbmZvKCl7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKXtcbiAgICAgIHJldHVybiBOdW1iZXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKVxuICAgIH1lbHNlIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSl7XG4gICAgICByZXR1cm4gTnVtYmVyKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSlcbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuXG4gIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcE1lbnVzLCBnc01lbnVzLCBhcHBsaWNhdGlvbkRldGFpbHMpIHtcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCBjdXJyZW50QXBwTWVudXMgPSBhcHBNZW51cy5maW5kKGFwcCA9PiAgYXBwLmlkLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDApO1xuXG4gICAgaWYgKGN1cnJlbnRBcHBNZW51cykge1xuICAgICAgY29uc3QgYWxsTWVudXMgPSBbY3VycmVudEFwcE1lbnVzLCAuLi5nc01lbnVzXTtcbiAgICAgIGNvbnN0IGlzTWVudUF2YWlsYWJsZSA9IGZpbmRMaW5rKGFsbE1lbnVzKTtcbiAgICAgIGlmICghaXNNZW51QXZhaWxhYmxlKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUoY3VycmVudEFwcE1lbnVzLmRlZmF1bHR1cmwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb24uZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zWzBdLmRlZmF1bHR1cmwpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gaXNNZW51Um91dGVNYXRjaChsaW5rKSB7XG4gICAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSBgLyR7bGlua31gO1xuICAgIH0gXG5cbiAgICBmdW5jdGlvbiBmaW5kTGluayhtZW51QXJyYXkpIHtcbiAgICAgIHJldHVybiBtZW51QXJyYXkuc29tZShmdW5jdGlvbihtZW51KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIG1lbnUgaGFzIGNoaWxkcmVuLCBzZWFyY2ggcmVjdXJzaXZlbHlcbiAgICAgICAgICBpZiAobWVudS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICByZXR1cm4gZmluZExpbmsobWVudS5jaGlsZHJlbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgbWVudSBpdGVtIGhhcyBhIG1hdGNoaW5nIGxpbmtcbiAgICAgICAgICBpZiAoaXNNZW51Um91dGVNYXRjaChtZW51LnJvdXRlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hpbGQgcm91dGVzLCBzZWFyY2ggd2l0aGluIHRoZW1cbiAgICAgICAgICBpZiAobWVudS5jaGlsZF9yb3V0ZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1lbnUuY2hpbGRfcm91dGVzLnNvbWUoZnVuY3Rpb24oY2hpbGRSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTWVudVJvdXRlTWF0Y2goY2hpbGRSb3V0ZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG4gIH1cblxuXG5cblxuXG4gIC8vIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gIC8vICAgdHJ5e1xuICAvLyAgICAgbGV0IGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudVZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2sgPXRydWU7XG4gIC8vICAgICBsZXQgaXNyZWRpcmVjdGVkID0gZmFsc2U7XG4gIC8vICAgICBsZXQgYXBwbGljYXRpb25JZExpc3QgPSBbXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgLCBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIl1cblxuICAvLyAgICAgbGV0IG1lbnVsaXN0ID0gYXBwbGljYXRpb25JZExpc3QuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPiAtMSAmJiBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzICYmIGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMubGVuZ3RoID4gMCA/IGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMgOiBtZW51bGlzdHM7XG5cbiAgLy8gICAgIGNvbnN0IHJvbGUgPSBbJ1NVUEVSX0FETUlOJywgJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuICAvLyAgICAgaWYgKHJvbGUuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMudXNlckluZm8ucm9sZSkgPT0gLTEpIHtcbiAgICAgICAgXG4gIC8vICAgICAgIGxldCBhcHBsaWNhdGlvbk1lbnVlcyA9IG1lbnVsaXN0ICYmIG1lbnVsaXN0Lmxlbmd0aCA+IDAgJiYgbWVudWxpc3QuZmluZCgobWVudXMpPT57XG4gIC8vICAgICAgICAgcmV0dXJuIG1lbnVzLmlkID09IGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXG4gIC8vICAgICAgIH0pXG5cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLm9yZ2FuaXphdGlvbl9zZXR0aW5nX25vdF9pbikge1xuICAvLyAgICAgICAgIGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhhcHBsaWNhdGlvbk1lbnVlcy5vcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4pO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXMpIHtcbiAgLy8gICAgICAgICBpc01lbnVWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yUm9sZXMoYXBwbGljYXRpb25NZW51ZXMudmlzaWJpbGl0eV9yb2xlcyk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXNfbm90X2luKSB7XG4gIC8vICAgICAgICAgaXNNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXNfbm90X2luKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5hcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrKSB7XG4gIC8vICAgICAgICAgaXNNZW51Tm90VmlzaWJsZUJ5YXBwc3BhY2lmaWNjb25maWdjaGVjayA9IHRoaXMubmF2aWdhdGlvbi5hcHBTcGVjaWZpY0NvbmZpZyhhcHBsaWNhdGlvbk1lbnVlcy5hcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5vcmdfdXNlcl9jdHJsKSB7XG4gIC8vICAgICAgICAgaXNNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0Zvck9yZ1dpdGhVc2VyUm9sZShhcHBsaWNhdGlvbk1lbnVlcy5vcmdfdXNlcl9jdHJsLGFwcGxpY2F0aW9uTWVudWVzLCBhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLmlkID09IFwiYW1jLXBsYXRmb3JtLXdlYlwiICYmIGFwcGxpY2F0aW9uTWVudWVzLmNoaWxkcmVuKSB7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSA9IHRydWU7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRydWU7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRydWU7XG5cbiAgLy8gICAgICAgICBjb25zdCBjaGlsZG1lbnUgPSB0aGlzLnZhbGlkYXRlUm91dGVCeVN0YXRlKCB0aGlzLnJvdXRlciAsIGFwcGxpY2F0aW9uTWVudWVzLmNoaWxkcmVuKTtcblxuICAvLyAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXNfbm90X2luKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudU5vdFZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlc19ub3RfaW4pO1xuICAvLyAgICAgICAgIH1cblxuICAvLyAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXMpIHtcbiAgLy8gICAgICAgICAgIGlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvclJvbGVzKGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzKTtcbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS5vcmdfdXNlcl9jdHJsKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JPcmdXaXRoVXNlclJvbGUoY2hpbGRtZW51Lm9yZ191c2VyX2N0cmwsY2hpbGRtZW51LCBhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgaWYgKCghaXNDaGlsZE1lbnVOb3RWaXNpYmxlQnlSb2xlIHx8ICFpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgfHwgIWlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSkgJiYgY2hpbGRtZW51KSB7XG4gIC8vICAgICAgICAgICBpc3JlZGlyZWN0ZWQgPSB0cnVlO1xuICAvLyAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL1wiXSk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGlmICgoIWlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgfHwgIWlzTWVudVZpc2libGVCeVJvbGUgfHwgIWlzTWVudU5vdFZpc2libGVCeVJvbGUgfHwgIWlzTWVudXJPcmdXaXRoVXNlclJvbGUgfHwgIWlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2spICYmICFpc3JlZGlyZWN0ZWQpIHtcbiAgLy8gICAgICAgICBpZiAoIXRoaXMuY3VycmVudEFwcCkge1xuICAvLyAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZSh0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9uc1swXS5kZWZhdWx0dXJsKTsgIFxuICAvLyAgICAgICAgIH1lbHNle1xuICAvLyAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShhcHBsaWNhdGlvbk1lbnVlcy5kZWZhdWx0dXJsKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9Y2F0Y2goZXJyb3Ipe1xuICAvLyAgICAgICB0aHJvdyBlcnJvcjtcbiAgLy8gICB9XG4gIC8vIH1cblxuICB2YWxpZGF0ZVJvdXRlQnlTdGF0ZShzdGF0ZSAsIGxpc3RNZW51cyl7XG4gICAgdHJ5e1xuICAgICAgICBjb25zdCBmaW5kUm91dGUgPSBsaXN0TWVudXMuZmluZChsaXN0ID0+IHtcbiAgICAgICAgICAgIGlmKGxpc3QubGluayA9PSAnYW1jJytzdGF0ZS51cmwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZihsaXN0Lm1hdGNoUm91dGVzICYmIGxpc3QubWF0Y2hSb3V0ZXMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgaWYobGlzdC5tYXRjaFJvdXRlcy5pbmNsdWRlcyhzdGF0ZS51cmwpKXtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmluZFJvdXRlO1xuICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cbiAgXG4gIC8vIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscykge1xuICAvLyAgIGxldCByb3V0ZSA9ICcnO1xuICAvLyAgIGlmKGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiAhKHRoaXMubmF2aWdhdGlvbi5pc0hhdmluZ0FueUFjdGl2ZVN1YnMoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQsYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnN1YnNjcmlwdGlvbixhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQudHlwZSkpKXtcbiAgLy8gICAgIHN3aXRjaChhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQudHlwZSl7XG4gIC8vICAgICAgIGNhc2UgJ0NPTlRFTlQnOiB7XG4gIC8vICAgICAgICAgICByb3V0ZSA9ICdjb250ZW50L3NoYXJlLW9mLXZvaWNlJ1xuICAvLyAgICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnRFNQJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2RzcC9vcmRlcidcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdBTVNfQVRUUklCVVRJT04nOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnYXR0cmlidXRpb24vYXR0cmlidXRpb24tY2FtcGFpZ25zJ1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1NFTExFUl9DRU5UUkFMJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1jb250ZW50LWRhc2hib2FyZC9zZWxsZXItc2FsZXMtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1ZFTkRPUl9DRU5UUkFMJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1jb250ZW50LWRhc2hib2FyZC9jdXN0b20tcmVwb3J0cy12ZW5kb3Itc2FsZXMtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0lOU1RBQ0FSVCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdpbnN0YWNhcnQvaW5zdGFjYXJ0LW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdDUklURU8nOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnY3JpdGVvL2NyaXRlby1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnV0FMTUFSVCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICd3YWxtYXJ0Lyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQU1BWk9OX01BUktFVElOR19DTE9VRCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdkcC9kYXRhLWFuYWx5dGljcy1nZXR0aW5nLXN0YXJ0ZWQnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0FNU19WRU5ET1InOlxuICAvLyAgICAgICBjYXNlICdBTVNfU0VMTEVSJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1wYWdlLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfVxuICAvLyAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShyb3V0ZSk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0cnVjdHVyZUFQSVN1cHBvcnREYXRhKGN1cnJlbnRBY2NvdW50KXtcbiAgICB0cnkge1xuICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGEoY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQsY3VycmVudEFjY291bnQuYnVzaW5lc3NHcm91cElkLGN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCkuc3Vic2NyaWJlKCBcbiAgICAgIChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmlzU3RydWN0dXJlQXBpU3VwcG9ydCA9IHJlc3BvbnNlID8gcmVzcG9uc2VbJ3N0cnVjdHVyZUFwaVN1cHBvcnQnXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmlzTWFuYWdlZFNlcnZpY2VBY2MgPSByZXNwb25zZSA/IHJlc3BvbnNlWydpc01hbmFnZWRBY2NvdW50J10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3JlYXRlQXBwRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOmFueSkgPT57XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc1N0cnVjdHVyZUFwaVN1cHBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc01hbmFnZWRTZXJ2aWNlQWNjID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICB9XG4gIFxuICBwdWJsaWMgc2Nyb2xsVG9BY3RpdmVNZW51KCl7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZih0aGlzLmxpc3RJdGVtcyAmJiB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pICE9IHVuZGVmaW5lZCl7XG4gICAgICAgIHRoaXMubGlzdC5zY3JvbGxUb3AgPSB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pLm9mZnNldFRvcDtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHVibGljIGlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51LHBhcmVudE1lbnUgPSBudWxsKSB7XG4gICAgLy8gbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgLy8gbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgLy8gbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgLy8gbGV0IHJvdXRlPW1lbnUucm91dGU7XG4gICAgLy8gbGV0IHBhZ2VOYW1lO1xuICAgIC8vIGlmKHJvdXRlKXtcbiAgICAvLyBsZXQgc3BsaXRlZFVSTCA9IHJvdXRlLnNwbGl0KFwiL1wiKTtcbiAgICAvLyBwYWdlTmFtZSA9IHNwbGl0ZWRVUkwubGVuZ3RoID4wID8gIHNwbGl0ZWRVUkxbc3BsaXRlZFVSTC5sZW5ndGggLSAxXSA6IHJvdXRlO1xuICAgIC8vIH1cblxuICAgIGxldCByb3V0ZVVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICBsZXQgcm91dGU9bWVudS5yb3V0ZTtcbiAgICBsZXQgcGFnZU5hbWU7XG4gICAgaWYocm91dGUpe1xuICAgICAgcGFnZU5hbWUgPSByb3V0ZTtcbiAgICB9XG5cbiAgICBpZiAoKGN1cnJlbnRSb3V0ZSA9PT0gXCIvXCIrcGFnZU5hbWUgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXJlcG9ydFwiIHx8IGN1cnJlbnRSb3V0ZSA9PT0gXCIvXCIrcGFnZU5hbWUrXCIva2V5d29yZC1zdWdnZXN0aW9ucy9hdXRvXCIgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXN1Z2dlc3Rpb25zL21hbnVhbFwiKSAmJiBoZWFkbWVudSE9dW5kZWZpbmVkKSB7XG4gICAgICBpZih0aGlzLnByZXZBY3RpdmVIZWFkTWVudT09PSB1bmRlZmluZWQpe1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcbiAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudS5pc0FjdGl2ZT1mYWxzZTtcbiAgICAgICAgaGVhZG1lbnUuaXNBY3RpdmU9dHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2QWN0aXZlSGVhZE1lbnU9aGVhZG1lbnU7XG4gICAgICB9XG4gICAgICBpZihwYXJlbnRNZW51ICE9IG51bGwpe1xuICAgICAgICB0aGlzLmFjdGl2ZVBhbmVsID0gcGFyZW50TWVudS5pZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1lbHNlIGlmKG1lbnUgJiYgbWVudS5tYXRjaFJvdXRlcyAmJiB0aGlzLnJvdXRlci51cmwpe1xuICAgICAgaWYgKG1lbnUubWF0Y2hSb3V0ZXMuaW5kZXhPZih0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXSkgPiAtMSkge1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcblxuICAgICAgICBpZihwYXJlbnRNZW51ICE9IG51bGwpe1xuICAgICAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBwYXJlbnRNZW51LmlkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBrZWVwTWVudUV4cGFuZGVkKHBhcmVudE1lbnVJZDpzdHJpbmcpIHtcbiAgICBpZihwYXJlbnRNZW51SWQuaW5kZXhPZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+PSAwICApe1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFsbE1lbnVDb2xsYXBzZSgpe1xuICAgIGZvcihsZXQgaGVhZE1lbnUgb2YgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpIHtcbiAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW9kZmljYXRpb25EYXRhKGRhdGE6IGFueSk6IGFueSB7XG4gICAgbGV0IGNvbmZpZ3MgPSB0aGlzLm5hdmlnYXRpb24uZ2V0VHlwZVN0YXR1c0NvbmZpZ3MoKTtcblx0XHRsZXQgb3JkZXIgPSBPYmplY3Qua2V5cyhjb25maWdzKTtcblx0XHRpZihvcmRlci5pbmRleE9mKGRhdGEudHlwZSkgPiAtMSl7XG5cdFx0XHRkYXRhLmFjdGl2ZSA9IGNvbmZpZ3NbZGF0YS50eXBlXSA/IGNvbmZpZ3NbZGF0YS50eXBlXSA6IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gZGF0YTtcblx0fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIHRoaXMuc2hvd01lbnVJY29uKCk7XG4gICAgdGhpcy5jaGVja0FwcGxpY2F0aW9uRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCA9PSAnYWRzX2FtYXpvbl9kc3AnICYmICF0aGlzLlJlc3RBcGlTZXJ2aWNlLmlzU3RydWN0ZXJBcGlDYWxsZWQpe1xuICAgICAgdGhpcy5nZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgfVxuXG4gIH1cblxuICBwdWJsaWMgZ29Ub0FwcGxpY2F0aW9uKGl0ZW0pIHtcbiAgICBpZihpdGVtLmRlZmF1bHR1cmwpe1xuICAgICAgdGhpcy5nb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgaXRlbS5pZCk7XG4gICAgfWVsc2V7XG4gICAgICBpZihpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBpZihpdGVtLmNoaWxkcmVuWzBdLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0sIGl0ZW0uaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0uY2hpbGRyZW5bMF0sIGl0ZW0uaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdvVG9BcHBEZWZhdWx0UGFnZShpdGVtLCBpdGVtLmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYodGhpcy5zaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uKXtcbiAgICAgIHRoaXMuc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgYXBwSWQpIHtcbiAgICB0aGlzLm5hdk1lbnVzQ29tcG9uZW50Lm9uU2VsZWN0TWVudShldmVudCwgaXRlbSwgYXBwSWQpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51Rm9yV0woKXtcbiAgICAgIGxldCBpc09yZ1NldHRpbmc7XG4gICAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlID09PSAnSUFDX0JSQU5EX1JFQURfT05MWScgfHwgKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzLmxlbmd0aCA9PSAwKSl7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXNPcmdTZXR0aW5nID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMub3JnU2V0dGluZ3MuZmlsdGVyKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuICAgICAgICAgICAgaWYoIG9yZ1NldHRpbmcuc2V0dGluZyA9PT0gJ0lBQ19JTlNJR0hUUycgJiYgKCFvcmdTZXR0aW5nLnZhbHVlIHx8IG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnQUNUSVZFJykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChpc09yZ1NldHRpbmcgIT0gbnVsbCAmJiAoIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCA+IDExIHx8IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWyd1c2VySW5mbyddLnJvbGUgPT09ICdJQUNfQlJBTkRfUkVBRF9PTkxZJykpO1xuICAgICAgfVxuICB9XG5cbiAgLy8gcHVibGljIGlzQXBwbGljYXRpb25BY3RpdmUocGFyZW50TWVudUlkKSB7XG4gIC8vICAgaWYocGFyZW50TWVudUlkLmluZGV4T2YodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPj0gMCAgJiYgdGhpcy5pc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZSl7XG4gIC8vICAgICByZXR1cm4gdHJ1ZTtcbiAgLy8gICB9XG4gIC8vICAgZWxzZXtcbiAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBcbn1cbiIsIjxkaXYgaWQ9XCJsb2FkZXJfc292XCI+XG4gIDxkaXYgaWQ9XCJsb2FkaW5nX2RpdlwiICpuZ0lmPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mb1wiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGlkPVwibG9hZGVyXCIgKm5nSWY9XCJzaWRlSWRJbmZvICE9PSAxXCJcbiAgICAgICAgY2xhc3M9XCJzaXRlX3t7c2lkZUlkSW5mb319XCI+XG4gICAgICAgIDxpbWcgc3JjPVwie3thcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5sb2dvfX1cIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBpZD1cImxvYWRlcl9pbWdcIiAqbmdJZj1cInNpZGVJZEluZm8gPT0gMVwiPlxuICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2hhcHB5X2V5ZXNfY2xvc2VkX3NtYWxsLnN2Z1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciBjbGFzcz1cImxvYWRlcl9wcm9ncmVzcy1iYXItcG9zaXRpb25cIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGwgKm5nSWY9XCJlcnJvck1zZy5sZW5ndGggPT0gMCBlbHNlIGVycm9yQmxvY2tcIiB0cmFuc2xhdGU9XCJub1wiIGlkPVwiYW5ndWxhci0xNi12ZXJzaW9uXCI+XG4gIDxtYXQtdG9vbGJhciBjbGFzcz1cInBvcnRhbC1zaWRlLW1lbnUtdG9wLXRvb2xiYXJcIj5cbiAgICA8bWF0LXRvb2xiYXItcm93IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicG9ydGFsLWZvcmdldC1oZWFkaW5nLWNhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVtZW51LWxvZ28taG9sZGVyXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNpZGVJZEluZm8gIT09IDFcIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZhdmljb25cIiBzdHlsZT1cIndpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICpuZ0lmPVwiIW5hdkNvbGxhcHNlZFwiIFthbHRdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmlyc3ROYW1lXCIgY2xhc3M9XCJmYXZpY29uLWRpbWVuc2lvblwiIC8+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5sb2dvXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgICpuZ0lmPVwibmF2Q29sbGFwc2VkXCIgY2xhc3M9XCJsb2dvLWRpbWVuc2lvblwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNpZGVJZEluZm8gPT0gMVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9pbnRlbnR3aXNlbG9nby5zdmdcIiBzdHlsZT1cIndpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICpuZ0lmPVwiIW5hdkNvbGxhcHNlZFwiIFthbHRdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmlyc3ROYW1lXCIgY2xhc3M9XCJmYXZpY29uLWRpbWVuc2lvbiBpbnRlbnR3aXNlLWZhdmljb25cIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvbG9nb3MvSW50ZW50d2lzZS5zdmdcIiAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCJuYXZDb2xsYXBzZWRcIiBbYWx0XT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZpcnN0TmFtZVwiIGNsYXNzPVwibG9nby1kaW1lbnNpb24gaW50ZW50d2lzZS1sb2dvXCI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdG9vbGJhci1yb3c+XG4gIDwvbWF0LXRvb2xiYXI+XG4gIDwhLS0gPGRpdiBjbGFzcz1cInNpZGViYXItY29sbGFwc2UtaWNvblwiICpuZ0lmPVwiaXNBZG1pblJvbGVcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwic2lkZW1lbnUtaWNvbi10b3BcIiAoY2xpY2spPVwiYWxsTWVudUNvbGxhcHNlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkXCI+a2V5Ym9hcmRfYXJyb3dfdXA8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgPGRpdiAqbmdJZj1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgJiYgIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIiBjbGFzcz1cImFwcC1tZW51LWNvbnRhaW5lclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtbWVudS1idXR0b25cIiAqbmdJZj1cInRvRGlzcGxheUFwcGxpY2F0aW9ucyAmJiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMubGVuZ3RoID09IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWVcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY3VycmVudEFwcD8ubmFtZVwiIGNsYXNzPVwic2lkZU5hdkljb24ge3tjdXJyZW50QXBwPy5uYW1lLnNwbGl0KCcgJykuam9pbignJyl9fVwiPjwvbWF0LWljb24+XG4gICAgICAgIDxsYWJlbCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtNHB4O1wiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihjdXJyZW50QXBwKVwiPjwvbGFiZWw+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY3VycmVudEFwcD8uYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIj57e2N1cnJlbnRBcHAuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYXBwLW1lbnUtYnV0dG9uXCIgW21hdC1tZW51LXRyaWdnZXItZm9yXT1cImFwcE1lbnVcIiAqbmdJZj1cInRvRGlzcGxheUFwcGxpY2F0aW9ucyAmJiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMubGVuZ3RoID4gMVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbmFtZVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjdXJyZW50QXBwPy5uYW1lXCIgY2xhc3M9XCJzaWRlTmF2SWNvbiB7e2N1cnJlbnRBcHA/Lm5hbWUuc3BsaXQoJyAnKS5qb2luKCcnKX19XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjYXBwTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImFwcC1tZW51XCIgW2JhY2tkcm9wQ2xhc3NdPVwiJ2FsbC1tb2R1bGUtbWVudXMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkbWVudSBvZiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbnUtb3B0aW9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZ29Ub0FwcGxpY2F0aW9uKGhlYWRtZW51KVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaGVhZG1lbnUucGFuZWxPcGVuU3RhdGV9XCIgY2xhc3M9XCJ7e2hlYWRtZW51LmlkfX1faWNvblwiICpuZ0lmPVwiaGVhZG1lbnUubmFtZSAhPSAnQWNjb3VudCBNYW5hZ2VtZW50J1wiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2lkZU5hdkljb24gY2hpbGRyZW4taWNvblwiIFtuZ0NsYXNzXT1cImhlYWRtZW51Lm5hbWUuc3BsaXQoJyAnKS5qb2luKCcnKVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZG1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIiBbaW5uZXJIVE1MXT1cImhlYWRtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW1lbnU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicG9ydGFsLXNpZG5hdi1tZW51XCIgZnhGbGV4PVwibm9ncm93IG5vc2hyaW5rXCIgYXBwU2Nyb2xsYWJsZSBbbmdDbGFzc109XCJ7J3doaXRlTGFiZWxTaWRlbmF2JyA6IGluQ29udGV4dEluc2lnaHRzV0xBcHB9XCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlID09IHRydWVcIiBoaWRlVG9nZ2xlPVwidHJ1ZVwiXG4gICAgICAqbmdGb3I9XCJsZXQgaGVhZG1lbnUgb2YgdG9EaXNwbGF5QXBwbGljYXRpb25zXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBoZWFkbWVudS5pc0FjdGl2ZSB9XCJcbiAgICAgIChvcGVuZWQpPVwiaGVhZG1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oaGVhZG1lbnUpfX1cIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCJcbiAgICAgICAgKm5nSWY9XCJoZWFkbWVudS50eXBlID09ICdleHBhbmRhYmxlJyBlbHNlIHNpbmdsZU1lbnVzXCIgY2xhc3M9XCJtYWluLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub0FwcGxpY2F0aW9uKGhlYWRtZW51KVwiPlxuICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3toZWFkbWVudS5pZH19X2ljb25cIj48L3NwYW4+XG4gICAgICAgICAgPGgzIGNsYXNzPVwic2lkZW1lbnUtaGVhZGluZyBhcHBsaWNhdGlvbk1lbnVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBbaW5uZXJIVE1MXT1cInNlbGVjdGVkQXBwbGljYXRpb24oaGVhZG1lbnUpXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZG1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIiBbaW5uZXJIVE1MXT1cImhlYWRtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgIDwvaDM+XG4gICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhaGVhZG1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPG1hdC1saXN0IGNsYXNzPVwicGFkZGluZy0wcHhcIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBoZWFkbWVudS5jaGlsZHJlblwiIFthdHRyLmlkXT1cImhlYWRtZW51LmlkXCIgW25nQ2xhc3NdPVwieydncm91cC1uYXYtbWVudSc6IG1lbnUuY2hpbGRyZW4gfVwiPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cIm1lbnUuY2hpbGRyZW4gZWxzZSBsaXN0TWVudVwiIGNsYXNzPVwiZGl2LWJhY2tncm91bmQtY29sb3Itd2hpdGVcIiBbZXhwYW5kZWRdPVwibWVudS5pZCA9PSBhY3RpdmVQYW5lbFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmVQYW5lbCc6IG1lbnUuaWQgPT0gYWN0aXZlUGFuZWwgLCAnd2hpdGVMYWJlbEFjdGl2ZScgOiBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwfVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAob3BlbmVkKT1cIm1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJtZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGVhZGVyLWJvcmRlcic6IG1lbnUucGFuZWxPcGVuU3RhdGUgPT09IHRydWUsICdoZWFkZXItYm9yZGVyLW5vbmUnOiBtZW51LnBhbmVsT3BlblN0YXRlID09PSBmYWxzZSB9XCI+XG4gICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7bWVudS5pZH19X2ljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIiAqbmdJZj1cIihtZW51Lmljb24gJiYgbWVudS5pY29uICE9ICcnKSBlbHNlIGRpc3BsYXlJbml0aWFsc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaWRlLW1lbnUtaWNvbiBzaWRlLW1lbnUtaWNvbi1jb2xvclwiIHNyYz1cImFzc2V0cy9zaWRlbWVudS1pY29ucy97e21lbnUuaWNvbn19XCIgLz5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5SW5pdGlhbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVtZW51LXN5bWJvbFwiPlxuICAgICAgICAgICAgICAgICAge3ttZW51LnN5bWJvbH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1lbnUtaGVhZGluZyBhcHBsaWNhdGlvblN1Ym1lbnVzXCI+PHNwYW4gY2xhc3M9XCJtZW51LW5hbWUtZXhwYW5kYWJsZVwiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihtZW51KVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb24gbGV2ZWwtdHdvLWJhZGdlXCJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3ViLWNoZXZyb24taWNvblwiICpuZ0lmPVwiIW1lbnUucGFuZWxPcGVuU3RhdGVcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInN1Yi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIm1lbnUucGFuZWxPcGVuU3RhdGVcIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgPCEtLSA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj4gLS0+XG4gICAgICAgICAgPG1hdC1uYXYtbGlzdCAqbmdGb3I9XCJsZXQgY2hpbGRNZW51IG9mIG1lbnUuY2hpbGRyZW47XCIgY2xhc3M9XCJzdWItY2hpbGQtbWVudVwiPlxuICAgICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKGNoaWxkTWVudSxoZWFkbWVudSxtZW51KVwiIFtpdGVtXT1cImNoaWxkTWVudVwiXG4gICAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJoZWFkbWVudS5pZFwiIFtwYXJlbnRQYW5lbElkXT1cIm1lbnUuaWRcIlxuICAgICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2xpc3RNZW51PlxuICAgICAgICAgIDxtYXQtbmF2LWxpc3Q+XG4gICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUobWVudSxoZWFkbWVudSlcIiBbaXRlbV09XCJtZW51XCJcbiAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCJcbiAgICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC1saXN0PlxuICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVNZW51cz5cbiAgICAgICAgPG1hdC1saXN0PlxuICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIGlkPVwie3toZWFkbWVudS5pZH19XCIgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKGhlYWRtZW51LGhlYWRtZW51KVwiXG4gICAgICAgICAgICBbaXRlbV09XCJoZWFkbWVudVwiIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJoZWFkbWVudS5pZFwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhoZWFkbWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1saXN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicG9ydGFsLWdsb2JhbC1zZXR0aW5nLW1lbnUgc3RpY2t5X2JvdHRvbV9tZW51XCIgKm5nSWY9XCIhaW5Db250ZXh0SW5zaWdodHNXTEFwcFwiPlxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlID09IHRydWUgfHwgZXhwYW5kR2xvYmFsU2V0dGluZ3NcIiBoaWRlVG9nZ2xlPVwidHJ1ZVwiIGlkPVwie3tzZXR0aW5nc0hlYWRNZW51LmlkICsgJ21lbnUnfX1cIlxuICAgICAgKm5nRm9yPVwibGV0IHNldHRpbmdzSGVhZE1lbnUgb2YgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51XCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBzZXR0aW5nc0hlYWRNZW51LmlzQWN0aXZlIH1cIlxuICAgICAgKG9wZW5lZCk9XCJzaWRlbmF2Lm9wZW4oKTsgc2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cInNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTsgZXhwYW5kR2xvYmFsU2V0dGluZ3MgPSBmYWxzZVwiPlxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKHNldHRpbmdzSGVhZE1lbnUpfX1cIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCJcbiAgICAgICAgKm5nSWY9XCJzZXR0aW5nc0hlYWRNZW51LnR5cGUgPT0gJ2V4cGFuZGFibGUnIGVsc2Ugc2luZ2xlTWVudXNcIiBjbGFzcz1cIm1haW4tZXhwYW5zaW9uLXBhbmVsLWhlYWRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgPyAnJyA6ICdzdGlja3ktYm90dG9tLWNsb3NlZCdcIj5cbiAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkc19hY2NvdW50X21nbXRfaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJzaWRlbWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uTWVudVwiPlxuICAgICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihzZXR0aW5nc0hlYWRNZW51KVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzSGVhZE1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNldHRpbmdzSGVhZE1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIiFzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPG1hdC1saXN0IGNsYXNzPVwicGFkZGluZy0wcHhcIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBzZXR0aW5nc0hlYWRNZW51LmNoaWxkcmVuXCIgW2F0dHIuaWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnZ3JvdXAtbmF2LW1lbnUnOiBtZW51LmNoaWxkcmVuIH1cIj5cbiAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUobWVudSxzZXR0aW5nc0hlYWRNZW51KVwiIFtpdGVtXT1cIm1lbnVcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1lbnVzPlxuICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgW2F0dHIuaWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiIGFwcE9mZnNldFRvcFxuICAgICAgICAgICAgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoc2V0dGluZ3NIZWFkTWVudSxzZXR0aW5nc0hlYWRNZW51KVwiIFtpdGVtXT1cInNldHRpbmdzSGVhZE1lbnVcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1saXN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZXJyb3JCbG9jaz5cbiAgPGRpdiBjbGFzcz1cImVycm9yTXNnXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmVycm9yPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiZXJyb3JUeHRcIj57e2Vycm9yTXNnfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGEgY2xhc3M9XCJoYW1idXJnZXItaWNvbiBleHBhbmRlZC1oYW1idXJnZXItaWNvblwiIHRpdGxlPVwiVG9nZ2xlIE1lbnVcIiAoY2xpY2spPVwic2lkZW5hdi5jbG9zZSgpO2FsbE1lbnVDb2xsYXBzZSgpOyBcIj5cbiAgPG1hdC1pY29uIGNsYXNzPVwibGVmdC1jaGV2cm9uLWljb25cIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cbjwvYT5cblxuPCEtLSA8aW1nICpuZ0lmPVwic2hvd01lbnVJY29uKClcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uXCIgc3JjPXt7YXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLmZhdmljb259fSBhbHQ9XCJJbnRlbnR3aXNlIEZhdmljb25cIiAvPlxuICA8YSAqbmdJZj1cInNob3dNZW51SWNvbigpXCIgdGl0bGU9XCJUb2dnbGUgTWVudVwiIGNsYXNzPVwiaGFtYnVyZ2VyLWljb24gY29sbGFwc2VkLWhhbWJ1cmdlclwiXG4gICAgKGNsaWNrKT1cInNpZGVuYXYub3BlbigpXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwicmlnaHQtY2hldnJvbi1pY29uXCI+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICA8L2E+IC0tPiJdfQ==
572
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFlLGVBQWUsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBMkIsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTcEUsTUFBTSxPQUFPLDJCQUEyQjtJQXlCN0I7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUJELGtCQUFrQixDQUFhO0lBRS9CLE9BQU8sQ0FBYTtJQUVLLFNBQVMsQ0FBZ0M7SUFD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QyxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsRUFBRTt3QkFDcEgsT0FBTyxJQUFJLENBQUM7cUJBQ2I7b0JBQUEsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQTthQUNIO1lBQ0QsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLElBQUksQ0FBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7U0FDM0o7SUFDTCxDQUFDOzJIQTFqQlUsMkJBQTJCOytHQUEzQiwyQkFBMkIsOEtBTzNCLG1CQUFtQix3S0FEaEIsa0JBQWtCLHFFQ3pCbEMsZzBZQWlNVTs7NEZEOUtHLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSx3QkFBd0I7K1BBT3pCLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRTRCLFNBQVM7c0JBQTFDLFlBQVk7dUJBQUMsa0JBQWtCO2dCQUNBLElBQUk7c0JBQW5DLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNFLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJFdmVudCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU2lkZWJhclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcGxpY2F0aW9uLXNpZGViYXIuc2VydmljZSdcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IGFwcERldGFpbHMgfSBmcm9tICcuL2FwcC1kZXRhaWxzJ1xuaW1wb3J0IHsgT2Zmc2V0VG9wRGlyZWN0aXZlLCBTY3JvbGxhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9uYXYtbWVudS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmVzdEFwaVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3Jlc3QtYXBpLnNlcnZpY2VzJ1xuaW1wb3J0IHsgTmF2TWVudXNDb21wb25lbnQgfSBmcm9tICcuL25hdi1tZW51cy9uYXYtbWVudXMuY29tcG9uZW50J1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgR0xPQkFMX0xJU1QgfSBmcm9tICcuL25hdm1lbnUxJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbG5jLW5hdmlnYXRpb24tc2lkZWJhcicsXG4gIHRlbXBsYXRlVXJsOicuL2FwcGxpY2F0aW9uLXNpZGViYXIudGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczpbJy4vYXBwbGljYXRpb24tc2lkZWJhci5zY3NzJywnYXBwbGljYXRpb24tc2lkZWJhci50aGVtZS5zY3NzJ10sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBhcHBsaWNhdGlvbkRldGFpbHMgOmFwcERldGFpbHM7XG5cbiAgQElucHV0KCkgc2lkZW5hdjogTWF0U2lkZW5hdjtcblxuICBAVmlld0NoaWxkcmVuKE9mZnNldFRvcERpcmVjdGl2ZSkgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgQFZpZXdDaGlsZChTY3JvbGxhYmxlRGlyZWN0aXZlKSBsaXN0OiBTY3JvbGxhYmxlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCduYXZNZW51c0NvbXBvbmVudCcpIG5hdk1lbnVzQ29tcG9uZW50Ok5hdk1lbnVzQ29tcG9uZW50O1xuXG4gIGFjY291bnROYW1lOiBhbnk7XG4gIGFjdGl2ZVBhbmVsOiBhbnk7XG4gIG5hdkNvbGxhcHNlZDpib29sZWFuID0gZmFsc2U7XG4gIG9sZExpc3RJdGVtczogUXVlcnlMaXN0PE9mZnNldFRvcERpcmVjdGl2ZT47XG4gIGlzQWRtaW5Sb2xlOiBib29sZWFuID0gZmFsc2U7XG4gIGFkbWluUm9sZXMgPSBbJ1NVUEVSX0FETUlOJywnU1VQRVJfQURNSU5fUkVBRF9PTkxZJ107XG4gIGN1cnJlbnRBcHA6IGFueTtcbiAgc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbjogYW55O1xuICBteU9ic2VydmVyOiBhbnk7XG4gIGV4cGFuZEdsb2JhbFNldHRpbmdzOiBhbnkgPSBmYWxzZTtcbiAgaW5Db250ZXh0SW5zaWdodHNXTEFwcDogYm9vbGVhbjtcblxuICAvLyBpc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZTpib29sZWFuID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmF2aWdhdGlvbjogQXBwbGljYXRpb25TaWRlYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgUmVzdEFwaVNlcnZpY2U6IFJlc3RBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29va2llOiBDb29raWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246VHJhbnNsYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICB0aGlzLm15T2JzZXJ2ZXIgPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLmV4cGFuZEdsb2JhbFNldHRpbmdzID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKS5leHRyYXMuc3RhdGUgJiYgdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKS5leHRyYXMuc3RhdGUuZXhwYW5kUGFuZWw7ICAgICAgICBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICBtYWluUGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgcHVibGljIHByZXZBY3RpdmVIZWFkTWVudTtcbiAgcHVibGljIHRvRGlzcGxheUFwcGxpY2F0aW9ucyA9IFtdO1xuICBwdWJsaWMgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51OiBhbnlbXTtcbiAgcHVibGljIGVycm9yTXNnOnN0cmluZztcblxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXSl7XG4gICAgICBsZXQgdXNlclJvbGUgPSB0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlO1xuICAgICAgdGhpcy5pc0FkbWluUm9sZSA9IHRoaXMuYWRtaW5Sb2xlcy5pbmRleE9mKHVzZXJSb2xlKSA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNhbGN1bGF0ZUxlZnRuYXZTdGF0dXMoKTtcbiAgICAvLyBjb25zdCBjb25maWdzID0gdGhpcy5yb3V0ZXIuY29uZmlnO1xuICAgIC8vIGZvcihsZXQgY29uZmlnIG9mIGNvbmZpZ3Mpe1xuICAgIC8vICAgaWYoY29uZmlnLmNoaWxkcmVuKXtcbiAgICAvLyAgICAgZm9yKGxldCBjaGlsZCBvZiBjb25maWcuY2hpbGRyZW4pe1xuICAgIC8vICAgICAgIGNoaWxkLmNhbkFjdGl2YXRlID0gW0NhbkxvYWRHdWFyZF1cbiAgICAvLyAgICAgfVxuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICAvLyB0aGlzLnJvdXRlci5yZXNldENvbmZpZyhjb25maWdzKTtcbiAgICB0aGlzLmNoZWNrQXBwbGljYXRpb25EZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUxlZnRuYXZTdGF0dXMoKXtcbiAgICBpZih0aGlzLnNpZGVuYXYgJiYgdGhpcy5zaWRlbmF2Lm9wZW5lZENoYW5nZSl7XG4gICAgICBsZXQgc3RhdHVzICAgICAgICAgID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnbGVmdE5hdk9wZW5TdGF0dXMnKTtcbiAgICAgIHRoaXMubmF2Q29sbGFwc2VkICAgPSBzdGF0dXMgJiYgc3RhdHVzID09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbmVkID0gc3RhdHVzICYmIHN0YXR1cyA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAgICAgdGhpcy5zaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uID0gdGhpcy5zaWRlbmF2Lm9wZW5lZENoYW5nZS5zdWJzY3JpYmUoKHN0YXR1cyk9PntcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnbGVmdE5hdk9wZW5TdGF0dXMnLEpTT04uc3RyaW5naWZ5KHN0YXR1cykpO1xuICAgICAgICB0aGlzLm5hdkNvbGxhcHNlZCAgID0gc3RhdHVzO1xuICAgICAgICB0aGlzLnNpZGVuYXYub3BlbmVkID0gc3RhdHVzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljICBjaGVja0FwcGxpY2F0aW9uRGV0YWlscyhhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgICB0aGlzLmVycm9yTXNnID0gJyc7XG4gICAgaWYoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQgIT0gJ2Fkc19hbWF6b25fZHNwJyl7XG4gICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVBcHBEZXRhaWxzKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscyl7XG4gICAgdGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2lkZUJhcih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgLy8gaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQpe1xuICAgIC8vICAgdGhpcy5nZXRBY3RpdmVSZWNvQ291bnQodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVOYXZpZ2F0aW9uU2lkZUJhcihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldGpzb25NZW51bGlzdHMoYXBwbGljYXRpb25EZXRhaWxzKS5zdWJzY3JpYmUoKG1lbnVsaXN0czogYW55KSA9PiB7XG4gICAgICAvLyBsZXQgbWVudWxpc3RzID0gR0xPQkFMX0xJU1RcbiAgICAgIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zID0gdGhpcy5uYXZpZ2F0aW9uLmdldE1lbnVMaXN0KGFwcGxpY2F0aW9uRGV0YWlscywgbWVudWxpc3RzKTtcbiAgICAgIHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51ID0gdGhpcy5uYXZpZ2F0aW9uLmdldEdsb2JhbFNldHRpbmdzTWVudShhcHBsaWNhdGlvbkRldGFpbHMsIG1lbnVsaXN0cyk7XG4gICAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seShhcHBsaWNhdGlvbkRldGFpbHMsIGZhbHNlKTtcbiAgICAgIHRoaXMuZXhwYW5kQ2hpbGRNZW51T25seSh0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSk7XG4gICAgICB0aGlzLmNoZWNrRm9yUmVkaXJlY3Rpb24odGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMsdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUsYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zICwgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpO1xuICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1lbnUoKTtcbiAgICAgIHRoaXMuc2V0TWVudUxpc3QoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQsdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMpO1xuICAgICAgdGhpcy5pbkNvbnRleHRJbnNpZ2h0c1dMQXBwID0gdGhpcy5oaWRlTWVudUZvcldMKCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVudUxpc3QoYXBwSWQsbWVudUxpc3Qpe1xuICAgIHZhciBhcHBEZXRhaWxzOmFueSA9IG5ldyBPYmplY3QoKTtcbiAgICBhcHBEZXRhaWxzLmFwcGljYXRpb25JZCA9IGFwcElkO1xuICAgIGFwcERldGFpbHMubWVudUxpc3QgPSBtZW51TGlzdC5maW5kKChtZW51KT0+eyByZXR1cm4gbWVudS5pZCA9PSBhcHBJZH0pXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcERldGFpbHMnLEpTT04uc3RyaW5naWZ5KGFwcERldGFpbHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBtZW51Q2xpY2tlZChvYmo6IGFueSkge1xuICAgIHRoaXMuZXhwYW5kQ3VycmVudE1lbnVPbmx5KHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLCB0cnVlKTtcbiAgICB0aGlzLmV4cGFuZENoaWxkTWVudU9ubHkodGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpO1xuICAgIGlmKG9iaikge1xuICAgICAgdGhpcy5hY3RpdmVQYW5lbCA9IG9iai5hY3RpdmVQYW5lbDtcbiAgICB9XG4gIH1cbiAgXG4gIHB1YmxpYyBleHBhbmRDaGlsZE1lbnVPbmx5KHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSkge1xuICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAvLyB0aGlzLmlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAgIGxldCByb3V0ZVVybCA9IHVybEFycmF5W3VybEFycmF5Lmxlbmd0aCAtIDFdO1xuICAgICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgIGlmKHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSAmJiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUubGVuZ3RoKSB7XG4gICAgICAgICAgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gICAgICAgIGlmKHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5jaGlsZHJlbiAmJiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0uY2hpbGRyZW4ubGVuZ3RoKXtcbiAgICAgICAgICBmb3IobGV0IG1lbnUgb2YgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLmNoaWxkcmVuKXtcbiAgICAgICAgICAgIGlmKG1lbnUucm91dGU9PWN1cnJlbnRSb3V0ZSl7XG4gICAgICAgICAgICAgIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgIC8vIHRoaXMuaXNHbG9iYWxTZXR0aW5nc01lbnVBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxMDApXG4gICBcbiAgfVxuXG4gIHB1YmxpYyBleHBhbmRDdXJyZW50TWVudU9ubHkoYXBwbGljYXRpb25EZXRhaWxzLCBvbk1lbnVDbGlja2VkKSB7XG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucykge1xuICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB9XG4gICAgXG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucykge1xuICAgICAgICBpZihoZWFkTWVudS5pZCA9PSBhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgfSBlbHNlIGlmKGhlYWRNZW51LmlkLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID4gLTEpIHtcbiAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYoKGhlYWRNZW51LmlkPT0gXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgfHwgaGVhZE1lbnUuaWQ9PSBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIikgJiYgdXJsQXJyYXkubGVuZ3RoID4yKXtcbiAgICAgICAgICAgIHVybEFycmF5PSB1cmxBcnJheS5zbGljZSh1cmxBcnJheS5sZW5ndGgtMik7XG4gICAgICAgICAgICByb3V0ZVVybD0gdXJsQXJyYXkuam9pbignLycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fY29udGVudF9jb250ZW50X2FuYWx5dGljc1wiICYmIHRoaXMubmF2aWdhdGlvbi5jb250ZW50QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSApIHtcbiAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgIH0gZWxzZSBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fY29udGVudF9zaGFyZV9vZl92b2ljZVwiICYmIHRoaXMubmF2aWdhdGlvbi5zb3ZBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xKSB7XG4gICAgICAgICAgICAgIGlmKChjdXJyZW50Um91dGUgIT0gJ3Byb2R1Y3QtbWV0YS1kYXRhJyAmJiBjdXJyZW50Um91dGUgIT0gJ2JyYW5kLXRlcm1zLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2xhYmVscy1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMtbWFwcGluZycgJiYgY3VycmVudFJvdXRlICE9ICdzb3Ytc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnY29udGVudC1zZXR0aW5ncycpIHx8ICF0aGlzLmN1cnJlbnRBcHAgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1NoYXJlIE9mIFZvaWNlJykge1xuICAgICAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICAgICAgICBpZihvbk1lbnVDbGlja2VkIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdTaGFyZSBPZiBWb2ljZScpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnNlbGxlckFuYWx5dGljc0FwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpe1xuICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnZlbmRvckFuYWx5dGljc0FwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpIHtcbiAgICAgICAgICAgIGlmKChjdXJyZW50Um91dGUgIT0gJ3Byb2R1Y3QtbWV0YS1kYXRhJyAmJiBjdXJyZW50Um91dGUgIT0gJ2JyYW5kLXRlcm1zLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2xhYmVscy1zZXR0aW5ncycgICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzLW1hcHBpbmcnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc292LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2NvbnRlbnQtc2V0dGluZ3MnKSB8fCAhdGhpcy5jdXJyZW50QXBwIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdWZW5kb3IgQW5hbHl0aWNzJykge1xuICAgICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgICAgICBpZihvbk1lbnVDbGlja2VkIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdWZW5kb3IgQW5hbHl0aWNzJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gIGlmKGhlYWRNZW51LmNoaWxkcmVuKXtcbiAgICAgICAgLy8gICAgaGVhZE1lbnUuY2hpbGRyZW4uZm9yRWFjaChtZW51ID0+IHtcbiAgICAgICAgLy8gICAgICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LnR5cGUgPT0gXCJleHBhbmRhYmxlXCIpIHtcbiAgICAgICAgLy8gICAgICAgIGhlYWRNZW51LmNoaWxkcmVuLmZvckVhY2goc3VibWVudSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYodGhpcy5pc0NoZWNrQWN0aXZlUm91dGUoc3VibWVudS5yb3V0ZSxoZWFkTWVudSkpe1xuICAgICAgICAvLyAgICAgICAgICAgIG1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAvLyAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcblxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgIH0pXG4gICAgICAgIC8vICAgICAgfVxuICAgICAgICAvLyAgICB9KTtcbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gIHB1YmxpYyBnZXRUb29sdGlwSW5mbyhoZWFkbWVudSl7XG4gICAgaWYodGhpcy5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5vcGVuZWQpe1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfWVsc2V7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSl7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VsZWN0ZWRBcHBsaWNhdGlvbih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscywgaGVhZG1lbnUpO1xuICB9XG4gIGdldCBzaWRlSWRJbmZvKCl7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKXtcbiAgICAgIHJldHVybiBOdW1iZXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKVxuICAgIH1lbHNlIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSl7XG4gICAgICByZXR1cm4gTnVtYmVyKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSlcbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuXG4gIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcE1lbnVzLCBnc01lbnVzLCBhcHBsaWNhdGlvbkRldGFpbHMpIHtcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCBjdXJyZW50QXBwTWVudXMgPSBhcHBNZW51cy5maW5kKGFwcCA9PiAgYXBwLmlkLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDApO1xuXG4gICAgaWYgKGN1cnJlbnRBcHBNZW51cykge1xuICAgICAgY29uc3QgYWxsTWVudXMgPSBbY3VycmVudEFwcE1lbnVzLCAuLi5nc01lbnVzXTtcbiAgICAgIGNvbnN0IGlzTWVudUF2YWlsYWJsZSA9IGZpbmRMaW5rKGFsbE1lbnVzKTtcbiAgICAgIGlmICghaXNNZW51QXZhaWxhYmxlKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUoY3VycmVudEFwcE1lbnVzLmRlZmF1bHR1cmwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb24uZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zWzBdLmRlZmF1bHR1cmwpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gaXNNZW51Um91dGVNYXRjaChsaW5rKSB7XG4gICAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSBgLyR7bGlua31gO1xuICAgIH0gXG5cbiAgICBmdW5jdGlvbiBmaW5kTGluayhtZW51QXJyYXkpIHtcbiAgICAgIHJldHVybiBtZW51QXJyYXkuc29tZShmdW5jdGlvbihtZW51KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIG1lbnUgaGFzIGNoaWxkcmVuLCBzZWFyY2ggcmVjdXJzaXZlbHlcbiAgICAgICAgICBpZiAobWVudS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICByZXR1cm4gZmluZExpbmsobWVudS5jaGlsZHJlbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgbWVudSBpdGVtIGhhcyBhIG1hdGNoaW5nIGxpbmtcbiAgICAgICAgICBpZiAoaXNNZW51Um91dGVNYXRjaChtZW51LnJvdXRlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hpbGQgcm91dGVzLCBzZWFyY2ggd2l0aGluIHRoZW1cbiAgICAgICAgICBpZiAobWVudS5jaGlsZF9yb3V0ZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1lbnUuY2hpbGRfcm91dGVzLnNvbWUoZnVuY3Rpb24oY2hpbGRSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTWVudVJvdXRlTWF0Y2goY2hpbGRSb3V0ZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG4gIH1cblxuXG5cblxuXG4gIC8vIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gIC8vICAgdHJ5e1xuICAvLyAgICAgbGV0IGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudVZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2sgPXRydWU7XG4gIC8vICAgICBsZXQgaXNyZWRpcmVjdGVkID0gZmFsc2U7XG4gIC8vICAgICBsZXQgYXBwbGljYXRpb25JZExpc3QgPSBbXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgLCBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIl1cblxuICAvLyAgICAgbGV0IG1lbnVsaXN0ID0gYXBwbGljYXRpb25JZExpc3QuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPiAtMSAmJiBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzICYmIGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMubGVuZ3RoID4gMCA/IGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMgOiBtZW51bGlzdHM7XG5cbiAgLy8gICAgIGNvbnN0IHJvbGUgPSBbJ1NVUEVSX0FETUlOJywgJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuICAvLyAgICAgaWYgKHJvbGUuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMudXNlckluZm8ucm9sZSkgPT0gLTEpIHtcbiAgICAgICAgXG4gIC8vICAgICAgIGxldCBhcHBsaWNhdGlvbk1lbnVlcyA9IG1lbnVsaXN0ICYmIG1lbnVsaXN0Lmxlbmd0aCA+IDAgJiYgbWVudWxpc3QuZmluZCgobWVudXMpPT57XG4gIC8vICAgICAgICAgcmV0dXJuIG1lbnVzLmlkID09IGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXG4gIC8vICAgICAgIH0pXG5cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLm9yZ2FuaXphdGlvbl9zZXR0aW5nX25vdF9pbikge1xuICAvLyAgICAgICAgIGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhhcHBsaWNhdGlvbk1lbnVlcy5vcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4pO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXMpIHtcbiAgLy8gICAgICAgICBpc01lbnVWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yUm9sZXMoYXBwbGljYXRpb25NZW51ZXMudmlzaWJpbGl0eV9yb2xlcyk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXNfbm90X2luKSB7XG4gIC8vICAgICAgICAgaXNNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXNfbm90X2luKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5hcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrKSB7XG4gIC8vICAgICAgICAgaXNNZW51Tm90VmlzaWJsZUJ5YXBwc3BhY2lmaWNjb25maWdjaGVjayA9IHRoaXMubmF2aWdhdGlvbi5hcHBTcGVjaWZpY0NvbmZpZyhhcHBsaWNhdGlvbk1lbnVlcy5hcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5vcmdfdXNlcl9jdHJsKSB7XG4gIC8vICAgICAgICAgaXNNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0Zvck9yZ1dpdGhVc2VyUm9sZShhcHBsaWNhdGlvbk1lbnVlcy5vcmdfdXNlcl9jdHJsLGFwcGxpY2F0aW9uTWVudWVzLCBhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLmlkID09IFwiYW1jLXBsYXRmb3JtLXdlYlwiICYmIGFwcGxpY2F0aW9uTWVudWVzLmNoaWxkcmVuKSB7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSA9IHRydWU7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRydWU7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRydWU7XG5cbiAgLy8gICAgICAgICBjb25zdCBjaGlsZG1lbnUgPSB0aGlzLnZhbGlkYXRlUm91dGVCeVN0YXRlKCB0aGlzLnJvdXRlciAsIGFwcGxpY2F0aW9uTWVudWVzLmNoaWxkcmVuKTtcblxuICAvLyAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXNfbm90X2luKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudU5vdFZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlc19ub3RfaW4pO1xuICAvLyAgICAgICAgIH1cblxuICAvLyAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXMpIHtcbiAgLy8gICAgICAgICAgIGlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvclJvbGVzKGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzKTtcbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS5vcmdfdXNlcl9jdHJsKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JPcmdXaXRoVXNlclJvbGUoY2hpbGRtZW51Lm9yZ191c2VyX2N0cmwsY2hpbGRtZW51LCBhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgaWYgKCghaXNDaGlsZE1lbnVOb3RWaXNpYmxlQnlSb2xlIHx8ICFpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgfHwgIWlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSkgJiYgY2hpbGRtZW51KSB7XG4gIC8vICAgICAgICAgICBpc3JlZGlyZWN0ZWQgPSB0cnVlO1xuICAvLyAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL1wiXSk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGlmICgoIWlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgfHwgIWlzTWVudVZpc2libGVCeVJvbGUgfHwgIWlzTWVudU5vdFZpc2libGVCeVJvbGUgfHwgIWlzTWVudXJPcmdXaXRoVXNlclJvbGUgfHwgIWlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2spICYmICFpc3JlZGlyZWN0ZWQpIHtcbiAgLy8gICAgICAgICBpZiAoIXRoaXMuY3VycmVudEFwcCkge1xuICAvLyAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZSh0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9uc1swXS5kZWZhdWx0dXJsKTsgIFxuICAvLyAgICAgICAgIH1lbHNle1xuICAvLyAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShhcHBsaWNhdGlvbk1lbnVlcy5kZWZhdWx0dXJsKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9Y2F0Y2goZXJyb3Ipe1xuICAvLyAgICAgICB0aHJvdyBlcnJvcjtcbiAgLy8gICB9XG4gIC8vIH1cblxuICB2YWxpZGF0ZVJvdXRlQnlTdGF0ZShzdGF0ZSAsIGxpc3RNZW51cyl7XG4gICAgdHJ5e1xuICAgICAgICBjb25zdCBmaW5kUm91dGUgPSBsaXN0TWVudXMuZmluZChsaXN0ID0+IHtcbiAgICAgICAgICAgIGlmKGxpc3QubGluayA9PSAnYW1jJytzdGF0ZS51cmwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZihsaXN0Lm1hdGNoUm91dGVzICYmIGxpc3QubWF0Y2hSb3V0ZXMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgaWYobGlzdC5tYXRjaFJvdXRlcy5pbmNsdWRlcyhzdGF0ZS51cmwpKXtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmluZFJvdXRlO1xuICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cbiAgXG4gIC8vIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscykge1xuICAvLyAgIGxldCByb3V0ZSA9ICcnO1xuICAvLyAgIGlmKGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiAhKHRoaXMubmF2aWdhdGlvbi5pc0hhdmluZ0FueUFjdGl2ZVN1YnMoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQsYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnN1YnNjcmlwdGlvbixhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQudHlwZSkpKXtcbiAgLy8gICAgIHN3aXRjaChhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQudHlwZSl7XG4gIC8vICAgICAgIGNhc2UgJ0NPTlRFTlQnOiB7XG4gIC8vICAgICAgICAgICByb3V0ZSA9ICdjb250ZW50L3NoYXJlLW9mLXZvaWNlJ1xuICAvLyAgICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnRFNQJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2RzcC9vcmRlcidcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdBTVNfQVRUUklCVVRJT04nOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnYXR0cmlidXRpb24vYXR0cmlidXRpb24tY2FtcGFpZ25zJ1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1NFTExFUl9DRU5UUkFMJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1jb250ZW50LWRhc2hib2FyZC9zZWxsZXItc2FsZXMtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1ZFTkRPUl9DRU5UUkFMJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1jb250ZW50LWRhc2hib2FyZC9jdXN0b20tcmVwb3J0cy12ZW5kb3Itc2FsZXMtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0lOU1RBQ0FSVCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdpbnN0YWNhcnQvaW5zdGFjYXJ0LW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdDUklURU8nOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnY3JpdGVvL2NyaXRlby1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnV0FMTUFSVCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICd3YWxtYXJ0Lyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQU1BWk9OX01BUktFVElOR19DTE9VRCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdkcC9kYXRhLWFuYWx5dGljcy1nZXR0aW5nLXN0YXJ0ZWQnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0FNU19WRU5ET1InOlxuICAvLyAgICAgICBjYXNlICdBTVNfU0VMTEVSJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1wYWdlLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfVxuICAvLyAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShyb3V0ZSk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0cnVjdHVyZUFQSVN1cHBvcnREYXRhKGN1cnJlbnRBY2NvdW50KXtcbiAgICB0cnkge1xuICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGEoY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQsY3VycmVudEFjY291bnQuYnVzaW5lc3NHcm91cElkLGN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCkuc3Vic2NyaWJlKCBcbiAgICAgIChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmlzU3RydWN0dXJlQXBpU3VwcG9ydCA9IHJlc3BvbnNlID8gcmVzcG9uc2VbJ3N0cnVjdHVyZUFwaVN1cHBvcnQnXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmlzTWFuYWdlZFNlcnZpY2VBY2MgPSByZXNwb25zZSA/IHJlc3BvbnNlWydpc01hbmFnZWRBY2NvdW50J10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3JlYXRlQXBwRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOmFueSkgPT57XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc1N0cnVjdHVyZUFwaVN1cHBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc01hbmFnZWRTZXJ2aWNlQWNjID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICB9XG4gIFxuICBwdWJsaWMgc2Nyb2xsVG9BY3RpdmVNZW51KCl7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZih0aGlzLmxpc3RJdGVtcyAmJiB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pICE9IHVuZGVmaW5lZCl7XG4gICAgICAgIHRoaXMubGlzdC5zY3JvbGxUb3AgPSB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pLm9mZnNldFRvcDtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHVibGljIGlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51LHBhcmVudE1lbnUgPSBudWxsKSB7XG4gICAgLy8gbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgLy8gbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgLy8gbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgLy8gbGV0IHJvdXRlPW1lbnUucm91dGU7XG4gICAgLy8gbGV0IHBhZ2VOYW1lO1xuICAgIC8vIGlmKHJvdXRlKXtcbiAgICAvLyBsZXQgc3BsaXRlZFVSTCA9IHJvdXRlLnNwbGl0KFwiL1wiKTtcbiAgICAvLyBwYWdlTmFtZSA9IHNwbGl0ZWRVUkwubGVuZ3RoID4wID8gIHNwbGl0ZWRVUkxbc3BsaXRlZFVSTC5sZW5ndGggLSAxXSA6IHJvdXRlO1xuICAgIC8vIH1cblxuICAgIGxldCByb3V0ZVVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICBsZXQgcm91dGU9bWVudS5yb3V0ZTtcbiAgICBsZXQgcGFnZU5hbWU7XG4gICAgaWYocm91dGUpe1xuICAgICAgcGFnZU5hbWUgPSByb3V0ZTtcbiAgICB9XG5cbiAgICBpZiAoKGN1cnJlbnRSb3V0ZSA9PT0gXCIvXCIrcGFnZU5hbWUgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXJlcG9ydFwiIHx8IGN1cnJlbnRSb3V0ZSA9PT0gXCIvXCIrcGFnZU5hbWUrXCIva2V5d29yZC1zdWdnZXN0aW9ucy9hdXRvXCIgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXN1Z2dlc3Rpb25zL21hbnVhbFwiKSAmJiBoZWFkbWVudSE9dW5kZWZpbmVkKSB7XG4gICAgICBpZih0aGlzLnByZXZBY3RpdmVIZWFkTWVudT09PSB1bmRlZmluZWQpe1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcbiAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudS5pc0FjdGl2ZT1mYWxzZTtcbiAgICAgICAgaGVhZG1lbnUuaXNBY3RpdmU9dHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2QWN0aXZlSGVhZE1lbnU9aGVhZG1lbnU7XG4gICAgICB9XG4gICAgICBpZihwYXJlbnRNZW51ICE9IG51bGwpe1xuICAgICAgICB0aGlzLmFjdGl2ZVBhbmVsID0gcGFyZW50TWVudS5pZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1lbHNlIGlmKG1lbnUgJiYgbWVudS5tYXRjaFJvdXRlcyAmJiB0aGlzLnJvdXRlci51cmwpe1xuICAgICAgaWYgKG1lbnUubWF0Y2hSb3V0ZXMuaW5kZXhPZih0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXSkgPiAtMSkge1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcblxuICAgICAgICBpZihwYXJlbnRNZW51ICE9IG51bGwpe1xuICAgICAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBwYXJlbnRNZW51LmlkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBrZWVwTWVudUV4cGFuZGVkKHBhcmVudE1lbnVJZDpzdHJpbmcpIHtcbiAgICBpZihwYXJlbnRNZW51SWQuaW5kZXhPZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+PSAwICApe1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFsbE1lbnVDb2xsYXBzZSgpe1xuICAgIGZvcihsZXQgaGVhZE1lbnUgb2YgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpIHtcbiAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW9kZmljYXRpb25EYXRhKGRhdGE6IGFueSk6IGFueSB7XG4gICAgbGV0IGNvbmZpZ3MgPSB0aGlzLm5hdmlnYXRpb24uZ2V0VHlwZVN0YXR1c0NvbmZpZ3MoKTtcblx0XHRsZXQgb3JkZXIgPSBPYmplY3Qua2V5cyhjb25maWdzKTtcblx0XHRpZihvcmRlci5pbmRleE9mKGRhdGEudHlwZSkgPiAtMSl7XG5cdFx0XHRkYXRhLmFjdGl2ZSA9IGNvbmZpZ3NbZGF0YS50eXBlXSA/IGNvbmZpZ3NbZGF0YS50eXBlXSA6IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gZGF0YTtcblx0fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIHRoaXMuc2hvd01lbnVJY29uKCk7XG4gICAgdGhpcy5jaGVja0FwcGxpY2F0aW9uRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCA9PSAnYWRzX2FtYXpvbl9kc3AnICYmICF0aGlzLlJlc3RBcGlTZXJ2aWNlLmlzU3RydWN0ZXJBcGlDYWxsZWQpe1xuICAgICAgdGhpcy5nZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgfVxuXG4gIH1cblxuICBwdWJsaWMgZ29Ub0FwcGxpY2F0aW9uKGl0ZW0pIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbGVjdGVkQXBwSWQnKTtcbiAgICBpZihpdGVtLmRlZmF1bHR1cmwpe1xuICAgICAgdGhpcy5nb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgaXRlbS5pZCk7XG4gICAgfWVsc2V7XG4gICAgICBpZihpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBpZihpdGVtLmNoaWxkcmVuWzBdLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0sIGl0ZW0uaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0uY2hpbGRyZW5bMF0sIGl0ZW0uaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdvVG9BcHBEZWZhdWx0UGFnZShpdGVtLCBpdGVtLmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYodGhpcy5zaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uKXtcbiAgICAgIHRoaXMuc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgYXBwSWQpIHtcbiAgICB0aGlzLm5hdk1lbnVzQ29tcG9uZW50Lm9uU2VsZWN0TWVudShldmVudCwgaXRlbSwgYXBwSWQpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51Rm9yV0woKXtcbiAgICAgIGxldCBpc09yZ1NldHRpbmc7XG4gICAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlID09PSAnSUFDX0JSQU5EX1JFQURfT05MWScgfHwgKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzLmxlbmd0aCA9PSAwKSl7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXNPcmdTZXR0aW5nID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMub3JnU2V0dGluZ3MuZmlsdGVyKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuICAgICAgICAgICAgaWYoIG9yZ1NldHRpbmcuc2V0dGluZyA9PT0gJ0lBQ19JTlNJR0hUUycgJiYgKCFvcmdTZXR0aW5nLnZhbHVlIHx8IG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnQUNUSVZFJykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChpc09yZ1NldHRpbmcgIT0gbnVsbCAmJiAoIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCA+IDExIHx8IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWyd1c2VySW5mbyddLnJvbGUgPT09ICdJQUNfQlJBTkRfUkVBRF9PTkxZJykpO1xuICAgICAgfVxuICB9XG5cbiAgLy8gcHVibGljIGlzQXBwbGljYXRpb25BY3RpdmUocGFyZW50TWVudUlkKSB7XG4gIC8vICAgaWYocGFyZW50TWVudUlkLmluZGV4T2YodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPj0gMCAgJiYgdGhpcy5pc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZSl7XG4gIC8vICAgICByZXR1cm4gdHJ1ZTtcbiAgLy8gICB9XG4gIC8vICAgZWxzZXtcbiAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBcbn1cbiIsIjxkaXYgaWQ9XCJsb2FkZXJfc292XCI+XG4gIDxkaXYgaWQ9XCJsb2FkaW5nX2RpdlwiICpuZ0lmPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mb1wiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGlkPVwibG9hZGVyXCIgKm5nSWY9XCJzaWRlSWRJbmZvICE9PSAxXCJcbiAgICAgICAgY2xhc3M9XCJzaXRlX3t7c2lkZUlkSW5mb319XCI+XG4gICAgICAgIDxpbWcgc3JjPVwie3thcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5sb2dvfX1cIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBpZD1cImxvYWRlcl9pbWdcIiAqbmdJZj1cInNpZGVJZEluZm8gPT0gMVwiPlxuICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2hhcHB5X2V5ZXNfY2xvc2VkX3NtYWxsLnN2Z1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciBjbGFzcz1cImxvYWRlcl9wcm9ncmVzcy1iYXItcG9zaXRpb25cIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGwgKm5nSWY9XCJlcnJvck1zZy5sZW5ndGggPT0gMCBlbHNlIGVycm9yQmxvY2tcIiB0cmFuc2xhdGU9XCJub1wiIGlkPVwiYW5ndWxhci0xNi12ZXJzaW9uXCI+XG4gIDxtYXQtdG9vbGJhciBjbGFzcz1cInBvcnRhbC1zaWRlLW1lbnUtdG9wLXRvb2xiYXJcIj5cbiAgICA8bWF0LXRvb2xiYXItcm93IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicG9ydGFsLWZvcmdldC1oZWFkaW5nLWNhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVtZW51LWxvZ28taG9sZGVyXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNpZGVJZEluZm8gIT09IDFcIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZhdmljb25cIiBzdHlsZT1cIndpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICpuZ0lmPVwiIW5hdkNvbGxhcHNlZFwiIFthbHRdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmlyc3ROYW1lXCIgY2xhc3M9XCJmYXZpY29uLWRpbWVuc2lvblwiIC8+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5sb2dvXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgICpuZ0lmPVwibmF2Q29sbGFwc2VkXCIgY2xhc3M9XCJsb2dvLWRpbWVuc2lvblwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNpZGVJZEluZm8gPT0gMVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9pbnRlbnR3aXNlbG9nby5zdmdcIiBzdHlsZT1cIndpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICpuZ0lmPVwiIW5hdkNvbGxhcHNlZFwiIFthbHRdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmlyc3ROYW1lXCIgY2xhc3M9XCJmYXZpY29uLWRpbWVuc2lvbiBpbnRlbnR3aXNlLWZhdmljb25cIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvbG9nb3MvSW50ZW50d2lzZS5zdmdcIiAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCJuYXZDb2xsYXBzZWRcIiBbYWx0XT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZpcnN0TmFtZVwiIGNsYXNzPVwibG9nby1kaW1lbnNpb24gaW50ZW50d2lzZS1sb2dvXCI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdG9vbGJhci1yb3c+XG4gIDwvbWF0LXRvb2xiYXI+XG4gIDwhLS0gPGRpdiBjbGFzcz1cInNpZGViYXItY29sbGFwc2UtaWNvblwiICpuZ0lmPVwiaXNBZG1pblJvbGVcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwic2lkZW1lbnUtaWNvbi10b3BcIiAoY2xpY2spPVwiYWxsTWVudUNvbGxhcHNlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkXCI+a2V5Ym9hcmRfYXJyb3dfdXA8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgPGRpdiAqbmdJZj1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgJiYgIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIiBjbGFzcz1cImFwcC1tZW51LWNvbnRhaW5lclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtbWVudS1idXR0b25cIiAqbmdJZj1cInRvRGlzcGxheUFwcGxpY2F0aW9ucyAmJiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMubGVuZ3RoID09IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWVcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY3VycmVudEFwcD8ubmFtZVwiIGNsYXNzPVwic2lkZU5hdkljb24ge3tjdXJyZW50QXBwPy5uYW1lLnNwbGl0KCcgJykuam9pbignJyl9fVwiPjwvbWF0LWljb24+XG4gICAgICAgIDxsYWJlbCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtNHB4O1wiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihjdXJyZW50QXBwKVwiPjwvbGFiZWw+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY3VycmVudEFwcD8uYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIj57e2N1cnJlbnRBcHAuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYXBwLW1lbnUtYnV0dG9uXCIgW21hdC1tZW51LXRyaWdnZXItZm9yXT1cImFwcE1lbnVcIiAqbmdJZj1cInRvRGlzcGxheUFwcGxpY2F0aW9ucyAmJiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMubGVuZ3RoID4gMVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbmFtZVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjdXJyZW50QXBwPy5uYW1lXCIgY2xhc3M9XCJzaWRlTmF2SWNvbiB7e2N1cnJlbnRBcHA/Lm5hbWUuc3BsaXQoJyAnKS5qb2luKCcnKX19XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjYXBwTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImFwcC1tZW51XCIgW2JhY2tkcm9wQ2xhc3NdPVwiJ2FsbC1tb2R1bGUtbWVudXMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkbWVudSBvZiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbnUtb3B0aW9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZ29Ub0FwcGxpY2F0aW9uKGhlYWRtZW51KVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaGVhZG1lbnUucGFuZWxPcGVuU3RhdGV9XCIgY2xhc3M9XCJ7e2hlYWRtZW51LmlkfX1faWNvblwiICpuZ0lmPVwiaGVhZG1lbnUubmFtZSAhPSAnQWNjb3VudCBNYW5hZ2VtZW50J1wiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2lkZU5hdkljb24gY2hpbGRyZW4taWNvblwiIFtuZ0NsYXNzXT1cImhlYWRtZW51Lm5hbWUuc3BsaXQoJyAnKS5qb2luKCcnKVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZG1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIiBbaW5uZXJIVE1MXT1cImhlYWRtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW1lbnU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicG9ydGFsLXNpZG5hdi1tZW51XCIgZnhGbGV4PVwibm9ncm93IG5vc2hyaW5rXCIgYXBwU2Nyb2xsYWJsZSBbbmdDbGFzc109XCJ7J3doaXRlTGFiZWxTaWRlbmF2JyA6IGluQ29udGV4dEluc2lnaHRzV0xBcHB9XCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlID09IHRydWVcIiBoaWRlVG9nZ2xlPVwidHJ1ZVwiXG4gICAgICAqbmdGb3I9XCJsZXQgaGVhZG1lbnUgb2YgdG9EaXNwbGF5QXBwbGljYXRpb25zXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBoZWFkbWVudS5pc0FjdGl2ZSB9XCJcbiAgICAgIChvcGVuZWQpPVwiaGVhZG1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oaGVhZG1lbnUpfX1cIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCJcbiAgICAgICAgKm5nSWY9XCJoZWFkbWVudS50eXBlID09ICdleHBhbmRhYmxlJyBlbHNlIHNpbmdsZU1lbnVzXCIgY2xhc3M9XCJtYWluLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub0FwcGxpY2F0aW9uKGhlYWRtZW51KVwiPlxuICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3toZWFkbWVudS5pZH19X2ljb25cIj48L3NwYW4+XG4gICAgICAgICAgPGgzIGNsYXNzPVwic2lkZW1lbnUtaGVhZGluZyBhcHBsaWNhdGlvbk1lbnVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBbaW5uZXJIVE1MXT1cInNlbGVjdGVkQXBwbGljYXRpb24oaGVhZG1lbnUpXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZG1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIiBbaW5uZXJIVE1MXT1cImhlYWRtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgIDwvaDM+XG4gICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhaGVhZG1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPG1hdC1saXN0IGNsYXNzPVwicGFkZGluZy0wcHhcIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBoZWFkbWVudS5jaGlsZHJlblwiIFthdHRyLmlkXT1cImhlYWRtZW51LmlkXCIgW25nQ2xhc3NdPVwieydncm91cC1uYXYtbWVudSc6IG1lbnUuY2hpbGRyZW4gfVwiPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cIm1lbnUuY2hpbGRyZW4gZWxzZSBsaXN0TWVudVwiIGNsYXNzPVwiZGl2LWJhY2tncm91bmQtY29sb3Itd2hpdGVcIiBbZXhwYW5kZWRdPVwibWVudS5pZCA9PSBhY3RpdmVQYW5lbFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmVQYW5lbCc6IG1lbnUuaWQgPT0gYWN0aXZlUGFuZWwgLCAnd2hpdGVMYWJlbEFjdGl2ZScgOiBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwfVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAob3BlbmVkKT1cIm1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJtZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGVhZGVyLWJvcmRlcic6IG1lbnUucGFuZWxPcGVuU3RhdGUgPT09IHRydWUsICdoZWFkZXItYm9yZGVyLW5vbmUnOiBtZW51LnBhbmVsT3BlblN0YXRlID09PSBmYWxzZSB9XCI+XG4gICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7bWVudS5pZH19X2ljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIiAqbmdJZj1cIihtZW51Lmljb24gJiYgbWVudS5pY29uICE9ICcnKSBlbHNlIGRpc3BsYXlJbml0aWFsc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaWRlLW1lbnUtaWNvbiBzaWRlLW1lbnUtaWNvbi1jb2xvclwiIHNyYz1cImFzc2V0cy9zaWRlbWVudS1pY29ucy97e21lbnUuaWNvbn19XCIgLz5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5SW5pdGlhbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVtZW51LXN5bWJvbFwiPlxuICAgICAgICAgICAgICAgICAge3ttZW51LnN5bWJvbH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1lbnUtaGVhZGluZyBhcHBsaWNhdGlvblN1Ym1lbnVzXCI+PHNwYW4gY2xhc3M9XCJtZW51LW5hbWUtZXhwYW5kYWJsZVwiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihtZW51KVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb24gbGV2ZWwtdHdvLWJhZGdlXCJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3ViLWNoZXZyb24taWNvblwiICpuZ0lmPVwiIW1lbnUucGFuZWxPcGVuU3RhdGVcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInN1Yi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIm1lbnUucGFuZWxPcGVuU3RhdGVcIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgPCEtLSA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj4gLS0+XG4gICAgICAgICAgPG1hdC1uYXYtbGlzdCAqbmdGb3I9XCJsZXQgY2hpbGRNZW51IG9mIG1lbnUuY2hpbGRyZW47XCIgY2xhc3M9XCJzdWItY2hpbGQtbWVudVwiPlxuICAgICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKGNoaWxkTWVudSxoZWFkbWVudSxtZW51KVwiIFtpdGVtXT1cImNoaWxkTWVudVwiXG4gICAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJoZWFkbWVudS5pZFwiIFtwYXJlbnRQYW5lbElkXT1cIm1lbnUuaWRcIlxuICAgICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2xpc3RNZW51PlxuICAgICAgICAgIDxtYXQtbmF2LWxpc3Q+XG4gICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUobWVudSxoZWFkbWVudSlcIiBbaXRlbV09XCJtZW51XCJcbiAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCJcbiAgICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC1saXN0PlxuICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVNZW51cz5cbiAgICAgICAgPG1hdC1saXN0PlxuICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIGlkPVwie3toZWFkbWVudS5pZH19XCIgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKGhlYWRtZW51LGhlYWRtZW51KVwiXG4gICAgICAgICAgICBbaXRlbV09XCJoZWFkbWVudVwiIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJoZWFkbWVudS5pZFwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhoZWFkbWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1saXN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicG9ydGFsLWdsb2JhbC1zZXR0aW5nLW1lbnUgc3RpY2t5X2JvdHRvbV9tZW51XCIgKm5nSWY9XCIhaW5Db250ZXh0SW5zaWdodHNXTEFwcFwiPlxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlID09IHRydWUgfHwgZXhwYW5kR2xvYmFsU2V0dGluZ3NcIiBoaWRlVG9nZ2xlPVwidHJ1ZVwiIGlkPVwie3tzZXR0aW5nc0hlYWRNZW51LmlkICsgJ21lbnUnfX1cIlxuICAgICAgKm5nRm9yPVwibGV0IHNldHRpbmdzSGVhZE1lbnUgb2YgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51XCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBzZXR0aW5nc0hlYWRNZW51LmlzQWN0aXZlIH1cIlxuICAgICAgKG9wZW5lZCk9XCJzaWRlbmF2Lm9wZW4oKTsgc2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cInNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTsgZXhwYW5kR2xvYmFsU2V0dGluZ3MgPSBmYWxzZVwiPlxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKHNldHRpbmdzSGVhZE1lbnUpfX1cIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCJcbiAgICAgICAgKm5nSWY9XCJzZXR0aW5nc0hlYWRNZW51LnR5cGUgPT0gJ2V4cGFuZGFibGUnIGVsc2Ugc2luZ2xlTWVudXNcIiBjbGFzcz1cIm1haW4tZXhwYW5zaW9uLXBhbmVsLWhlYWRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgPyAnJyA6ICdzdGlja3ktYm90dG9tLWNsb3NlZCdcIj5cbiAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkc19hY2NvdW50X21nbXRfaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJzaWRlbWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uTWVudVwiPlxuICAgICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihzZXR0aW5nc0hlYWRNZW51KVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzSGVhZE1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNldHRpbmdzSGVhZE1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIiFzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPG1hdC1saXN0IGNsYXNzPVwicGFkZGluZy0wcHhcIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBzZXR0aW5nc0hlYWRNZW51LmNoaWxkcmVuXCIgW2F0dHIuaWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnZ3JvdXAtbmF2LW1lbnUnOiBtZW51LmNoaWxkcmVuIH1cIj5cbiAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUobWVudSxzZXR0aW5nc0hlYWRNZW51KVwiIFtpdGVtXT1cIm1lbnVcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1lbnVzPlxuICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgW2F0dHIuaWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiIGFwcE9mZnNldFRvcFxuICAgICAgICAgICAgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoc2V0dGluZ3NIZWFkTWVudSxzZXR0aW5nc0hlYWRNZW51KVwiIFtpdGVtXT1cInNldHRpbmdzSGVhZE1lbnVcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1saXN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZXJyb3JCbG9jaz5cbiAgPGRpdiBjbGFzcz1cImVycm9yTXNnXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmVycm9yPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiZXJyb3JUeHRcIj57e2Vycm9yTXNnfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGEgY2xhc3M9XCJoYW1idXJnZXItaWNvbiBleHBhbmRlZC1oYW1idXJnZXItaWNvblwiIHRpdGxlPVwiVG9nZ2xlIE1lbnVcIiAoY2xpY2spPVwic2lkZW5hdi5jbG9zZSgpO2FsbE1lbnVDb2xsYXBzZSgpOyBcIj5cbiAgPG1hdC1pY29uIGNsYXNzPVwibGVmdC1jaGV2cm9uLWljb25cIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cbjwvYT5cblxuPCEtLSA8aW1nICpuZ0lmPVwic2hvd01lbnVJY29uKClcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uXCIgc3JjPXt7YXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLmZhdmljb259fSBhbHQ9XCJJbnRlbnR3aXNlIEZhdmljb25cIiAvPlxuICA8YSAqbmdJZj1cInNob3dNZW51SWNvbigpXCIgdGl0bGU9XCJUb2dnbGUgTWVudVwiIGNsYXNzPVwiaGFtYnVyZ2VyLWljb24gY29sbGFwc2VkLWhhbWJ1cmdlclwiXG4gICAgKGNsaWNrKT1cInNpZGVuYXYub3BlbigpXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwicmlnaHQtY2hldnJvbi1pY29uXCI+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICA8L2E+IC0tPiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { HttpClient, HttpHeaders } from '@angular/common/http';
3
3
  import { of } from 'rxjs';
4
- import { map } from 'rxjs/operators';
4
+ import { catchError, map } from 'rxjs/operators';
5
5
  import { CookieService } from 'ngx-cookie-service';
6
6
  import { constants } from '../constants';
7
7
  import * as i0 from "@angular/core";
@@ -86,6 +86,14 @@ export class RestApiService {
86
86
  localStorage.setItem('structure_support_data', JSON.stringify(updatedData));
87
87
  this.isStructerApiCalled = false;
88
88
  return res;
89
+ }), catchError((error) => {
90
+ this.isStructerApiCalled = false;
91
+ if (error.status === 404) {
92
+ return of(null);
93
+ }
94
+ else {
95
+ throw error;
96
+ }
89
97
  }));
90
98
  }
91
99
  catch (error) {
@@ -111,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
111
119
  providedIn: 'root'
112
120
  }]
113
121
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.CookieService }]; } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1hcGkuc2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvc2VydmljZXMvcmVzdC1hcGkuc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBYyxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFxQixHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUt6QyxNQUFNLE9BQU8sY0FBYztJQVFMO0lBQXlCO0lBTnJDLE9BQU8sR0FBVSxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLFVBQVUsR0FBVSxTQUFTLENBQUMsY0FBYyxDQUFDO0lBQzdDLEtBQUssQ0FBSztJQUNWLFdBQVcsQ0FBQztJQUNiLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUVuQyxZQUFvQixJQUFnQixFQUFTLE1BQXFCO1FBQTlDLFNBQUksR0FBSixJQUFJLENBQVk7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ2hFLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDN0UsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMs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QUNIO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixNQUFNLEtBQUssQ0FBQztTQUNmO0lBQ0gsQ0FBQzsySEE3R1EsY0FBYzsrSEFBZCxjQUFjLGNBSGIsTUFBTTs7NEZBR1AsY0FBYztrQkFKMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyByZXRyeSwgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBSZXN0QXBpU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBiYXNlVVJMOnN0cmluZyA9IGNvbnN0YW50cy5iYXNlUHJvZFVSTDtcbiAgcHJpdmF0ZSBEU1BiYXNlVVJMOnN0cmluZyA9IGNvbnN0YW50cy5rQmFzZURzcEFwaVVSTDtcbiAgcHJpdmF0ZSB0b2tlbjphbnk7XG4gIHByaXZhdGUgaHR0cE9wdGlvbnM7XG4gIHB1YmxpYyBpc1N0cnVjdGVyQXBpQ2FsbGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LHByaXZhdGUgY29va2llOiBDb29raWVTZXJ2aWNlKSB7IFxuICAgIGxldCBkb21haW4gPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG4gICAgaWYoKGRvbWFpbi5pbmNsdWRlcygnYXBwdGVzdC5pbnRlbnR3aXNlLmNvbScpIHx8IGRvbWFpbi5pbmNsdWRlcygnaGVyb2t1YXBwJykgfHwgXG4gICAgZG9tYWluLmluY2x1ZGVzKCdsb2NhbGhvc3QnKSkgJiYgIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VQcm9kJykpe1xuICAgICAgdGhpcy5iYXNlVVJMID0gY29uc3RhbnRzLmJhc2VTdGFnaW5nVVJMO1xuICAgICAgdGhpcy5EU1BiYXNlVVJMID0gY29uc3RhbnRzLmtCYXNlRHNwVGVzdEFwaVVSTDtcbiAgICB9XG4gICAgY29uc3QgaXNDb29raWVFeGlzdHM6IGJvb2xlYW4gPSB0aGlzLmNvb2tpZS5jaGVjaygnbG9nZ2VkSW5Vc2VyJyk7XG5cbiAgICBpZiAoaXNDb29raWVFeGlzdHMpIHtcbiAgICAgICAgY29uc3QgbG9nZ2VkSW5Vc2VyID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZS5nZXQoJ2xvZ2dlZEluVXNlcicpKTtcbiAgICAgICAgdGhpcy50b2tlbiA9IGxvZ2dlZEluVXNlci50b2tlbjtcbiAgICB9IFxuICAgICAgICBcbiAgICB0aGlzLmh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ1gtQXV0aC1Ub2tlbicgOiB0aGlzLnRva2VuXG4gICAgICB9KVxuICAgIH0gIFxuXG4gIH1cblxuICAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBDUlVEIE1ldGhvZHMgZm9yIGNvbnN1bWluZyBSRVNUZnVsIEFQSVxuICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cbiAgZ2V0IG1lbnVEb3dubG9hZFVSTCgpe1xuICAgIGxldCBkb21haW4gPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG4gICAgbGV0IGFwaVVSTCA9IGNvbnN0YW50cy5QUk9EX01FTlVfQlVDS0VUKycvbmF2bWVudS5qc29uJ1xuICAgIGlmKGRvbWFpbi5pbmNsdWRlcygnYXBwdGVzdC5pbnRlbnR3aXNlLmNvbScpIHx8IGRvbWFpbi5pbmNsdWRlcygnaGVyb2t1YXBwJykgfHwgZG9tYWluLmluY2x1ZGVzKCdsb2NhbGhvc3QnKSl7XG4gICAgICBhcGlVUkwgPSBjb25zdGFudHMuU1RBR0lOR19NRU5VX0JVQ0tFVCsnL25hdm1lbnUuanNvbic7XG4gICAgfVxuICAgIHJldHVybiBhcGlVUkw7XG4gIH1cblxuICAvLyBIdHRwIE9wdGlvbnNcbiBcblxuICBwdWJsaWMgZ2V0UmVjb21tZW5kYXRpb25EYXRhKG9yZ0lkLCBidXNpbmVzc0lkLCBhY2NvdW50SWQpIDogT2JzZXJ2YWJsZTxhbnk+e1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5iYXNlVVJMKyAnb3JnYW5pemF0aW9uLycgKyBvcmdJZCArICcvYnVzaW5lc3Nncm91cC8nICsgYnVzaW5lc3NJZCArICcvYWNjb3VudC8nICsgYWNjb3VudElkICsnL3JlY29tbWVuZGF0aW9uP3ZlcnNpb249djInO1xuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlID0gbnVsbDtcbiAgICAgICAgbGV0IG1ldGhvZCA9ICdHRVQnO1xuICAgICAgICBsZXQgYm9keSA9IFtdO1xuXG4gICAgICAgdGhpcy5odHRwT3B0aW9ucyA9IHtcbiAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICdYLUF1dGgtVG9rZW4nIDogdGhpcy50b2tlblxuICAgICAgICAgIH0pXG4gICAgICAgIH0gIFxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHRoaXMuaHR0cE9wdGlvbnMpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXMpID0+IHsgcmV0dXJuIHJlcyB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YShvcmdhbml6YXRpb25JZDogc3RyaW5nLCBidXNpbmVzc0dyb3VwSWQ6IHN0cmluZywgYW1zQWNjb3VudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5EU1BiYXNlVVJMfW9yZ2FuaXphdGlvbi8ke29yZ2FuaXphdGlvbklkfS9idXNpbmVzc0dyb3VwLyR7YnVzaW5lc3NHcm91cElkfS9hY2NvdW50LyR7YW1zQWNjb3VudElkfS9kc3Avc3RydWN0dXJlYXBpc3VwcG9ydGA7XG4gICAgICAgIGNvbnN0IGxvY2FsUmVzcG9uc2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3RydWN0dXJlX3N1cHBvcnRfZGF0YScpO1xuICAgICAgICB0aGlzLmlzU3RydWN0ZXJBcGlDYWxsZWQgPSB0cnVlO1xuICAgICAgICBpZiAobG9jYWxSZXNwb25zZSkge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZFJlc3BvbnNlID0gSlNPTi5wYXJzZShsb2NhbFJlc3BvbnNlKTtcbiAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2UgJiYgcGFyc2VkUmVzcG9uc2VbYW1zQWNjb3VudElkXSkge1xuICAgICAgICAgICAgdGhpcy5pc1N0cnVjdGVyQXBpQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gb2YocGFyc2VkUmVzcG9uc2VbYW1zQWNjb3VudElkXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICBhdXRodG9rZW46IHRoaXMudG9rZW5cbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgIFxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHRoaXMuaHR0cE9wdGlvbnMpLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBsb2NhbFJlc3BvbnNlID8gSlNPTi5wYXJzZShsb2NhbFJlc3BvbnNlKSA6IHt9O1xuICAgICAgICAgICAgdXBkYXRlZERhdGFbYW1zQWNjb3VudElkXSA9IHJlcztcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdHJ1Y3R1cmVfc3VwcG9ydF9kYXRhJywgSlNPTi5zdHJpbmdpZnkodXBkYXRlZERhdGEpKTtcbiAgICAgICAgICAgIHRoaXMuaXNTdHJ1Y3RlckFwaUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGE6JywgZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldGpzb25NZW51bGlzdHMoYXBwbGljYXRpb25EZXRhaWxzKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMubWVudURvd25sb2FkVVJMKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlcykgPT4geyByZXR1cm4gcmVzIH0pXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuXG59Il19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1hcGkuc2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvc2VydmljZXMvcmVzdC1hcGkuc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFxQixXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQWMsRUFBRSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBUyxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFLekMsTUFBTSxPQUFPLGNBQWM7SUFRTDtJQUF5QjtJQU5yQyxPQUFPLEdBQVUsU0FBUyxDQUFDLFdBQVcsQ0FBQztJQUN2QyxVQUFVLEdBQVUsU0FBUyxDQUFDLGNBQWMsQ0FBQztJQUM3QyxLQUFLLENBQUs7SUFDVixXQUFXLENBQUM7SUFDYixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFFbkMsWUFBb0IsSUFBZ0IsRUFBUyxNQUFxQjtRQUE5QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNoRSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxJQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQzdFLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMs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TUFBTSxLQUFLLENBQUM7U0FDYjtJQUNILENBQUM7SUFDTSxnQkFBZ0IsQ0FBQyxrQkFBa0I7UUFDeEMsSUFBSTtZQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztpQkFDekMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FDN0IsQ0FBQztTQUNIO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixNQUFNLEtBQUssQ0FBQztTQUNmO0lBQ0gsQ0FBQzsySEFySFEsY0FBYzsrSEFBZCxjQUFjLGNBSGIsTUFBTTs7NEZBR1AsY0FBYztrQkFKMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcmV0cnksIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuXG5leHBvcnQgY2xhc3MgUmVzdEFwaVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgYmFzZVVSTDpzdHJpbmcgPSBjb25zdGFudHMuYmFzZVByb2RVUkw7XG4gIHByaXZhdGUgRFNQYmFzZVVSTDpzdHJpbmcgPSBjb25zdGFudHMua0Jhc2VEc3BBcGlVUkw7XG4gIHByaXZhdGUgdG9rZW46YW55O1xuICBwcml2YXRlIGh0dHBPcHRpb25zO1xuICBwdWJsaWMgaXNTdHJ1Y3RlckFwaUNhbGxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxwcml2YXRlIGNvb2tpZTogQ29va2llU2VydmljZSkgeyBcbiAgICBsZXQgZG9tYWluID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuICAgIGlmKChkb21haW4uaW5jbHVkZXMoJ2FwcHRlc3QuaW50ZW50d2lzZS5jb20nKSB8fCBkb21haW4uaW5jbHVkZXMoJ2hlcm9rdWFwcCcpIHx8IFxuICAgIGRvbWFpbi5pbmNsdWRlcygnbG9jYWxob3N0JykpICYmICFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlUHJvZCcpKXtcbiAgICAgIHRoaXMuYmFzZVVSTCA9IGNvbnN0YW50cy5iYXNlU3RhZ2luZ1VSTDtcbiAgICAgIHRoaXMuRFNQYmFzZVVSTCA9IGNvbnN0YW50cy5rQmFzZURzcFRlc3RBcGlVUkw7XG4gICAgfVxuICAgIGNvbnN0IGlzQ29va2llRXhpc3RzOiBib29sZWFuID0gdGhpcy5jb29raWUuY2hlY2soJ2xvZ2dlZEluVXNlcicpO1xuXG4gICAgaWYgKGlzQ29va2llRXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IEpTT04ucGFyc2UodGhpcy5jb29raWUuZ2V0KCdsb2dnZWRJblVzZXInKSk7XG4gICAgICAgIHRoaXMudG9rZW4gPSBsb2dnZWRJblVzZXIudG9rZW47XG4gICAgfSBcbiAgICAgICAgXG4gICAgdGhpcy5odHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICdYLUF1dGgtVG9rZW4nIDogdGhpcy50b2tlblxuICAgICAgfSlcbiAgICB9ICBcblxuICB9XG5cbiAgLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgQ1JVRCBNZXRob2RzIGZvciBjb25zdW1pbmcgUkVTVGZ1bCBBUElcbiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG4gIGdldCBtZW51RG93bmxvYWRVUkwoKXtcbiAgICBsZXQgZG9tYWluID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuICAgIGxldCBhcGlVUkwgPSBjb25zdGFudHMuUFJPRF9NRU5VX0JVQ0tFVCsnL25hdm1lbnUuanNvbidcbiAgICBpZihkb21haW4uaW5jbHVkZXMoJ2FwcHRlc3QuaW50ZW50d2lzZS5jb20nKSB8fCBkb21haW4uaW5jbHVkZXMoJ2hlcm9rdWFwcCcpIHx8IGRvbWFpbi5pbmNsdWRlcygnbG9jYWxob3N0Jykpe1xuICAgICAgYXBpVVJMID0gY29uc3RhbnRzLlNUQUdJTkdfTUVOVV9CVUNLRVQrJy9uYXZtZW51Lmpzb24nO1xuICAgIH1cbiAgICByZXR1cm4gYXBpVVJMO1xuICB9XG5cbiAgLy8gSHR0cCBPcHRpb25zXG4gXG5cbiAgcHVibGljIGdldFJlY29tbWVuZGF0aW9uRGF0YShvcmdJZCwgYnVzaW5lc3NJZCwgYWNjb3VudElkKSA6IE9ic2VydmFibGU8YW55PntcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuYmFzZVVSTCsgJ29yZ2FuaXphdGlvbi8nICsgb3JnSWQgKyAnL2J1c2luZXNzZ3JvdXAvJyArIGJ1c2luZXNzSWQgKyAnL2FjY291bnQvJyArIGFjY291bnRJZCArJy9yZWNvbW1lbmRhdGlvbj92ZXJzaW9uPXYyJztcbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZSA9IG51bGw7XG4gICAgICAgIGxldCBtZXRob2QgPSAnR0VUJztcbiAgICAgICAgbGV0IGJvZHkgPSBbXTtcblxuICAgICAgIHRoaXMuaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAnWC1BdXRoLVRva2VuJyA6IHRoaXMudG9rZW5cbiAgICAgICAgICB9KVxuICAgICAgICB9ICBcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB0aGlzLmh0dHBPcHRpb25zKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzKSA9PiB7IHJldHVybiByZXMgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGEob3JnYW5pemF0aW9uSWQ6IHN0cmluZywgYnVzaW5lc3NHcm91cElkOiBzdHJpbmcsIGFtc0FjY291bnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRFNQYmFzZVVSTH1vcmdhbml6YXRpb24vJHtvcmdhbml6YXRpb25JZH0vYnVzaW5lc3NHcm91cC8ke2J1c2luZXNzR3JvdXBJZH0vYWNjb3VudC8ke2Ftc0FjY291bnRJZH0vZHNwL3N0cnVjdHVyZWFwaXN1cHBvcnRgO1xuICAgICAgICBjb25zdCBsb2NhbFJlc3BvbnNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N0cnVjdHVyZV9zdXBwb3J0X2RhdGEnKTtcbiAgICAgICAgdGhpcy5pc1N0cnVjdGVyQXBpQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKGxvY2FsUmVzcG9uc2UpIHtcbiAgICAgICAgICBjb25zdCBwYXJzZWRSZXNwb25zZSA9IEpTT04ucGFyc2UobG9jYWxSZXNwb25zZSk7XG4gICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlICYmIHBhcnNlZFJlc3BvbnNlW2Ftc0FjY291bnRJZF0pIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdHJ1Y3RlckFwaUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIG9mKHBhcnNlZFJlc3BvbnNlW2Ftc0FjY291bnRJZF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIFxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zID0ge1xuICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgYXV0aHRva2VuOiB0aGlzLnRva2VuXG4gICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICBcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB0aGlzLmh0dHBPcHRpb25zKS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbG9jYWxSZXNwb25zZSA/IEpTT04ucGFyc2UobG9jYWxSZXNwb25zZSkgOiB7fTtcbiAgICAgICAgICAgIHVwZGF0ZWREYXRhW2Ftc0FjY291bnRJZF0gPSByZXM7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RydWN0dXJlX3N1cHBvcnRfZGF0YScsIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWREYXRhKSk7XG4gICAgICAgICAgICB0aGlzLmlzU3RydWN0ZXJBcGlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzU3RydWN0ZXJBcGlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGE6JywgZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGdldGpzb25NZW51bGlzdHMoYXBwbGljYXRpb25EZXRhaWxzKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMubWVudURvd25sb2FkVVJMKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlcykgPT4geyByZXR1cm4gcmVzIH0pXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuXG59Il19
@@ -3,7 +3,7 @@ import { Injectable, Directive, Input, EventEmitter, Component, Output, ViewChil
3
3
  import * as i1 from '@angular/common/http';
4
4
  import { HttpHeaders, HttpClientModule } from '@angular/common/http';
5
5
  import { of } from 'rxjs';
6
- import { map } from 'rxjs/operators';
6
+ import { map, catchError } from 'rxjs/operators';
7
7
  import * as i4 from 'ngx-cookie-service';
8
8
  import * as i2 from '@angular/router';
9
9
  import { NavigationStart } from '@angular/router';
@@ -143,6 +143,14 @@ class RestApiService {
143
143
  localStorage.setItem('structure_support_data', JSON.stringify(updatedData));
144
144
  this.isStructerApiCalled = false;
145
145
  return res;
146
+ }), catchError((error) => {
147
+ this.isStructerApiCalled = false;
148
+ if (error.status === 404) {
149
+ return of(null);
150
+ }
151
+ else {
152
+ throw error;
153
+ }
146
154
  }));
147
155
  }
148
156
  catch (error) {
@@ -2097,6 +2105,7 @@ class ApplicationSidebarComponent {
2097
2105
  }
2098
2106
  }
2099
2107
  goToApplication(item) {
2108
+ window.localStorage.removeItem('selectedAppId');
2100
2109
  if (item.defaulturl) {
2101
2110
  this.goToAppDefaultPage(item, item.id);
2102
2111
  }