@onemrvapublic/design-system 18.1.3 → 18.2.0-develop.1

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.
Files changed (69) hide show
  1. package/esm2022/layout/src/components/layout/layout.component.mjs +11 -4
  2. package/esm2022/mat-input-country/src/onemrva-mat-input-country.component.mjs +3 -3
  3. package/esm2022/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.mjs +3 -3
  4. package/esm2022/mat-input-phone/src/onemrva-mat-input-phone.component.mjs +3 -3
  5. package/esm2022/shared/index.mjs +13 -11
  6. package/esm2022/shared/src/lib/adapters/date.adapter.mjs +62 -0
  7. package/esm2022/shared/src/lib/adapters/index.mjs +2 -0
  8. package/esm2022/shared/src/lib/components/index.mjs +2 -0
  9. package/esm2022/shared/src/lib/constants/CDNUrlModeOptions.mjs +6 -0
  10. package/esm2022/shared/src/lib/constants/cdn.mjs +3 -0
  11. package/esm2022/shared/src/lib/constants/constants.mjs +6 -0
  12. package/esm2022/shared/src/lib/constants/date.format.mjs +12 -0
  13. package/esm2022/shared/src/lib/constants/index.mjs +5 -0
  14. package/esm2022/shared/src/lib/decorators/index.mjs +2 -0
  15. package/esm2022/shared/src/lib/helpers/index.mjs +2 -0
  16. package/esm2022/shared/src/lib/helpers/translation-helper.mjs +30 -0
  17. package/esm2022/shared/src/lib/loaders/index.mjs +3 -0
  18. package/esm2022/shared/src/lib/loaders/onemrva-translate-cdn-loader.mjs +15 -0
  19. package/esm2022/shared/src/lib/loaders/onemrva-translate-http-loader.mjs +30 -0
  20. package/esm2022/shared/src/lib/services/cdn.service.mjs +28 -68
  21. package/esm2022/shared/src/lib/services/country-cdn.service.mjs +72 -0
  22. package/esm2022/shared/src/lib/services/country-lookup.service.mjs +38 -0
  23. package/esm2022/shared/src/lib/services/index.mjs +3 -2
  24. package/esm2022/shared/src/lib/shared.datepicker.module.mjs +3 -3
  25. package/esm2022/shared/src/lib/validators/bank-account.validator.utils.mjs +45 -0
  26. package/esm2022/shared/src/lib/validators/index.mjs +3 -0
  27. package/fesm2022/onemrvapublic-design-system-layout.mjs +10 -3
  28. package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
  29. package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs +2 -2
  30. package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs.map +1 -1
  31. package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs +2 -2
  32. package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs.map +1 -1
  33. package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs +2 -2
  34. package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs.map +1 -1
  35. package/fesm2022/onemrvapublic-design-system-shared.mjs +591 -490
  36. package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
  37. package/layout/src/components/layout/layout.component.scss +1 -1
  38. package/mat-input-country/src/onemrva-mat-input-country.component.d.ts +2 -2
  39. package/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.d.ts +2 -2
  40. package/mat-input-phone/src/onemrva-mat-input-phone.component.d.ts +2 -2
  41. package/package.json +1 -1
  42. package/shared/index.d.ts +12 -10
  43. package/shared/src/lib/adapters/index.d.ts +1 -0
  44. package/shared/src/lib/components/index.d.ts +1 -0
  45. package/shared/src/lib/{constants.d.ts → constants/constants.d.ts} +1 -0
  46. package/shared/src/lib/constants/index.d.ts +4 -0
  47. package/shared/src/lib/decorators/index.d.ts +1 -0
  48. package/shared/src/lib/helpers/index.d.ts +1 -0
  49. package/shared/src/lib/helpers/translation-helper.d.ts +2 -0
  50. package/shared/src/lib/loaders/index.d.ts +2 -0
  51. package/shared/src/lib/loaders/onemrva-translate-cdn-loader.d.ts +14 -0
  52. package/shared/src/lib/loaders/onemrva-translate-http-loader.d.ts +14 -0
  53. package/shared/src/lib/services/cdn.service.d.ts +7 -86
  54. package/shared/src/lib/services/country-cdn.service.d.ts +89 -0
  55. package/shared/src/lib/services/{commonCountryLookup.service.d.ts → country-lookup.service.d.ts} +1 -1
  56. package/shared/src/lib/services/index.d.ts +2 -1
  57. package/shared/src/lib/validators/index.d.ts +2 -0
  58. package/esm2022/shared/src/lib/CDNUrlModeOptions.mjs +0 -6
  59. package/esm2022/shared/src/lib/OnemrvaDateAdapter.mjs +0 -62
  60. package/esm2022/shared/src/lib/constants.mjs +0 -5
  61. package/esm2022/shared/src/lib/date.format.mjs +0 -12
  62. package/esm2022/shared/src/lib/injectionTokens.mjs +0 -3
  63. package/esm2022/shared/src/lib/services/commonCountryLookup.service.mjs +0 -38
  64. package/esm2022/shared/src/lib/validators/bankAccountValidator.utils.mjs +0 -45
  65. /package/shared/src/lib/{OnemrvaDateAdapter.d.ts → adapters/date.adapter.d.ts} +0 -0
  66. /package/shared/src/lib/{CDNUrlModeOptions.d.ts → constants/CDNUrlModeOptions.d.ts} +0 -0
  67. /package/shared/src/lib/{injectionTokens.d.ts → constants/cdn.d.ts} +0 -0
  68. /package/shared/src/lib/{date.format.d.ts → constants/date.format.d.ts} +0 -0
  69. /package/shared/src/lib/validators/{bankAccountValidator.utils.d.ts → bank-account.validator.utils.d.ts} +0 -0
@@ -50,7 +50,14 @@ export class LayoutComponent {
50
50
  this.isSmall = true;
51
51
  this.id = 'main';
52
52
  this.role = 'main';
53
- // this.isLogoutUsed = this.logout.observers.length > 0;
53
+ if (this.languages.length === 0) {
54
+ this.translateService.getLangs().forEach(value => {
55
+ this.languages.push({
56
+ code: value,
57
+ label: value.toUpperCase(),
58
+ });
59
+ });
60
+ }
54
61
  }
55
62
  ngOnInit() {
56
63
  this.selectedIndex = this.languages.findIndex(l => l.code === this.translateService.currentLang);
@@ -115,11 +122,11 @@ export class LayoutComponent {
115
122
  this.drawer.open();
116
123
  }
117
124
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: LayoutComponent, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i2.BreakpointObserver }, { token: DOCUMENT }, { token: i3.OnemrvaDrawerService }], target: i0.ɵɵFactoryTarget.Component }); }
118
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: LayoutComponent, selector: "onemrva-layout", inputs: { logo: "logo", languages: "languages", environment: "environment", logoRedictionUrl: "logoRedictionUrl", profile: "profile", id: "id", role: "role" }, outputs: { login: "login", logout: "logout" }, queries: [{ propertyName: "title", first: true, predicate: LayoutTitleComponent, descendants: true }, { propertyName: "loginMenu", first: true, predicate: LayoutLoginMenuComponent, descendants: true }, { propertyName: "content", first: true, predicate: LayoutContentComponent, descendants: true }, { propertyName: "afterNav", first: true, predicate: LayoutAfterNavComponent, descendants: true }, { propertyName: "footer", first: true, predicate: LayoutFooterComponent, descendants: true }, { propertyName: "routes", predicate: LayoutRouteComponent }], viewQueries: [{ propertyName: "drawer", first: true, predicate: MatDrawer, descendants: true, static: true }, { propertyName: "drawerHost", first: true, predicate: DrawerHostDirective, descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"\n 'onemrva_logo_' + currentLanguage.toLocaleLowerCase()\n \"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default',\n }\"\n />\n <div\n class=\"application-title\"\n [ngClass]=\"{ 'small-screen': isSmall }\"\n >\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"!profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n icon=\"account_circle\"\n color=\"\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n [attr.aria-label]=\"'layout.logout' | translate\"\n >\n <mat-icon>logout</mat-icon>\n {{ 'layout.logout' | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n [attr.aria-label]=\"'layout.login' | translate\"\n >\n <mat-icon>login</mat-icon>\n {{ 'layout.login' | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n [attr.aria-label]=\"'layout.menu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <a\n [matMenuTriggerFor]=\"languageMenu\"\n data-cy=\"languageMenu\"\n [attr.aria-label]=\"'language.selection' | translate\"\n mat-tab-link\n >\n {{ currentLanguage }}\n <mat-icon style=\"width: 16px\">expand_more</mat-icon>\n </a>\n </div>\n <mat-menu #languageMenu>\n <button\n *ngFor=\"let lang of languages\"\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n [attr.data-cy]=\"'language_' + lang.code\"\n (click)=\"changeLanguage(lang.code)\"\n [attr.aria-label]=\"lang.label\"\n >\n {{ lang.label }}\n </button>\n </mat-menu>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div\n [id]=\"id\"\n [attr.role]=\"role\"\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"onemrva-layout-content\"\n *ngIf=\"content?.template as tpl\"\n >\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment &&\n (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <div [class.onemrva-layout-container]=\"!fluid\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1.3rem;font-weight:700;height:42px;line-height:42px}:host .mat-toolbar{background:#fff;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174,#eb142a) 0 0 no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{min-height:calc(100vh - 195px)}.onemrva-footer{text-align:center;padding:9.5px;margin-top:16px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i8.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i9.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i9.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i9.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.OnemrvaMatAvatarComponent, selector: "onemrva-mat-avatar", inputs: ["id", "roundShape", "initials", "icon", "src", "size", "color"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i15.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i16.DrawerHostDirective, selector: "[drawerhost]" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: LayoutComponent, selector: "onemrva-layout", inputs: { logo: "logo", languages: "languages", environment: "environment", logoRedictionUrl: "logoRedictionUrl", profile: "profile", id: "id", role: "role" }, outputs: { login: "login", logout: "logout" }, queries: [{ propertyName: "title", first: true, predicate: LayoutTitleComponent, descendants: true }, { propertyName: "loginMenu", first: true, predicate: LayoutLoginMenuComponent, descendants: true }, { propertyName: "content", first: true, predicate: LayoutContentComponent, descendants: true }, { propertyName: "afterNav", first: true, predicate: LayoutAfterNavComponent, descendants: true }, { propertyName: "footer", first: true, predicate: LayoutFooterComponent, descendants: true }, { propertyName: "routes", predicate: LayoutRouteComponent }], viewQueries: [{ propertyName: "drawer", first: true, predicate: MatDrawer, descendants: true, static: true }, { propertyName: "drawerHost", first: true, predicate: DrawerHostDirective, descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"\n 'onemrva_logo_' + currentLanguage.toLocaleLowerCase()\n \"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default',\n }\"\n />\n <div\n class=\"application-title\"\n [ngClass]=\"{ 'small-screen': isSmall }\"\n >\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"!profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n icon=\"account_circle\"\n color=\"\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n [attr.aria-label]=\"'layout.logout' | translate\"\n >\n <mat-icon>logout</mat-icon>\n {{ 'layout.logout' | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n [attr.aria-label]=\"'layout.login' | translate\"\n >\n <mat-icon>login</mat-icon>\n {{ 'layout.login' | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n [attr.aria-label]=\"'layout.menu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <a\n [matMenuTriggerFor]=\"languageMenu\"\n data-cy=\"languageMenu\"\n [attr.aria-label]=\"'language.selection' | translate\"\n mat-tab-link\n >\n {{ currentLanguage }}\n <mat-icon style=\"width: 16px\">expand_more</mat-icon>\n </a>\n </div>\n <mat-menu #languageMenu>\n <button\n *ngFor=\"let lang of languages\"\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n [attr.data-cy]=\"'language_' + lang.code\"\n (click)=\"changeLanguage(lang.code)\"\n [attr.aria-label]=\"lang.label\"\n >\n {{ lang.label }}\n </button>\n </mat-menu>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div\n [id]=\"id\"\n [attr.role]=\"role\"\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"onemrva-layout-content\"\n *ngIf=\"content?.template as tpl\"\n >\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment &&\n (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <div [class.onemrva-layout-container]=\"!fluid\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1.3rem;font-weight:700;height:42px;line-height:42px}:host .mat-toolbar{background:#fff;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174,#eb142a) 0 0 no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{padding-top:120px;min-height:calc(100vh - 195px)}.onemrva-footer{text-align:center;padding:9.5px;margin-top:16px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i8.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i9.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i9.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i9.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.OnemrvaMatAvatarComponent, selector: "onemrva-mat-avatar", inputs: ["id", "roundShape", "initials", "icon", "src", "size", "color"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i15.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i16.DrawerHostDirective, selector: "[drawerhost]" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
119
126
  }
120
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: LayoutComponent, decorators: [{
121
128
  type: Component,
122
- args: [{ selector: 'onemrva-layout', template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"\n 'onemrva_logo_' + currentLanguage.toLocaleLowerCase()\n \"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default',\n }\"\n />\n <div\n class=\"application-title\"\n [ngClass]=\"{ 'small-screen': isSmall }\"\n >\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"!profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n icon=\"account_circle\"\n color=\"\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n [attr.aria-label]=\"'layout.logout' | translate\"\n >\n <mat-icon>logout</mat-icon>\n {{ 'layout.logout' | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n [attr.aria-label]=\"'layout.login' | translate\"\n >\n <mat-icon>login</mat-icon>\n {{ 'layout.login' | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n [attr.aria-label]=\"'layout.menu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <a\n [matMenuTriggerFor]=\"languageMenu\"\n data-cy=\"languageMenu\"\n [attr.aria-label]=\"'language.selection' | translate\"\n mat-tab-link\n >\n {{ currentLanguage }}\n <mat-icon style=\"width: 16px\">expand_more</mat-icon>\n </a>\n </div>\n <mat-menu #languageMenu>\n <button\n *ngFor=\"let lang of languages\"\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n [attr.data-cy]=\"'language_' + lang.code\"\n (click)=\"changeLanguage(lang.code)\"\n [attr.aria-label]=\"lang.label\"\n >\n {{ lang.label }}\n </button>\n </mat-menu>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div\n [id]=\"id\"\n [attr.role]=\"role\"\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"onemrva-layout-content\"\n *ngIf=\"content?.template as tpl\"\n >\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment &&\n (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <div [class.onemrva-layout-container]=\"!fluid\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1.3rem;font-weight:700;height:42px;line-height:42px}:host .mat-toolbar{background:#fff;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174,#eb142a) 0 0 no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{min-height:calc(100vh - 195px)}.onemrva-footer{text-align:center;padding:9.5px;margin-top:16px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"] }]
129
+ args: [{ selector: 'onemrva-layout', template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"\n 'onemrva_logo_' + currentLanguage.toLocaleLowerCase()\n \"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default',\n }\"\n />\n <div\n class=\"application-title\"\n [ngClass]=\"{ 'small-screen': isSmall }\"\n >\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"!profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n icon=\"account_circle\"\n color=\"\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n [attr.aria-label]=\"'layout.logout' | translate\"\n >\n <mat-icon>logout</mat-icon>\n {{ 'layout.logout' | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n [attr.aria-label]=\"'layout.login' | translate\"\n >\n <mat-icon>login</mat-icon>\n {{ 'layout.login' | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n [attr.aria-label]=\"'layout.menu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <a\n [matMenuTriggerFor]=\"languageMenu\"\n data-cy=\"languageMenu\"\n [attr.aria-label]=\"'language.selection' | translate\"\n mat-tab-link\n >\n {{ currentLanguage }}\n <mat-icon style=\"width: 16px\">expand_more</mat-icon>\n </a>\n </div>\n <mat-menu #languageMenu>\n <button\n *ngFor=\"let lang of languages\"\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n [attr.data-cy]=\"'language_' + lang.code\"\n (click)=\"changeLanguage(lang.code)\"\n [attr.aria-label]=\"lang.label\"\n >\n {{ lang.label }}\n </button>\n </mat-menu>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div\n [id]=\"id\"\n [attr.role]=\"role\"\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"onemrva-layout-content\"\n *ngIf=\"content?.template as tpl\"\n >\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment &&\n (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <div [class.onemrva-layout-container]=\"!fluid\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1.3rem;font-weight:700;height:42px;line-height:42px}:host .mat-toolbar{background:#fff;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174,#eb142a) 0 0 no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{padding-top:120px;min-height:calc(100vh - 195px)}.onemrva-footer{text-align:center;padding:9.5px;margin-top:16px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"] }]
123
130
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i2.BreakpointObserver }, { type: Document, decorators: [{
124
131
  type: Inject,
125
132
  args: [DOCUMENT]
@@ -166,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
166
173
  }], role: [{
167
174
  type: Input
168
175
  }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9sYXlvdXQvc3JjL2NvbXBvbmVudHMvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbGF5b3V0L3NyYy9jb21wb25lbnRzL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLEtBQUssRUFLTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBRUwsV0FBVyxHQUVaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVB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QVM7c0JBRFIsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sT0FBTztzQkFETixLQUFLO2dCQUlOLEtBQUs7c0JBREosTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU07Z0JBUWlDLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFdEMsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJaEQsRUFBRTtzQkFERCxLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIE9uSW5pdCxcbiAgSW5qZWN0LFxuICBpc0Rldk1vZGUsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMYXlvdXRSb3V0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC1yb3V0ZS9sYXlvdXQtcm91dGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IExheW91dENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9sYXlvdXQtY29udGVudC9sYXlvdXQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYXlvdXRUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC10aXRsZS9sYXlvdXQtdGl0bGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnVtcy9lbnZpcm9ubWVudC5lbnVtJztcbmltcG9ydCB7XG4gIEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgQnJlYWtwb2ludHMsXG4gIEJyZWFrcG9pbnRTdGF0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMYXlvdXRGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9sYXlvdXQtZm9vdGVyL2xheW91dC1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE9uZW1SdmFQcm9maWxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL29uZW1ydmEtcHJvZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBMYXlvdXRMb2dpbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9sYXlvdXQtbG9naW4tbWVudS9sYXlvdXQtbG9naW4tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RHJhd2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBEcmF3ZXJIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9kcmF3ZXItaG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT25lbXJ2YURyYXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kcmF3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBMYXlvdXRTaWRlbmF2Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LXNpZGVuYXYvbGF5b3V0LXNpZGVuYXYuY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dEFmdGVyTmF2Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LWFmdGVyLW5hdi9sYXlvdXQtYWZ0ZXItbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPbmVtUnZhTGFuZ3VhZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvb25lbS1sYW5ndWFnZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xheW91dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGF5b3V0Um91dGVDb21wb25lbnQpXG4gIHJvdXRlcz86IFF1ZXJ5TGlzdDxMYXlvdXRSb3V0ZUNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChMYXlvdXRUaXRsZUNvbXBvbmVudCkgdGl0bGU/OiBMYXlvdXRUaXRsZUNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChMYXlvdXRMb2dpbk1lbnVDb21wb25lbnQpIGxvZ2luTWVudT86IExheW91dExvZ2luTWVudUNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChMYXlvdXRDb250ZW50Q29tcG9uZW50KSBjb250ZW50PzogTGF5b3V0Q29udGVudENvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChMYXlvdXRBZnRlck5hdkNvbXBvbmVudCkgYWZ0ZXJOYXY/OiBMYXlvdXRBZnRlck5hdkNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKExheW91dEZvb3RlckNvbXBvbmVudClcbiAgZm9vdGVyPzogTGF5b3V0Rm9vdGVyQ29tcG9uZW50O1xuXG4gIGZsdWlkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbG9nbzogc3RyaW5nID0gJyc7IC8vIGN1c3RvbSBsb2dvLCBlbXB0eSBzdHJpbmcgd2lsbCBzaG93IGRlZmF1bHQgb25lbS9ydmEvbmVvL2xmYSBsb2NhbGlzZWQgbG9nb1xuXG4gIEBJbnB1dCgpXG4gIGxhbmd1YWdlczogT25lbVJ2YUxhbmd1YWdlW10gPSBbXTsgLy8gbGlzdCBvZiBsYW5ndWFnZXNcblxuICBASW5wdXQoKVxuICBlbnZpcm9ubWVudD86IEVudmlyb25tZW50OyAvLyBwb3NzaWJsZSBlbnZpcm9ubWVudCB0byBzaG93IG9uIHRoZSBmcm9udGVuZCBMT0NBTCwgVEVTVCwgVkFMLCBQUk9EXG5cbiAgQElucHV0KClcbiAgbG9nb1JlZGljdGlvblVybD86IHN0cmluZyB8IGFueVtdIHwgbnVsbCA9ICcnOyAvLyB2YWx1ZSBmb3Igcm91dGVyTGluayBmcm9tIGxvZ28uIFwiXCIgYnkgZGVmYXVsdC4gRGVhY3RpdmF0ZWQgd2hlbiBzZXQgdG8gbnVsbFxuXG4gIHNlbGVjdGVkSW5kZXggPSAwO1xuICBkZXN0cm95Tm90aWZpZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKVxuICBwcm9maWxlOiBPbmVtUnZhUHJvZmlsZSB8IG51bGwgPSBudWxsOyAvLyBUbyBiZSBkZWZpbmVkIGZvciBhcHBsaWNhdGlvbiB3aXRoIGF1dGhlbnRpY2F0aW9uXG5cbiAgQE91dHB1dCgpXG4gIGxvZ2luOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGxvZ291dDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvLyAgICBpc0xvZ291dFVzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBlbnYgPSBFbnZpcm9ubWVudDtcblxuICBpc1NtYWxsID0gdHJ1ZTtcblxuICBAVmlld0NoaWxkKE1hdERyYXdlciwgeyBzdGF0aWM6IHRydWUgfSkgZHJhd2VyITogTWF0RHJhd2VyO1xuICBAVmlld0NoaWxkKERyYXdlckhvc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGRyYXdlckhvc3QhOiBEcmF3ZXJIb3N0RGlyZWN0aXZlO1xuXG4gIEBJbnB1dCgpXG4gIGlkOiBzdHJpbmcgPSAnbWFpbic7XG5cbiAgQElucHV0KClcbiAgcm9sZTogc3RyaW5nID0gJ21haW4nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHVibGljIGRyYXdlclNlcnZpY2U6IE9uZW1ydmFEcmF3ZXJTZXJ2aWNlLFxuICApIHtcbiAgICAvLyAgICAgIHRoaXMuaXNMb2dvdXRVc2VkID0gdGhpcy5sb2dvdXQub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmxhbmd1YWdlcy5maW5kSW5kZXgoXG4gICAgICBsID0+IGwuY29kZSA9PT0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLFxuICAgICk7XG5cbiAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nO1xuXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcbiAgICAgIC5vYnNlcnZlKFtCcmVha3BvaW50cy5YU21hbGwsIEJyZWFrcG9pbnRzLlNtYWxsXSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lOb3RpZmllciQpKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdGU6IEJyZWFrcG9pbnRTdGF0ZSkgPT4ge1xuICAgICAgICBpZiAoc3RhdGUubWF0Y2hlcykge1xuICAgICAgICAgIHRoaXMuaXNTbWFsbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kcmF3ZXJTZXJ2aWNlLmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5pc1NtYWxsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMubG9nbyA9PT0gJycpIHtcbiAgICAgIHRoaXMubG9nbyA9IGBodHRwczovL2Nkbi5zZXJ2aWNlcy5ydmFvbmVtLmZnb3YuYmUvaW1nL2xvZ28vbG9nb18ke3RoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZz8udG9Mb2NhbGVMb3dlckNhc2UoKX0uc3ZnYDtcblxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95Tm90aWZpZXIkKSlcbiAgICAgICAgLnN1YnNjcmliZShsYW5nID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ28gPSBgaHR0cHM6Ly9jZG4uc2VydmljZXMucnZhb25lbS5mZ292LmJlL2ltZy9sb2dvL2xvZ29fJHtsYW5nLmxhbmc/LnRvTG9jYWxlTG93ZXJDYXNlKCl9LnN2Z2A7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95Tm90aWZpZXIkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmxhbmd1YWdlcy5maW5kSW5kZXgoXG4gICAgICAgICAgbGFuZyA9PiBsYW5nLmNvZGUgPT09IGV2ZW50LmxhbmcsXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZHJhd2VyU2VydmljZS5ob3N0ID0gdGhpcy5kcmF3ZXJIb3N0O1xuICAgIHRoaXMuZHJhd2VyU2VydmljZS5kcmF3ZXIgPSB0aGlzLmRyYXdlcjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyB8fCAnJztcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveU5vdGlmaWVyJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95Tm90aWZpZXIkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBkb0xvZ291dCgpIHtcbiAgICB0aGlzLmxvZ291dC5uZXh0KCk7XG4gIH1cblxuICBkb0xvZ2luKCkge1xuICAgIHRoaXMubG9naW4ubmV4dCgpO1xuICB9XG5cbiAgY2hhbmdlTGFuZ3VhZ2UobGFuZ0NvZGU6IHN0cmluZykge1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobGFuZ0NvZGUpO1xuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSBsYW5nQ29kZTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGVOYXYoKSB7XG4gICAgdGhpcy5kcmF3ZXJIb3N0LnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmRyYXdlckhvc3Qudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICBMYXlvdXRTaWRlbmF2Q29tcG9uZW50LFxuICAgICk7XG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmlzU21hbGwgPSB0aGlzLmlzU21hbGw7XG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxhbmd1YWdlcyA9IHRoaXMubGFuZ3VhZ2VzO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5yb3V0ZXMgPSB0aGlzLnJvdXRlcztcbiAgICB0aGlzLmRyYXdlclNlcnZpY2UuaGFzQmFja2Ryb3AgPSBmYWxzZTtcblxuICAgIHRoaXMuZHJhd2VyLm9wZW4oKTtcbiAgfVxufVxuIiwiPG1hdC1kcmF3ZXItY29udGFpbmVyXG4gIGNsYXNzPVwiZXhhbXBsZS1jb250YWluZXJcIlxuICBbaGFzQmFja2Ryb3BdPVwiZHJhd2VyU2VydmljZS5oYXNCYWNrZHJvcFwiXG4gIGF1dG9zaXplXG4+XG4gIDxkaXYgY2xhc3M9XCJhcHAtY29udGVudFwiPlxuICAgIDxoZWFkZXI+XG4gICAgICA8bWF0LXRvb2xiYXIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnZpcm9ubWVudFwiIFtjbGFzc109XCJlbnZpcm9ubWVudFwiPlxuICAgICAgICAgIHt7IGVudmlyb25tZW50IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2NsYXNzLm9uZW1ydmEtbGF5b3V0LWNvbnRhaW5lcl09XCIhZmx1aWRcIlxuICAgICAgICAgIGNsYXNzPVwibmF2LWNvbnRhaW5lciBmbGV4LWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBsb2dvUmVkaWN0aW9uVXJsIH19XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgY2xhc3M9XCJsb2dvXCJcbiAgICAgICAgICAgIFtzcmNdPVwibG9nb1wiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIlxuICAgICAgICAgICAgICAnb25lbXJ2YV9sb2dvXycgKyBjdXJyZW50TGFuZ3VhZ2UudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGFsdD1cIkxvZ28gT05FTS9SVkFcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiXG4gICAgICAgICAgICAgIGxvZ29SZWRpY3Rpb25VcmwgIT09IG51bGwgPyBsb2dvUmVkaWN0aW9uVXJsIDogdW5kZWZpbmVkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBjdXJzb3I6IGxvZ29SZWRpY3Rpb25VcmwgIT09IG51bGwgPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYXBwbGljYXRpb24tdGl0bGVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc21hbGwtc2NyZWVuJzogaXNTbWFsbCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGl0bGU/LnRlbXBsYXRlIGFzIHRpdGxlVHBsXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aXRsZVRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogMVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleC1jZW50ZXJcIlxuICAgICAgICAgICAgbWF0LXRhYi1uYXYtYmFyXG4gICAgICAgICAgICBbdGFiUGFuZWxdPVwidGFiUGFuZWxcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNTbWFsbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZSBvZiByb3V0ZXM/LnRvQXJyYXkoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIG1hdC10YWItbGlua1xuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6ICFlLmhhc1N1YnJvdXRlcygpIH1cIlxuICAgICAgICAgICAgICAgICNybGE9XCJyb3V0ZXJMaW5rQWN0aXZlXCJcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwibWRjLXRhYi0tYWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInJsYS5pc0FjdGl2ZSB8fCBlLmlzUm91dGVBY3RpdmUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZS50ZW1wbGF0ZSBhcyByb3V0ZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicm91dGVUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG1hdC10YWItbmF2LXBhbmVsICN0YWJQYW5lbD48L21hdC10YWItbmF2LXBhbmVsPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFmdGVyTmF2Py50ZW1wbGF0ZSBhcyB0cGxcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9maWxlICE9PSBudWxsXCI+XG4gICAgICAgICAgICA8bWF0LWRpdmlkZXJcbiAgICAgICAgICAgICAgdmVydGljYWxcbiAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDFlbTsgYWxpZ24tc2VsZjogY2VudGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXNTbWFsbFwiXG4gICAgICAgICAgICA+PC9tYXQtZGl2aWRlcj5cbiAgICAgICAgICAgIDxvbmVtcnZhLW1hdC1hdmF0YXJcbiAgICAgICAgICAgICAgbWF0UmlwcGxlXG4gICAgICAgICAgICAgICpuZ0lmPVwicHJvZmlsZS5pc0xvZ2dlZEluXCJcbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgICAgICAgICAgICBpbml0aWFscz1cInt7IHByb2ZpbGUuaW5pdGlhbHMoKSB9fVwiXG4gICAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImV4dHJhc21hbGxcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZVwiXG4gICAgICAgICAgICA+PC9vbmVtcnZhLW1hdC1hdmF0YXI+XG5cbiAgICAgICAgICAgIDxvbmVtcnZhLW1hdC1hdmF0YXJcbiAgICAgICAgICAgICAgbWF0UmlwcGxlXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXByb2ZpbGUuaXNMb2dnZWRJblwiXG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgICAgICAgaWNvbj1cImFjY291bnRfY2lyY2xlXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJcIlxuICAgICAgICAgICAgICBzaXplPVwiZXh0cmFzbWFsbFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xpY2thYmxlXCJcbiAgICAgICAgICAgID48L29uZW1ydmEtbWF0LWF2YXRhcj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2ZpbGUuaXNMb2dnZWRJbjsgZWxzZSBub3RDb25uZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFjY291bnROYW1lXCI+XG4gICAgICAgICAgICAgICAgICB7eyBwcm9maWxlLmZpcnN0TmFtZSB9fSB7eyBwcm9maWxlLmxhc3ROYW1lIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlciBzdHlsZT1cImFsaWduLXNlbGY6IHN0cmV0Y2hcIj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvZ2luTWVudT8udGVtcGxhdGUgYXMgbWVudUxvZ2luVHBsXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUxvZ2luVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LW1kYy1tZW51LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgZGF0YS1jeT1cImxvZ291dEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9Mb2dvdXQoKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidsYXlvdXQubG9nb3V0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmxvZ291dDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICB7eyAnbGF5b3V0LmxvZ291dCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90Q29ubmVjdGVkPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgZGF0YS1jeT1cImxvZ2luQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb0xvZ2luKClcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInbGF5b3V0LmxvZ2luJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmxvZ2luPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIHt7ICdsYXlvdXQubG9naW4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGlzU21hbGwgJiZcbiAgICAgICAgICAgICAgKHJvdXRlcz8udG9BcnJheSgpPy5sZW5ndGggfHwgKGxhbmd1YWdlcyAmJiBsYW5ndWFnZXMubGVuZ3RoID4gMSkpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cIm1lbnUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInNtYWxsRGV2aWNlTWVudVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaWRlTmF2KClcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidsYXlvdXQubWVudScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZsZXgtY2VudGVyXCJcbiAgICAgICAgICAgIG1hdC10YWItbmF2LWJhclxuICAgICAgICAgICAgW3RhYlBhbmVsXT1cInRhYlBhbmVsXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzU21hbGxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJsYW5ndWFnZU1lbnVcIlxuICAgICAgICAgICAgICBkYXRhLWN5PVwibGFuZ3VhZ2VNZW51XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInbGFuZ3VhZ2Uuc2VsZWN0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIG1hdC10YWItbGlua1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBjdXJyZW50TGFuZ3VhZ2UgfX1cbiAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwid2lkdGg6IDE2cHhcIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG1hdC1tZW51ICNsYW5ndWFnZU1lbnU+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsYW5nIG9mIGxhbmd1YWdlc1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1tZGMtbWVudS1pdGVtXCJcbiAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidsYW5ndWFnZV8nICsgbGFuZy5jb2RlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUxhbmd1YWdlKGxhbmcuY29kZSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhbmcubGFiZWxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBsYW5nLmxhYmVsIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRvb2xiYXI+XG4gICAgPC9oZWFkZXI+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXZcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgICAgW2NsYXNzLm9uZW1ydmEtbGF5b3V0LWNvbnRhaW5lcl09XCIhZmx1aWRcIlxuICAgICAgICBjbGFzcz1cIm9uZW1ydmEtbGF5b3V0LWNvbnRlbnRcIlxuICAgICAgICAqbmdJZj1cImNvbnRlbnQ/LnRlbXBsYXRlIGFzIHRwbFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGVudmlyb25tZW50ICYmXG4gICAgICAgICAgICAoZW52aXJvbm1lbnQgPT09IGVudi5MT0NBTCB8fCBlbnZpcm9ubWVudCA9PT0gZW52LlRFU1QpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPVwiYWNjZXNzaWJpbGl0eV9mYWJcIlxuICAgICAgICAgICAgbWF0LWZhYlxuICAgICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFjY2Vzc2liaWxpdHkgY2hlY2tcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFjY2Vzc2liaWxpdHkgY2hlY2tcIlxuICAgICAgICAgICAgb25jbGljaz1cIihmdW5jdGlvbigpIHt2YXIgX3A9Jy8vb3BlbmZlZC5naXRodWIuaW8vQWNjZXNzaWJpbGl0eUNoZWNrL2J1aWxkLyc7dmFyIF9pPWZ1bmN0aW9uKHMsY2IpIHt2YXIgc2M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7c2Mub25sb2FkID0gZnVuY3Rpb24oKSB7c2Mub25sb2FkID0gbnVsbDtzYy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO2NiLmNhbGwodGhpcyk7fTtzYy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpe2lmKC9eKGNvbXBsZXRlfGxvYWRlZCkkLy50ZXN0KHRoaXMucmVhZHlTdGF0ZSkgPT09IHRydWUpe3NjLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7c2Mub25sb2FkKCk7fX07c2Muc3JjPXM7aWYgKGRvY3VtZW50LmhlYWQpIHtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjKTt9IGVsc2Uge2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2MpO319OyB2YXIgb3B0aW9ucz17cGF0aDpfcH07X2koX3ArJ0hUTUxDUy5qcycsZnVuY3Rpb24oKXtIVE1MQ1NBdWRpdG9yLnJ1bignV0NBRzJBQScsbnVsbCxvcHRpb25zKTt9KTt9KSgpO1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFjY2Vzc2liaWxpdHk8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9vdGVyIGNsYXNzPVwib25lbXJ2YS1mb290ZXJcIiAqbmdJZj1cImZvb3Rlcj8udGVtcGxhdGUgYXMgZm9vdGVyXCI+XG4gICAgICAgIDxkaXYgW2NsYXNzLm9uZW1ydmEtbGF5b3V0LWNvbnRhaW5lcl09XCIhZmx1aWRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxtYXQtZHJhd2VyXG4gICAgY2xhc3M9XCJvbmVtcnZhLWRyYXdlciBtb2JpbGUtbWVudS1zaWRlYmFyXCJcbiAgICBtb2RlPVwib3ZlclwiXG4gICAgcG9zaXRpb249XCJlbmRcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlIGRyYXdlcmhvc3Q+PC9uZy10ZW1wbGF0ZT5cbiAgPC9tYXQtZHJhd2VyPlxuPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9sYXlvdXQvc3JjL2NvbXBvbmVudHMvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbGF5b3V0L3NyYy9jb21wb25lbnRzL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLEtBQUssRUFLTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBRUwsV0FBVyxHQUVaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVB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QUFROzRFQXZEbEIsTUFBTTtzQkFETCxlQUFlO3VCQUFDLG9CQUFvQjtnQkFHRCxLQUFLO3NCQUF4QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDTSxTQUFTO3NCQUFoRCxZQUFZO3VCQUFDLHdCQUF3QjtnQkFDQSxPQUFPO3NCQUE1QyxZQUFZO3VCQUFDLHNCQUFzQjtnQkFDRyxRQUFRO3NCQUE5QyxZQUFZO3VCQUFDLHVCQUF1QjtnQkFHckMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFNbkMsSUFBSTtzQkFESCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sT0FBTztzQkFETixLQUFLO2dCQUlOLEtBQUs7c0JBREosTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU07Z0JBUWlDLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFdEMsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJaEQsRUFBRTtzQkFERCxLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIE9uSW5pdCxcbiAgSW5qZWN0LFxuICBpc0Rldk1vZGUsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMYXlvdXRSb3V0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC1yb3V0ZS9sYXlvdXQtcm91dGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IExheW91dENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9sYXlvdXQtY29udGVudC9sYXlvdXQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYXlvdXRUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC10aXRsZS9sYXlvdXQtdGl0bGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnVtcy9lbnZpcm9ubWVudC5lbnVtJztcbmltcG9ydCB7XG4gIEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgQnJlYWtwb2ludHMsXG4gIEJyZWFrcG9pbnRTdGF0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMYXlvdXRGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9sYXlvdXQtZm9vdGVyL2xheW91dC1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE9uZW1SdmFQcm9maWxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL29uZW1ydmEtcHJvZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBMYXlvdXRMb2dpbk1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9sYXlvdXQtbG9naW4tbWVudS9sYXlvdXQtbG9naW4tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RHJhd2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBEcmF3ZXJIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9kcmF3ZXItaG9zdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT25lbXJ2YURyYXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kcmF3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBMYXlvdXRTaWRlbmF2Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LXNpZGVuYXYvbGF5b3V0LXNpZGVuYXYuY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dEFmdGVyTmF2Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LWFmdGVyLW5hdi9sYXlvdXQtYWZ0ZXItbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPbmVtUnZhTGFuZ3VhZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvb25lbS1sYW5ndWFnZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xheW91dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGF5b3V0Um91dGVDb21wb25lbnQpXG4gIHJvdXRlcz86IFF1ZXJ5TGlzdDxMYXlvdXRSb3V0ZUNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChMYXlvdXRUaXRsZUNvbXBvbmVudCkgdGl0bGU/OiBMYXlvdXRUaXRsZUNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChMYXlvdXRMb2dpbk1lbnVDb21wb25lbnQpIGxvZ2luTWVudT86IExheW91dExvZ2luTWVudUNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChMYXlvdXRDb250ZW50Q29tcG9uZW50KSBjb250ZW50PzogTGF5b3V0Q29udGVudENvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChMYXlvdXRBZnRlck5hdkNvbXBvbmVudCkgYWZ0ZXJOYXY/OiBMYXlvdXRBZnRlck5hdkNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKExheW91dEZvb3RlckNvbXBvbmVudClcbiAgZm9vdGVyPzogTGF5b3V0Rm9vdGVyQ29tcG9uZW50O1xuXG4gIGZsdWlkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbG9nbzogc3RyaW5nID0gJyc7IC8vIGN1c3RvbSBsb2dvLCBlbXB0eSBzdHJpbmcgd2lsbCBzaG93IGRlZmF1bHQgb25lbS9ydmEvbmVvL2xmYSBsb2NhbGlzZWQgbG9nb1xuXG4gIEBJbnB1dCgpXG4gIGxhbmd1YWdlczogT25lbVJ2YUxhbmd1YWdlW10gPSBbXTsgLy8gbGlzdCBvZiBsYW5ndWFnZXNcblxuICBASW5wdXQoKVxuICBlbnZpcm9ubWVudD86IEVudmlyb25tZW50OyAvLyBwb3NzaWJsZSBlbnZpcm9ubWVudCB0byBzaG93IG9uIHRoZSBmcm9udGVuZCBMT0NBTCwgVEVTVCwgVkFMLCBQUk9EXG5cbiAgQElucHV0KClcbiAgbG9nb1JlZGljdGlvblVybD86IHN0cmluZyB8IGFueVtdIHwgbnVsbCA9ICcnOyAvLyB2YWx1ZSBmb3Igcm91dGVyTGluayBmcm9tIGxvZ28uIFwiXCIgYnkgZGVmYXVsdC4gRGVhY3RpdmF0ZWQgd2hlbiBzZXQgdG8gbnVsbFxuXG4gIHNlbGVjdGVkSW5kZXggPSAwO1xuICBkZXN0cm95Tm90aWZpZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKVxuICBwcm9maWxlOiBPbmVtUnZhUHJvZmlsZSB8IG51bGwgPSBudWxsOyAvLyBUbyBiZSBkZWZpbmVkIGZvciBhcHBsaWNhdGlvbiB3aXRoIGF1dGhlbnRpY2F0aW9uXG5cbiAgQE91dHB1dCgpXG4gIGxvZ2luOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGxvZ291dDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvLyAgICBpc0xvZ291dFVzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBlbnYgPSBFbnZpcm9ubWVudDtcblxuICBpc1NtYWxsID0gdHJ1ZTtcblxuICBAVmlld0NoaWxkKE1hdERyYXdlciwgeyBzdGF0aWM6IHRydWUgfSkgZHJhd2VyITogTWF0RHJhd2VyO1xuICBAVmlld0NoaWxkKERyYXdlckhvc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGRyYXdlckhvc3QhOiBEcmF3ZXJIb3N0RGlyZWN0aXZlO1xuXG4gIEBJbnB1dCgpXG4gIGlkOiBzdHJpbmcgPSAnbWFpbic7XG5cbiAgQElucHV0KClcbiAgcm9sZTogc3RyaW5nID0gJ21haW4nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHVibGljIGRyYXdlclNlcnZpY2U6IE9uZW1ydmFEcmF3ZXJTZXJ2aWNlLFxuICApIHtcbiAgICBpZiAodGhpcy5sYW5ndWFnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0TGFuZ3MoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy5sYW5ndWFnZXMucHVzaCh7XG4gICAgICAgICAgY29kZTogdmFsdWUsXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIH0gYXMgT25lbVJ2YUxhbmd1YWdlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMubGFuZ3VhZ2VzLmZpbmRJbmRleChcbiAgICAgIGwgPT4gbC5jb2RlID09PSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcsXG4gICAgKTtcblxuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLlhTbWFsbCwgQnJlYWtwb2ludHMuU21hbGxdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogQnJlYWtwb2ludFN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5tYXRjaGVzKSB7XG4gICAgICAgICAgdGhpcy5pc1NtYWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRyYXdlclNlcnZpY2UuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmlzU21hbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5sb2dvID09PSAnJykge1xuICAgICAgdGhpcy5sb2dvID0gYGh0dHBzOi8vY2RuLnNlcnZpY2VzLnJ2YW9uZW0uZmdvdi5iZS9pbWcvbG9nby9sb2dvXyR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nPy50b0xvY2FsZUxvd2VyQ2FzZSgpfS5zdmdgO1xuXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lOb3RpZmllciQpKVxuICAgICAgICAuc3Vic2NyaWJlKGxhbmcgPT4ge1xuICAgICAgICAgIHRoaXMubG9nbyA9IGBodHRwczovL2Nkbi5zZXJ2aWNlcy5ydmFvbmVtLmZnb3YuYmUvaW1nL2xvZ28vbG9nb18ke2xhbmcubGFuZz8udG9Mb2NhbGVMb3dlckNhc2UoKX0uc3ZnYDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lOb3RpZmllciQpKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMubGFuZ3VhZ2VzLmZpbmRJbmRleChcbiAgICAgICAgICBsYW5nID0+IGxhbmcuY29kZSA9PT0gZXZlbnQubGFuZyxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5kcmF3ZXJTZXJ2aWNlLmhvc3QgPSB0aGlzLmRyYXdlckhvc3Q7XG4gICAgdGhpcy5kcmF3ZXJTZXJ2aWNlLmRyYXdlciA9IHRoaXMuZHJhd2VyO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMYW5ndWFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nIHx8ICcnO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95Tm90aWZpZXIkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3lOb3RpZmllciQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGRvTG9nb3V0KCkge1xuICAgIHRoaXMubG9nb3V0Lm5leHQoKTtcbiAgfVxuXG4gIGRvTG9naW4oKSB7XG4gICAgdGhpcy5sb2dpbi5uZXh0KCk7XG4gIH1cblxuICBjaGFuZ2VMYW5ndWFnZShsYW5nQ29kZTogc3RyaW5nKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nQ29kZSk7XG4gICAgdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZyA9IGxhbmdDb2RlO1xuICB9XG5cbiAgdG9nZ2xlU2lkZU5hdigpIHtcbiAgICB0aGlzLmRyYXdlckhvc3Qudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuZHJhd2VySG9zdC52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIExheW91dFNpZGVuYXZDb21wb25lbnQsXG4gICAgKTtcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuaXNTbWFsbCA9IHRoaXMuaXNTbWFsbDtcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubGFuZ3VhZ2VzID0gdGhpcy5sYW5ndWFnZXM7XG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnJvdXRlcyA9IHRoaXMucm91dGVzO1xuICAgIHRoaXMuZHJhd2VyU2VydmljZS5oYXNCYWNrZHJvcCA9IGZhbHNlO1xuXG4gICAgdGhpcy5kcmF3ZXIub3BlbigpO1xuICB9XG59XG4iLCI8bWF0LWRyYXdlci1jb250YWluZXJcbiAgY2xhc3M9XCJleGFtcGxlLWNvbnRhaW5lclwiXG4gIFtoYXNCYWNrZHJvcF09XCJkcmF3ZXJTZXJ2aWNlLmhhc0JhY2tkcm9wXCJcbiAgYXV0b3NpemVcbj5cbiAgPGRpdiBjbGFzcz1cImFwcC1jb250ZW50XCI+XG4gICAgPGhlYWRlcj5cbiAgICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudmlyb25tZW50XCIgW2NsYXNzXT1cImVudmlyb25tZW50XCI+XG4gICAgICAgICAge3sgZW52aXJvbm1lbnQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbY2xhc3Mub25lbXJ2YS1sYXlvdXQtY29udGFpbmVyXT1cIiFmbHVpZFwiXG4gICAgICAgICAgY2xhc3M9XCJuYXYtY29udGFpbmVyIGZsZXgtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxvZ29SZWRpY3Rpb25VcmwgfX1cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBjbGFzcz1cImxvZ29cIlxuICAgICAgICAgICAgW3NyY109XCJsb2dvXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiXG4gICAgICAgICAgICAgICdvbmVtcnZhX2xvZ29fJyArIGN1cnJlbnRMYW5ndWFnZS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgYWx0PVwiTG9nbyBPTkVNL1JWQVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJcbiAgICAgICAgICAgICAgbG9nb1JlZGljdGlvblVybCAhPT0gbnVsbCA/IGxvZ29SZWRpY3Rpb25VcmwgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgIGN1cnNvcjogbG9nb1JlZGljdGlvblVybCAhPT0gbnVsbCA/ICdwb2ludGVyJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhcHBsaWNhdGlvbi10aXRsZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzbWFsbC1zY3JlZW4nOiBpc1NtYWxsIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aXRsZT8udGVtcGxhdGUgYXMgdGl0bGVUcGxcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAxXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWNlbnRlclwiXG4gICAgICAgICAgICBtYXQtdGFiLW5hdi1iYXJcbiAgICAgICAgICAgIFt0YWJQYW5lbF09XCJ0YWJQYW5lbFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFpc1NtYWxsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlIG9mIHJvdXRlcz8udG9BcnJheSgpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgbWF0LXRhYi1saW5rXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogIWUuaGFzU3Vicm91dGVzKCkgfVwiXG4gICAgICAgICAgICAgICAgI3JsYT1cInJvdXRlckxpbmtBY3RpdmVcIlxuICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJtZGMtdGFiLS1hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFthY3RpdmVdPVwicmxhLmlzQWN0aXZlIHx8IGUuaXNSb3V0ZUFjdGl2ZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlLnRlbXBsYXRlIGFzIHJvdXRlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3V0ZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bWF0LXRhYi1uYXYtcGFuZWwgI3RhYlBhbmVsPjwvbWF0LXRhYi1uYXYtcGFuZWw+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWZ0ZXJOYXY/LnRlbXBsYXRlIGFzIHRwbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2ZpbGUgIT09IG51bGxcIj5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlclxuICAgICAgICAgICAgICB2ZXJ0aWNhbFxuICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMWVtOyBhbGlnbi1zZWxmOiBjZW50ZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc1NtYWxsXCJcbiAgICAgICAgICAgID48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgPG9uZW1ydmEtbWF0LWF2YXRhclxuICAgICAgICAgICAgICBtYXRSaXBwbGVcbiAgICAgICAgICAgICAgKm5nSWY9XCJwcm9maWxlLmlzTG9nZ2VkSW5cIlxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgICAgIGluaXRpYWxzPVwie3sgcHJvZmlsZS5pbml0aWFscygpIH19XCJcbiAgICAgICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICBzaXplPVwiZXh0cmFzbWFsbFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xpY2thYmxlXCJcbiAgICAgICAgICAgID48L29uZW1ydmEtbWF0LWF2YXRhcj5cblxuICAgICAgICAgICAgPG9uZW1ydmEtbWF0LWF2YXRhclxuICAgICAgICAgICAgICBtYXRSaXBwbGVcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcHJvZmlsZS5pc0xvZ2dlZEluXCJcbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgICAgICAgICAgICBpY29uPVwiYWNjb3VudF9jaXJjbGVcIlxuICAgICAgICAgICAgICBjb2xvcj1cIlwiXG4gICAgICAgICAgICAgIHNpemU9XCJleHRyYXNtYWxsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjbGlja2FibGVcIlxuICAgICAgICAgICAgPjwvb25lbXJ2YS1tYXQtYXZhdGFyPlxuICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvZmlsZS5pc0xvZ2dlZEluOyBlbHNlIG5vdENvbm5lY3RlZFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWNjb3VudE5hbWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHByb2ZpbGUuZmlyc3ROYW1lIH19IHt7IHByb2ZpbGUubGFzdE5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyIHN0eWxlPVwiYWxpZ24tc2VsZjogc3RyZXRjaFwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9naW5NZW51Py50ZW1wbGF0ZSBhcyBtZW51TG9naW5UcGxcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51TG9naW5UcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtbWRjLW1lbnUtaXRlbVwiXG4gICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICBkYXRhLWN5PVwibG9nb3V0QnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb0xvZ291dCgpXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2xheW91dC5sb2dvdXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+bG9nb3V0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIHt7ICdsYXlvdXQubG9nb3V0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RDb25uZWN0ZWQ+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICBkYXRhLWN5PVwibG9naW5CdXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvTG9naW4oKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidsYXlvdXQubG9naW4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+bG9naW48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAge3sgJ2xheW91dC5sb2dpbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgaXNTbWFsbCAmJlxuICAgICAgICAgICAgICAocm91dGVzPy50b0FycmF5KCk/Lmxlbmd0aCB8fCAobGFuZ3VhZ2VzICYmIGxhbmd1YWdlcy5sZW5ndGggPiAxKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwibWVudS1idXR0b25cIlxuICAgICAgICAgICAgICBkYXRhLWN5PVwic21hbGxEZXZpY2VNZW51XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVOYXYoKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2xheW91dC5tZW51JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleC1jZW50ZXJcIlxuICAgICAgICAgICAgbWF0LXRhYi1uYXYtYmFyXG4gICAgICAgICAgICBbdGFiUGFuZWxdPVwidGFiUGFuZWxcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNTbWFsbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxhbmd1YWdlTWVudVwiXG4gICAgICAgICAgICAgIGRhdGEtY3k9XCJsYW5ndWFnZU1lbnVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidsYW5ndWFnZS5zZWxlY3Rpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgbWF0LXRhYi1saW5rXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGN1cnJlbnRMYW5ndWFnZSB9fVxuICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJ3aWR0aDogMTZweFwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bWF0LW1lbnUgI2xhbmd1YWdlTWVudT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhbmcgb2YgbGFuZ3VhZ2VzXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0LW1kYy1tZW51LWl0ZW1cIlxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ2xhbmd1YWdlXycgKyBsYW5nLmNvZGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlTGFuZ3VhZ2UobGFuZy5jb2RlKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFuZy5sYWJlbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGxhbmcubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdG9vbGJhcj5cbiAgICA8L2hlYWRlcj5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgPGRpdlxuICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgICAgICBbY2xhc3Mub25lbXJ2YS1sYXlvdXQtY29udGFpbmVyXT1cIiFmbHVpZFwiXG4gICAgICAgIGNsYXNzPVwib25lbXJ2YS1sYXlvdXQtY29udGVudFwiXG4gICAgICAgICpuZ0lmPVwiY29udGVudD8udGVtcGxhdGUgYXMgdHBsXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgZW52aXJvbm1lbnQgJiZcbiAgICAgICAgICAgIChlbnZpcm9ubWVudCA9PT0gZW52LkxPQ0FMIHx8IGVudmlyb25tZW50ID09PSBlbnYuVEVTVClcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJhY2Nlc3NpYmlsaXR5X2ZhYlwiXG4gICAgICAgICAgICBtYXQtZmFiXG4gICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQWNjZXNzaWJpbGl0eSBjaGVja1wiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiQWNjZXNzaWJpbGl0eSBjaGVja1wiXG4gICAgICAgICAgICBvbmNsaWNrPVwiKGZ1bmN0aW9uKCkge3ZhciBfcD0nLy9vcGVuZmVkLmdpdGh1Yi5pby9BY2Nlc3NpYmlsaXR5Q2hlY2svYnVpbGQvJzt2YXIgX2k9ZnVuY3Rpb24ocyxjYikge3ZhciBzYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzYy5vbmxvYWQgPSBmdW5jdGlvbigpIHtzYy5vbmxvYWQgPSBudWxsO3NjLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7Y2IuY2FsbCh0aGlzKTt9O3NjLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7aWYoL14oY29tcGxldGV8bG9hZGVkKSQvLnRlc3QodGhpcy5yZWFkeVN0YXRlKSA9PT0gdHJ1ZSl7c2Mub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtzYy5vbmxvYWQoKTt9fTtzYy5zcmM9cztpZiAoZG9jdW1lbnQuaGVhZCkge2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2MpO30gZWxzZSB7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzYyk7fX07IHZhciBvcHRpb25zPXtwYXRoOl9wfTtfaShfcCsnSFRNTENTLmpzJyxmdW5jdGlvbigpe0hUTUxDU0F1ZGl0b3IucnVuKCdXQ0FHMkFBJyxudWxsLG9wdGlvbnMpO30pO30pKCk7XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+YWNjZXNzaWJpbGl0eTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxmb290ZXIgY2xhc3M9XCJvbmVtcnZhLWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyPy50ZW1wbGF0ZSBhcyBmb290ZXJcIj5cbiAgICAgICAgPGRpdiBbY2xhc3Mub25lbXJ2YS1sYXlvdXQtY29udGFpbmVyXT1cIiFmbHVpZFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPG1hdC1kcmF3ZXJcbiAgICBjbGFzcz1cIm9uZW1ydmEtZHJhd2VyIG1vYmlsZS1tZW51LXNpZGViYXJcIlxuICAgIG1vZGU9XCJvdmVyXCJcbiAgICBwb3NpdGlvbj1cImVuZFwiXG4gID5cbiAgICA8bmctdGVtcGxhdGUgZHJhd2VyaG9zdD48L25nLXRlbXBsYXRlPlxuICA8L21hdC1kcmF3ZXI+XG48L21hdC1kcmF3ZXItY29udGFpbmVyPlxuIl19
@@ -55,7 +55,7 @@ export class OnemrvaMatInputCountryComponent {
55
55
  }
56
56
  return 'input.country.unknown.error';
57
57
  }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OnemrvaMatInputCountryComponent, deps: [{ token: i1.OnemRvaCDNService }], target: i0.ɵɵFactoryTarget.Component }); }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OnemrvaMatInputCountryComponent, deps: [{ token: i1.OnemRvaCDNCountryService }], target: i0.ɵɵFactoryTarget.Component }); }
59
59
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: OnemrvaMatInputCountryComponent, isStandalone: true, selector: "onemrva-mat-input-country", inputs: { readonly: "readonly", country: "country", label: "label", noEntriesFoundLabel: "noEntriesFoundLabel", hint: "hint", placeholderLabel: "placeholderLabel", searchAriaLabel: "searchAriaLabel" }, outputs: { getCountry: "getCountry" }, ngImport: i0, template: "<mat-form-field class=\"onemrva-input-country\">\n <mat-label>{{ label }}</mat-label>\n <mat-select class=\"onemrva-country-select\" [formControl]=\"country\">\n <mat-select-trigger>\n <flag-icon [countryCode]=\"country.getRawValue()\" />&nbsp;&nbsp;{{\n (selectedCountry$ | async)?.name\n }}\n </mat-select-trigger>\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n <mat-option\n *ngFor=\"let country of filteredCountries$ | async\"\n [value]=\"country.code\"\n ><span class=\"country\">\n <flag-icon [countryCode]=\"country.code\" />&nbsp;&nbsp;{{ country.name }}\n </span>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"country.invalid\">{{ errors() | translate }}</mat-error>\n</mat-form-field>\n", styles: ["mat-option.mdc-list-item .country{position:relative;display:block;padding-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSelectSearchModule }, { kind: "component", type: i6.MatSelectSearchComponent, selector: "mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: FlagIconComponent, selector: "flag-icon", inputs: ["countryCode", "mode", "width"] }], encapsulation: i0.ViewEncapsulation.None }); }
60
60
  }
61
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OnemrvaMatInputCountryComponent, decorators: [{
@@ -70,7 +70,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
70
70
  TranslateModule,
71
71
  FlagIconComponent,
72
72
  ], encapsulation: ViewEncapsulation.None, template: "<mat-form-field class=\"onemrva-input-country\">\n <mat-label>{{ label }}</mat-label>\n <mat-select class=\"onemrva-country-select\" [formControl]=\"country\">\n <mat-select-trigger>\n <flag-icon [countryCode]=\"country.getRawValue()\" />&nbsp;&nbsp;{{\n (selectedCountry$ | async)?.name\n }}\n </mat-select-trigger>\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n <mat-option\n *ngFor=\"let country of filteredCountries$ | async\"\n [value]=\"country.code\"\n ><span class=\"country\">\n <flag-icon [countryCode]=\"country.code\" />&nbsp;&nbsp;{{ country.name }}\n </span>\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"country.invalid\">{{ errors() | translate }}</mat-error>\n</mat-form-field>\n", styles: ["mat-option.mdc-list-item .country{position:relative;display:block;padding-top:4px}\n"] }]
73
- }], ctorParameters: () => [{ type: i1.OnemRvaCDNService }], propDecorators: { readonly: [{
73
+ }], ctorParameters: () => [{ type: i1.OnemRvaCDNCountryService }], propDecorators: { readonly: [{
74
74
  type: Input
75
75
  }], country: [{
76
76
  type: Input
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
87
87
  }], getCountry: [{
88
88
  type: Output
89
89
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtaW5wdXQtY291bnRyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWlucHV0LWNvdW50cnkvc3JjL29uZW1ydmEtbWF0LWlucHV0LWNvdW50cnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1pbnB1dC1jb3VudHJ5L3NyYy9vbmVtcnZhLW1hdC1pbnB1dC1jb3VudHJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUVMLEdBQUcsRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixHQUNsQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7O0FBdUIzRSxNQUFNLE9BQU8sK0JBQStCO0lBbUIxQyxZQUFv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bUI7d0JBQ25CLGVBQWU7d0JBQ2YsaUJBQWlCO3FCQUNsQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJO3NGQUlyQyxRQUFRO3NCQURQLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgbWFwLFxuICBzdGFydFdpdGgsXG4gIGRlYm91bmNlVGltZSxcbiAgY29tYmluZUxhdGVzdFdpdGgsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0U2VhcmNoTW9kdWxlIH0gZnJvbSAnQG9uZW1ydmFwdWJsaWMvZGVzaWduLXN5c3RlbS9tYXQtc2VsZWN0LXNlYXJjaCc7XG5pbXBvcnQgeyBGbGFnSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vZmxhZy1pY29uJztcbmltcG9ydCB7XG4gIE9uZW1SdmFDRE5TZXJ2aWNlLFxuICBPbmVtcnZhTWF0ZXJpYWxDb3VudHJ5LFxufSBmcm9tICdAb25lbXJ2YXB1YmxpYy9kZXNpZ24tc3lzdGVtL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbWF0LWlucHV0LWNvdW50cnknLFxuICBzdHlsZVVybHM6IFsnb25lbXJ2YS1tYXQtaW5wdXQtY291bnRyeS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJ29uZW1ydmEtbWF0LWlucHV0LWNvdW50cnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0U2VsZWN0U2VhcmNoTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEZsYWdJY29uQ29tcG9uZW50LFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBPbmVtcnZhTWF0SW5wdXRDb3VudHJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBjb3VudHJ5ITogRm9ybUNvbnRyb2w7XG5cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdDb3VudHJ5JztcbiAgQElucHV0KCkgbm9FbnRyaWVzRm91bmRMYWJlbCA9ICdOb3QgZm91bmQnO1xuICBASW5wdXQoKSBoaW50OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXJMYWJlbCA9ICdTZWFyY2gnO1xuICBASW5wdXQoKSBzZWFyY2hBcmlhTGFiZWwgPSAnJztcbiAgQE91dHB1dCgpIGdldENvdW50cnkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgZmlsdGVyQ3RybDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG5cbiAgcHVibGljIGNvdW50cmllcyQ6IE9ic2VydmFibGU8T25lbXJ2YU1hdGVyaWFsQ291bnRyeVtdPjtcbiAgcHVibGljIGZpbHRlcmVkQ291bnRyaWVzJDogT2JzZXJ2YWJsZTxPbmVtcnZhTWF0ZXJpYWxDb3VudHJ5W10+O1xuICBwdWJsaWMgc2VsZWN0ZWRDb3VudHJ5JD86IE9ic2VydmFibGU8T25lbXJ2YU1hdGVyaWFsQ291bnRyeSB8IHVuZGVmaW5lZD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZG46IE9uZW1SdmFDRE5TZXJ2aWNlKSB7XG4gICAgdGhpcy5jb3VudHJpZXMkID0gdGhpcy5jZG4uZ2V0Q291bnRyaWVzKCk7XG5cbiAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzJCA9IHRoaXMuZmlsdGVyQ3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg0MDApLFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuY291bnRyaWVzJCksXG4gICAgICBtYXAoKFtzZWFyY2gsIGNvdW50cmllc10pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvdW50cmllcy5maWx0ZXIoKGNvdW50cnk6IE9uZW1ydmFNYXRlcmlhbENvdW50cnkpID0+IHtcbiAgICAgICAgICBpZiAoIXNlYXJjaCB8fCBzZWFyY2ggPT09ICcnKSByZXR1cm4gY291bnRyaWVzO1xuICAgICAgICAgIGlmIChjb3VudHJ5Lm5hbWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiBjb3VudHJ5Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+IC0xO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSQgPSB0aGlzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5jb3VudHJ5LmdldFJhd1ZhbHVlKCkpLFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5jb3VudHJpZXMkKSxcbiAgICAgIG1hcCgoW3ZhbHVlLCBjb3VudHJpZXNdKSA9PiB7XG4gICAgICAgIHJldHVybiBjb3VudHJpZXMuZmluZChcbiAgICAgICAgICAoY291bnRyeTogT25lbXJ2YU1hdGVyaWFsQ291bnRyeSkgPT5cbiAgICAgICAgICAgIGNvdW50cnkuY29kZSA9PT0gdmFsdWU/LnN1YnN0cmluZygwLCBjb3VudHJ5LmNvZGUubGVuZ3RoKSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBoYW5kbGVDbGljayhlOiBhbnkpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGVycm9ycygpIHtcbiAgICBmb3IgKGNvbnN0IGsgaW4gdGhpcy5jb3VudHJ5LmVycm9ycykge1xuICAgICAgaWYgKGsgPT09ICdyZXF1aXJlZCcpIHtcbiAgICAgICAgcmV0dXJuICdpbnB1dC5jb3VudHJ5LnJlcXVpcmVkJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICdpbnB1dC5jb3VudHJ5LnVua25vd24uZXJyb3InO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJvbmVtcnZhLWlucHV0LWNvdW50cnlcIj5cbiAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICA8bWF0LXNlbGVjdCBjbGFzcz1cIm9uZW1ydmEtY291bnRyeS1zZWxlY3RcIiBbZm9ybUNvbnRyb2xdPVwiY291bnRyeVwiPlxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICA8ZmxhZy1pY29uIFtjb3VudHJ5Q29kZV09XCJjb3VudHJ5LmdldFJhd1ZhbHVlKClcIiAvPiZuYnNwOyZuYnNwO3t7XG4gICAgICAgIChzZWxlY3RlZENvdW50cnkkIHwgYXN5bmMpPy5uYW1lXG4gICAgICB9fVxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgIDxtYXQtb3B0aW9uPlxuICAgICAgPG1hdC1zZWxlY3Qtc2VhcmNoXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJDdHJsXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJzZWFyY2hBcmlhTGFiZWxcIlxuICAgICAgICBbbm9FbnRyaWVzRm91bmRMYWJlbF09XCJub0VudHJpZXNGb3VuZExhYmVsXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwicGxhY2Vob2xkZXJMYWJlbFwiXG4gICAgICA+PC9tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICA8L21hdC1vcHRpb24+XG4gICAgPG1hdC1vcHRpb25cbiAgICAgICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGZpbHRlcmVkQ291bnRyaWVzJCB8IGFzeW5jXCJcbiAgICAgIFt2YWx1ZV09XCJjb3VudHJ5LmNvZGVcIlxuICAgICAgPjxzcGFuIGNsYXNzPVwiY291bnRyeVwiPlxuICAgICAgICA8ZmxhZy1pY29uIFtjb3VudHJ5Q29kZV09XCJjb3VudHJ5LmNvZGVcIiAvPiZuYnNwOyZuYnNwO3t7IGNvdW50cnkubmFtZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtc2VsZWN0PlxuICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50ICE9PSAnJ1wiPnt7IGhpbnQgfX08L21hdC1oaW50PlxuICA8bWF0LWVycm9yICpuZ0lmPVwiY291bnRyeS5pbnZhbGlkXCI+e3sgZXJyb3JzKCkgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cbjwvbWF0LWZvcm0tZmllbGQ+XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtaW5wdXQtY291bnRyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWlucHV0LWNvdW50cnkvc3JjL29uZW1ydmEtbWF0LWlucHV0LWNvdW50cnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1pbnB1dC1jb3VudHJ5L3NyYy9vbmVtcnZhLW1hdC1pbnB1dC1jb3VudHJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUVMLEdBQUcsRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixHQUNsQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7O0FBdUIzRSxNQUFNLE9BQU8sK0JBQStCO0lBbUIxQyxZQUFv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bUI7d0JBQ25CLGVBQWU7d0JBQ2YsaUJBQWlCO3FCQUNsQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzZGQUlyQyxRQUFRO3NCQURQLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgbWFwLFxuICBzdGFydFdpdGgsXG4gIGRlYm91bmNlVGltZSxcbiAgY29tYmluZUxhdGVzdFdpdGgsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0U2VhcmNoTW9kdWxlIH0gZnJvbSAnQG9uZW1ydmFwdWJsaWMvZGVzaWduLXN5c3RlbS9tYXQtc2VsZWN0LXNlYXJjaCc7XG5pbXBvcnQgeyBGbGFnSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vZmxhZy1pY29uJztcbmltcG9ydCB7XG4gIE9uZW1SdmFDRE5Db3VudHJ5U2VydmljZSxcbiAgT25lbXJ2YU1hdGVyaWFsQ291bnRyeSxcbn0gZnJvbSAnQG9uZW1ydmFwdWJsaWMvZGVzaWduLXN5c3RlbS9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLW1hdC1pbnB1dC1jb3VudHJ5JyxcbiAgc3R5bGVVcmxzOiBbJ29uZW1ydmEtbWF0LWlucHV0LWNvdW50cnkuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICdvbmVtcnZhLW1hdC1pbnB1dC1jb3VudHJ5LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdFNlbGVjdFNlYXJjaE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBGbGFnSWNvbkNvbXBvbmVudCxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgT25lbXJ2YU1hdElucHV0Q291bnRyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgY291bnRyeSE6IEZvcm1Db250cm9sO1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnQ291bnRyeSc7XG4gIEBJbnB1dCgpIG5vRW50cmllc0ZvdW5kTGFiZWwgPSAnTm90IGZvdW5kJztcbiAgQElucHV0KCkgaGludDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyTGFiZWwgPSAnU2VhcmNoJztcbiAgQElucHV0KCkgc2VhcmNoQXJpYUxhYmVsID0gJyc7XG4gIEBPdXRwdXQoKSBnZXRDb3VudHJ5ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGZpbHRlckN0cmw6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuXG4gIHB1YmxpYyBjb3VudHJpZXMkOiBPYnNlcnZhYmxlPE9uZW1ydmFNYXRlcmlhbENvdW50cnlbXT47XG4gIHB1YmxpYyBmaWx0ZXJlZENvdW50cmllcyQ6IE9ic2VydmFibGU8T25lbXJ2YU1hdGVyaWFsQ291bnRyeVtdPjtcbiAgcHVibGljIHNlbGVjdGVkQ291bnRyeSQ/OiBPYnNlcnZhYmxlPE9uZW1ydmFNYXRlcmlhbENvdW50cnkgfCB1bmRlZmluZWQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RuOiBPbmVtUnZhQ0ROQ291bnRyeVNlcnZpY2UpIHtcbiAgICB0aGlzLmNvdW50cmllcyQgPSB0aGlzLmNkbi5nZXRDb3VudHJpZXMoKTtcblxuICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMkID0gdGhpcy5maWx0ZXJDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDQwMCksXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5jb3VudHJpZXMkKSxcbiAgICAgIG1hcCgoW3NlYXJjaCwgY291bnRyaWVzXSkgPT4ge1xuICAgICAgICByZXR1cm4gY291bnRyaWVzLmZpbHRlcigoY291bnRyeTogT25lbXJ2YU1hdGVyaWFsQ291bnRyeSkgPT4ge1xuICAgICAgICAgIGlmICghc2VhcmNoIHx8IHNlYXJjaCA9PT0gJycpIHJldHVybiBjb3VudHJpZXM7XG4gICAgICAgICAgaWYgKGNvdW50cnkubmFtZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGNvdW50cnkubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCkpID4gLTE7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5JCA9IHRoaXMuY291bnRyeS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmNvdW50cnkuZ2V0UmF3VmFsdWUoKSksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLmNvdW50cmllcyQpLFxuICAgICAgbWFwKChbdmFsdWUsIGNvdW50cmllc10pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvdW50cmllcy5maW5kKFxuICAgICAgICAgIChjb3VudHJ5OiBPbmVtcnZhTWF0ZXJpYWxDb3VudHJ5KSA9PlxuICAgICAgICAgICAgY291bnRyeS5jb2RlID09PSB2YWx1ZT8uc3Vic3RyaW5nKDAsIGNvdW50cnkuY29kZS5sZW5ndGgpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGU6IGFueSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZXJyb3JzKCkge1xuICAgIGZvciAoY29uc3QgayBpbiB0aGlzLmNvdW50cnkuZXJyb3JzKSB7XG4gICAgICBpZiAoayA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgICByZXR1cm4gJ2lucHV0LmNvdW50cnkucmVxdWlyZWQnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJ2lucHV0LmNvdW50cnkudW5rbm93bi5lcnJvcic7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm9uZW1ydmEtaW5wdXQtY291bnRyeVwiPlxuICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gIDxtYXQtc2VsZWN0IGNsYXNzPVwib25lbXJ2YS1jb3VudHJ5LXNlbGVjdFwiIFtmb3JtQ29udHJvbF09XCJjb3VudHJ5XCI+XG4gICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgIDxmbGFnLWljb24gW2NvdW50cnlDb2RlXT1cImNvdW50cnkuZ2V0UmF3VmFsdWUoKVwiIC8+Jm5ic3A7Jm5ic3A7e3tcbiAgICAgICAgKHNlbGVjdGVkQ291bnRyeSQgfCBhc3luYyk/Lm5hbWVcbiAgICAgIH19XG4gICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgPG1hdC1vcHRpb24+XG4gICAgICA8bWF0LXNlbGVjdC1zZWFyY2hcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlckN0cmxcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cInNlYXJjaEFyaWFMYWJlbFwiXG4gICAgICAgIFtub0VudHJpZXNGb3VuZExhYmVsXT1cIm5vRW50cmllc0ZvdW5kTGFiZWxcIlxuICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJwbGFjZWhvbGRlckxhYmVsXCJcbiAgICAgID48L21hdC1zZWxlY3Qtc2VhcmNoPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bWF0LW9wdGlvblxuICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgZmlsdGVyZWRDb3VudHJpZXMkIHwgYXN5bmNcIlxuICAgICAgW3ZhbHVlXT1cImNvdW50cnkuY29kZVwiXG4gICAgICA+PHNwYW4gY2xhc3M9XCJjb3VudHJ5XCI+XG4gICAgICAgIDxmbGFnLWljb24gW2NvdW50cnlDb2RlXT1cImNvdW50cnkuY29kZVwiIC8+Jm5ic3A7Jm5ic3A7e3sgY291bnRyeS5uYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Q+XG4gIDxtYXQtaGludCAqbmdJZj1cImhpbnQgIT09ICcnXCI+e3sgaGludCB9fTwvbWF0LWhpbnQ+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJjb3VudHJ5LmludmFsaWRcIj57eyBlcnJvcnMoKSB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
@@ -138,7 +138,7 @@ export class OnemrvaMatInputEnterpriseNumberComponent {
138
138
  }
139
139
  return 'input.vies.unknown.error';
140
140
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OnemrvaMatInputEnterpriseNumberComponent, deps: [{ token: i1.OnemRvaCDNService }], target: i0.ɵɵFactoryTarget.Component }); }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OnemrvaMatInputEnterpriseNumberComponent, deps: [{ token: i1.OnemRvaCDNCountryService }], target: i0.ɵɵFactoryTarget.Component }); }
142
142
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: OnemrvaMatInputEnterpriseNumberComponent, isStandalone: true, selector: "onemrva-mat-input-enterprise-number", inputs: { readonly: "readonly", enterpriseNumber: "enterpriseNumber", label: "label", noEntriesFoundLabel: "noEntriesFoundLabel", placeholderLabel: "placeholderLabel", defaultCountry: "defaultCountry", searchAriaLabel: "searchAriaLabel", hint: "hint" }, outputs: { getCountry: "getCountry" }, viewQueries: [{ propertyName: "numberInput", first: true, predicate: ["numberInput"], descendants: true }], ngImport: i0, template: "<ng-container>\n <mat-form-field class=\"onemrva-input-enterprise-number\">\n <mat-label>{{ label }}</mat-label>\n <input\n (click)=\"handleClick($event)\"\n type=\"text\"\n matInput\n #numberInput\n placeholder=\"\"\n [formControl]=\"enterpriseNumber\"\n class=\"onemrva-text-enterprise-number\"\n [mask]=\"mask$ | async\"\n />\n <mat-select\n matTextPrefix\n class=\"onemrva-phone-number-select\"\n [formControl]=\"countryCode\"\n >\n <mat-select-trigger>\n <flag-icon [countryCode]=\"countryCode.getRawValue()\" />\n </mat-select-trigger>\n\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n\n <mat-option\n *ngFor=\"let country of filteredCountries$ | async\"\n [value]=\"country.code\"\n >\n <flag-icon [countryCode]=\"country.code\" />&nbsp;&nbsp;{{ country.name }}\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"number.invalid\">{{ errors() | translate }}</mat-error>\n </mat-form-field>\n</ng-container>\n", styles: [".onemrva-input-enterprise-number mat-select{padding:0 0 0 8px}.onemrva-input-enterprise-number mat-select .mat-mdc-select-placeholder{width:1em!important;display:block!important}.onemrva-input-enterprise-number mat-select .mat-mdc-select-placeholder:before{width:1em!important;height:1em!important;background:#eee!important;visibility:visible!important;margin:10px 0!important}.onemrva-input-enterprise-number mat-select .mat-mdc-select-value{padding-right:8px}.onemrva-input-enterprise-number .onemrva-text-enterprise-number{padding-left:12px!important;vertical-align:middle}.onemrva-input-enterprise-number .mat-mdc-form-field-text-prefix mat-select{line-height:14px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i5.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: FlagIconComponent, selector: "flag-icon", inputs: ["countryCode", "mode", "width"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "ngmodule", type: MatSelectSearchModule }, { kind: "component", type: i9.MatSelectSearchComponent, selector: "mat-select-search", inputs: ["placeholderLabel", "type", "closeIcon", "closeSvgIcon", "noEntriesFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }], encapsulation: i0.ViewEncapsulation.None }); }
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: OnemrvaMatInputEnterpriseNumberComponent, decorators: [{
@@ -154,7 +154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
154
154
  NgxMaskDirective,
155
155
  MatSelectSearchModule,
156
156
  ], encapsulation: ViewEncapsulation.None, template: "<ng-container>\n <mat-form-field class=\"onemrva-input-enterprise-number\">\n <mat-label>{{ label }}</mat-label>\n <input\n (click)=\"handleClick($event)\"\n type=\"text\"\n matInput\n #numberInput\n placeholder=\"\"\n [formControl]=\"enterpriseNumber\"\n class=\"onemrva-text-enterprise-number\"\n [mask]=\"mask$ | async\"\n />\n <mat-select\n matTextPrefix\n class=\"onemrva-phone-number-select\"\n [formControl]=\"countryCode\"\n >\n <mat-select-trigger>\n <flag-icon [countryCode]=\"countryCode.getRawValue()\" />\n </mat-select-trigger>\n\n <mat-option>\n <mat-select-search\n [formControl]=\"filterCtrl\"\n [ariaLabel]=\"searchAriaLabel\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [placeholderLabel]=\"placeholderLabel\"\n ></mat-select-search>\n </mat-option>\n\n <mat-option\n *ngFor=\"let country of filteredCountries$ | async\"\n [value]=\"country.code\"\n >\n <flag-icon [countryCode]=\"country.code\" />&nbsp;&nbsp;{{ country.name }}\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"hint !== ''\">{{ hint }}</mat-hint>\n <mat-error *ngIf=\"number.invalid\">{{ errors() | translate }}</mat-error>\n </mat-form-field>\n</ng-container>\n", styles: [".onemrva-input-enterprise-number mat-select{padding:0 0 0 8px}.onemrva-input-enterprise-number mat-select .mat-mdc-select-placeholder{width:1em!important;display:block!important}.onemrva-input-enterprise-number mat-select .mat-mdc-select-placeholder:before{width:1em!important;height:1em!important;background:#eee!important;visibility:visible!important;margin:10px 0!important}.onemrva-input-enterprise-number mat-select .mat-mdc-select-value{padding-right:8px}.onemrva-input-enterprise-number .onemrva-text-enterprise-number{padding-left:12px!important;vertical-align:middle}.onemrva-input-enterprise-number .mat-mdc-form-field-text-prefix mat-select{line-height:14px!important}\n"] }]
157
- }], ctorParameters: () => [{ type: i1.OnemRvaCDNService }], propDecorators: { readonly: [{
157
+ }], ctorParameters: () => [{ type: i1.OnemRvaCDNCountryService }], propDecorators: { readonly: [{
158
158
  type: Input
159
159
  }], enterpriseNumber: [{
160
160
  type: Input
@@ -176,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
176
176
  type: ViewChild,
177
177
  args: ['numberInput']
178
178
  }] } });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1pbnB1dC1lbnRlcnByaXNlLW51bWJlci9zcmMvb25lbXJ2YS1tYXQtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1pbnB1dC1lbnRlcnByaXNlLW51bWJlci9zcmMvb25lbXJ2YS1tYXQtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixHQUFHLEVBRUgsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0s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cUNBQXFDLGNBR25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3FCQUN0QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJO3NGQU1yQyxRQUFRO3NCQURQLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDbUIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOZ3hNYXNrRGlyZWN0aXZlIH0gZnJvbSAnbmd4LW1hc2snO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdFdpdGgsXG4gIGRlYm91bmNlVGltZSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG4gIHRha2VVbnRpbCxcbiAgemlwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFNlbGVjdFNlYXJjaE1vZHVsZSB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vbWF0LXNlbGVjdC1zZWFyY2gnO1xuaW1wb3J0IHtcbiAgT25lbVJ2YUNETlNlcnZpY2UsXG4gIE9uZW1ydmFNYXRlcmlhbENvdW50cnksXG59IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IEZsYWdJY29uQ29tcG9uZW50IH0gZnJvbSAnQG9uZW1ydmFwdWJsaWMvZGVzaWduLXN5c3RlbS9mbGFnLWljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLW1hdC1pbnB1dC1lbnRlcnByaXNlLW51bWJlcicsXG4gIHN0eWxlVXJsczogWydvbmVtcnZhLW1hdC1pbnB1dC1lbnRlcnByaXNlLW51bWJlci5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJ29uZW1ydmEtbWF0LWlucHV0LWVudGVycHJpc2UtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEZsYWdJY29uQ29tcG9uZW50LFxuICAgIE5neE1hc2tEaXJlY3RpdmUsXG4gICAgTWF0U2VsZWN0U2VhcmNoTW9kdWxlLFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBPbmVtcnZhTWF0SW5wdXRFbnRlcnByaXNlTnVtYmVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBlbnRlcnByaXNlTnVtYmVyITogRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnVklFUyc7XG4gIEBJbnB1dCgpIG5vRW50cmllc0ZvdW5kTGFiZWwgPSAnTm90IGZvdW5kJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXJMYWJlbCA9ICdTZWFyY2gnO1xuICBASW5wdXQoKSBkZWZhdWx0Q291bnRyeTogc3RyaW5nID0gJ0JFJztcbiAgQElucHV0KCkgc2VhcmNoQXJpYUxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgZ2V0Q291bnRyeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKCdudW1iZXJJbnB1dCcpIG51bWJlcklucHV0ITogRWxlbWVudFJlZjtcblxuICBjb3VudHJ5Q29kZTogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHB1YmxpYyBmaWx0ZXJDdHJsOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcblxuICBkZXN0cm95Tm90aWZpZXIkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBtYXNrJCE6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuICBwdWJsaWMgY291bnRyaWVzJDogT2JzZXJ2YWJsZTxPbmVtcnZhTWF0ZXJpYWxDb3VudHJ5W10+ID1cbiAgICB0aGlzLmNkbi5nZXRDb3VudHJpZXNCeVpvbmUoJ0VVJyk7XG4gIHB1YmxpYyBmaWx0ZXJlZENvdW50cmllcyQ6IE9ic2VydmFibGU8T25lbXJ2YU1hdGVyaWFsQ291bnRyeVtdPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkbjogT25lbVJ2YUNETlNlcnZpY2UpIHtcbiAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzJCA9IHRoaXMuZmlsdGVyQ3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg0MDApLFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuY291bnRyaWVzJCksXG4gICAgICBtYXAoKFtzZWFyY2gsIGNvdW50cmllc10pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvdW50cmllcy5maWx0ZXIoKGNvdW50cnk6IE9uZW1ydmFNYXRlcmlhbENvdW50cnkpID0+IHtcbiAgICAgICAgICBpZiAoIXNlYXJjaCB8fCBzZWFyY2ggPT09ICcnKSByZXR1cm4gY291bnRyaWVzO1xuICAgICAgICAgIGlmIChjb3VudHJ5Lm5hbWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiBjb3VudHJ5Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+IC0xO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBnZXQgbnVtYmVyKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5lbnRlcnByaXNlTnVtYmVyIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb2RlKGNvdW50cnk6IE9uZW1ydmFNYXRlcmlhbENvdW50cnkgfCBudWxsKSB7XG4gICAgdGhpcy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICBpZiAoY291bnRyeSkge1xuICAgICAgdGhpcy5jb3VudHJ5Q29kZS5zZXRWYWx1ZShjb3VudHJ5LmNvZGUpO1xuICAgICAgdGhpcy5mb3JtYXRFbnRlcnByaXNlTnVtYmVyKGNvdW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubnVtYmVyLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLm51bWJlci5nZXRSYXdWYWx1ZSgpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKG51bWJlciA9PiB7XG4gICAgICAgIGlmIChudW1iZXIgPT09ICcwJykge1xuICAgICAgICAgIHRoaXMuY2RuXG4gICAgICAgICAgICAuZmluZENvdW50cnlGcm9tQ29kZSh0aGlzLmRlZmF1bHRDb3VudHJ5KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGNvdW50cnkgPT4ge1xuICAgICAgICAgICAgICBpZiAoY291bnRyeSkge1xuICAgICAgICAgICAgICAgIG51bWJlciA9IGNvdW50cnkucGF0dGVybi5zdWJzdHJpbmcoMCwgMikgKyBudW1iZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5udW1iZXIuc2V0VmFsdWUobnVtYmVyLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudHJ5Q29kZS5zZXRWYWx1ZShjb3VudHJ5LmNvZGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeUNvZGUuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobnVtYmVyLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMuY2RuXG4gICAgICAgICAgICAgIC5maW5kQ291bnRyeUZyb21WSUVTQ29kZShudW1iZXIpXG4gICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lOb3RpZmllciQpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKGNvdW50cnkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50cnlDb2RlLnNldFZhbHVlKGNvdW50cnkuY29kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jb3VudHJ5Q29kZS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lOb3RpZmllciQpKVxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGxldCBudW1iZXIgPSB0aGlzLm51bWJlci5nZXRSYXdWYWx1ZSgpO1xuICAgICAgICB6aXAoXG4gICAgICAgICAgdGhpcy5jZG4uZmluZENvdW50cnlGcm9tVklFU0NvZGUobnVtYmVyKSxcbiAgICAgICAgICB0aGlzLmNkbi5maW5kQ291bnRyeUZyb21Db2RlKHZhbHVlKSxcbiAgICAgICAgKS5zdWJzY3JpYmUoKFtjb3VudHJ5RnJvbVZpZXMsIGNvdW50cnlGcm9tQ29kZV0pID0+IHtcbiAgICAgICAgICBpZiAoY291bnRyeUZyb21WaWVzKSB7XG4gICAgICAgICAgICBudW1iZXIgPSBudW1iZXIucmVwbGFjZShcbiAgICAgICAgICAgICAgY291bnRyeUZyb21WaWVzLnBhdHRlcm4uc3Vic3RyaW5nKDAsIDIpLFxuICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb3VudHJ5RnJvbUNvZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q291bnRyeS5uZXh0KGNvdW50cnlGcm9tQ29kZSk7XG4gICAgICAgICAgICBudW1iZXIgPSBjb3VudHJ5RnJvbUNvZGUucGF0dGVybi5zdWJzdHJpbmcoMCwgMikgKyBudW1iZXI7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdEVudGVycHJpc2VOdW1iZXIoY291bnRyeUZyb21Db2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5udW1iZXIuc2V0VmFsdWUobnVtYmVyLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtYXRFbnRlcnByaXNlTnVtYmVyKGNvdW50cnlGcm9tQ29kZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVmFsaWRhdG9ycygpIHtcbiAgICBsZXQgcmVxdWlyZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5udW1iZXIuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpKSB7XG4gICAgICByZXF1aXJlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubnVtYmVyLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgdGhpcy5udW1iZXIuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEVudGVycHJpc2VOdW1iZXIoY291bnRyeTogT25lbXJ2YU1hdGVyaWFsQ291bnRyeSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgaWYgKHRoaXMuY291bnRyeUNvZGUuZ2V0UmF3VmFsdWUoKSAhPT0gJycgJiYgY291bnRyeSkge1xuICAgICAgdGhpcy5lbnRlcnByaXNlTnVtYmVyLmFkZFZhbGlkYXRvcnMoXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKGNvdW50cnkucGF0dGVybikpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3lOb3RpZmllciQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveU5vdGlmaWVyJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZTogYW55KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGVycm9ycygpIHtcbiAgICBmb3IgKGNvbnN0IGsgaW4gdGhpcy5udW1iZXIuZXJyb3JzKSB7XG4gICAgICBpZiAoayA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgICByZXR1cm4gJ2lucHV0LnZpZXMucmVxdWlyZWQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdpbnB1dC52aWVzLmludmFsaWQnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJ2lucHV0LnZpZXMudW5rbm93bi5lcnJvcic7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm9uZW1ydmEtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXJcIj5cbiAgICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBtYXRJbnB1dFxuICAgICAgI251bWJlcklucHV0XG4gICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZW50ZXJwcmlzZU51bWJlclwiXG4gICAgICBjbGFzcz1cIm9uZW1ydmEtdGV4dC1lbnRlcnByaXNlLW51bWJlclwiXG4gICAgICBbbWFza109XCJtYXNrJCB8IGFzeW5jXCJcbiAgICAvPlxuICAgIDxtYXQtc2VsZWN0XG4gICAgICBtYXRUZXh0UHJlZml4XG4gICAgICBjbGFzcz1cIm9uZW1ydmEtcGhvbmUtbnVtYmVyLXNlbGVjdFwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiY291bnRyeUNvZGVcIlxuICAgID5cbiAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICAgIDxmbGFnLWljb24gW2NvdW50cnlDb2RlXT1cImNvdW50cnlDb2RlLmdldFJhd1ZhbHVlKClcIiAvPlxuICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG5cbiAgICAgIDxtYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LXNlbGVjdC1zZWFyY2hcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmlsdGVyQ3RybFwiXG4gICAgICAgICAgW2FyaWFMYWJlbF09XCJzZWFyY2hBcmlhTGFiZWxcIlxuICAgICAgICAgIFtub0VudHJpZXNGb3VuZExhYmVsXT1cIm5vRW50cmllc0ZvdW5kTGFiZWxcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlckxhYmVsXT1cInBsYWNlaG9sZGVyTGFiZWxcIlxuICAgICAgICA+PC9tYXQtc2VsZWN0LXNlYXJjaD5cbiAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgZmlsdGVyZWRDb3VudHJpZXMkIHwgYXN5bmNcIlxuICAgICAgICBbdmFsdWVdPVwiY291bnRyeS5jb2RlXCJcbiAgICAgID5cbiAgICAgICAgPGZsYWctaWNvbiBbY291bnRyeUNvZGVdPVwiY291bnRyeS5jb2RlXCIgLz4mbmJzcDsmbmJzcDt7eyBjb3VudHJ5Lm5hbWUgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gICAgPG1hdC1oaW50ICpuZ0lmPVwiaGludCAhPT0gJydcIj57eyBoaW50IH19PC9tYXQtaGludD5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwibnVtYmVyLmludmFsaWRcIj57eyBlcnJvcnMoKSB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1pbnB1dC1lbnRlcnByaXNlLW51bWJlci9zcmMvb25lbXJ2YS1tYXQtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1pbnB1dC1lbnRlcnByaXNlLW51bWJlci9zcmMvb25lbXJ2YS1tYXQtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixHQUFHLEVBRUgsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFLdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBb0IzRSxNQUFNLE9BQU8sd0NBQXdDO0lBNEJuRCxZQUFvQixHQUE2QjtRQUE3QixRQUFHLEdBQUgsR0FBRyxDQUEwQjtRQXhCakQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUdqQixVQUFLLEdBQVcsTUFBTSxDQUFDO1FBQ3ZCLHdCQUFtQixHQUFHLFdBQVcsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDNUIsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFDOUIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUcvQyxnQkFBVyxHQUFnQixJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV4QyxlQUFVLEdBQStCLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLHFCQUFnQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSXpDLGVBQVUsR0FDZixJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBSWxDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3pELFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDbEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRTtZQUMxQixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUErQixFQUFFLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLEVBQUU7b0JBQUUsT0FBTyxTQUFTLENBQUM7Z0JBQy9DLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxTQUFTO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUM3QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxnQkFBK0IsQ0FBQztJQUM5QyxDQUFDO0lBRU8sT0FBTyxDQUFDLE9BQXNDO1FBQ3BELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7YUFDckIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ3BDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FDakM7YUFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxHQUFHO3FCQUNMLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7cUJBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7cUJBQ3RDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDbkIsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDWixNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQzt3QkFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7d0JBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDMUMsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNoQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLEdBQUc7eUJBQ0wsdUJBQXVCLENBQUMsTUFBTSxDQUFDO3lCQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUN0QyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ25CLElBQUksT0FBTyxFQUFFLENBQUM7NEJBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMxQyxDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVk7YUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUN0QyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxHQUFHLENBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsRUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FDcEMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNwQixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDckIsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN2QyxFQUFFLENBQ0gsQ0FBQztnQkFDSixDQUFDO2dCQUNELElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUN0QyxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztvQkFDMUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xELFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE9BQTJDO1FBQ3hFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQ2pDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2hELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBTTtRQUNoQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU07UUFDSixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8scUJBQXFCLENBQUM7WUFDL0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sb0JBQW9CLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7OEdBeEpVLHdDQUF3QztrR0FBeEMsd0NBQXdDLGdmQ3JEckQseTBDQTBDQSxrdUJEREksWUFBWSxvVEFDWixjQUFjLDQ2QkFDZCxrQkFBa0IsOEJBQ2xCLGVBQWUscXdCQUNmLG1CQUFtQix5a0JBQ25CLGVBQWUsNEZBQ2YsaUJBQWlCLGdHQUNqQixnQkFBZ0IsZ2pCQUNoQixxQkFBcUI7OzJGQUlaLHdDQUF3QztrQkFsQnBELFNBQVM7K0JBQ0UscUNBQXFDLGNBR25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3FCQUN0QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzZGQU1yQyxRQUFRO3NCQURQLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDbUIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOZ3hNYXNrRGlyZWN0aXZlIH0gZnJvbSAnbmd4LW1hc2snO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdFdpdGgsXG4gIGRlYm91bmNlVGltZSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG4gIHRha2VVbnRpbCxcbiAgemlwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFNlbGVjdFNlYXJjaE1vZHVsZSB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vbWF0LXNlbGVjdC1zZWFyY2gnO1xuaW1wb3J0IHtcbiAgT25lbVJ2YUNETkNvdW50cnlTZXJ2aWNlLFxuICBPbmVtcnZhTWF0ZXJpYWxDb3VudHJ5LFxufSBmcm9tICdAb25lbXJ2YXB1YmxpYy9kZXNpZ24tc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBGbGFnSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vZmxhZy1pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb25lbXJ2YS1tYXQtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXInLFxuICBzdHlsZVVybHM6IFsnb25lbXJ2YS1tYXQtaW5wdXQtZW50ZXJwcmlzZS1udW1iZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICdvbmVtcnZhLW1hdC1pbnB1dC1lbnRlcnByaXNlLW51bWJlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBGbGFnSWNvbkNvbXBvbmVudCxcbiAgICBOZ3hNYXNrRGlyZWN0aXZlLFxuICAgIE1hdFNlbGVjdFNlYXJjaE1vZHVsZSxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgT25lbXJ2YU1hdElucHV0RW50ZXJwcmlzZU51bWJlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZW50ZXJwcmlzZU51bWJlciE6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJ1ZJRVMnO1xuICBASW5wdXQoKSBub0VudHJpZXNGb3VuZExhYmVsID0gJ05vdCBmb3VuZCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyTGFiZWwgPSAnU2VhcmNoJztcbiAgQElucHV0KCkgZGVmYXVsdENvdW50cnk6IHN0cmluZyA9ICdCRSc7XG4gIEBJbnB1dCgpIHNlYXJjaEFyaWFMYWJlbCA9ICcnO1xuICBASW5wdXQoKSBoaW50OiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIGdldENvdW50cnkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZCgnbnVtYmVySW5wdXQnKSBudW1iZXJJbnB1dCE6IEVsZW1lbnRSZWY7XG5cbiAgY291bnRyeUNvZGU6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwdWJsaWMgZmlsdGVyQ3RybDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG5cbiAgZGVzdHJveU5vdGlmaWVyJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbWFzayQhOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD47XG5cbiAgcHVibGljIGNvdW50cmllcyQ6IE9ic2VydmFibGU8T25lbXJ2YU1hdGVyaWFsQ291bnRyeVtdPiA9XG4gICAgdGhpcy5jZG4uZ2V0Q291bnRyaWVzQnlab25lKCdFVScpO1xuICBwdWJsaWMgZmlsdGVyZWRDb3VudHJpZXMkOiBPYnNlcnZhYmxlPE9uZW1ydmFNYXRlcmlhbENvdW50cnlbXT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZG46IE9uZW1SdmFDRE5Db3VudHJ5U2VydmljZSkge1xuICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXMkID0gdGhpcy5maWx0ZXJDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDQwMCksXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5jb3VudHJpZXMkKSxcbiAgICAgIG1hcCgoW3NlYXJjaCwgY291bnRyaWVzXSkgPT4ge1xuICAgICAgICByZXR1cm4gY291bnRyaWVzLmZpbHRlcigoY291bnRyeTogT25lbXJ2YU1hdGVyaWFsQ291bnRyeSkgPT4ge1xuICAgICAgICAgIGlmICghc2VhcmNoIHx8IHNlYXJjaCA9PT0gJycpIHJldHVybiBjb3VudHJpZXM7XG4gICAgICAgICAgaWYgKGNvdW50cnkubmFtZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGNvdW50cnkubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCkpID4gLTE7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBudW1iZXIoKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmVudGVycHJpc2VOdW1iZXIgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIHNldENvZGUoY291bnRyeTogT25lbXJ2YU1hdGVyaWFsQ291bnRyeSB8IG51bGwpIHtcbiAgICB0aGlzLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIGlmIChjb3VudHJ5KSB7XG4gICAgICB0aGlzLmNvdW50cnlDb2RlLnNldFZhbHVlKGNvdW50cnkuY29kZSk7XG4gICAgICB0aGlzLmZvcm1hdEVudGVycHJpc2VOdW1iZXIoY291bnRyeSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5udW1iZXIudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMubnVtYmVyLmdldFJhd1ZhbHVlKCkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95Tm90aWZpZXIkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUobnVtYmVyID0+IHtcbiAgICAgICAgaWYgKG51bWJlciA9PT0gJzAnKSB7XG4gICAgICAgICAgdGhpcy5jZG5cbiAgICAgICAgICAgIC5maW5kQ291bnRyeUZyb21Db2RlKHRoaXMuZGVmYXVsdENvdW50cnkpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95Tm90aWZpZXIkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoY291bnRyeSA9PiB7XG4gICAgICAgICAgICAgIGlmIChjb3VudHJ5KSB7XG4gICAgICAgICAgICAgICAgbnVtYmVyID0gY291bnRyeS5wYXR0ZXJuLnN1YnN0cmluZygwLCAyKSArIG51bWJlcjtcbiAgICAgICAgICAgICAgICB0aGlzLm51bWJlci5zZXRWYWx1ZShudW1iZXIsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50cnlDb2RlLnNldFZhbHVlKGNvdW50cnkuY29kZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudHJ5Q29kZS5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChudW1iZXIubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5jZG5cbiAgICAgICAgICAgICAgLmZpbmRDb3VudHJ5RnJvbVZJRVNDb2RlKG51bWJlcilcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoY291bnRyeSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50cnkpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeUNvZGUuc2V0VmFsdWUoY291bnRyeS5jb2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmNvdW50cnlDb2RlLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgbGV0IG51bWJlciA9IHRoaXMubnVtYmVyLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHppcChcbiAgICAgICAgICB0aGlzLmNkbi5maW5kQ291bnRyeUZyb21WSUVTQ29kZShudW1iZXIpLFxuICAgICAgICAgIHRoaXMuY2RuLmZpbmRDb3VudHJ5RnJvbUNvZGUodmFsdWUpLFxuICAgICAgICApLnN1YnNjcmliZSgoW2NvdW50cnlGcm9tVmllcywgY291bnRyeUZyb21Db2RlXSkgPT4ge1xuICAgICAgICAgIGlmIChjb3VudHJ5RnJvbVZpZXMpIHtcbiAgICAgICAgICAgIG51bWJlciA9IG51bWJlci5yZXBsYWNlKFxuICAgICAgICAgICAgICBjb3VudHJ5RnJvbVZpZXMucGF0dGVybi5zdWJzdHJpbmcoMCwgMiksXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvdW50cnlGcm9tQ29kZSkge1xuICAgICAgICAgICAgdGhpcy5nZXRDb3VudHJ5Lm5leHQoY291bnRyeUZyb21Db2RlKTtcbiAgICAgICAgICAgIG51bWJlciA9IGNvdW50cnlGcm9tQ29kZS5wYXR0ZXJuLnN1YnN0cmluZygwLCAyKSArIG51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0RW50ZXJwcmlzZU51bWJlcihjb3VudHJ5RnJvbUNvZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm51bWJlci5zZXRWYWx1ZShudW1iZXIsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB0aGlzLmZvcm1hdEVudGVycHJpc2VOdW1iZXIoY291bnRyeUZyb21Db2RlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJWYWxpZGF0b3JzKCkge1xuICAgIGxldCByZXF1aXJlZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm51bWJlci5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkpIHtcbiAgICAgIHJlcXVpcmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5udW1iZXIuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICB0aGlzLm51bWJlci5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RW50ZXJwcmlzZU51bWJlcihjb3VudHJ5OiBPbmVtcnZhTWF0ZXJpYWxDb3VudHJ5IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICBpZiAodGhpcy5jb3VudHJ5Q29kZS5nZXRSYXdWYWx1ZSgpICE9PSAnJyAmJiBjb3VudHJ5KSB7XG4gICAgICB0aGlzLmVudGVycHJpc2VOdW1iZXIuYWRkVmFsaWRhdG9ycyhcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKG5ldyBSZWdFeHAoY291bnRyeS5wYXR0ZXJuKSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveU5vdGlmaWVyJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95Tm90aWZpZXIkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBoYW5kbGVDbGljayhlOiBhbnkpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZXJyb3JzKCkge1xuICAgIGZvciAoY29uc3QgayBpbiB0aGlzLm51bWJlci5lcnJvcnMpIHtcbiAgICAgIGlmIChrID09PSAncmVxdWlyZWQnKSB7XG4gICAgICAgIHJldHVybiAnaW5wdXQudmllcy5yZXF1aXJlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2lucHV0LnZpZXMuaW52YWxpZCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnaW5wdXQudmllcy51bmtub3duLmVycm9yJztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwib25lbXJ2YS1pbnB1dC1lbnRlcnByaXNlLW51bWJlclwiPlxuICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIG1hdElucHV0XG4gICAgICAjbnVtYmVySW5wdXRcbiAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJlbnRlcnByaXNlTnVtYmVyXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS10ZXh0LWVudGVycHJpc2UtbnVtYmVyXCJcbiAgICAgIFttYXNrXT1cIm1hc2skIHwgYXN5bmNcIlxuICAgIC8+XG4gICAgPG1hdC1zZWxlY3RcbiAgICAgIG1hdFRleHRQcmVmaXhcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1waG9uZS1udW1iZXItc2VsZWN0XCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb3VudHJ5Q29kZVwiXG4gICAgPlxuICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgICAgPGZsYWctaWNvbiBbY291bnRyeUNvZGVdPVwiY291bnRyeUNvZGUuZ2V0UmF3VmFsdWUoKVwiIC8+XG4gICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cblxuICAgICAgPG1hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtc2VsZWN0LXNlYXJjaFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJDdHJsXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cInNlYXJjaEFyaWFMYWJlbFwiXG4gICAgICAgICAgW25vRW50cmllc0ZvdW5kTGFiZWxdPVwibm9FbnRyaWVzRm91bmRMYWJlbFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwicGxhY2Vob2xkZXJMYWJlbFwiXG4gICAgICAgID48L21hdC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICA8bWF0LW9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgY291bnRyeSBvZiBmaWx0ZXJlZENvdW50cmllcyQgfCBhc3luY1wiXG4gICAgICAgIFt2YWx1ZV09XCJjb3VudHJ5LmNvZGVcIlxuICAgICAgPlxuICAgICAgICA8ZmxhZy1pY29uIFtjb3VudHJ5Q29kZV09XCJjb3VudHJ5LmNvZGVcIiAvPiZuYnNwOyZuYnNwO3t7IGNvdW50cnkubmFtZSB9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50ICE9PSAnJ1wiPnt7IGhpbnQgfX08L21hdC1oaW50PlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJudW1iZXIuaW52YWxpZFwiPnt7IGVycm9ycygpIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==