@wavemaker/app-ng-runtime 11.8.0-next.141688 → 11.8.0-next.141689

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 (99) hide show
  1. package/build-task/bundles/index.umd.js +4 -4
  2. package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +3 -3
  3. package/build-task/esm2022/containers/repeat-template.build.mjs +3 -3
  4. package/build-task/fesm2022/index.mjs +4 -4
  5. package/build-task/fesm2022/index.mjs.map +1 -1
  6. package/components/advanced/carousel/bundles/index.umd.js +3 -2
  7. package/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +1 -1
  8. package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +4 -3
  9. package/components/advanced/carousel/fesm2022/index.mjs +3 -2
  10. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  11. package/components/base/bundles/index.umd.js +45 -32
  12. package/components/base/directives/show-in-device.directive.d.ts +3 -6
  13. package/components/base/esm2022/directives/show-in-device.directive.mjs +12 -14
  14. package/components/base/esm2022/public_api.mjs +2 -1
  15. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +5 -7
  16. package/components/base/esm2022/widgets/common/base/base.component.mjs +22 -15
  17. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +13 -6
  18. package/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +4 -3
  19. package/components/base/fesm2022/index.mjs +45 -33
  20. package/components/base/fesm2022/index.mjs.map +1 -1
  21. package/components/base/public_api.d.ts +1 -0
  22. package/components/base/widgets/common/base/base.component.d.ts +18 -1
  23. package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +2 -2
  24. package/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +1 -1
  25. package/components/basic/search/bundles/index.umd.js +10 -9
  26. package/components/basic/search/esm2022/search.component.mjs +11 -10
  27. package/components/basic/search/fesm2022/index.mjs +10 -9
  28. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  29. package/components/data/form/bundles/index.umd.js +1 -1
  30. package/components/data/form/esm2022/form.component.mjs +2 -2
  31. package/components/data/form/fesm2022/index.mjs +1 -1
  32. package/components/data/form/fesm2022/index.mjs.map +1 -1
  33. package/components/data/list/bundles/index.umd.js +10 -7
  34. package/components/data/list/esm2022/list-item.directive.mjs +6 -1
  35. package/components/data/list/esm2022/list.component.mjs +7 -8
  36. package/components/data/list/fesm2022/index.mjs +11 -8
  37. package/components/data/list/fesm2022/index.mjs.map +1 -1
  38. package/components/data/list/list-item.directive.d.ts +4 -0
  39. package/components/data/pagination/bundles/index.umd.js +10 -9
  40. package/components/data/pagination/esm2022/pagination.component.mjs +11 -10
  41. package/components/data/pagination/fesm2022/index.mjs +10 -9
  42. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  43. package/components/data/table/bundles/index.umd.js +3 -1
  44. package/components/data/table/esm2022/table.component.mjs +4 -2
  45. package/components/data/table/fesm2022/index.mjs +3 -1
  46. package/components/data/table/fesm2022/index.mjs.map +1 -1
  47. package/components/input/color-picker/bundles/index.umd.js +2 -2
  48. package/components/input/color-picker/esm2022/color-picker.component.mjs +3 -3
  49. package/components/input/color-picker/fesm2022/index.mjs +2 -2
  50. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  51. package/components/input/default/bundles/index.umd.js +37 -32
  52. package/components/input/default/esm2022/checkbox/checkbox.component.mjs +6 -5
  53. package/components/input/default/esm2022/select/select.component.mjs +6 -5
  54. package/components/input/default/esm2022/text/base/base-input.mjs +3 -2
  55. package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -4
  56. package/components/input/default/esm2022/text/color/input-color.component.mjs +5 -4
  57. package/components/input/default/fesm2022/index.mjs +37 -32
  58. package/components/input/default/fesm2022/index.mjs.map +1 -1
  59. package/components/input/default/text/base/base-input.d.ts +1 -0
  60. package/components/input/epoch/bundles/index.umd.js +13 -11
  61. package/components/input/epoch/esm2022/date/date.component.mjs +2 -2
  62. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +6 -5
  63. package/components/input/epoch/esm2022/time/time.component.mjs +6 -5
  64. package/components/input/epoch/fesm2022/index.mjs +13 -11
  65. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  66. package/components/input/rating/bundles/index.umd.js +12 -10
  67. package/components/input/rating/esm2022/rating.component.mjs +13 -11
  68. package/components/input/rating/fesm2022/index.mjs +12 -10
  69. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  70. package/components/input/slider/bundles/index.umd.js +4 -3
  71. package/components/input/slider/esm2022/slider.component.mjs +5 -4
  72. package/components/input/slider/fesm2022/index.mjs +4 -3
  73. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  74. package/components/navigation/menu/bundles/index.umd.js +10 -12
  75. package/components/navigation/menu/esm2022/menu.module.mjs +3 -2
  76. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +3 -2
  77. package/components/navigation/menu/esm2022/nav/nav.component.mjs +8 -12
  78. package/components/navigation/menu/fesm2022/index.mjs +11 -13
  79. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  80. package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +1 -1
  81. package/components/navigation/menu/nav/nav.component.d.ts +1 -2
  82. package/core/bundles/index.umd.js +23 -0
  83. package/core/esm2022/public_api.mjs +2 -1
  84. package/core/esm2022/services/custom-icons-loader.service.mjs +26 -0
  85. package/core/fesm2022/index.mjs +25 -3
  86. package/core/fesm2022/index.mjs.map +1 -1
  87. package/core/public_api.d.ts +1 -0
  88. package/core/services/custom-icons-loader.service.d.ts +7 -0
  89. package/package-lock.json +2 -2
  90. package/package.json +1 -1
  91. package/runtime/base/bundles/index.umd.js +19 -8
  92. package/runtime/base/components/app-component/app.component.d.ts +3 -1
  93. package/runtime/base/directives/accessroles.directive.d.ts +4 -3
  94. package/runtime/base/esm2022/components/app-component/app.component.mjs +9 -5
  95. package/runtime/base/esm2022/directives/accessroles.directive.mjs +14 -7
  96. package/runtime/base/esm2022/services/i18n.service.mjs +2 -2
  97. package/runtime/base/fesm2022/index.mjs +20 -9
  98. package/runtime/base/fesm2022/index.mjs.map +1 -1
  99. package/scripts/datatable/datatable.js +1 -1
@@ -15,6 +15,7 @@ export * from './services/field-type.service';
15
15
  export * from './services/field-widget.service';
16
16
  export * from './services/script-loader.service';
17
17
  export * from './services/user-custom-pipe-manager.service';
18
+ export * from './services/custom-icons-loader.service';
18
19
  export { StatePersistence } from './services/state-persistence.service';
19
20
  export { PaginationService } from './services/pagination.service';
20
21
  export * from './core.module';
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CustomIconsLoaderService {
3
+ private http;
4
+ load(): void;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<CustomIconsLoaderService, never>;
6
+ static ɵprov: i0.ɵɵInjectableDeclaration<CustomIconsLoaderService>;
7
+ }
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@wavemaker/app-ng-runtime",
3
- "version": "11.8.0-next.141688",
3
+ "version": "11.8.0-next.141689",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@wavemaker/app-ng-runtime",
9
- "version": "11.8.0-next.141688",
9
+ "version": "11.8.0-next.141689",
10
10
  "license": "MIT",
11
11
  "engines": {
12
12
  "node": ">=18.16.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/app-ng-runtime",
3
- "version": "11.8.0-next.141688",
3
+ "version": "11.8.0-next.141689",
4
4
  "description": "All modules required for a WaveMaker application.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -2016,16 +2016,18 @@
2016
2016
  USER_ROLE["AUTHENTICATED"] = "Authenticated";
2017
2017
  })(USER_ROLE || (USER_ROLE = {}));
2018
2018
  class AccessrolesDirective {
2019
- constructor(templateRef, viewContainerRef, securityService, inj) {
2019
+ constructor(templateRef, viewContainerRef, securityService, inj, explicitContext) {
2020
2020
  this.templateRef = templateRef;
2021
2021
  this.viewContainerRef = viewContainerRef;
2022
2022
  this.securityService = securityService;
2023
2023
  this.inj = inj;
2024
2024
  this.processed = false;
2025
+ this.context = {};
2025
2026
  const securityConfig = this.securityService.get();
2026
2027
  this.securityEnabled = lodashEs.get(securityConfig, 'securityEnabled');
2027
2028
  this.isUserAuthenticated = lodashEs.get(securityConfig, 'authenticated');
2028
2029
  this.userRoles = lodashEs.get(securityConfig, 'userInfo.userRoles');
2030
+ lodashEs.extend(this.context, inj._lView[8], explicitContext);
2029
2031
  }
2030
2032
  /**
2031
2033
  * Returns array of roles from comma separated string of roles
@@ -2087,13 +2089,13 @@
2087
2089
  const isAccessible = !this.securityEnabled || this.hasAccessToWidget(widgetRoles, this.userRoles);
2088
2090
  if (isAccessible) {
2089
2091
  // [WMS-19294] pass on the previous context as second param.
2090
- this.viewContainerRef.createEmbeddedView(this.templateRef, this.inj._lView[8]);
2092
+ this.viewContainerRef.createEmbeddedView(this.templateRef, this.context);
2091
2093
  }
2092
2094
  else {
2093
2095
  this.viewContainerRef.clear();
2094
2096
  }
2095
2097
  }
2096
- static { this.ɵfac = function AccessrolesDirective_Factory(t) { return new (t || AccessrolesDirective)(i0__namespace.ɵɵdirectiveInject(i0__namespace.TemplateRef), i0__namespace.ɵɵdirectiveInject(i0__namespace.ViewContainerRef), i0__namespace.ɵɵdirectiveInject(i2__namespace.SecurityService), i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector)); }; }
2098
+ static { this.ɵfac = function AccessrolesDirective_Factory(t) { return new (t || AccessrolesDirective)(i0__namespace.ɵɵdirectiveInject(i0__namespace.TemplateRef), i0__namespace.ɵɵdirectiveInject(i0__namespace.ViewContainerRef), i0__namespace.ɵɵdirectiveInject(i2__namespace.SecurityService), i0__namespace.ɵɵdirectiveInject(i0__namespace.Injector), i0__namespace.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
2097
2099
  static { this.ɵdir = /*@__PURE__*/ i0__namespace.ɵɵdefineDirective({ type: AccessrolesDirective, selectors: [["", "accessroles", ""]], inputs: { accessroles: "accessroles" } }); }
2098
2100
  }
2099
2101
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(AccessrolesDirective, [{
@@ -2101,7 +2103,12 @@
2101
2103
  args: [{
2102
2104
  selector: '[accessroles]'
2103
2105
  }]
2104
- }], () => [{ type: i0__namespace.TemplateRef }, { type: i0__namespace.ViewContainerRef }, { type: i2__namespace.SecurityService }, { type: i0__namespace.Injector }], { accessroles: [{
2106
+ }], () => [{ type: i0__namespace.TemplateRef }, { type: i0__namespace.ViewContainerRef }, { type: i2__namespace.SecurityService }, { type: i0__namespace.Injector }, { type: undefined, decorators: [{
2107
+ type: i0.Inject,
2108
+ args: ['EXPLICIT_CONTEXT']
2109
+ }, {
2110
+ type: i0.Optional
2111
+ }] }], { accessroles: [{
2105
2112
  type: i0.Input
2106
2113
  }] }); })();
2107
2114
 
@@ -2846,7 +2853,7 @@
2846
2853
  return locale === moment.tz(timezoneName).format('Z');
2847
2854
  });
2848
2855
  }
2849
- moment.tz.setDefault(locale);
2856
+ this.formatsByLocale.timezone = locale;
2850
2857
  const localeData = compInstance && compInstance.formatsByLocale ? compInstance.formatsByLocale : this.formatsByLocale;
2851
2858
  Object.assign(localeData, localeObj);
2852
2859
  resolve();
@@ -3693,7 +3700,7 @@
3693
3700
  i0__namespace.ɵɵproperty("ngIf", !ctx_r2.isApplicationType);
3694
3701
  } }
3695
3702
  class AppComponent {
3696
- constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager) {
3703
+ constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager, customIconsLoaderService) {
3697
3704
  this.elRef = elRef;
3698
3705
  this.oAuthService = oAuthService;
3699
3706
  this.dialogService = dialogService;
@@ -3701,6 +3708,7 @@
3701
3708
  this.router = router;
3702
3709
  this.app = app;
3703
3710
  this.appManager = appManager;
3711
+ this.customIconsLoaderService = customIconsLoaderService;
3704
3712
  this.startApp = false;
3705
3713
  this.isApplicationType = false;
3706
3714
  this.spinner = { show: false, messages: [], arialabel: '' };
@@ -3709,6 +3717,9 @@
3709
3717
  i1.setNgZone(ngZone);
3710
3718
  i1.setAppRef(_appRef);
3711
3719
  this.isApplicationType = i1.getWmProjectProperties().type === 'APPLICATION';
3720
+ if (this.isApplicationType) {
3721
+ this.customIconsLoaderService.load();
3722
+ }
3712
3723
  this.appManager.beforeAppReady();
3713
3724
  // subscribe to OAuth changes
3714
3725
  oAuthService.getOAuthProvidersAsObservable().subscribe((providers) => {
@@ -3824,7 +3835,7 @@
3824
3835
  ngDoCheck() {
3825
3836
  i1.$invokeWatchers();
3826
3837
  }
3827
- static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0__namespace.ɵɵdirectiveInject(PipeProvider), i0__namespace.ɵɵdirectiveInject(i0__namespace.ApplicationRef), i0__namespace.ɵɵdirectiveInject(i0__namespace.ElementRef), i0__namespace.ɵɵdirectiveInject(i2$2__namespace.OAuthService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractDialogService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractSpinnerService), i0__namespace.ɵɵdirectiveInject(i0__namespace.NgZone), i0__namespace.ɵɵdirectiveInject(i1$1__namespace.Router), i0__namespace.ɵɵdirectiveInject(i1__namespace.App), i0__namespace.ɵɵdirectiveInject(AppManagerService)); }; }
3838
+ static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0__namespace.ɵɵdirectiveInject(PipeProvider), i0__namespace.ɵɵdirectiveInject(i0__namespace.ApplicationRef), i0__namespace.ɵɵdirectiveInject(i0__namespace.ElementRef), i0__namespace.ɵɵdirectiveInject(i2$2__namespace.OAuthService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractDialogService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractSpinnerService), i0__namespace.ɵɵdirectiveInject(i0__namespace.NgZone), i0__namespace.ɵɵdirectiveInject(i1$1__namespace.Router), i0__namespace.ɵɵdirectiveInject(i1__namespace.App), i0__namespace.ɵɵdirectiveInject(AppManagerService), i0__namespace.ɵɵdirectiveInject(i1__namespace.CustomIconsLoaderService)); }; }
3828
3839
  static { this.ɵcmp = /*@__PURE__*/ i0__namespace.ɵɵdefineComponent({ type: AppComponent, selectors: [["app-root"]], viewQuery: function AppComponent_Query(rf, ctx) { if (rf & 1) {
3829
3840
  i0__namespace.ɵɵviewQuery(i1$1.RouterOutlet, 5);
3830
3841
  i0__namespace.ɵɵviewQuery(_c0, 5, i0.ViewContainerRef);
@@ -3842,7 +3853,7 @@
3842
3853
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(AppComponent, [{
3843
3854
  type: i0.Component,
3844
3855
  args: [{ selector: 'app-root', encapsulation: i0.ViewEncapsulation.None, template: "<ng-container *ngIf=\"startApp\">\n <router-outlet></router-outlet>\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\" *ngIf=\"isApplicationType\"></div>\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n <li class=\"list-item\" *ngFor=\"let provider of providersConfig\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n</ng-container>\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
3845
- }], () => [{ type: PipeProvider }, { type: i0__namespace.ApplicationRef }, { type: i0__namespace.ElementRef }, { type: i2$2__namespace.OAuthService }, { type: i1__namespace.AbstractDialogService }, { type: i1__namespace.AbstractSpinnerService }, { type: i0__namespace.NgZone }, { type: i1$1__namespace.Router }, { type: i1__namespace.App }, { type: AppManagerService }], { routerOutlet: [{
3856
+ }], () => [{ type: PipeProvider }, { type: i0__namespace.ApplicationRef }, { type: i0__namespace.ElementRef }, { type: i2$2__namespace.OAuthService }, { type: i1__namespace.AbstractDialogService }, { type: i1__namespace.AbstractSpinnerService }, { type: i0__namespace.NgZone }, { type: i1$1__namespace.Router }, { type: i1__namespace.App }, { type: AppManagerService }, { type: i1__namespace.CustomIconsLoaderService }], { routerOutlet: [{
3846
3857
  type: i0.ViewChild,
3847
3858
  args: [i1$1.RouterOutlet]
3848
3859
  }], dynamicComponentContainerRef: [{
@@ -1,5 +1,6 @@
1
1
  import { ApplicationRef, DoCheck, ElementRef, NgZone, ViewContainerRef, AfterViewInit } from '@angular/core';
2
2
  import { Router, RouterOutlet } from '@angular/router';
3
+ import { CustomIconsLoaderService } from '@wm/core';
3
4
  import { AbstractDialogService, AbstractSpinnerService, App } from '@wm/core';
4
5
  import { OAuthService } from '@wm/oAuth';
5
6
  import { AppManagerService } from '../../services/app.manager.service';
@@ -18,12 +19,13 @@ export declare class AppComponent implements DoCheck, AfterViewInit {
18
19
  private router;
19
20
  private app;
20
21
  private appManager;
22
+ private customIconsLoaderService;
21
23
  startApp: boolean;
22
24
  isApplicationType: boolean;
23
25
  routerOutlet: RouterOutlet;
24
26
  dynamicComponentContainerRef: ViewContainerRef;
25
27
  spinner: SPINNER;
26
- constructor(_pipeProvider: PipeProvider, _appRef: ApplicationRef, elRef: ElementRef, oAuthService: OAuthService, dialogService: AbstractDialogService, spinnerService: AbstractSpinnerService, ngZone: NgZone, router: Router, app: App, appManager: AppManagerService);
28
+ constructor(_pipeProvider: PipeProvider, _appRef: ApplicationRef, elRef: ElementRef, oAuthService: OAuthService, dialogService: AbstractDialogService, spinnerService: AbstractSpinnerService, ngZone: NgZone, router: Router, app: App, appManager: AppManagerService, customIconsLoaderService: CustomIconsLoaderService);
27
29
  providersConfig: any;
28
30
  isOAuthDialogOpen: boolean;
29
31
  showOAuthDialog(): void;
@@ -1,4 +1,4 @@
1
- import { TemplateRef, ViewContainerRef, Injector } from '@angular/core';
1
+ import { Injector, TemplateRef, ViewContainerRef } from '@angular/core';
2
2
  import { SecurityService } from '@wm/security';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class AccessrolesDirective {
@@ -9,8 +9,9 @@ export declare class AccessrolesDirective {
9
9
  private processed;
10
10
  private readonly isUserAuthenticated;
11
11
  private readonly userRoles;
12
+ private readonly context;
12
13
  private securityEnabled;
13
- constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef, securityService: SecurityService, inj: Injector);
14
+ constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef, securityService: SecurityService, inj: Injector, explicitContext: any);
14
15
  /**
15
16
  * Returns array of roles from comma separated string of roles
16
17
  * Handles encoded commas
@@ -33,6 +34,6 @@ export declare class AccessrolesDirective {
33
34
  */
34
35
  private hasAccessToWidget;
35
36
  set accessroles(roles: any);
36
- static ɵfac: i0.ɵɵFactoryDeclaration<AccessrolesDirective, never>;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccessrolesDirective, [null, null, null, null, { optional: true; }]>;
37
38
  static ɵdir: i0.ɵɵDirectiveDeclaration<AccessrolesDirective, "[accessroles]", never, { "accessroles": { "alias": "accessroles"; "required": false; }; }, {}, never, never, false, never>;
38
39
  }
@@ -1,7 +1,7 @@
1
1
  import { ApplicationRef, Component, ElementRef, NgZone, ViewEncapsulation, ViewChild, ViewContainerRef } from '@angular/core';
2
2
  import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router, RouterOutlet } from '@angular/router';
3
3
  import { setTheme } from 'ngx-bootstrap/utils';
4
- import { noop } from '@wm/core';
4
+ import { CustomIconsLoaderService, noop } from '@wm/core';
5
5
  import { $invokeWatchers, AbstractDialogService, AbstractSpinnerService, getWmProjectProperties, hasCordova, setAppRef, setNgZone, setPipeProvider, App, addClass, removeClass } from '@wm/core';
6
6
  import { OAuthService } from '@wm/oAuth';
7
7
  import { AppManagerService } from '../../services/app.manager.service';
@@ -74,7 +74,7 @@ function AppComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
74
74
  i0.ɵɵproperty("ngIf", !ctx_r2.isApplicationType);
75
75
  } }
76
76
  export class AppComponent {
77
- constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager) {
77
+ constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager, customIconsLoaderService) {
78
78
  this.elRef = elRef;
79
79
  this.oAuthService = oAuthService;
80
80
  this.dialogService = dialogService;
@@ -82,6 +82,7 @@ export class AppComponent {
82
82
  this.router = router;
83
83
  this.app = app;
84
84
  this.appManager = appManager;
85
+ this.customIconsLoaderService = customIconsLoaderService;
85
86
  this.startApp = false;
86
87
  this.isApplicationType = false;
87
88
  this.spinner = { show: false, messages: [], arialabel: '' };
@@ -90,6 +91,9 @@ export class AppComponent {
90
91
  setNgZone(ngZone);
91
92
  setAppRef(_appRef);
92
93
  this.isApplicationType = getWmProjectProperties().type === 'APPLICATION';
94
+ if (this.isApplicationType) {
95
+ this.customIconsLoaderService.load();
96
+ }
93
97
  this.appManager.beforeAppReady();
94
98
  // subscribe to OAuth changes
95
99
  oAuthService.getOAuthProvidersAsObservable().subscribe((providers) => {
@@ -205,7 +209,7 @@ export class AppComponent {
205
209
  ngDoCheck() {
206
210
  $invokeWatchers();
207
211
  }
208
- static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0.ɵɵdirectiveInject(i1.PipeProvider), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.OAuthService), i0.ɵɵdirectiveInject(i3.AbstractDialogService), i0.ɵɵdirectiveInject(i3.AbstractSpinnerService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i4.Router), i0.ɵɵdirectiveInject(i3.App), i0.ɵɵdirectiveInject(i5.AppManagerService)); }; }
212
+ static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0.ɵɵdirectiveInject(i1.PipeProvider), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.OAuthService), i0.ɵɵdirectiveInject(i3.AbstractDialogService), i0.ɵɵdirectiveInject(i3.AbstractSpinnerService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i4.Router), i0.ɵɵdirectiveInject(i3.App), i0.ɵɵdirectiveInject(i5.AppManagerService), i0.ɵɵdirectiveInject(i3.CustomIconsLoaderService)); }; }
209
213
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppComponent, selectors: [["app-root"]], viewQuery: function AppComponent_Query(rf, ctx) { if (rf & 1) {
210
214
  i0.ɵɵviewQuery(RouterOutlet, 5);
211
215
  i0.ɵɵviewQuery(_c0, 5, ViewContainerRef);
@@ -223,7 +227,7 @@ export class AppComponent {
223
227
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppComponent, [{
224
228
  type: Component,
225
229
  args: [{ selector: 'app-root', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"startApp\">\n <router-outlet></router-outlet>\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\" *ngIf=\"isApplicationType\"></div>\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n <li class=\"list-item\" *ngFor=\"let provider of providersConfig\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n</ng-container>\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
226
- }], () => [{ type: i1.PipeProvider }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i2.OAuthService }, { type: i3.AbstractDialogService }, { type: i3.AbstractSpinnerService }, { type: i0.NgZone }, { type: i4.Router }, { type: i3.App }, { type: i5.AppManagerService }], { routerOutlet: [{
230
+ }], () => [{ type: i1.PipeProvider }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i2.OAuthService }, { type: i3.AbstractDialogService }, { type: i3.AbstractSpinnerService }, { type: i0.NgZone }, { type: i4.Router }, { type: i3.App }, { type: i5.AppManagerService }, { type: i3.CustomIconsLoaderService }], { routerOutlet: [{
227
231
  type: ViewChild,
228
232
  args: [RouterOutlet]
229
233
  }], dynamicComponentContainerRef: [{
@@ -231,4 +235,4 @@ export class AppComponent {
231
235
  args: ['dynamicComponent', { read: ViewContainerRef }]
232
236
  }] }); })();
233
237
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppComponent, { className: "AppComponent", filePath: "components/app-component/app.component.ts", lineNumber: 23 }); })();
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQVcsVUFBVSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDak0sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNQaEUsMEJBQTBHOzs7O0lBTzFGLEFBREosOEJBQStELGlCQUNYO0lBQTVCLCtMQUFTLG9CQUFp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RyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckQsT0FBTyxZQUFZLENBQUM7UUFDeEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDM0MsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRSxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxlQUFlLEVBQUUsQ0FBQztJQUN0QixDQUFDOzZFQTNKUSxZQUFZO29FQUFaLFlBQVk7MkJBSVYsWUFBWTttQ0FFZSxnQkFBZ0I7Ozs7OztZQzVCMUQsZ0ZBQStCO1lBMkIvQixpQ0FBK0M7O1lBM0JoQyxtQ0FBYzs7O2lGRHNCaEIsWUFBWTtjQUx4QixTQUFTOzJCQUNJLFVBQVUsaUJBRUwsaUJBQWlCLENBQUMsSUFBSTttU0FNWixZQUFZO2tCQUFwQyxTQUFTO21CQUFDLFlBQVk7WUFFa0MsNEJBQTRCO2tCQUFwRixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFDOztrRkFOOUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIE5nWm9uZSwgVmlld0VuY2Fwc3VsYXRpb24sIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkVycm9yLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgc2V0VGhlbWUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3V0aWxzJztcblxuaW1wb3J0IHtub29wfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyAkaW52b2tlV2F0Y2hlcnMsIEFic3RyYWN0RGlhbG9nU2VydmljZSwgQWJzdHJhY3RTcGlubmVyU2VydmljZSwgZ2V0V21Qcm9qZWN0UHJvcGVydGllcywgaGFzQ29yZG92YSwgc2V0QXBwUmVmLCBzZXROZ1pvbmUsIHNldFBpcGVQcm92aWRlciwgQXBwLCBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdAd20vb0F1dGgnO1xuaW1wb3J0IHsgQXBwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBpcGVQcm92aWRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5cbmludGVyZmFjZSBTUElOTkVSIHtcbiAgICBzaG93OiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiBBcnJheTxzdHJpbmc+O1xuICAgIGFyaWFsYWJlbDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFwcENvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIEFmdGVyVmlld0luaXQge1xuICAgIHB1YmxpYyBzdGFydEFwcCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0FwcGxpY2F0aW9uVHlwZSA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQpIHJvdXRlck91dGxldDogUm91dGVyT3V0bGV0O1xuXG4gICAgQFZpZXdDaGlsZCgnZHluYW1pY0NvbXBvbmVudCcsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSkgZHluYW1pY0NvbXBvbmVudENvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIHNwaW5uZXI6IFNQSU5ORVIgPSB7c2hvdzogZmFsc2UsIG1lc3NhZ2VzOiBbXSwgYXJpYWxhYmVsOiAnJ307XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF9waXBlUHJvdmlkZXI6IFBpcGVQcm92aWRlcixcbiAgICAgICAgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZVxuICAgICkge1xuICAgICAgICBzZXRQaXBlUHJvdmlkZXIoX3BpcGVQcm92aWRlcik7XG4gICAgICAgIHNldE5nWm9uZShuZ1pvbmUpO1xuICAgICAgICBzZXRBcHBSZWYoX2FwcFJlZik7XG5cbiAgICAgICAgdGhpcy5pc0FwcGxpY2F0aW9uVHlwZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS50eXBlID09PSAnQVBQTElDQVRJT04nO1xuXG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5iZWZvcmVBcHBSZWFkeSgpO1xuXG4gICAgICAgIC8vIHN1YnNjcmliZSB0byBPQXV0aCBjaGFuZ2VzXG4gICAgICAgIG9BdXRoU2VydmljZS5nZXRPQXV0aFByb3ZpZGVyc0FzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgocHJvdmlkZXJzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvdmlkZXJzQ29uZmlnID0gcHJvdmlkZXJzO1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dPQXV0aERpYWxvZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlT0F1dGhEaWFsb2coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBtZXNzYWdlIHNvdXJjZSB0byBzaG93L2hpZGUgYXBwIHNwaW5uZXJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5nZXRNZXNzYWdlU291cmNlKCkuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vIHNldFRpbWVvdXQgaXMgdG8gYXZvaWQgJ0V4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3InXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIuc2hvdyA9IGRhdGEuc2hvdztcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIubWVzc2FnZXMgPSBkYXRhLm1lc3NhZ2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5hcmlhbGFiZWwgPSBkYXRhLm1lc3NhZ2VzLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gc2V0IHRoZW1lIHRvIGJzMyBvbiBuZ3gtYm9vdHN0cmFwLiBUaGlzIGF2b2lkcyBydW50aW1lIGNhbGN1bGF0aW9uIHRvIGRldGVybWluZSBicyB0aGVtZS4gVGh1cyByZXNvbHZlcyBwZXJmb3JtYW5jZS5cbiAgICAgICAgc2V0VGhlbWUoJ2JzMycpO1xuXG4gICAgICAgIGxldCBzcGlubmVySWQ7XG5cbiAgICAgICAgbGV0IG9uUGFnZVJlbmRlcmVkID0gbm9vcDtcblxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IGUudXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgICAgICAgcGFnZSA9IHBhZ2Uuc3Vic3RyaW5nKDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLmFjdGl2ZUxheW91dE5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAubGF5b3V0UGFnZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYodGhpcy5hcHAuYWN0aXZlTGF5b3V0TmFtZSAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcyAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcy5sZW5ndGggJiYgdGhpcy5hcHAubGF5b3V0UGFnZXMuaW5jbHVkZXMocGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lcklkID0gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCcnLCAnd21Sb3V0ZXJPdXRsZXQnLCAnJywgJ3dtUm91dGVyT3V0bGV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lcklkID0gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCcnLCAnZ2xvYmFsU3Bpbm5lcicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhcHAtcGFnZS1vdXRsZXQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhub2RlLCAncGFnZS1sb2FkLWluLXByb2dyZXNzJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZUxvYWRTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoc3Bpbm5lcklkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FwcC1wYWdlLW91dGxldCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3Mobm9kZSwgJ3BhZ2UtbG9hZC1pbi1wcm9ncmVzcycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkID0gbm9vcDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlUGFnZUxvYWRUaW1lID0gRGF0ZS5ub3coKSAtIHBhZ2VMb2FkU3RhcnRUaW1lO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsIHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+e1xuICAgICAgICAgICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCgpO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLnN1YnNjcmliZSgncGFnZVJlYWR5JywgKCkgPT4ge1xuICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5zdWJzY3JpYmUoJ3BhZ2VBdHRhY2gnLCAoKSA9PiB7XG4gICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm92aWRlcnNDb25maWc7XG4gICAgaXNPQXV0aERpYWxvZ09wZW4gPSBmYWxzZTtcblxuICAgIHNob3dPQXV0aERpYWxvZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT0F1dGhEaWFsb2dPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT0F1dGhEaWFsb2dPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKCdvQXV0aExvZ2luRGlhbG9nJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZU9BdXRoRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5pc09BdXRoRGlhbG9nT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09BdXRoRGlhbG9nT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsb3NlKCdvQXV0aExvZ2luRGlhbG9nJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0KCkge1xuICAgICAgICAvL3RvIGZpeCB0aGUgaXNzdWUgdGhhdCBoYXBwZW5zIG9ubHkgaW4gdGhlIGRldmVsb3BtZW50IG1vZGVcbiAgICAgICAgLy9FeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgIC8vZml4OiBodHRwczovL2Jsb2cuYW5ndWxhci11bml2ZXJzaXR5LmlvL2FuZ3VsYXItZGVidWdnaW5nL1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRBcHAgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcC5keW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmID0gdGhpcy5keW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmO1xuICAgICAgICAgICAgdGhpcy5vdmVycmlkZVJvdXRlck91dGxldCgpO1xuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVJvdXRlck91dGxldCgpIHtcbiAgICAgICAgLy9vdmVycmlkZSB0aGUgYXR0YWNoL2RldGFjaCBtZXRob2RzXG4gICAgICAgIGNvbnN0IG9BdHRhY2ggPSB0aGlzLnJvdXRlck91dGxldC5hdHRhY2g7XG4gICAgICAgIGNvbnN0IG9EZXRhY2ggPSB0aGlzLnJvdXRlck91dGxldC5kZXRhY2g7XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmF0dGFjaCA9IChjb21wb25lbnRSZWY6IGFueSkgPT4ge1xuICAgICAgICAgICAgb0F0dGFjaC5jYWxsKHRoaXMucm91dGVyT3V0bGV0LCBjb21wb25lbnRSZWYpO1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm5nT25BdHRhY2goKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuZGV0YWNoID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlUGFnZS5uZ09uRGV0YWNoKCk7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBvRGV0YWNoLmNhbGwodGhpcy5yb3V0ZXJPdXRsZXQpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmIChoYXNDb3Jkb3ZhKCkgJiYgIXdpbmRvd1snd21EZXZpY2VSZWFkeSddKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3bURldmljZVJlYWR5JyAsICgpID0+IHRoaXMuc3RhcnQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgICRpbnZva2VXYXRjaGVycygpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzdGFydEFwcFwiPlxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8ZGl2IHdtQ29udGFpbmVyIHBhcnRpYWxDb250YWluZXIgY29udGVudD1cIkNvbW1vblwiIGhpZGRlbiBjbGFzcz1cIm5nLWhpZGVcIiAqbmdJZj1cImlzQXBwbGljYXRpb25UeXBlXCI+PC9kaXY+XG4gICAgPGFwcC1zcGlubmVyIG5hbWU9XCJnbG9iYWxzcGlubmVyXCIgY2xhc3NuYW1lPVwiZ2xvYmFsLXNwaW5uZXJcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInNwaW5uZXIuYXJpYWxhYmVsIHx8ICdMb2FkaW5nJ1wiIFtzaG93XT1cInNwaW5uZXIuc2hvd1wiIFtzcGlubmVybWVzc2FnZXNdPVwic3Bpbm5lci5tZXNzYWdlc1wiPjwvYXBwLXNwaW5uZXI+XG4gICAgPGRpdiB3bURpYWxvZyBuYW1lPVwib0F1dGhMb2dpbkRpYWxvZ1wiIHRpdGxlPVwiQXBwbGljYXRpb24gaXMgcmVxdWVzdGluZyB5b3UgdG8gc2lnbiBpbiB3aXRoXCJcbiAgICAgICAgIGNsb3NlLmV2ZW50PVwiY2xvc2VPQXV0aERpYWxvZygpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlhbG9nQm9keT5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWl0ZW1cIiAqbmdGb3I9XCJsZXQgcHJvdmlkZXIgb2YgcHJvdmlkZXJzQ29uZmlnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwicHJvdmlkZXIuaW52b2tlKClcIj57e3Byb3ZpZGVyLm5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgd21Db25maXJtRGlhbG9nIG5hbWU9XCJfYXBwLWNvbmZpcm0tZGlhbG9nXCIgdGl0bGUuYmluZD1cInRpdGxlXCIgbWVzc2FnZS5iaW5kPVwibWVzc2FnZVwiIG9rdGV4dC5iaW5kPVwib2t0ZXh0XCJcbiAgICAgICAgIGNhbmNlbHRleHQuYmluZD1cImNhbmNlbHRleHRcIiBjbG9zYWJsZT1cImZhbHNlXCIgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgICAgICAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgICA8ZGl2ICAqbmdJZj1cIiFpc0FwcGxpY2F0aW9uVHlwZVwiIHdtQ29uZmlybURpYWxvZyBuYW1lPVwiUHJlZmFiQ29uZmlybURpYWxvZ1wiIHRpdGxlLmJpbmQ9XCJ0aXRsZVwiIG1lc3NhZ2UuYmluZD1cInRleHRcIiBva3RleHQuYmluZD1cIm9rQnV0dG9uVGV4dFwiXG4gICAgICAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWxCdXR0b25UZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICAgICAgIGVzY2FwZS5ldmVudD1cIm9uRXNjYXBlKClcIiBvay5ldmVudD1cIm9uT2soKVwiIGNhbmNlbC5ldmVudD1cIm9uQ2FuY2VsKClcIiBjbG9zZS5ldmVudD1cIm9uQ2xvc2UoKVwiIG9wZW5lZC5ldmVudD1cIm9uT3BlbigpXCI+PC9kaXY+XG4gICAgPGRpdiAgKm5nSWY9XCIhaXNBcHBsaWNhdGlvblR5cGVcIiB3bUFsZXJ0RGlhbG9nIG5hbWU9XCJQcmVmYWJBbGVydERpYWxvZ1wiIHRpdGxlLmJpbmQ9XCJ0aXRsZVwiIG1lc3NhZ2UuYmluZD1cInRleHRcIiBva3RleHQuYmluZD1cIm9rQnV0dG9uVGV4dFwiXG4gICAgICAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWxCdXR0b25UZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICAgICAgIGVzY2FwZS5ldmVudD1cIm9uRXNjYXBlKClcIiBvay5ldmVudD1cIm9uT2soKVwiIGNhbmNlbC5ldmVudD1cIm9uQ2FuY2VsKClcIiBjbG9zZS5ldmVudD1cIm9uQ2xvc2UoKVwiIG9wZW5lZC5ldmVudD1cIm9uT3BlbigpXCI+PC9kaXY+XG4gICAgPGRpdiB3bUFwcEV4dD48L2Rpdj5cbiAgICA8aSBpZD1cIndtLW1vYmlsZS1kaXNwbGF5XCI+PC9pPlxuPC9uZy1jb250YWluZXI+XG48IS0tRHVtbXkgY29udGFpbmVyIHRvIGNyZWF0ZSB0aGUgY29tcG9uZW50IGR5bmFtaWNhbGx5LS0+XG48bmctY29udGFpbmVyICNkeW5hbWljQ29tcG9uZW50PjwvbmctY29udGFpbmVyPlxuIl19
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQVcsVUFBVSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDak0sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNQaEUsMEJBQTBHOzs7O0lBTzFGLEFBREosOEJBQStELGlCQUNYO0lBQTVC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blJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBOZ1pvbmUsIFZpZXdFbmNhcHN1bGF0aW9uLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC91dGlscyc7XG5cbmltcG9ydCB7IEN1c3RvbUljb25zTG9hZGVyU2VydmljZSwgbm9vcCB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7ICRpbnZva2VXYXRjaGVycywgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLCBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLCBnZXRXbVByb2plY3RQcm9wZXJ0aWVzLCBoYXNDb3Jkb3ZhLCBzZXRBcHBSZWYsIHNldE5nWm9uZSwgc2V0UGlwZVByb3ZpZGVyLCBBcHAsIGFkZENsYXNzLCByZW1vdmVDbGFzcyB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IE9BdXRoU2VydmljZSB9IGZyb20gJ0B3bS9vQXV0aCc7XG5pbXBvcnQgeyBBcHBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC5tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGlwZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGlwZS1wcm92aWRlci5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIFNQSU5ORVIge1xuICAgIHNob3c6IGJvb2xlYW47XG4gICAgbWVzc2FnZXM6IEFycmF5PHN0cmluZz47XG4gICAgYXJpYWxhYmVsOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHAuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQXBwQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjaywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHVibGljIHN0YXJ0QXBwID0gZmFsc2U7XG4gICAgcHVibGljIGlzQXBwbGljYXRpb25UeXBlID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKFJvdXRlck91dGxldCkgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgICBAVmlld0NoaWxkKCdkeW5hbWljQ29tcG9uZW50Jywge3JlYWQ6IFZpZXdDb250YWluZXJSZWZ9KSBkeW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgc3Bpbm5lcjogU1BJTk5FUiA9IHtzaG93OiBmYWxzZSwgbWVzc2FnZXM6IFtdLCBhcmlhbGFiZWw6ICcnfTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgX3BpcGVQcm92aWRlcjogUGlwZVByb3ZpZGVyLFxuICAgICAgICBfYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3Bpbm5lclNlcnZpY2U6IEFic3RyYWN0U3Bpbm5lclNlcnZpY2UsXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGFwcDogQXBwLFxuICAgICAgICBwcml2YXRlIGFwcE1hbmFnZXI6IEFwcE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGN1c3RvbUljb25zTG9hZGVyU2VydmljZTogQ3VzdG9tSWNvbnNMb2FkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHNldFBpcGVQcm92aWRlcihfcGlwZVByb3ZpZGVyKTtcbiAgICAgICAgc2V0Tmdab25lKG5nWm9uZSk7XG4gICAgICAgIHNldEFwcFJlZihfYXBwUmVmKTtcblxuICAgICAgICB0aGlzLmlzQXBwbGljYXRpb25UeXBlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnR5cGUgPT09ICdBUFBMSUNBVElPTic7XG4gICAgICAgIGlmKHRoaXMuaXNBcHBsaWNhdGlvblR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSWNvbnNMb2FkZXJTZXJ2aWNlLmxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5iZWZvcmVBcHBSZWFkeSgpO1xuXG4gICAgICAgIC8vIHN1YnNjcmliZSB0byBPQXV0aCBjaGFuZ2VzXG4gICAgICAgIG9BdXRoU2VydmljZS5nZXRPQXV0aFByb3ZpZGVyc0FzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgocHJvdmlkZXJzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvdmlkZXJzQ29uZmlnID0gcHJvdmlkZXJzO1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dPQXV0aERpYWxvZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlT0F1dGhEaWFsb2coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBtZXNzYWdlIHNvdXJjZSB0byBzaG93L2hpZGUgYXBwIHNwaW5uZXJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5nZXRNZXNzYWdlU291cmNlKCkuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vIHNldFRpbWVvdXQgaXMgdG8gYXZvaWQgJ0V4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3InXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIuc2hvdyA9IGRhdGEuc2hvdztcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIubWVzc2FnZXMgPSBkYXRhLm1lc3NhZ2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5hcmlhbGFiZWwgPSBkYXRhLm1lc3NhZ2VzLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gc2V0IHRoZW1lIHRvIGJzMyBvbiBuZ3gtYm9vdHN0cmFwLiBUaGlzIGF2b2lkcyBydW50aW1lIGNhbGN1bGF0aW9uIHRvIGRldGVybWluZSBicyB0aGVtZS4gVGh1cyByZXNvbHZlcyBwZXJmb3JtYW5jZS5cbiAgICAgICAgc2V0VGhlbWUoJ2JzMycpO1xuXG4gICAgICAgIGxldCBzcGlubmVySWQ7XG5cbiAgICAgICAgbGV0IG9uUGFnZVJlbmRlcmVkID0gbm9vcDtcblxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IGUudXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgICAgICAgcGFnZSA9IHBhZ2Uuc3Vic3RyaW5nKDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLmFjdGl2ZUxheW91dE5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAubGF5b3V0UGFnZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYodGhpcy5hcHAuYWN0aXZlTGF5b3V0TmFtZSAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcyAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcy5sZW5ndGggJiYgdGhpcy5hcHAubGF5b3V0UGFnZXMuaW5jbHVkZXMocGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lcklkID0gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCcnLCAnd21Sb3V0ZXJPdXRsZXQnLCAnJywgJ3dtUm91dGVyT3V0bGV0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lcklkID0gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCcnLCAnZ2xvYmFsU3Bpbm5lcicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhcHAtcGFnZS1vdXRsZXQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhub2RlLCAncGFnZS1sb2FkLWluLXByb2dyZXNzJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZUxvYWRTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoc3Bpbm5lcklkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FwcC1wYWdlLW91dGxldCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3Mobm9kZSwgJ3BhZ2UtbG9hZC1pbi1wcm9ncmVzcycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkID0gbm9vcDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlUGFnZUxvYWRUaW1lID0gRGF0ZS5ub3coKSAtIHBhZ2VMb2FkU3RhcnRUaW1lO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsIHx8IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+e1xuICAgICAgICAgICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCgpO1xuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLnN1YnNjcmliZSgncGFnZVJlYWR5JywgKCkgPT4ge1xuICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5zdWJzY3JpYmUoJ3BhZ2VBdHRhY2gnLCAoKSA9PiB7XG4gICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm92aWRlcnNDb25maWc7XG4gICAgaXNPQXV0aERpYWxvZ09wZW4gPSBmYWxzZTtcblxuICAgIHNob3dPQXV0aERpYWxvZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT0F1dGhEaWFsb2dPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT0F1dGhEaWFsb2dPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKCdvQXV0aExvZ2luRGlhbG9nJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbG9zZU9BdXRoRGlhbG9nKCkge1xuICAgICAgICBpZiAodGhpcy5pc09BdXRoRGlhbG9nT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09BdXRoRGlhbG9nT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsb3NlKCdvQXV0aExvZ2luRGlhbG9nJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0KCkge1xuICAgICAgICAvL3RvIGZpeCB0aGUgaXNzdWUgdGhhdCBoYXBwZW5zIG9ubHkgaW4gdGhlIGRldmVsb3BtZW50IG1vZGVcbiAgICAgICAgLy9FeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgIC8vZml4OiBodHRwczovL2Jsb2cuYW5ndWxhci11bml2ZXJzaXR5LmlvL2FuZ3VsYXItZGVidWdnaW5nL1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRBcHAgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcC5keW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmID0gdGhpcy5keW5hbWljQ29tcG9uZW50Q29udGFpbmVyUmVmO1xuICAgICAgICAgICAgdGhpcy5vdmVycmlkZVJvdXRlck91dGxldCgpO1xuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVJvdXRlck91dGxldCgpIHtcbiAgICAgICAgLy9vdmVycmlkZSB0aGUgYXR0YWNoL2RldGFjaCBtZXRob2RzXG4gICAgICAgIGNvbnN0IG9BdHRhY2ggPSB0aGlzLnJvdXRlck91dGxldC5hdHRhY2g7XG4gICAgICAgIGNvbnN0IG9EZXRhY2ggPSB0aGlzLnJvdXRlck91dGxldC5kZXRhY2g7XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmF0dGFjaCA9IChjb21wb25lbnRSZWY6IGFueSkgPT4ge1xuICAgICAgICAgICAgb0F0dGFjaC5jYWxsKHRoaXMucm91dGVyT3V0bGV0LCBjb21wb25lbnRSZWYpO1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm5nT25BdHRhY2goKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuZGV0YWNoID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlUGFnZS5uZ09uRGV0YWNoKCk7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBvRGV0YWNoLmNhbGwodGhpcy5yb3V0ZXJPdXRsZXQpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmIChoYXNDb3Jkb3ZhKCkgJiYgIXdpbmRvd1snd21EZXZpY2VSZWFkeSddKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3bURldmljZVJlYWR5JyAsICgpID0+IHRoaXMuc3RhcnQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgICRpbnZva2VXYXRjaGVycygpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzdGFydEFwcFwiPlxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8ZGl2IHdtQ29udGFpbmVyIHBhcnRpYWxDb250YWluZXIgY29udGVudD1cIkNvbW1vblwiIGhpZGRlbiBjbGFzcz1cIm5nLWhpZGVcIiAqbmdJZj1cImlzQXBwbGljYXRpb25UeXBlXCI+PC9kaXY+XG4gICAgPGFwcC1zcGlubmVyIG5hbWU9XCJnbG9iYWxzcGlubmVyXCIgY2xhc3NuYW1lPVwiZ2xvYmFsLXNwaW5uZXJcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInNwaW5uZXIuYXJpYWxhYmVsIHx8ICdMb2FkaW5nJ1wiIFtzaG93XT1cInNwaW5uZXIuc2hvd1wiIFtzcGlubmVybWVzc2FnZXNdPVwic3Bpbm5lci5tZXNzYWdlc1wiPjwvYXBwLXNwaW5uZXI+XG4gICAgPGRpdiB3bURpYWxvZyBuYW1lPVwib0F1dGhMb2dpbkRpYWxvZ1wiIHRpdGxlPVwiQXBwbGljYXRpb24gaXMgcmVxdWVzdGluZyB5b3UgdG8gc2lnbiBpbiB3aXRoXCJcbiAgICAgICAgIGNsb3NlLmV2ZW50PVwiY2xvc2VPQXV0aERpYWxvZygpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlhbG9nQm9keT5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWl0ZW1cIiAqbmdGb3I9XCJsZXQgcHJvdmlkZXIgb2YgcHJvdmlkZXJzQ29uZmlnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiAoY2xpY2spPVwicHJvdmlkZXIuaW52b2tlKClcIj57e3Byb3ZpZGVyLm5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgd21Db25maXJtRGlhbG9nIG5hbWU9XCJfYXBwLWNvbmZpcm0tZGlhbG9nXCIgdGl0bGUuYmluZD1cInRpdGxlXCIgbWVzc2FnZS5iaW5kPVwibWVzc2FnZVwiIG9rdGV4dC5iaW5kPVwib2t0ZXh0XCJcbiAgICAgICAgIGNhbmNlbHRleHQuYmluZD1cImNhbmNlbHRleHRcIiBjbG9zYWJsZT1cImZhbHNlXCIgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgICAgICAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgICA8ZGl2ICAqbmdJZj1cIiFpc0FwcGxpY2F0aW9uVHlwZVwiIHdtQ29uZmlybURpYWxvZyBuYW1lPVwiUHJlZmFiQ29uZmlybURpYWxvZ1wiIHRpdGxlLmJpbmQ9XCJ0aXRsZVwiIG1lc3NhZ2UuYmluZD1cInRleHRcIiBva3RleHQuYmluZD1cIm9rQnV0dG9uVGV4dFwiXG4gICAgICAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWxCdXR0b25UZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICAgICAgIGVzY2FwZS5ldmVudD1cIm9uRXNjYXBlKClcIiBvay5ldmVudD1cIm9uT2soKVwiIGNhbmNlbC5ldmVudD1cIm9uQ2FuY2VsKClcIiBjbG9zZS5ldmVudD1cIm9uQ2xvc2UoKVwiIG9wZW5lZC5ldmVudD1cIm9uT3BlbigpXCI+PC9kaXY+XG4gICAgPGRpdiAgKm5nSWY9XCIhaXNBcHBsaWNhdGlvblR5cGVcIiB3bUFsZXJ0RGlhbG9nIG5hbWU9XCJQcmVmYWJBbGVydERpYWxvZ1wiIHRpdGxlLmJpbmQ9XCJ0aXRsZVwiIG1lc3NhZ2UuYmluZD1cInRleHRcIiBva3RleHQuYmluZD1cIm9rQnV0dG9uVGV4dFwiXG4gICAgICAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWxCdXR0b25UZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICAgICAgIGVzY2FwZS5ldmVudD1cIm9uRXNjYXBlKClcIiBvay5ldmVudD1cIm9uT2soKVwiIGNhbmNlbC5ldmVudD1cIm9uQ2FuY2VsKClcIiBjbG9zZS5ldmVudD1cIm9uQ2xvc2UoKVwiIG9wZW5lZC5ldmVudD1cIm9uT3BlbigpXCI+PC9kaXY+XG4gICAgPGRpdiB3bUFwcEV4dD48L2Rpdj5cbiAgICA8aSBpZD1cIndtLW1vYmlsZS1kaXNwbGF5XCI+PC9pPlxuPC9uZy1jb250YWluZXI+XG48IS0tRHVtbXkgY29udGFpbmVyIHRvIGNyZWF0ZSB0aGUgY29tcG9uZW50IGR5bmFtaWNhbGx5LS0+XG48bmctY29udGFpbmVyICNkeW5hbWljQ29tcG9uZW50PjwvbmctY29udGFpbmVyPlxuIl19
@@ -1,6 +1,6 @@
1
- import { Directive, Input, TemplateRef, ViewContainerRef, Injector } from '@angular/core';
1
+ import { Directive, Inject, Injector, Input, Optional, TemplateRef, ViewContainerRef } from '@angular/core';
2
2
  import { SecurityService } from '@wm/security';
3
- import { get, includes, split, trim } from "lodash-es";
3
+ import { extend, get, includes, split, trim } from "lodash-es";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@wm/security";
6
6
  var USER_ROLE;
@@ -10,16 +10,18 @@ var USER_ROLE;
10
10
  USER_ROLE["AUTHENTICATED"] = "Authenticated";
11
11
  })(USER_ROLE || (USER_ROLE = {}));
12
12
  export class AccessrolesDirective {
13
- constructor(templateRef, viewContainerRef, securityService, inj) {
13
+ constructor(templateRef, viewContainerRef, securityService, inj, explicitContext) {
14
14
  this.templateRef = templateRef;
15
15
  this.viewContainerRef = viewContainerRef;
16
16
  this.securityService = securityService;
17
17
  this.inj = inj;
18
18
  this.processed = false;
19
+ this.context = {};
19
20
  const securityConfig = this.securityService.get();
20
21
  this.securityEnabled = get(securityConfig, 'securityEnabled');
21
22
  this.isUserAuthenticated = get(securityConfig, 'authenticated');
22
23
  this.userRoles = get(securityConfig, 'userInfo.userRoles');
24
+ extend(this.context, inj._lView[8], explicitContext);
23
25
  }
24
26
  /**
25
27
  * Returns array of roles from comma separated string of roles
@@ -81,13 +83,13 @@ export class AccessrolesDirective {
81
83
  const isAccessible = !this.securityEnabled || this.hasAccessToWidget(widgetRoles, this.userRoles);
82
84
  if (isAccessible) {
83
85
  // [WMS-19294] pass on the previous context as second param.
84
- this.viewContainerRef.createEmbeddedView(this.templateRef, this.inj._lView[8]);
86
+ this.viewContainerRef.createEmbeddedView(this.templateRef, this.context);
85
87
  }
86
88
  else {
87
89
  this.viewContainerRef.clear();
88
90
  }
89
91
  }
90
- static { this.ɵfac = function AccessrolesDirective_Factory(t) { return new (t || AccessrolesDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i1.SecurityService), i0.ɵɵdirectiveInject(i0.Injector)); }; }
92
+ static { this.ɵfac = function AccessrolesDirective_Factory(t) { return new (t || AccessrolesDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i1.SecurityService), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
91
93
  static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: AccessrolesDirective, selectors: [["", "accessroles", ""]], inputs: { accessroles: "accessroles" } }); }
92
94
  }
93
95
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AccessrolesDirective, [{
@@ -95,7 +97,12 @@ export class AccessrolesDirective {
95
97
  args: [{
96
98
  selector: '[accessroles]'
97
99
  }]
98
- }], () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.SecurityService }, { type: i0.Injector }], { accessroles: [{
100
+ }], () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.SecurityService }, { type: i0.Injector }, { type: undefined, decorators: [{
101
+ type: Inject,
102
+ args: ['EXPLICIT_CONTEXT']
103
+ }, {
104
+ type: Optional
105
+ }] }], { accessroles: [{
99
106
  type: Input
100
107
  }] }); })();
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzcm9sZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9kaXJlY3RpdmVzL2FjY2Vzc3JvbGVzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7O0FBRXJELElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNWLGtDQUFxQixDQUFBO0lBQ3JCLG9DQUF1QixDQUFBO0lBQ3ZCLDRDQUErQixDQUFBO0FBQ25DLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBS0QsTUFBTSxPQUFPLG9CQUFvQjtJQU83QixZQUNZLFdBQTZCLEVBQzdCLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxHQUFhO1FBSGIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFFBQUcsR0FBSCxHQUFHLENBQVU7UUFUakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVd0QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLDBCQUEwQixDQUFDLEdBQUc7UUFDbEMsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUM7UUFFckMsR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDaEIsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFDRCxxREFBcUQ7UUFDckQsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssVUFBVSxDQUFDLFdBQVcsRUFBRSxTQUFTO1FBQ3JDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUk7WUFDbEMsT0FBTyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsV0FBVyxFQUFFLFNBQVM7UUFDNUMsOENBQThDO1FBQzlDLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsNkVBQTZFO1FBQzdFLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUMxRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsd0ZBQXdGO1FBQ3hGLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0UsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBYSxXQUFXLENBQUMsS0FBSztRQUMxQiwwQ0FBMEM7UUFDMUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xHLElBQUksWUFBWSxFQUFFLENBQUM7WUFDZiw0REFBNEQ7WUFDNUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUcsSUFBSSxDQUFDLEdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztxRkEzRlEsb0JBQW9CO29FQUFwQixvQkFBb0I7O2lGQUFwQixvQkFBb0I7Y0FIaEMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxlQUFlO2FBQzVCO2dJQTZFZ0IsV0FBVztrQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTZWN1cml0eVNlcnZpY2UgfSBmcm9tICdAd20vc2VjdXJpdHknO1xuaW1wb3J0IHtnZXQsIGluY2x1ZGVzLCBzcGxpdCwgdHJpbX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5lbnVtIFVTRVJfUk9MRSB7XG4gICAgRVZFUllPTkUgPSAnRXZlcnlvbmUnLFxuICAgIEFOT05ZTU9VUyA9ICdBbm9ueW1vdXMnLFxuICAgIEFVVEhFTlRJQ0FURUQgPSAnQXV0aGVudGljYXRlZCdcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbYWNjZXNzcm9sZXNdJ1xufSlcbmV4cG9ydCBjbGFzcyBBY2Nlc3Nyb2xlc0RpcmVjdGl2ZSB7XG5cbiAgICBwcml2YXRlIHByb2Nlc3NlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNVc2VyQXV0aGVudGljYXRlZDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJSb2xlcztcbiAgICBwcml2YXRlIHNlY3VyaXR5RW5hYmxlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgc2VjdXJpdHlTZXJ2aWNlOiBTZWN1cml0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaW5qOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBjb25zdCBzZWN1cml0eUNvbmZpZyA9IHRoaXMuc2VjdXJpdHlTZXJ2aWNlLmdldCgpO1xuICAgICAgICB0aGlzLnNlY3VyaXR5RW5hYmxlZCA9IGdldChzZWN1cml0eUNvbmZpZywgJ3NlY3VyaXR5RW5hYmxlZCcpO1xuICAgICAgICB0aGlzLmlzVXNlckF1dGhlbnRpY2F0ZWQgPSBnZXQoc2VjdXJpdHlDb25maWcsICdhdXRoZW50aWNhdGVkJyk7XG4gICAgICAgIHRoaXMudXNlclJvbGVzID0gZ2V0KHNlY3VyaXR5Q29uZmlnLCAndXNlckluZm8udXNlclJvbGVzJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhcnJheSBvZiByb2xlcyBmcm9tIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2Ygcm9sZXNcbiAgICAgKiBIYW5kbGVzIGVuY29kZWQgY29tbWFzXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqIEByZXR1cm5zIHthbnl9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRXaWRnZXRSb2xlc0FycmF5RnJvbVN0cih2YWwpIHtcbiAgICAgICAgY29uc3QgVU5JQ09ERV9DT01NQV9SRUdFWCA9IC8mIzQ0Oy9nO1xuXG4gICAgICAgIHZhbCA9IHZhbCB8fCAnJztcbiAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXBsYWNlIHRoZSB1bmljb2RlIGVxdWl2YWxlbnQgb2YgY29tbWEgd2l0aCBjb21tYVxuICAgICAgICByZXR1cm4gc3BsaXQodmFsLCAnLCcpLm1hcChmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgcmV0dXJuIHRyaW0odikucmVwbGFjZShVTklDT0RFX0NPTU1BX1JFR0VYLCAnLCcpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgcm9sZXMgaW4gZmlyc3QgYXJyYXlzIGlzXG4gICAgICogQHBhcmFtIHdpZGdldFJvbGVzXG4gICAgICogQHBhcmFtIHVzZXJSb2xlc1xuICAgICAqIEByZXR1cm5zIHthbnl9XG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXRjaFJvbGVzKHdpZGdldFJvbGVzLCB1c2VyUm9sZXMpIHtcbiAgICAgICAgcmV0dXJuIHdpZGdldFJvbGVzLnNvbWUoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh1c2VyUm9sZXMsIGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNpZGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVzZXIgaGFzIGFjY2VzcyB0byB3aWRnZXQgb3Igbm90XG4gICAgICogQHBhcmFtIHdpZGdldFJvbGVzXG4gICAgICogQHBhcmFtIHVzZXJSb2xlc1xuICAgICAqIEByZXR1cm5zIHthbnl9XG4gICAgICovXG4gICAgcHJpdmF0ZSBoYXNBY2Nlc3NUb1dpZGdldCh3aWRnZXRSb2xlcywgdXNlclJvbGVzKSB7XG4gICAgICAgIC8vIGFjY2VzcyB0aGUgd2lkZ2V0IHdoZW4gJ0V2ZXJ5b25lJyBpcyBjaG9zZW5cbiAgICAgICAgaWYgKGluY2x1ZGVzKHdpZGdldFJvbGVzLCBVU0VSX1JPTEUuRVZFUllPTkUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFjY2VzcyB0aGUgd2lkZ2V0IHdoZW4gJ0Fub255bW91cycgaXMgY2hvc2VuIGFuZCB1c2VyIGlzIG5vdCBhdXRoZW50aWNhdGVkXG4gICAgICAgIGlmIChpbmNsdWRlcyh3aWRnZXRSb2xlcywgVVNFUl9ST0xFLkFOT05ZTU9VUykgJiYgIXRoaXMuaXNVc2VyQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhY2Nlc3MgdGhlIHdpZGdldCB3aGVuICdPbmx5IEF1dGhlbnRpY2F0ZWQgVXNlcnMnIGlzIGNob3NlbiBhbmQgdXNlciBpcyBhdXRoZW50aWNhdGVkXG4gICAgICAgIGlmIChpbmNsdWRlcyh3aWRnZXRSb2xlcywgVVNFUl9ST0xFLkFVVEhFTlRJQ0FURUQpICYmIHRoaXMuaXNVc2VyQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhY2Nlc3MgdGhlIHdpZGdldCB3aGVuIHdpZGdldCByb2xlIGFuZCBsb2dnZWQgaW4gdXNlciByb2xlIG1hdGNoZXNcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyQXV0aGVudGljYXRlZCAmJiB0aGlzLm1hdGNoUm9sZXMod2lkZ2V0Um9sZXMsIHVzZXJSb2xlcyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGFjY2Vzc3JvbGVzKHJvbGVzKSB7XG4gICAgICAgIC8vIGZsYWcgdG8gY29tcHV0ZSB0aGUgZGlyZWN0aXZlIG9ubHkgb25jZVxuICAgICAgICBpZiAodGhpcy5wcm9jZXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgd2lkZ2V0Um9sZXMgPSB0aGlzLmdldFdpZGdldFJvbGVzQXJyYXlGcm9tU3RyKHJvbGVzKTtcbiAgICAgICAgY29uc3QgaXNBY2Nlc3NpYmxlID0gIXRoaXMuc2VjdXJpdHlFbmFibGVkIHx8IHRoaXMuaGFzQWNjZXNzVG9XaWRnZXQod2lkZ2V0Um9sZXMsIHRoaXMudXNlclJvbGVzKTtcbiAgICAgICAgaWYgKGlzQWNjZXNzaWJsZSkge1xuICAgICAgICAgICAgLy8gW1dNUy0xOTI5NF0gcGFzcyBvbiB0aGUgcHJldmlvdXMgY29udGV4dCBhcyBzZWNvbmQgcGFyYW0uXG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsICh0aGlzLmluaiBhcyBhbnkpLl9sVmlld1s4XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzcm9sZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9kaXJlY3RpdmVzL2FjY2Vzc3JvbGVzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFMUcsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7O0FBRTdELElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNWLGtDQUFxQixDQUFBO0lBQ3JCLG9DQUF1QixDQUFBO0lBQ3ZCLDRDQUErQixDQUFBO0FBQ25DLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBS0QsTUFBTSxPQUFPLG9CQUFvQjtJQVE3QixZQUNZLFdBQTZCLEVBQzdCLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxHQUFhLEVBQ21CLGVBQW9CO1FBSnBELGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxRQUFHLEdBQUgsR0FBRyxDQUFVO1FBVmpCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHVCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBVTFCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDOUQs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QUhoQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGVBQWU7YUFDNUI7O3NCQWNRLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRO3FCQWtFNUIsV0FBVztrQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbmplY3QsIEluamVjdG9yLCBJbnB1dCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtTZWN1cml0eVNlcnZpY2V9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5pbXBvcnQge2V4dGVuZCwgZ2V0LCBpbmNsdWRlcywgc3BsaXQsIHRyaW19IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZW51bSBVU0VSX1JPTEUge1xuICAgIEVWRVJZT05FID0gJ0V2ZXJ5b25lJyxcbiAgICBBTk9OWU1PVVMgPSAnQW5vbnltb3VzJyxcbiAgICBBVVRIRU5USUNBVEVEID0gJ0F1dGhlbnRpY2F0ZWQnXG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2FjY2Vzc3JvbGVzXSdcbn0pXG5leHBvcnQgY2xhc3MgQWNjZXNzcm9sZXNEaXJlY3RpdmUge1xuXG4gICAgcHJpdmF0ZSBwcm9jZXNzZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzVXNlckF1dGhlbnRpY2F0ZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUm9sZXM7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0ID0ge307XG4gICAgcHJpdmF0ZSBzZWN1cml0eUVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHNlY3VyaXR5U2VydmljZTogU2VjdXJpdHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGluajogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBjb25zdCBzZWN1cml0eUNvbmZpZyA9IHRoaXMuc2VjdXJpdHlTZXJ2aWNlLmdldCgpO1xuICAgICAgICB0aGlzLnNlY3VyaXR5RW5hYmxlZCA9IGdldChzZWN1cml0eUNvbmZpZywgJ3NlY3VyaXR5RW5hYmxlZCcpO1xuICAgICAgICB0aGlzLmlzVXNlckF1dGhlbnRpY2F0ZWQgPSBnZXQoc2VjdXJpdHlDb25maWcsICdhdXRoZW50aWNhdGVkJyk7XG4gICAgICAgIHRoaXMudXNlclJvbGVzID0gZ2V0KHNlY3VyaXR5Q29uZmlnLCAndXNlckluZm8udXNlclJvbGVzJyk7XG4gICAgICAgIGV4dGVuZCh0aGlzLmNvbnRleHQsIChpbmogYXMgYW55KS5fbFZpZXdbOF0sIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhcnJheSBvZiByb2xlcyBmcm9tIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2Ygcm9sZXNcbiAgICAgKiBIYW5kbGVzIGVuY29kZWQgY29tbWFzXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqIEByZXR1cm5zIHthbnl9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRXaWRnZXRSb2xlc0FycmF5RnJvbVN0cih2YWwpIHtcbiAgICAgICAgY29uc3QgVU5JQ09ERV9DT01NQV9SRUdFWCA9IC8mIzQ0Oy9nO1xuXG4gICAgICAgIHZhbCA9IHZhbCB8fCAnJztcbiAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXBsYWNlIHRoZSB1bmljb2RlIGVxdWl2YWxlbnQgb2YgY29tbWEgd2l0aCBjb21tYVxuICAgICAgICByZXR1cm4gc3BsaXQodmFsLCAnLCcpLm1hcChmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgcmV0dXJuIHRyaW0odikucmVwbGFjZShVTklDT0RFX0NPTU1BX1JFR0VYLCAnLCcpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgcm9sZXMgaW4gZmlyc3QgYXJyYXlzIGlzXG4gICAgICogQHBhcmFtIHdpZGdldFJvbGVzXG4gICAgICogQHBhcmFtIHVzZXJSb2xlc1xuICAgICAqIEByZXR1cm5zIHthbnl9XG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXRjaFJvbGVzKHdpZGdldFJvbGVzLCB1c2VyUm9sZXMpIHtcbiAgICAgICAgcmV0dXJuIHdpZGdldFJvbGVzLnNvbWUoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh1c2VyUm9sZXMsIGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNpZGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVzZXIgaGFzIGFjY2VzcyB0byB3aWRnZXQgb3Igbm90XG4gICAgICogQHBhcmFtIHdpZGdldFJvbGVzXG4gICAgICogQHBhcmFtIHVzZXJSb2xlc1xuICAgICAqIEByZXR1cm5zIHthbnl9XG4gICAgICovXG4gICAgcHJpdmF0ZSBoYXNBY2Nlc3NUb1dpZGdldCh3aWRnZXRSb2xlcywgdXNlclJvbGVzKSB7XG4gICAgICAgIC8vIGFjY2VzcyB0aGUgd2lkZ2V0IHdoZW4gJ0V2ZXJ5b25lJyBpcyBjaG9zZW5cbiAgICAgICAgaWYgKGluY2x1ZGVzKHdpZGdldFJvbGVzLCBVU0VSX1JPTEUuRVZFUllPTkUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFjY2VzcyB0aGUgd2lkZ2V0IHdoZW4gJ0Fub255bW91cycgaXMgY2hvc2VuIGFuZCB1c2VyIGlzIG5vdCBhdXRoZW50aWNhdGVkXG4gICAgICAgIGlmIChpbmNsdWRlcyh3aWRnZXRSb2xlcywgVVNFUl9ST0xFLkFOT05ZTU9VUykgJiYgIXRoaXMuaXNVc2VyQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhY2Nlc3MgdGhlIHdpZGdldCB3aGVuICdPbmx5IEF1dGhlbnRpY2F0ZWQgVXNlcnMnIGlzIGNob3NlbiBhbmQgdXNlciBpcyBhdXRoZW50aWNhdGVkXG4gICAgICAgIGlmIChpbmNsdWRlcyh3aWRnZXRSb2xlcywgVVNFUl9ST0xFLkFVVEhFTlRJQ0FURUQpICYmIHRoaXMuaXNVc2VyQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhY2Nlc3MgdGhlIHdpZGdldCB3aGVuIHdpZGdldCByb2xlIGFuZCBsb2dnZWQgaW4gdXNlciByb2xlIG1hdGNoZXNcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyQXV0aGVudGljYXRlZCAmJiB0aGlzLm1hdGNoUm9sZXMod2lkZ2V0Um9sZXMsIHVzZXJSb2xlcyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGFjY2Vzc3JvbGVzKHJvbGVzKSB7XG4gICAgICAgIC8vIGZsYWcgdG8gY29tcHV0ZSB0aGUgZGlyZWN0aXZlIG9ubHkgb25jZVxuICAgICAgICBpZiAodGhpcy5wcm9jZXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgd2lkZ2V0Um9sZXMgPSB0aGlzLmdldFdpZGdldFJvbGVzQXJyYXlGcm9tU3RyKHJvbGVzKTtcbiAgICAgICAgY29uc3QgaXNBY2Nlc3NpYmxlID0gIXRoaXMuc2VjdXJpdHlFbmFibGVkIHx8IHRoaXMuaGFzQWNjZXNzVG9XaWRnZXQod2lkZ2V0Um9sZXMsIHRoaXMudXNlclJvbGVzKTtcbiAgICAgICAgaWYgKGlzQWNjZXNzaWJsZSkge1xuICAgICAgICAgICAgLy8gW1dNUy0xOTI5NF0gcGFzcyBvbiB0aGUgcHJldmlvdXMgY29udGV4dCBhcyBzZWNvbmQgcGFyYW0uXG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHRoaXMuY29udGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==