ngx-histaff-alpha 3.8.6 → 3.8.8

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.
@@ -76,9 +76,13 @@ export class CoreNavigationTrackerComponent {
76
76
  }
77
77
  ngAfterViewInit() {
78
78
  setTimeout(() => {
79
- if (!this.dvs.isProductionMode() && !this.dvs.securityPassed$.value) {
79
+ const isDevelopment = isDevMode();
80
+ console.log("isDevelopment", isDevelopment);
81
+ if (isDevelopment && !this.dvs.securityPassed$.value) {
80
82
  this.dvs.validateDeveloperViaPopup();
81
83
  }
84
+ });
85
+ setTimeout(() => {
82
86
  this.urlService.currentRouteUrl$.next(this.router.url);
83
87
  this.subscriptions.push(this.routingService.routingHistory$.subscribe(x => this.routingHistory = x));
84
88
  this.subscriptions.push(this.router.events.pipe(takeUntil(this.unsubscribe))
@@ -324,4 +328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
324
328
  type: Component,
325
329
  args: [{ selector: 'core-navigation-tracker', standalone: true, imports: [], template: "" }]
326
330
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.DeveloperValidationService }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.RoutingService }, { type: i5.LayoutService }, { type: i6.HubConnectionService }, { type: i7.UserActivityService }, { type: i8.UrlService }, { type: i9.NavigatorService }, { type: i10.AlertService }, { type: i11.DialogService }, { type: i12.MultiLanguageService }, { type: i13.AppService }, { type: i14.AppConfigService }] });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDekksT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QjdFLE1BQU0sT0FBTyw4QkFBOEI7SUFzQ3pDLFlBQ1UsV0FBd0IsRUFDeEIsR0FBK0IsRUFDL0IsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLGNBQThCLEVBQy9CLGFBQTRCLEVBQzNCLG9CQUEwQyxFQUMxQyxtQkFBd0MsRUFD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QkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2pCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDL0MsQ0FBQzs4R0FuWVUsOEJBQThCO2tHQUE5Qiw4QkFBOEIsbUZDMUMzQyxFQUFBOzsyRkQwQ2EsOEJBQThCO2tCQVAxQyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkVycm9yLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciwgUm91dGVyRXZlbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudW1TaWduYWxSVHlwZSB9IGZyb20gJy4uLy4uLy4uL2VudW0vRW51bVNpZ25hbFJUeXBlJztcclxuaW1wb3J0IHsgSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcm91dGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odWItY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckFjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IElSb3V0aW5nSGlzdG9yeUl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlLXJvdXRpbmctaGlzdG9yeS9jb3JlLXJvdXRpbmctaGlzdG9yeS9jb3JlLXJvdXRpbmctaGlzdG9yeS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVcmxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXJsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSU5hdmlnYXRvckl0ZW0gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lOYXZpZ2F0b3JJdGVtJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgSUF1dGhEYXRhIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JQXV0aERhdGEnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGV2ZWxvcGVyVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kZXZlbG9wZXItdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ1VzZXJBY3Rpdml0eSB7XHJcbiAgY2xpZW50Q29kZTogc3RyaW5nO1xyXG4gIGFwcFR5cGU6IHN0cmluZztcclxuICB1c2VybmFtZT86IHN0cmluZztcclxuICBzaWQ/OiBzdHJpbmc7XHJcbiAgbG9naW5UaW1lPzogRGF0ZTtcclxuICBhY2Nlc3NUaW1lOiBEYXRlO1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBwYXRobmFtZT86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLW5hdmlnYXRpb24tdHJhY2tlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVOYXZpZ2F0aW9uVHJhY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIG5hdmlnYXRpbmchOiBib29sZWFuO1xyXG4gIHVybCE6IHN0cmluZztcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgYXBwQ29uZmlnOiBhbnkgPSB7XHJcbiAgICBzaG93TGF5b3V0OiAnZmFsc2UnXHJcbiAgfTtcclxuXHJcbiAgYXBwSW5pdGlhbGl6aW5nITogYm9vbGVhbjtcclxuICBsb2FkaW5nITogYm9vbGVhbjtcclxuICBzdWJtaXR0aW5nITogYm9vbGVhbjtcclxuICBtZW51T3BlbiE6IGJvb2xlYW47XHJcbiAgbGVmdGJhclJlZHVjZWQhOiBib29sZWFuO1xyXG4gIGtleXdvcmQhOiBzdHJpbmc7XHJcbiAgc2lkITogc3RyaW5nO1xyXG4gIHVzZXJuYW1lITogc3RyaW5nO1xyXG4gIGV4cGlyZXNBdCE6IHN0cmluZztcclxuICBhdmF0YXIhOiBzdHJpbmc7XHJcblxyXG5cclxuICB1bnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHJvdXRpbmdIaXN0b3J5OiBJUm91dGluZ0hpc3RvcnlJdGVtW10gPSBbXTtcclxuXHJcbiAgcGVuZGluZ1VybCE6IHN0cmluZztcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtITogSU5hdmlnYXRvckl0ZW0gfCBudWxsO1xyXG4gIGxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmchOiBzdHJpbmc7XHJcblxyXG4gIGRpYWxvZ0luc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG5cclxuICBkdnNWYWxpZGF0aW5nITogYm9vbGVhbjtcclxuICBkdnNTZWN1cml0eVBhc3NlZCE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGR2czogRGV2ZWxvcGVyVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcclxuICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodWJDb25uZWN0aW9uU2VydmljZTogSHViQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJBY3Rpdml0eVNlcnZpY2U6IFVzZXJBY3Rpdml0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVybFNlcnZpY2U6IFVybFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb2RlVmVyaWZpZXJcIilcclxuICAgIC8qXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmRpYWxvZ0NvbmZpcm1lZCQucGlwZShcclxuICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAvLyAhIXRoaXMuZGlhbG9nU2VydmljZS5idXN5XHJcbiAgICAgICAgICAgIHRydWVcclxuICAgICAgICAgICAgJiYgeD8uaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIgJiYgISF4Py5jb25maXJtZWRcclxuICAgICAgICAgICAgJiYgISF0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnZhbHVlXHJcbiAgICAgICAgICAgICYmICh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJzhjMjQ2ODNkLTdkNTItNGY1YS04MDkwLTMxYzc3N2U4ODY5ZCcgfHwgdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaWQgPT09ICdiZDNlNGFkNC0xMWZjLTQ3NjYtOTIyNC00Zjk5MDJmM2E2MjMnKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICAgICAgW1xyXG4gICAgICAgICAgICAnL3Jvb3QnLFxyXG4gICAgICAgICAgICAndXJsLW1hcHBlcicsXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgeyBzdGF0ZTogeyB1cmw6IHRoaXMucGVuZGluZ1VybCwgbGFzdENsaWNrZWRNZW51SXRlbTogdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtLCBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nOiB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgfSB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlc2V0U2VydmljZSgpO1xyXG5cclxuICAgICAgfSlcclxuICAgIClcclxuICAgICovXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQucGlwZShmaWx0ZXIocyA9PiAhIXMpKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtID0geFxyXG4gICAgICAgIHRoaXMubGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyA9IGBbJHt4Py5pZH1dPT4ke3RoaXMubWxzLnRyYW5zKHghLmNvZGUpfT0+KCR7eD8udXJsfSlgXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5kdnMuaXNQcm9kdWN0aW9uTW9kZSgpICYmICF0aGlzLmR2cy5zZWN1cml0eVBhc3NlZCQudmFsdWUpIHtcclxuICAgICAgICB0aGlzLmR2cy52YWxpZGF0ZURldmVsb3BlclZpYVBvcHVwKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQodGhpcy5yb3V0ZXIudXJsKTtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLnN1YnNjcmliZSh4ID0+IHRoaXMucm91dGluZ0hpc3RvcnkgPSB4KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyb3V0ZXJFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrUm91dGVyRXZlbnQocm91dGVyRXZlbnQgYXMgUm91dGVyRXZlbnQpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC52YWx1ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gISEhWycvJ10uaW5jbHVkZXMoeClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmlnbm9yZWRQYXRocyQudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBmdWxsRnVuY3Rpb25zID0gdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC52YWx1ZT8uZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gIWlnbm9yZWRQYXRocz8uaW5jbHVkZXMoZi5wYXRoKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb25zdCBmdW5jdGlvbkZpbHRlciA9IGZ1bGxGdW5jdGlvbnMuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZi5wYXRoRnVsbE1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGYucGF0aCA9PT0geDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvL3JldHVybiB4LmluZGV4T2YoZi5wYXRoKSA9PT0gMFxyXG5cclxuICAgICAgICAgICAgICAvLyBleHBlcmltZW50YWwgc2luY2UgMjAyNC0wNC0wMlxyXG4gICAgICAgICAgICAgIHJldHVybiB4LmluZGV4T2YoZi5wYXRoKSA+PSAwIC8vIGZvciBzb21lIGF1eGlsaWFyeSByb3V0ZXMsIGZvciBleCAuLi4ocG9wdXBBdXgyOm9ubGluZS11c2VycykgdG8gYmUgYWNjZXB0YWJsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGlnbm9yZWRQYXRocylcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZnVuY3Rpb25GaWx0ZXJcIiwgZnVuY3Rpb25GaWx0ZXIpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZ1bmN0aW9uRmlsdGVyXCIsIGlnbm9yZWRQYXRocy5pbmNsdWRlcyhcIi9jbXMvc3lzdGVtL3VwZXJtaXNzaW9uLzBcIikpXHJcblxyXG4gICAgICAgICAgaWYgKHguaW5kZXhPZignL3Jvb3QnKSAhPT0gMCAmJiAhISFmdW5jdGlvbkZpbHRlci5sZW5ndGggJiYgISEhaWdub3JlZFBhdGhzLmluY2x1ZGVzKHgpICYmICEhdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNyZWF0ZU5ldyhcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19USVRMRSxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuWUVTLFxyXG4gICAgICAgICAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5JR05PUkUsXHJcbiAgICAgICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgICAgIEVudW1UcmFuc2xhdGVLZXkuUk9PVF9DVVJSRU5UX1VSTF9ET0VTX05PVF9FWElTVF9JTl9BUFBfRlVOQ1RJT05fUEFUSF9ET19ZT1VfV0FOVF9UT19NQVAsXHJcbiAgICAgICAgICAgICAgICBbeF1cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoZnVuY3Rpb25GaWx0ZXIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC5uZXh0KGZ1bmN0aW9uRmlsdGVyWzBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICAvLyB0cnkgdG8gc2V0IGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRpYXRlbHkgd2hlbiB1c2VyIGhhcyBwcmVzc2VkIEY1XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgICAgY29uc3QgaWdub3JlZFBhdGhzID0gdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLnZhbHVlO1xyXG4gICAgICBjb25zdCBmdWxsRnVuY3Rpb25zID0gdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC52YWx1ZT8uZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgIHJldHVybiAhaWdub3JlZFBhdGhzPy5pbmNsdWRlcyhmLnBhdGgpXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBmdW5jdGlvbkZpbHRlciA9IGZ1bGxGdW5jdGlvbnMuZmlsdGVyKGYgPT4ge1xyXG4gICAgICAgIGlmIChmLnBhdGhGdWxsTWF0Y2gpIHtcclxuICAgICAgICAgIHJldHVybiBmLnBhdGggPT09IHVybDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHVybC5pbmRleE9mKGYucGF0aCkgPT09IDBcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgIGlmICghIWZ1bmN0aW9uRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChmdW5jdGlvbkZpbHRlci5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgdmFyIGZ1bmN0aW9uRmlsdGVyTGlua3M6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uRmlsdGVyLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICBmdW5jdGlvbkZpbHRlckxpbmtzLnB1c2goeC5wYXRoICsgXCIgKFwiICsgKHgucGF0aEZ1bGxNYXRjaCA/IFwidMawxqFuZyDhu6luZyB0b8OgbiBwaOG6p25cIiA6IFwidMawxqFuZyDhu6luZyBwaOG6p24gYsOqbiB0csOhaVwiKSArIFwiKVwiKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICBgTmhp4buBdSBoxqFuIDAxIGNo4bupYyBuxINuZyBjw7luZyDEkWFuZyB0xrDGoW5nIOG7qW5nIHbhu5tpIMSRaeG7gXUgaMaw4bubbmcgJHt1cmx9OlxcbiR7SlNPTi5zdHJpbmdpZnkoZnVuY3Rpb25GaWx0ZXJMaW5rcywgbnVsbCwgMil9YCxcclxuICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBO4bq/dSBraMO0bmcgcGjhuqNpIElTX1JPT1QgY8Wpbmcga2jDtG5nIHBo4bqjaSBJU19BRE1JTiB0aMOsIMSRaeG7gXUgaMaw4bubbmcgduG7gSB0cmFuZyBjaOG7p1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc1Jvb3QgJiYgIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzQWRtaW4pIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJylcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBLaeG7g20gdHJhIHhlbSBjw7MgcXV54buBbiB24bubaSBGdW5jdGlvbiBoaeG7h24gdOG6oWkgaGF5IGtow7RuZ1xyXG4gICAgICAgICAgY29uc3QgdHJ5RmluZCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LnBlcm1pc3Npb25BY3Rpb25zLmZpbHRlcih4ID0+IHguZnVuY3Rpb25JZCA9PT0gZnVuY3Rpb25GaWx0ZXJbMF0uaWQpXHJcbiAgICAgICAgICAvLyBO4bq/dSBraMO0bmcgdMOsbSB0aOG6pXkgdsOgIGtow7RuZyBwaOG6o2kgSVNfUk9PVCBjxaluZyBraMO0bmcgcGjhuqNpIElTX0FETUlOIHRow6wgxJHGsGEgcmEgdGjDtG5nIGLDoW8gdsOgIMSRaeG7gXUgaMaw4bubbmcgduG7gSB0cmFuZyBjaOG7p1xyXG4gICAgICAgICAgLy8gXCIvYXV0aC9sb2dpblwiIMSRxrDhu6NjIGLhu48gcXVhXHJcbiAgICAgICAgICBpZiAoIXRyeUZpbmQ/Lmxlbmd0aCAmJiAhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNSb290ICYmICF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc0FkbWluKSB7XHJcbiAgICAgICAgICAgIGlmICghKFtcIi9hdXRoL2xvZ2luXCIsIFwiL2hvbWVcIl0uaW5jbHVkZXMoZnVuY3Rpb25GaWx0ZXJbMF0ucGF0aCkpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbkZpbHRlclswXS5wYXRoICsgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tbHMudHJhbnMoJ0NPUkUuUEVSTUlTU0lPTi5USEVfUEFUSF9JU19OT1RfUEVSTUlUVEVEJyksXHJcbiAgICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvaG9tZScpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQubmV4dChmdW5jdGlvbkZpbHRlclswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjaGVja1JvdXRlckV2ZW50KHJvdXRlckV2ZW50OiBSb3V0ZXJFdmVudCk6IHZvaWQge1xyXG5cclxuICAgIGlmIChyb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpb25VcmwkLm5leHQocm91dGVyRXZlbnQudXJsKTtcclxuXHJcbiAgICAgIC8vIFNraXAgbmF2aWdhdGluZyBlZmZlY3Qgd2hlbiB0aGUgbmF2aWdhdGlvbiBzdGFydHMgd2l0aCAvY21zL3Byb2ZpbGUvYnVzaW5lc3Mvc3RhZmZwcm9maWxlXHJcbiAgICAgIGlmIChyb3V0ZXJFdmVudC51cmwuaW5kZXhPZihcIi9jbXMvcHJvZmlsZS9idXNpbmVzcy9zdGFmZnByb2ZpbGVcIikgIT09IDApIHtcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLm5hdmlnYXRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNGaXJzdExvZ2luICYmIHRoaXMudXJsICE9PSAnL2Ntcy9jaGFuZ2UtcGFzc3dvcmQnKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjbXMnLCAnY2hhbmdlLXBhc3N3b3JkJywgYnRvYSgodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZSBhcyBJQXV0aERhdGEpLnJlZnJlc2hUb2tlbi51c2VyKV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBuZXdSb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQudmFsdWU7XHJcbiAgICAgIG5ld1JvdXRpbmdIaXN0b3J5LnB1c2goeyBmdWxsVXJsOiB0aGlzLnVybCB9KTtcclxuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQubmV4dChuZXdSb3V0aW5nSGlzdG9yeSk7XHJcblxyXG4gICAgICBjb25zdCB1c2VyQWN0aXZpdHkgPSB0aGlzLnVzZXJBY3Rpdml0eVNlcnZpY2UudXNlckFjdGl2aXR5JC52YWx1ZTtcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU7XHJcblxyXG4gICAgICBjb25zdCBuZXdVc2VyQWN0aXZpdHkgPSB1c2VyQWN0aXZpdHkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaWQgIT09IGF1dGg/LmlkKVxyXG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC52YWx1ZTtcclxuICAgICAgbmV3VXNlckFjdGl2aXR5LnB1c2goe1xyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSEsXHJcbiAgICAgICAgcGF0aG5hbWU6IHRoaXMudXJsLFxyXG4gICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgICBodWJDb25uZWN0aW9uSWQ6IGNvbm5lY3Rpb24/LmNvbm5lY3Rpb25JZCEsXHJcbiAgICAgICAgYWNjZXNzVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCksXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCBhY2Nlc3NNb21lbnQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBjb25zdCBhY2Nlc3NUaW1lID0gYWNjZXNzTW9tZW50LmdldFRpbWUoKTtcclxuXHJcbiAgICAgIGNvbnN0IGFjdGl2aXR5OiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICAgIHNpZ25hbFR5cGU6IEVudW1TaWduYWxSVHlwZS5BQ1RJVklUWSxcclxuICAgICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUhLFxyXG4gICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgICBtZXNzYWdlOiBgJHthdXRoPy51c2VyTmFtZX0gbmF2aWdhdGVkIHRvICR7bG9jYXRpb24ucGF0aG5hbWV9YCxcclxuICAgICAgICBsb2dpblRpbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSxcclxuICAgICAgICAgIHVzZXJOYW1lOiBhdXRoPy51c2VyTmFtZSxcclxuICAgICAgICAgIHBhdGhuYW1lOiB0aGlzLnVybCxcclxuICAgICAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyLFxyXG4gICAgICAgICAgaHViQ29ubmVjdGlvbklkOiBjb25uZWN0aW9uPy5jb25uZWN0aW9uSWQhLFxyXG4gICAgICAgICAgYWNjZXNzVGltZSxcclxuICAgICAgICAgIHVzZXJBY3Rpdml0eTogbmV3VXNlckFjdGl2aXR5LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qIGlmIGxvZyBuZWVkZWRcclxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGNvbnN0IGxvZ1BheWxvYWQ6IElMb2dVc2VyQWN0aXZpdHkgPSB7XHJcbiAgICAgICAgY2xpZW50Q29kZTogJ1ZOUycsXHJcbiAgICAgICAgYXBwVHlwZTogJ1dFQkFQUCcsXHJcbiAgICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lLFxyXG4gICAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUgPyBuZXcgRGF0ZSh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGFjY2Vzc1RpbWU6IGFjY2Vzc01vbWVudCxcclxuICAgICAgICBwYXRoOiB3aW5kb3cubG9jYXRpb24uaHJlZixcclxuICAgICAgICBwYXRobmFtZTogJydcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2xvY2FsaG9zdCcpIDwgMCAmJiB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCcud2ViLmFwcCcpIDwgMCkge1xyXG4gICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0RnVsbFVybChcImh0dHBzOi8vYmxvZy50YW5sZWljYS5jb20vYXBpL0xvZ1VzZXJBY3Rpdml0eS9DcmVhdGVcIiwgbG9nUGF5bG9hZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgICovXHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIk5hdmlnYXRpb25FbmQgYWN0aXZpdHlcIiwgYWN0aXZpdHkpXHJcbiAgICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29ubmVjdGlvbj8uaW52b2tlKFwiU2VuZE1lc3NhZ2VcIiwgYWN0aXZpdHkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XHJcbiAgICAgIHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fFxyXG4gICAgICByb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xyXG5cclxuXHJcbiAgICAgIGNvbnNvbGUuZ3JvdXAoXCJyb3V0ZXJFdmVudC51cmxcIilcclxuICAgICAgY29uc29sZS5sb2cocm91dGVyRXZlbnQudXJsKVxyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLnBvcnRhbFJvdXRlcyQudmFsdWUuZmlsdGVyKHggPT4geC5wYXRoID09PSByb3V0ZXJFdmVudC51cmwpO1xyXG4gICAgICBpZiAoZmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxhbmcgPT09IFwidmlcIikge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0udmkpXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxhbmcgPT09IFwiZW5cIikge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0uZW4pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoZmlsdGVyWzBdLnZpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KCcnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmdyb3VwRW5kKClcclxuXHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UubmF2aWdhdGluZyQubmV4dChmYWxzZSk7XHJcblxyXG4gICAgICBzd2l0Y2ggKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSkge1xyXG4gICAgICAgIGNhc2UgXCJXRUJBUFBcIjpcclxuXHJcbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQubmV4dCh0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybCk7XHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KHRydWUpOyAvLyBpZiB3ZSB3YW50IGF1dG8tcmVkdWNlIHRoZSBtZW51LCB1bmNvbW1lbnQgdGhpcyBsaW5lXHJcbiAgICAgICAgICAvKlxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlZnRCYXIgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWxlZnQtYmFyLWN1cnJlbnQtd2lkdGgnKS5yZXBsYWNlKCdweCcsICcnKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLm5leHQoTnVtYmVyKGxlZnRCYXIpKVxyXG4gICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UuY29udGVudENvbnRhaW5lcldpZHRoJC5uZXh0KHdpbmRvdy5pbm5lcldpZHRoIC0gTnVtYmVyKGxlZnRCYXIpKVxyXG4gICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY29udGVudC1jb250YWluZXItd2lkdGgnLCB3aW5kb3cuaW5uZXJXaWR0aCAtIE51bWJlcihsZWZ0QmFyKSArICdweCcpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBcIlBPUlRBTFwiOlxyXG5cclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2tSb3V0ZXJFdmVudFwiLCByb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgICAgIGlmICghcm91dGVyRXZlbnQudXJsLmVuZHNXaXRoKCctZWRpdCcpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC5uZXh0KHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQocm91dGVyRXZlbnQudXJsKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEFjdGl2aXR5SGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGF1dGggPSB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlO1xyXG4gICAgaWYgKCFhdXRoPy5pc0FkbWluKSByZXR1cm47XHJcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC52YWx1ZTtcclxuICAgIGNvbnN0IGFjdGl2aXR5OiBJSHViQ29ubmVjdGlvbkFjdGl2aXR5ID0ge1xyXG4gICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lISxcclxuICAgICAgc2lnbmFsVHlwZTogRW51bVNpZ25hbFJUeXBlLkFDVElWSVRZX0hJU1RPUllfUkVTRVQsXHJcbiAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSEsXHJcbiAgICAgIGF2YXRhcjogYXV0aD8uYXZhdGFyISxcclxuICAgICAgbWVzc2FnZTogYCR7YXV0aD8udXNlck5hbWV9IGhhcyByZXNldCBhY3Rpdml0eSBoaXN0b3J5YCxcclxuICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICBkYXRhOiBudWxsLFxyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25uZWN0aW9uPy5pbnZva2UoXCJTZW5kTWVzc2FnZVwiLCBhY3Rpdml0eSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxufVxyXG4iLCIiXX0=
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDekksT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFZaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QjdFLE1BQU0sT0FBTyw4QkFBOEI7SUFzQ3pDLFlBQ1UsV0FBd0IsRUFDeEIsR0FBK0IsRUFDL0IsTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLGNBQThCLEVBQy9CLGFBQTRCLEVBQzNCLG9CQUEwQyxFQUMxQyxtQkFBd0MsRUFD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LFVBQVUsRUFBRTtZQUNoQixJQUFJO2dCQUNGLFVBQVUsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzdDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNqQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OEdBeFlVLDhCQUE4QjtrR0FBOUIsOEJBQThCLG1GQzFDM0MsRUFBQTs7MkZEMENhLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHViLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLWFjdGl2aXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJUm91dGluZ0hpc3RvcnlJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkvY29yZS1yb3V0aW5nLWhpc3RvcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VybC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElBdXRoRGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUF1dGhEYXRhJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IERldmVsb3BlclZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZGV2ZWxvcGVyLXZhbGlkYXRpb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMb2dVc2VyQWN0aXZpdHkge1xyXG4gIGNsaWVudENvZGU6IHN0cmluZztcclxuICBhcHBUeXBlOiBzdHJpbmc7XHJcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XHJcbiAgc2lkPzogc3RyaW5nO1xyXG4gIGxvZ2luVGltZT86IERhdGU7XHJcbiAgYWNjZXNzVGltZTogRGF0ZTtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1uYXZpZ2F0aW9uLXRyYWNrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtbmF2aWdhdGlvbi10cmFja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLW5hdmlnYXRpb24tdHJhY2tlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlTmF2aWdhdGlvblRyYWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBuYXZpZ2F0aW5nITogYm9vbGVhbjtcclxuICB1cmwhOiBzdHJpbmc7XHJcblxyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGFwcENvbmZpZzogYW55ID0ge1xyXG4gICAgc2hvd0xheW91dDogJ2ZhbHNlJ1xyXG4gIH07XHJcblxyXG4gIGFwcEluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgc3VibWl0dGluZyE6IGJvb2xlYW47XHJcbiAgbWVudU9wZW4hOiBib29sZWFuO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBrZXl3b3JkITogc3RyaW5nO1xyXG4gIHNpZCE6IHN0cmluZztcclxuICB1c2VybmFtZSE6IHN0cmluZztcclxuICBleHBpcmVzQXQhOiBzdHJpbmc7XHJcbiAgYXZhdGFyITogc3RyaW5nO1xyXG5cclxuXHJcbiAgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICByb3V0aW5nSGlzdG9yeTogSVJvdXRpbmdIaXN0b3J5SXRlbVtdID0gW107XHJcblxyXG4gIHBlbmRpbmdVcmwhOiBzdHJpbmc7XHJcbiAgbGFzdENsaWNrZWRNZW51SXRlbSE6IElOYXZpZ2F0b3JJdGVtIHwgbnVsbDtcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgZHZzVmFsaWRhdGluZyE6IGJvb2xlYW47XHJcbiAgZHZzU2VjdXJpdHlQYXNzZWQhOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkdnM6IERldmVsb3BlclZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyQWN0aXZpdHlTZXJ2aWNlOiBVc2VyQWN0aXZpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG5cclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiY29kZVZlcmlmaWVyXCIpXHJcbiAgICAvKlxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKHggPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgLy8gISF0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeVxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICAgICYmIHg/Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyICYmICEheD8uY29uZmlybWVkXHJcbiAgICAgICAgICAgICYmICEhdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZVxyXG4gICAgICAgICAgICAmJiAodGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaWQgPT09ICc4YzI0NjgzZC03ZDUyLTRmNWEtODA5MC0zMWM3NzdlODg2OWQnIHx8IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlkID09PSAnYmQzZTRhZDQtMTFmYy00NzY2LTkyMjQtNGY5OTAyZjNhNjIzJylcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAgJy9yb290JyxcclxuICAgICAgICAgICAgJ3VybC1tYXBwZXInLFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIHsgc3RhdGU6IHsgdXJsOiB0aGlzLnBlbmRpbmdVcmwsIGxhc3RDbGlja2VkTWVudUl0ZW06IHRoaXMubGFzdENsaWNrZWRNZW51SXRlbSwgbGFzdENsaWNrZWRNZW51SXRlbVN0cmluZzogdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nIH0gfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZXNldFNlcnZpY2UoKTtcclxuXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICAqL1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnBpcGUoZmlsdGVyKHMgPT4gISFzKSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMubGFzdENsaWNrZWRNZW51SXRlbSA9IHhcclxuICAgICAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgPSBgWyR7eD8uaWR9XT0+JHt0aGlzLm1scy50cmFucyh4IS5jb2RlKX09Pigke3g/LnVybH0pYFxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBpc0RldmVsb3BtZW50ID0gaXNEZXZNb2RlKCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiaXNEZXZlbG9wbWVudFwiLCBpc0RldmVsb3BtZW50KVxyXG4gICAgICBpZiAoaXNEZXZlbG9wbWVudCAmJiAhdGhpcy5kdnMuc2VjdXJpdHlQYXNzZWQkLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kdnMudmFsaWRhdGVEZXZlbG9wZXJWaWFQb3B1cCgpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dCh0aGlzLnJvdXRlci51cmwpO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQuc3Vic2NyaWJlKHggPT4gdGhpcy5yb3V0aW5nSGlzdG9yeSA9IHgpXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJvdXRlckV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSb3V0ZXJFdmVudChyb3V0ZXJFdmVudCBhcyBSb3V0ZXJFdmVudCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKHggPT4ge1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0NvbmZpcm1EaWFsb2ckLnZhbHVlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiAhISFbJy8nXS5pbmNsdWRlcyh4KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlnbm9yZWRQYXRocyA9IHRoaXMucm91dGluZ1NlcnZpY2UuaWdub3JlZFBhdGhzJC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IGZ1bGxGdW5jdGlvbnMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmZ1bGxGdW5jdGlvbnMkLnZhbHVlPy5maWx0ZXIoZiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhaWdub3JlZFBhdGhzPy5pbmNsdWRlcyhmLnBhdGgpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uRmlsdGVyID0gZnVsbEZ1bmN0aW9ucy5maWx0ZXIoZiA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmLnBhdGhGdWxsTWF0Y2gpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZi5wYXRoID09PSB4O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vcmV0dXJuIHguaW5kZXhPZihmLnBhdGgpID09PSAwXHJcblxyXG4gICAgICAgICAgICAgIC8vIGV4cGVyaW1lbnRhbCBzaW5jZSAyMDI0LTA0LTAyXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHguaW5kZXhPZihmLnBhdGgpID49IDAgLy8gZm9yIHNvbWUgYXV4aWxpYXJ5IHJvdXRlcywgZm9yIGV4IC4uLihwb3B1cEF1eDI6b25saW5lLXVzZXJzKSB0byBiZSBhY2NlcHRhYmxlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZnVuY3Rpb25GaWx0ZXJcIiwgaWdub3JlZFBhdGhzKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbkZpbHRlclwiLCBmdW5jdGlvbkZpbHRlcilcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZnVuY3Rpb25GaWx0ZXJcIiwgaWdub3JlZFBhdGhzLmluY2x1ZGVzKFwiL2Ntcy9zeXN0ZW0vdXBlcm1pc3Npb24vMFwiKSlcclxuXHJcbiAgICAgICAgICBpZiAoeC5pbmRleE9mKCcvcm9vdCcpICE9PSAwICYmICEhIWZ1bmN0aW9uRmlsdGVyLmxlbmd0aCAmJiAhISFpZ25vcmVkUGF0aHMuaW5jbHVkZXMoeCkgJiYgISF0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc1Jvb3QpIHtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmRpYWxvZ0NvbmZpcm1lZCQubmV4dCh7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZU51bWJlcjogdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlcixcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1lZDogZmFsc2VcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY3JlYXRlTmV3KFxyXG4gICAgICAgICAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX1RJVExFLFxyXG4gICAgICAgICAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5ZRVMsXHJcbiAgICAgICAgICAgICAgICBFbnVtVHJhbnNsYXRlS2V5LklHTk9SRSxcclxuICAgICAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgRW51bVRyYW5zbGF0ZUtleS5ST09UX0NVUlJFTlRfVVJMX0RPRVNfTk9UX0VYSVNUX0lOX0FQUF9GVU5DVElPTl9QQVRIX0RPX1lPVV9XQU5UX1RPX01BUCxcclxuICAgICAgICAgICAgICAgIFt4XVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChmdW5jdGlvbkZpbHRlci5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50RnVuY3Rpb24kLm5leHQoZnVuY3Rpb25GaWx0ZXJbMF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIC8vIHRyeSB0byBzZXQgY3VycmVudCBmdW5jdGlvbiBpbW1lZGlhdGVseSB3aGVuIHVzZXIgaGFzIHByZXNzZWQgRjVcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmlnbm9yZWRQYXRocyQudmFsdWU7XHJcbiAgICAgIGNvbnN0IGZ1bGxGdW5jdGlvbnMgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLmZ1bGxGdW5jdGlvbnMkLnZhbHVlPy5maWx0ZXIoZiA9PiB7XHJcbiAgICAgICAgcmV0dXJuICFpZ25vcmVkUGF0aHM/LmluY2x1ZGVzKGYucGF0aClcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGZ1bmN0aW9uRmlsdGVyID0gZnVsbEZ1bmN0aW9ucy5maWx0ZXIoZiA9PiB7XHJcbiAgICAgICAgaWYgKGYucGF0aEZ1bGxNYXRjaCkge1xyXG4gICAgICAgICAgcmV0dXJuIGYucGF0aCA9PT0gdXJsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdXJsLmluZGV4T2YoZi5wYXRoKSA9PT0gMFxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgaWYgKCEhZnVuY3Rpb25GaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKGZ1bmN0aW9uRmlsdGVyLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICB2YXIgZnVuY3Rpb25GaWx0ZXJMaW5rczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgICAgZnVuY3Rpb25GaWx0ZXIubWFwKHggPT4ge1xyXG4gICAgICAgICAgICAgIGZ1bmN0aW9uRmlsdGVyTGlua3MucHVzaCh4LnBhdGggKyBcIiAoXCIgKyAoeC5wYXRoRnVsbE1hdGNoID8gXCJ0xrDGoW5nIOG7qW5nIHRvw6BuIHBo4bqnblwiIDogXCJ0xrDGoW5nIOG7qW5nIHBo4bqnbiBiw6puIHRyw6FpXCIpICsgXCIpXCIpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgIGBOaGnhu4F1IGjGoW4gMDEgY2jhu6ljIG7Eg25nIGPDuW5nIMSRYW5nIHTGsMahbmcg4bupbmcgduG7m2kgxJFp4buBdSBoxrDhu5tuZyAke3VybH06XFxuJHtKU09OLnN0cmluZ2lmeShmdW5jdGlvbkZpbHRlckxpbmtzLCBudWxsLCAyKX1gLFxyXG4gICAgICAgICAgICAgIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIE7hur91IGtow7RuZyBwaOG6o2kgSVNfUk9PVCBjxaluZyBraMO0bmcgcGjhuqNpIElTX0FETUlOIHRow6wgxJFp4buBdSBoxrDhu5tuZyB24buBIHRyYW5nIGNo4bunXHJcbiAgICAgICAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzUm9vdCAmJiAhdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uaXNBZG1pbikgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIEtp4buDbSB0cmEgeGVtIGPDsyBxdXnhu4FuIHbhu5tpIEZ1bmN0aW9uIGhp4buHbiB04bqhaSBoYXkga2jDtG5nXHJcbiAgICAgICAgICBjb25zdCB0cnlGaW5kID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ucGVybWlzc2lvbkFjdGlvbnMuZmlsdGVyKHggPT4geC5mdW5jdGlvbklkID09PSBmdW5jdGlvbkZpbHRlclswXS5pZClcclxuICAgICAgICAgIC8vIE7hur91IGtow7RuZyB0w6xtIHRo4bqleSB2w6Aga2jDtG5nIHBo4bqjaSBJU19ST09UIGPFqW5nIGtow7RuZyBwaOG6o2kgSVNfQURNSU4gdGjDrCDEkcawYSByYSB0aMO0bmcgYsOhbyB2w6AgxJFp4buBdSBoxrDhu5tuZyB24buBIHRyYW5nIGNo4bunXHJcbiAgICAgICAgICAvLyBcIi9hdXRoL2xvZ2luXCIgxJHGsOG7o2MgYuG7jyBxdWFcclxuICAgICAgICAgIGlmICghdHJ5RmluZD8ubGVuZ3RoICYmICF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc1Jvb3QgJiYgIXRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlzQWRtaW4pIHtcclxuICAgICAgICAgICAgaWYgKCEoW1wiL2F1dGgvbG9naW5cIiwgXCIvaG9tZVwiXS5pbmNsdWRlcyhmdW5jdGlvbkZpbHRlclswXS5wYXRoKSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uRmlsdGVyWzBdLnBhdGggKyBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1scy50cmFucygnQ09SRS5QRVJNSVNTSU9OLlRIRV9QQVRIX0lTX05PVF9QRVJNSVRURUQnKSxcclxuICAgICAgICAgICAgICAgIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC5uZXh0KGZ1bmN0aW9uRmlsdGVyWzBdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNoZWNrUm91dGVyRXZlbnQocm91dGVyRXZlbnQ6IFJvdXRlckV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XHJcbiAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UubmF2aWdhdGlvblVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpO1xyXG5cclxuICAgICAgLy8gU2tpcCBuYXZpZ2F0aW5nIGVmZmVjdCB3aGVuIHRoZSBuYXZpZ2F0aW9uIHN0YXJ0cyB3aXRoIC9jbXMvcHJvZmlsZS9idXNpbmVzcy9zdGFmZnByb2ZpbGVcclxuICAgICAgaWYgKHJvdXRlckV2ZW50LnVybC5pbmRleE9mKFwiL2Ntcy9wcm9maWxlL2J1c2luZXNzL3N0YWZmcHJvZmlsZVwiKSAhPT0gMCkge1xyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UubmF2aWdhdGluZyQubmV4dCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgdGhpcy51cmwgPSB0aGlzLnJvdXRlci51cmw7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pc0ZpcnN0TG9naW4gJiYgdGhpcy51cmwgIT09ICcvY21zL2NoYW5nZS1wYXNzd29yZCcpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2NtcycsICdjaGFuZ2UtcGFzc3dvcmQnLCBidG9hKCh0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlIGFzIElBdXRoRGF0YSkucmVmcmVzaFRva2VuLnVzZXIpXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG5ld1JvdXRpbmdIaXN0b3J5OiBJUm91dGluZ0hpc3RvcnlJdGVtW10gPSB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC52YWx1ZTtcclxuICAgICAgbmV3Um91dGluZ0hpc3RvcnkucHVzaCh7IGZ1bGxVcmw6IHRoaXMudXJsIH0pO1xyXG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC5uZXh0KG5ld1JvdXRpbmdIaXN0b3J5KTtcclxuXHJcbiAgICAgIGNvbnN0IHVzZXJBY3Rpdml0eSA9IHRoaXMudXNlckFjdGl2aXR5U2VydmljZS51c2VyQWN0aXZpdHkkLnZhbHVlO1xyXG4gICAgICBjb25zdCBhdXRoID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZTtcclxuXHJcbiAgICAgIGNvbnN0IG5ld1VzZXJBY3Rpdml0eSA9IHVzZXJBY3Rpdml0eS5maWx0ZXIoaXRlbSA9PiBpdGVtLnNpZCAhPT0gYXV0aD8uaWQpXHJcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLnZhbHVlO1xyXG4gICAgICBuZXdVc2VyQWN0aXZpdHkucHVzaCh7XHJcbiAgICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSEsXHJcbiAgICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lISxcclxuICAgICAgICBwYXRobmFtZTogdGhpcy51cmwsXHJcbiAgICAgICAgYXZhdGFyOiBhdXRoPy5hdmF0YXIhLFxyXG4gICAgICAgIGh1YkNvbm5lY3Rpb25JZDogY29ubmVjdGlvbj8uY29ubmVjdGlvbklkISxcclxuICAgICAgICBhY2Nlc3NUaW1lOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGNvbnN0IGFjY2Vzc01vbWVudCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IGFjY2Vzc1RpbWUgPSBhY2Nlc3NNb21lbnQuZ2V0VGltZSgpO1xyXG5cclxuICAgICAgY29uc3QgYWN0aXZpdHk6IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgPSB7XHJcbiAgICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSEsXHJcbiAgICAgICAgc2lnbmFsVHlwZTogRW51bVNpZ25hbFJUeXBlLkFDVElWSVRZLFxyXG4gICAgICAgIHVzZXJuYW1lOiBhdXRoPy51c2VyTmFtZSEsXHJcbiAgICAgICAgYXZhdGFyOiBhdXRoPy5hdmF0YXIhLFxyXG4gICAgICAgIG1lc3NhZ2U6IGAke2F1dGg/LnVzZXJOYW1lfSBuYXZpZ2F0ZWQgdG8gJHtsb2NhdGlvbi5wYXRobmFtZX1gLFxyXG4gICAgICAgIGxvZ2luVGltZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8ubG9naW5UaW1lISxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBzaWQ6IGF1dGg/LmZ1bGxOYW1lLFxyXG4gICAgICAgICAgdXNlck5hbWU6IGF1dGg/LnVzZXJOYW1lLFxyXG4gICAgICAgICAgcGF0aG5hbWU6IHRoaXMudXJsLFxyXG4gICAgICAgICAgYXZhdGFyOiBhdXRoPy5hdmF0YXIsXHJcbiAgICAgICAgICBodWJDb25uZWN0aW9uSWQ6IGNvbm5lY3Rpb24/LmNvbm5lY3Rpb25JZCEsXHJcbiAgICAgICAgICBhY2Nlc3NUaW1lLFxyXG4gICAgICAgICAgdXNlckFjdGl2aXR5OiBuZXdVc2VyQWN0aXZpdHksXHJcbiAgICAgICAgfSxcclxuICAgICAgfVxyXG5cclxuICAgICAgLyogaWYgbG9nIG5lZWRlZFxyXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgY29uc3QgbG9nUGF5bG9hZDogSUxvZ1VzZXJBY3Rpdml0eSA9IHtcclxuICAgICAgICBjbGllbnRDb2RlOiAnVk5TJyxcclxuICAgICAgICBhcHBUeXBlOiAnV0VCQVBQJyxcclxuICAgICAgICB1c2VybmFtZTogYXV0aD8udXNlck5hbWUsXHJcbiAgICAgICAgc2lkOiBhdXRoPy5mdWxsTmFtZSxcclxuICAgICAgICBsb2dpblRpbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSA/IG5ldyBEYXRlKHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSkgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgYWNjZXNzVGltZTogYWNjZXNzTW9tZW50LFxyXG4gICAgICAgIHBhdGg6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxyXG4gICAgICAgIHBhdGhuYW1lOiAnJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZignbG9jYWxob3N0JykgPCAwICYmIHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJy53ZWIuYXBwJykgPCAwKSB7XHJcbiAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3RGdWxsVXJsKFwiaHR0cHM6Ly9ibG9nLnRhbmxlaWNhLmNvbS9hcGkvTG9nVXNlckFjdGl2aXR5L0NyZWF0ZVwiLCBsb2dQYXlsb2FkKS5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgKi9cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiTmF2aWdhdGlvbkVuZCBhY3Rpdml0eVwiLCBhY3Rpdml0eSlcclxuICAgICAgaWYgKCEhY29ubmVjdGlvbikge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25uZWN0aW9uPy5pbnZva2UoXCJTZW5kTWVzc2FnZVwiLCBhY3Rpdml0eSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyb3V0ZXJFdmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHxcclxuICAgICAgcm91dGVyRXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsIHx8XHJcbiAgICAgIHJvdXRlckV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XHJcblxyXG5cclxuICAgICAgY29uc29sZS5ncm91cChcInJvdXRlckV2ZW50LnVybFwiKVxyXG4gICAgICBjb25zb2xlLmxvZyhyb3V0ZXJFdmVudC51cmwpXHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMucm91dGluZ1NlcnZpY2UucG9ydGFsUm91dGVzJC52YWx1ZS5maWx0ZXIoeCA9PiB4LnBhdGggPT09IHJvdXRlckV2ZW50LnVybCk7XHJcbiAgICAgIGlmIChmaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubGFuZyA9PT0gXCJ2aVwiKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KGZpbHRlclswXS52aSlcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGFuZyA9PT0gXCJlblwiKSB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRTY3JlZW5DYXB0aW9uJC5uZXh0KGZpbHRlclswXS5lbilcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50U2NyZWVuQ2FwdGlvbiQubmV4dChmaWx0ZXJbMF0udmkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudFNjcmVlbkNhcHRpb24kLm5leHQoJycpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKVxyXG5cclxuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5uYXZpZ2F0aW5nJC5uZXh0KGZhbHNlKTtcclxuXHJcbiAgICAgIHN3aXRjaCAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFKSB7XHJcbiAgICAgICAgY2FzZSBcIldFQkFQUFwiOlxyXG5cclxuICAgICAgICAgIHRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC5uZXh0KHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMudXJsU2VydmljZS5jdXJyZW50Um91dGVVcmwkLm5leHQocm91dGVyRXZlbnQudXJsKTtcclxuXHJcbiAgICAgICAgICAvLyB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLm5leHQodHJ1ZSk7IC8vIGlmIHdlIHdhbnQgYXV0by1yZWR1Y2UgdGhlIG1lbnUsIHVuY29tbWVudCB0aGlzIGxpbmVcclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbGVmdEJhciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtbGVmdC1iYXItY3VycmVudC13aWR0aCcpLnJlcGxhY2UoJ3B4JywgJycpO1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdEJhckN1cnJlbnRXaWR0aCQubmV4dChOdW1iZXIobGVmdEJhcikpXHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVyV2lkdGgkLm5leHQod2luZG93LmlubmVyV2lkdGggLSBOdW1iZXIobGVmdEJhcikpXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jb250ZW50LWNvbnRhaW5lci13aWR0aCcsIHdpbmRvdy5pbm5lcldpZHRoIC0gTnVtYmVyKGxlZnRCYXIpICsgJ3B4JylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAqL1xyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIFwiUE9SVEFMXCI6XHJcblxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJjaGVja1JvdXRlckV2ZW50XCIsIHJvdXRlckV2ZW50LnVybCk7XHJcblxyXG4gICAgICAgICAgaWYgKCFyb3V0ZXJFdmVudC51cmwuZW5kc1dpdGgoJy1lZGl0JykpIHtcclxuICAgICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLnByZXZpb3VzUm91dGVVcmwkLm5leHQodGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLnVybFNlcnZpY2UuY3VycmVudFJvdXRlVXJsJC5uZXh0KHJvdXRlckV2ZW50LnVybCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51cmxTZXJ2aWNlLmN1cnJlbnRSb3V0ZVVybCQubmV4dChyb3V0ZXJFdmVudC51cmwpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0QWN0aXZpdHlIaXN0b3J5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgYXV0aCA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU7XHJcbiAgICBpZiAoIWF1dGg/LmlzQWRtaW4pIHJldHVybjtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLnZhbHVlO1xyXG4gICAgY29uc3QgYWN0aXZpdHk6IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgPSB7XHJcbiAgICAgIHNpZDogYXV0aD8uZnVsbE5hbWUhLFxyXG4gICAgICBzaWduYWxUeXBlOiBFbnVtU2lnbmFsUlR5cGUuQUNUSVZJVFlfSElTVE9SWV9SRVNFVCxcclxuICAgICAgdXNlcm5hbWU6IGF1dGg/LnVzZXJOYW1lISxcclxuICAgICAgYXZhdGFyOiBhdXRoPy5hdmF0YXIhLFxyXG4gICAgICBtZXNzYWdlOiBgJHthdXRoPy51c2VyTmFtZX0gaGFzIHJlc2V0IGFjdGl2aXR5IGhpc3RvcnlgLFxyXG4gICAgICBsb2dpblRpbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEsXHJcbiAgICAgIGRhdGE6IG51bGwsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhY29ubmVjdGlvbikge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbm5lY3Rpb24/Lmludm9rZShcIlNlbmRNZXNzYWdlXCIsIGFjdGl2aXR5KTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG59XHJcbiIsIiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, isDevMode } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "./auth.service";
@@ -11,7 +11,9 @@ export class DeveloperValidationService {
11
11
  this.clientSecret = "ehm8Q~CdFkcQL6Y0bUfBk9edrbkUO-mtSMwYxdjU";
12
12
  this.redirectUri = "https://localhost:4200/oauth-callback";
13
13
  this.securityPassed$ = new BehaviorSubject(false);
14
- this.monitorValidationStatus();
14
+ if (isDevMode()) {
15
+ this.monitorValidationStatus();
16
+ }
15
17
  }
16
18
  monitorValidationStatus() {
17
19
  const overlayId = 'developer-overlay';
@@ -56,9 +58,6 @@ export class DeveloperValidationService {
56
58
  }
57
59
  }, 500); // Check every 500ms to avoid developer interference
58
60
  }
59
- isProductionMode() {
60
- return 'serviceWorker' in navigator && !!navigator.serviceWorker.controller;
61
- }
62
61
  validateDeveloperViaPopup() {
63
62
  const codeVerifier = this.authService.generateRandomCodeVerifier(43);
64
63
  if (!!localStorage.getItem("codeVerifier"))
@@ -102,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
102
101
  providedIn: 'root'
103
102
  }]
104
103
  }], ctorParameters: () => [{ type: i1.AuthService }] });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2ZWxvcGVyLXZhbGlkYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3NlcnZpY2VzL2RldmVsb3Blci12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNdkMsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUNVLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBVGxDLDBCQUFxQixHQUFXLDhGQUE4RixDQUFDO1FBQy9ILGtCQUFhLEdBQVcsMEZBQTBGLENBQUM7UUFDbkgsYUFBUSxHQUFXLHNDQUFzQyxDQUFDO1FBQzFELGlCQUFZLEdBQVksMENBQTBDLENBQUM7UUFDbkUsZ0JBQVcsR0FBVyx1Q0FBdUMsQ0FBQztRQUU5RCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBS3BELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUM7UUFFdEMsNEJBQTRCO1FBQzVCLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtZQUN6QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcs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QUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3ZCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsU0FBUyxVQUFVLFdBQVcsV0FBVyxRQUFRLEdBQUcsU0FBUyxJQUFJLEVBQUUsQ0FDcEUsQ0FBQztZQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLFlBQVksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3pDO1lBQ0gsQ0FBQyxDQUFDO1lBRUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFMUQsaURBQWlEO1lBQ2pELE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDMUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDekIsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ2xDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7aUJBQ3ZEO1lBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRVYsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQWpIVSwwQkFBMEI7a0hBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXZlbG9wZXJWYWxpZGF0aW9uU2VydmljZSB7XHJcblxyXG4gIGF1dGhvcml6YXRpb25FbmRwb2ludDogc3RyaW5nID0gXCJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNGEwY2FiOTQtMTg3MC00NTJkLWE1MDUtMDFhMWIyYmYyMGViL29hdXRoMi92Mi4wL2F1dGhvcml6ZVwiO1xyXG4gIHRva2VuRW5kcG9pbnQ6IHN0cmluZyA9IFwiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLzRhMGNhYjk0LTE4NzAtNDUyZC1hNTA1LTAxYTFiMmJmMjBlYi9vYXV0aDIvdjIuMC90b2tlblwiO1xyXG4gIGNsaWVudElkOiBzdHJpbmcgPSBcIjE3MDQyOTYzLThmMTEtNDMyZS04ZGVhLWUxMWRlOGQ3ZWJjMVwiO1xyXG4gIGNsaWVudFNlY3JldDogc3RyaW5nID0gIFwiZWhtOFF+Q2RGa2NRTDZZMGJVZkJrOWVkcmJrVU8tbXRTTXdZeGRqVVwiO1xyXG4gIHJlZGlyZWN0VXJpOiBzdHJpbmcgPSBcImh0dHBzOi8vbG9jYWxob3N0OjQyMDAvb2F1dGgtY2FsbGJhY2tcIjtcclxuXHJcbiAgc2VjdXJpdHlQYXNzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMubW9uaXRvclZhbGlkYXRpb25TdGF0dXMoKTtcclxuICB9XHJcblxyXG4gIG1vbml0b3JWYWxpZGF0aW9uU3RhdHVzKCkge1xyXG4gICAgY29uc3Qgb3ZlcmxheUlkID0gJ2RldmVsb3Blci1vdmVybGF5JztcclxuXHJcbiAgICAvLyBDcmVhdGUgYW4gb3ZlcmxheSBlbGVtZW50XHJcbiAgICBjb25zdCBjcmVhdGVPdmVybGF5ID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIG92ZXJsYXkuaWQgPSBvdmVybGF5SWQ7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLnRvcCA9ICcwJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5sZWZ0ID0gJzAnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmhlaWdodCA9ICcxMDAlJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAncmdiYSgwLCAwLCAwLCAwLjcpJzsgLy8gc2VtaS10cmFuc3BhcmVudCBibGFja1xyXG4gICAgICBvdmVybGF5LnN0eWxlLnpJbmRleCA9ICc5OTk5JztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2NlbnRlcic7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmNvbG9yID0gJyNmZmYnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmZvbnRTaXplID0gJzI0cHgnO1xyXG4gICAgICBvdmVybGF5LmlubmVyVGV4dCA9ICdDaGVja2luZyBFbnRyYSBJRCBBY2NvdW50Li4uJztcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRoZSBvdmVybGF5IGlmIG5lZWRlZFxyXG4gICAgY29uc3QgcmVtb3ZlT3ZlcmxheSA9ICgpID0+IHtcclxuICAgICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG92ZXJsYXlJZCk7XHJcbiAgICAgIGlmIChvdmVybGF5KSB7XHJcbiAgICAgICAgb3ZlcmxheS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBNb25pdG9yIHRoZSB2YWx1ZXMgdXNpbmcgc2V0SW50ZXJ2YWxcclxuICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VjdXJpdHlQYXNzZWQgPSB0aGlzLnNlY3VyaXR5UGFzc2VkJC52YWx1ZTtcclxuXHJcbiAgICAgIGlmICghc2VjdXJpdHlQYXNzZWQpIHtcclxuICAgICAgICAvLyBJZiB2YWxpZGF0aW9uIGlzIGRvbmUgYnV0IHNlY3VyaXR5IG5vdCBwYXNzZWQsIGNyZWF0ZSB0aGUgb3ZlcmxheVxyXG4gICAgICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3ZlcmxheUlkKSkge1xyXG4gICAgICAgICAgY3JlYXRlT3ZlcmxheSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiB2YWxpZGF0aW9uIHBhc3NlcyBvciBpbiBwcm9ncmVzcywgcmVtb3ZlIHRoZSBvdmVybGF5XHJcbiAgICAgICAgcmVtb3ZlT3ZlcmxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MDApOyAvLyBDaGVjayBldmVyeSA1MDBtcyB0byBhdm9pZCBkZXZlbG9wZXIgaW50ZXJmZXJlbmNlXHJcbiAgfVxyXG5cclxuICBpc1Byb2R1Y3Rpb25Nb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IgJiYgISFuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVEZXZlbG9wZXJWaWFQb3B1cCgpIHtcclxuXHJcbiAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLmdlbmVyYXRlUmFuZG9tQ29kZVZlcmlmaWVyKDQzKTtcclxuICAgIGlmICghIWxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29kZVZlcmlmaWVyXCIpKSByZXR1cm47XHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjb2RlVmVyaWZpZXJcIiwgY29kZVZlcmlmaWVyKVxyXG5cclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlRnJvbVZlcmlmaWVyKGNvZGVWZXJpZmllcikudGhlbihjb2RlQ2hhbGxlbmdlID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGF1dGhvcml6YXRpb25VcmwgPSBgJHt0aGlzLmF1dGhvcml6YXRpb25FbmRwb2ludH0/YCArXHJcbiAgICAgICAgYHJlc3BvbnNlX3R5cGU9Y29kZWAgK1xyXG4gICAgICAgIGAmY2xpZW50X2lkPSR7dGhpcy5jbGllbnRJZH1gICtcclxuICAgICAgICBgJnJlZGlyZWN0X3VyaT0ke3RoaXMucmVkaXJlY3RVcml9YCArXHJcbiAgICAgICAgYCZjb2RlX2NoYWxsZW5nZT0ke2NvZGVDaGFsbGVuZ2V9YCArXHJcbiAgICAgICAgYCZjb2RlX2NoYWxsZW5nZV9tZXRob2Q9UzI1NmAgK1xyXG4gICAgICAgIGAmc2NvcGU9b3BlbmlkIHByb2ZpbGUgZW1haWxgO1xyXG5cclxuICAgICAgY29uc3QgcG9wdXBXaWR0aCA9IDUwMDtcclxuICAgICAgY29uc3QgcG9wdXBIZWlnaHQgPSA1MDA7XHJcbiAgICAgIGNvbnN0IGxlZnQgPSAod2luZG93LmlubmVyV2lkdGggLSBwb3B1cFdpZHRoKSAvIDI7XHJcbiAgICAgIGNvbnN0IHRvcCA9ICh3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3B1cEhlaWdodCkgLyAyO1xyXG5cclxuICAgICAgY29uc3QgcG9wdXAgPSB3aW5kb3cub3BlbihcclxuICAgICAgICBhdXRob3JpemF0aW9uVXJsLFxyXG4gICAgICAgICdPQXV0aDIgUG9wdXAnLFxyXG4gICAgICAgIGB3aWR0aD0ke3BvcHVwV2lkdGh9LGhlaWdodD0ke3BvcHVwSGVpZ2h0fSx0b3A9JHt0b3B9LGxlZnQ9JHtsZWZ0fWBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IHJlY2VpdmVNZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoISFldmVudC5kYXRhPy5hdXRoQ29kZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWN1cml0eVBhc3NlZCQubmV4dCh0cnVlKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiY29kZVZlcmlmaWVyXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTtcclxuXHJcbiAgICAgIC8vIENsZWFuIHVwIHRoZSBsaXN0ZW5lciB3aGVuIHRoZSBwb3B1cCBpcyBjbG9zZWRcclxuICAgICAgY29uc3QgcG9wdXBDaGVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGlmIChwb3B1cCAmJiBwb3B1cC5jbG9zZWQpIHtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwocG9wdXBDaGVja0ludGVydmFsKTtcclxuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgcmVjZWl2ZU1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgNTAwKTtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2ZWxvcGVyLXZhbGlkYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3NlcnZpY2VzL2RldmVsb3Blci12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTXZDLE1BQU0sT0FBTywwQkFBMEI7SUFVckMsWUFDVSxXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVRsQywwQkFBcUIsR0FBVyw4RkFBOEYsQ0FBQztRQUMvSCxrQkFBYSxHQUFXLDBGQUEwRixDQUFDO1FBQ25ILGFBQVEsR0FBVyxzQ0FBc0MsQ0FBQztRQUMxRCxpQkFBWSxHQUFXLDBDQUEwQyxDQUFDO1FBQ2xFLGdCQUFXLEdBQVcsdUNBQXVDLENBQUM7UUFFOUQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUtwRCxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDO1FBRXRDLDRCQUE0QjtRQUM1QixNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDekIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQztZQUN2QixPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7WUFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxD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VUFBVSxXQUFXLFdBQVcsUUFBUSxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQ3BFLENBQUM7WUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUN6QztZQUNILENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTFELGlEQUFpRDtZQUNqRCxNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ3pCLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUNsQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2lCQUN2RDtZQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVWLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0EvR1UsMEJBQTBCO2tIQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7MkZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXZlbG9wZXJWYWxpZGF0aW9uU2VydmljZSB7XHJcblxyXG4gIGF1dGhvcml6YXRpb25FbmRwb2ludDogc3RyaW5nID0gXCJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNGEwY2FiOTQtMTg3MC00NTJkLWE1MDUtMDFhMWIyYmYyMGViL29hdXRoMi92Mi4wL2F1dGhvcml6ZVwiO1xyXG4gIHRva2VuRW5kcG9pbnQ6IHN0cmluZyA9IFwiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLzRhMGNhYjk0LTE4NzAtNDUyZC1hNTA1LTAxYTFiMmJmMjBlYi9vYXV0aDIvdjIuMC90b2tlblwiO1xyXG4gIGNsaWVudElkOiBzdHJpbmcgPSBcIjE3MDQyOTYzLThmMTEtNDMyZS04ZGVhLWUxMWRlOGQ3ZWJjMVwiO1xyXG4gIGNsaWVudFNlY3JldDogc3RyaW5nID0gXCJlaG04UX5DZEZrY1FMNlkwYlVmQms5ZWRyYmtVTy1tdFNNd1l4ZGpVXCI7XHJcbiAgcmVkaXJlY3RVcmk6IHN0cmluZyA9IFwiaHR0cHM6Ly9sb2NhbGhvc3Q6NDIwMC9vYXV0aC1jYWxsYmFja1wiO1xyXG5cclxuICBzZWN1cml0eVBhc3NlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZVxyXG4gICkge1xyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIHRoaXMubW9uaXRvclZhbGlkYXRpb25TdGF0dXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vbml0b3JWYWxpZGF0aW9uU3RhdHVzKCkge1xyXG4gICAgY29uc3Qgb3ZlcmxheUlkID0gJ2RldmVsb3Blci1vdmVybGF5JztcclxuXHJcbiAgICAvLyBDcmVhdGUgYW4gb3ZlcmxheSBlbGVtZW50XHJcbiAgICBjb25zdCBjcmVhdGVPdmVybGF5ID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIG92ZXJsYXkuaWQgPSBvdmVybGF5SWQ7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLnRvcCA9ICcwJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5sZWZ0ID0gJzAnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmhlaWdodCA9ICcxMDAlJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAncmdiYSgwLCAwLCAwLCAwLjcpJzsgLy8gc2VtaS10cmFuc3BhcmVudCBibGFja1xyXG4gICAgICBvdmVybGF5LnN0eWxlLnpJbmRleCA9ICc5OTk5JztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2NlbnRlcic7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmNvbG9yID0gJyNmZmYnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmZvbnRTaXplID0gJzI0cHgnO1xyXG4gICAgICBvdmVybGF5LmlubmVyVGV4dCA9ICdDaGVja2luZyBFbnRyYSBJRCBBY2NvdW50Li4uJztcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRoZSBvdmVybGF5IGlmIG5lZWRlZFxyXG4gICAgY29uc3QgcmVtb3ZlT3ZlcmxheSA9ICgpID0+IHtcclxuICAgICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG92ZXJsYXlJZCk7XHJcbiAgICAgIGlmIChvdmVybGF5KSB7XHJcbiAgICAgICAgb3ZlcmxheS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBNb25pdG9yIHRoZSB2YWx1ZXMgdXNpbmcgc2V0SW50ZXJ2YWxcclxuICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VjdXJpdHlQYXNzZWQgPSB0aGlzLnNlY3VyaXR5UGFzc2VkJC52YWx1ZTtcclxuXHJcbiAgICAgIGlmICghc2VjdXJpdHlQYXNzZWQpIHtcclxuICAgICAgICAvLyBJZiB2YWxpZGF0aW9uIGlzIGRvbmUgYnV0IHNlY3VyaXR5IG5vdCBwYXNzZWQsIGNyZWF0ZSB0aGUgb3ZlcmxheVxyXG4gICAgICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3ZlcmxheUlkKSkge1xyXG4gICAgICAgICAgY3JlYXRlT3ZlcmxheSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiB2YWxpZGF0aW9uIHBhc3NlcyBvciBpbiBwcm9ncmVzcywgcmVtb3ZlIHRoZSBvdmVybGF5XHJcbiAgICAgICAgcmVtb3ZlT3ZlcmxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MDApOyAvLyBDaGVjayBldmVyeSA1MDBtcyB0byBhdm9pZCBkZXZlbG9wZXIgaW50ZXJmZXJlbmNlXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZURldmVsb3BlclZpYVBvcHVwKCkge1xyXG5cclxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVSYW5kb21Db2RlVmVyaWZpZXIoNDMpO1xyXG4gICAgaWYgKCEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb2RlVmVyaWZpZXJcIikpIHJldHVybjtcclxuXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNvZGVWZXJpZmllclwiLCBjb2RlVmVyaWZpZXIpXHJcblxyXG4gICAgdGhpcy5hdXRoU2VydmljZS5nZW5lcmF0ZUNvZGVDaGFsbGVuZ2VGcm9tVmVyaWZpZXIoY29kZVZlcmlmaWVyKS50aGVuKGNvZGVDaGFsbGVuZ2UgPT4ge1xyXG5cclxuICAgICAgY29uc3QgYXV0aG9yaXphdGlvblVybCA9IGAke3RoaXMuYXV0aG9yaXphdGlvbkVuZHBvaW50fT9gICtcclxuICAgICAgICBgcmVzcG9uc2VfdHlwZT1jb2RlYCArXHJcbiAgICAgICAgYCZjbGllbnRfaWQ9JHt0aGlzLmNsaWVudElkfWAgK1xyXG4gICAgICAgIGAmcmVkaXJlY3RfdXJpPSR7dGhpcy5yZWRpcmVjdFVyaX1gICtcclxuICAgICAgICBgJmNvZGVfY2hhbGxlbmdlPSR7Y29kZUNoYWxsZW5nZX1gICtcclxuICAgICAgICBgJmNvZGVfY2hhbGxlbmdlX21ldGhvZD1TMjU2YCArXHJcbiAgICAgICAgYCZzY29wZT1vcGVuaWQgcHJvZmlsZSBlbWFpbGA7XHJcblxyXG4gICAgICBjb25zdCBwb3B1cFdpZHRoID0gNTAwO1xyXG4gICAgICBjb25zdCBwb3B1cEhlaWdodCA9IDUwMDtcclxuICAgICAgY29uc3QgbGVmdCA9ICh3aW5kb3cuaW5uZXJXaWR0aCAtIHBvcHVwV2lkdGgpIC8gMjtcclxuICAgICAgY29uc3QgdG9wID0gKHdpbmRvdy5pbm5lckhlaWdodCAtIHBvcHVwSGVpZ2h0KSAvIDI7XHJcblxyXG4gICAgICBjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKFxyXG4gICAgICAgIGF1dGhvcml6YXRpb25VcmwsXHJcbiAgICAgICAgJ09BdXRoMiBQb3B1cCcsXHJcbiAgICAgICAgYHdpZHRoPSR7cG9wdXBXaWR0aH0saGVpZ2h0PSR7cG9wdXBIZWlnaHR9LHRvcD0ke3RvcH0sbGVmdD0ke2xlZnR9YFxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgcmVjZWl2ZU1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgIGlmICghIWV2ZW50LmRhdGE/LmF1dGhDb2RlKSB7XHJcbiAgICAgICAgICB0aGlzLnNlY3VyaXR5UGFzc2VkJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb2RlVmVyaWZpZXJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpO1xyXG5cclxuICAgICAgLy8gQ2xlYW4gdXAgdGhlIGxpc3RlbmVyIHdoZW4gdGhlIHBvcHVwIGlzIGNsb3NlZFxyXG4gICAgICBjb25zdCBwb3B1cENoZWNrSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHBvcHVwICYmIHBvcHVwLmNsb3NlZCkge1xyXG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChwb3B1cENoZWNrSW50ZXJ2YWwpO1xyXG4gICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCA1MDApO1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -24252,7 +24252,9 @@ class DeveloperValidationService {
24252
24252
  this.clientSecret = "ehm8Q~CdFkcQL6Y0bUfBk9edrbkUO-mtSMwYxdjU";
24253
24253
  this.redirectUri = "https://localhost:4200/oauth-callback";
24254
24254
  this.securityPassed$ = new BehaviorSubject(false);
24255
- this.monitorValidationStatus();
24255
+ if (isDevMode()) {
24256
+ this.monitorValidationStatus();
24257
+ }
24256
24258
  }
24257
24259
  monitorValidationStatus() {
24258
24260
  const overlayId = 'developer-overlay';
@@ -24297,9 +24299,6 @@ class DeveloperValidationService {
24297
24299
  }
24298
24300
  }, 500); // Check every 500ms to avoid developer interference
24299
24301
  }
24300
- isProductionMode() {
24301
- return 'serviceWorker' in navigator && !!navigator.serviceWorker.controller;
24302
- }
24303
24302
  validateDeveloperViaPopup() {
24304
24303
  const codeVerifier = this.authService.generateRandomCodeVerifier(43);
24305
24304
  if (!!localStorage.getItem("codeVerifier"))
@@ -24401,9 +24400,13 @@ class CoreNavigationTrackerComponent {
24401
24400
  }
24402
24401
  ngAfterViewInit() {
24403
24402
  setTimeout(() => {
24404
- if (!this.dvs.isProductionMode() && !this.dvs.securityPassed$.value) {
24403
+ const isDevelopment = isDevMode();
24404
+ console.log("isDevelopment", isDevelopment);
24405
+ if (isDevelopment && !this.dvs.securityPassed$.value) {
24405
24406
  this.dvs.validateDeveloperViaPopup();
24406
24407
  }
24408
+ });
24409
+ setTimeout(() => {
24407
24410
  this.urlService.currentRouteUrl$.next(this.router.url);
24408
24411
  this.subscriptions.push(this.routingService.routingHistory$.subscribe(x => this.routingHistory = x));
24409
24412
  this.subscriptions.push(this.router.events.pipe(takeUntil(this.unsubscribe))