@acorex/modules 18.1.0 → 18.1.2

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 (57) hide show
  1. package/application-management/lib/application-management-mock-data.d.ts +7 -0
  2. package/application-management/lib/layouts/index.d.ts +1 -0
  3. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +5 -1
  4. package/application-management/lib/layouts/property-detail-view/modify-property-interface.component.d.ts +5 -0
  5. package/application-management/lib/module-designer/module-designer.component.d.ts +4 -2
  6. package/application-management/lib/services/context-menu.service.d.ts +2 -2
  7. package/application-management/lib/workflows/create-module-entity.workflow.d.ts +8 -1
  8. package/application-management/lib/workflows/index.d.ts +1 -0
  9. package/application-management/lib/workflows/modify-property-interface.workflow.d.ts +26 -0
  10. package/backend/lib/data/api/comment.service.d.ts +7 -6
  11. package/esm2022/application-management/lib/application-management-mock-data.mjs +21 -1
  12. package/esm2022/application-management/lib/application-management.module.mjs +6 -3
  13. package/esm2022/application-management/lib/application-management.service.mjs +3 -3
  14. package/esm2022/application-management/lib/entities/applications.entity.mjs +3 -3
  15. package/esm2022/application-management/lib/entities/entity.entity.mjs +16 -2
  16. package/esm2022/application-management/lib/entities/modules.entity.mjs +4 -4
  17. package/esm2022/application-management/lib/entities/property.entity.mjs +7 -3
  18. package/esm2022/application-management/lib/layouts/index.mjs +2 -1
  19. package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +32 -8
  20. package/esm2022/application-management/lib/layouts/property-detail-view/modify-property-interface.component.mjs +55 -0
  21. package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +13 -5
  22. package/esm2022/application-management/lib/services/context-menu.service.mjs +6 -8
  23. package/esm2022/application-management/lib/workflows/create-module-entity.workflow.mjs +25 -1
  24. package/esm2022/application-management/lib/workflows/index.mjs +2 -1
  25. package/esm2022/application-management/lib/workflows/modify-property-interface.workflow.mjs +79 -0
  26. package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +3 -3
  27. package/esm2022/backend/lib/data/api/comment.service.mjs +14 -16
  28. package/fesm2022/acorex-modules-application-management-module-designer.component-CRPUuYUe.mjs +332 -0
  29. package/fesm2022/acorex-modules-application-management-module-designer.component-CRPUuYUe.mjs.map +1 -0
  30. package/fesm2022/acorex-modules-application-management.mjs +217 -43
  31. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  32. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs → acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs} +8 -8
  33. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs.map → acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs.map} +1 -1
  34. package/fesm2022/{acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs → acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs.map → acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-auth-login.module-CGA5aTg2.mjs → acorex-modules-auth-login.module-DGBKGxI3.mjs} +4 -4
  37. package/fesm2022/{acorex-modules-auth-login.module-CGA5aTg2.mjs.map → acorex-modules-auth-login.module-DGBKGxI3.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-auth-master.layout-ZJWzjLrb.mjs → acorex-modules-auth-master.layout-B_8Sfw0M.mjs} +4 -4
  39. package/fesm2022/{acorex-modules-auth-master.layout-ZJWzjLrb.mjs.map → acorex-modules-auth-master.layout-B_8Sfw0M.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-auth-password.component-MJhNk3UI.mjs → acorex-modules-auth-password.component-BfDjRRN_.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-auth-password.component-MJhNk3UI.mjs.map → acorex-modules-auth-password.component-BfDjRRN_.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-auth-password.component-C4yqf342.mjs → acorex-modules-auth-password.component-DZJ1qwfa.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-auth-password.component-C4yqf342.mjs.map → acorex-modules-auth-password.component-DZJ1qwfa.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-auth-routes-DhORV1Js.mjs → acorex-modules-auth-routes-Bw7nXDvx.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-auth-routes-DhORV1Js.mjs.map → acorex-modules-auth-routes-Bw7nXDvx.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-two-factor.module-BWKP0_jO.mjs → acorex-modules-auth-two-factor.module-DKStBo1V.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-auth-two-factor.module-BWKP0_jO.mjs.map → acorex-modules-auth-two-factor.module-DKStBo1V.mjs.map} +1 -1
  48. package/fesm2022/acorex-modules-auth.mjs +1 -1
  49. package/fesm2022/acorex-modules-backend.mjs +13 -15
  50. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  51. package/package.json +7 -7
  52. package/application-management/lib/actions/index.d.ts +0 -1
  53. package/application-management/lib/actions/show-detail.action.d.ts +0 -8
  54. package/esm2022/application-management/lib/actions/index.mjs +0 -2
  55. package/esm2022/application-management/lib/actions/show-detail.action.mjs +0 -25
  56. package/fesm2022/acorex-modules-application-management-module-designer.component-CDZZ-5pF.mjs +0 -323
  57. package/fesm2022/acorex-modules-application-management-module-designer.component-CDZZ-5pF.mjs.map +0 -1
@@ -3,7 +3,7 @@ import { AXButtonModule } from '@acorex/components/button';
3
3
  import { AXCollapseModule } from '@acorex/components/collapse';
4
4
  import { AXDecoratorModule } from '@acorex/components/decorators';
5
5
  import { AXDrawerModule } from '@acorex/components/drawer';
6
- import { AXMenuModule } from '@acorex/components/menu';
6
+ import { AXMenuModule, } from '@acorex/components/menu';
7
7
  import { AXPopoverModule } from '@acorex/components/popover';
8
8
  import { AXSelectionListModule } from '@acorex/components/selection-list';
9
9
  import { AXSideMenuModule } from '@acorex/components/side-menu';
@@ -11,7 +11,7 @@ import { AXTranslationModule } from '@acorex/core/translation';
11
11
  import { AXPEntityCreateEvent, AXPEntityDeletedEvent } from '@acorex/platform/layouts';
12
12
  import { AXPWorkflowService, ofType } from '@acorex/platform/workflow';
13
13
  import { CommonModule } from '@angular/common';
14
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, signal, ViewEncapsulation, } from '@angular/core';
14
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';
15
15
  import { RouterModule } from '@angular/router';
16
16
  import { set } from 'lodash-es';
17
17
  import { Subject, takeUntil } from 'rxjs';
@@ -30,6 +30,7 @@ import * as i9 from "@angular/router";
30
30
  export class AXMModuleDesignerComponent {
31
31
  constructor() {
32
32
  this.cdr = inject(ChangeDetectorRef);
33
+ this.contextMenu = viewChild('contextMenu');
33
34
  this.dataProvider = inject(AXPModuleDesignerService);
34
35
  this.workflow = inject(AXPWorkflowService);
35
36
  this.contextMenuService = inject(AXMModuleDesignerContextMenuService);
@@ -60,6 +61,7 @@ export class AXMModuleDesignerComponent {
60
61
  try {
61
62
  const modules = await this.dataProvider.getModules();
62
63
  this.modules.set(modules.items);
64
+ this.refreshContextMenu();
63
65
  }
64
66
  catch (error) {
65
67
  console.error('Error loading modules:', error);
@@ -73,8 +75,14 @@ export class AXMModuleDesignerComponent {
73
75
  e.component.toggle();
74
76
  e.component.isLoading = false;
75
77
  e.component['cdr'].markForCheck();
78
+ this.refreshContextMenu();
76
79
  }
77
80
  }
81
+ refreshContextMenu() {
82
+ setTimeout(() => {
83
+ this.contextMenu()?.refresh();
84
+ }, 0);
85
+ }
78
86
  async loadModuleData(moduleId, dataType, hardReload = false) {
79
87
  const cacheKey = `${moduleId}-${dataType}`;
80
88
  let dataItems = this.moduleDataCache.get(cacheKey);
@@ -120,7 +128,7 @@ export class AXMModuleDesignerComponent {
120
128
  set(target, 'data', data);
121
129
  }
122
130
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXMModuleDesignerComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\" #contextTarget>\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-folder ax-text-warning\"\n [isCollapsed]=\"true\"\n [caption]=\"m.title\"\n look=\"none\"\n data-elementType=\"module\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"module\"\n >\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"entity\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"feature\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"permission\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button\n class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\"\n (onClick)=\"createModule()\"\n look=\"solid\"\n color=\"primary\"\n >\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n <div\n #d\n (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"contextMenu ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\"\n >\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge\n [look]=\"'twotone'\"\n [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\"\n >\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu\n (onItemClick)=\"handleActionClick($event)\"\n [items]=\"[]\"\n [target]=\"contextTarget\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onOpening)=\"openingContextMenu($event)\"\n>\n</ax-context-menu>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-header:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-700),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i2.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed", "closeOthers"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i2.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXSideMenuModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i6.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i6.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i7.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i8.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i9.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXMModuleDesignerComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\">\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse\n class=\"ctx\"\n icon=\"fas fa-folder ax-text-warning\"\n [isCollapsed]=\"true\"\n [caption]=\"m.title\"\n look=\"none\"\n data-elementType=\"module\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"module\"\n >\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n class=\"ctx\"\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"entity\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"ctx\"\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"feature\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"ctx\"\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"permission\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button\n class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\"\n (onClick)=\"createModule()\"\n look=\"solid\"\n color=\"primary\"\n >\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n\n <div\n #d\n (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"ctx ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\"\n >\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge\n [look]=\"'twotone'\"\n [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\"\n >\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu\n #contextMenu\n (onItemClick)=\"handleActionClick($event)\"\n [items]=\"[]\"\n [target]=\"'.ctx'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onOpening)=\"openingContextMenu($event)\"\n>\n</ax-context-menu>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-header:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-700),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i2.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed", "closeOthers"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i2.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXSideMenuModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i6.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i6.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i7.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i8.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i9.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
124
132
  }
125
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMModuleDesignerComponent, decorators: [{
126
134
  type: Component,
@@ -137,6 +145,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
137
145
  AXBadgeModule,
138
146
  AXMenuModule,
139
147
  RouterModule,
140
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\" #contextTarget>\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-folder ax-text-warning\"\n [isCollapsed]=\"true\"\n [caption]=\"m.title\"\n look=\"none\"\n data-elementType=\"module\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"module\"\n >\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"entity\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"feature\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"contextMenu\"\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"permission\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button\n class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\"\n (onClick)=\"createModule()\"\n look=\"solid\"\n color=\"primary\"\n >\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n <div\n #d\n (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"contextMenu ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\"\n >\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge\n [look]=\"'twotone'\"\n [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\"\n >\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu\n (onItemClick)=\"handleActionClick($event)\"\n [items]=\"[]\"\n [target]=\"contextTarget\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onOpening)=\"openingContextMenu($event)\"\n>\n</ax-context-menu>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-header:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-700),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"] }]
148
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\"ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\">\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse\n class=\"ctx\"\n icon=\"fas fa-folder ax-text-warning\"\n [isCollapsed]=\"true\"\n [caption]=\"m.title\"\n look=\"none\"\n data-elementType=\"module\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"module\"\n >\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse\n class=\"ctx\"\n icon=\"fas fa-box ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"entity\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"ctx\"\n icon=\"fas fa-star ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"feature\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n\n <ax-collapse\n class=\"ctx\"\n icon=\"fas fa-key ax-text-neutral-400\"\n [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\"\n look=\"none\"\n data-elementType=\"subModule\"\n [attr.data-moduleId]=\"m.id\"\n data-entityType=\"permission\"\n >\n <ng-container\n [ngTemplateOutlet]=\"childTemplate\"\n [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"\n ></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button\n class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\"\n (onClick)=\"createModule()\"\n look=\"solid\"\n color=\"primary\"\n >\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n\n <div\n #d\n (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"ctx ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\"\n >\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge\n [look]=\"'twotone'\"\n [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\"\n >\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu\n #contextMenu\n (onItemClick)=\"handleActionClick($event)\"\n [items]=\"[]\"\n [target]=\"'.ctx'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onOpening)=\"openingContextMenu($event)\"\n>\n</ax-context-menu>\n", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-100),var(--tw-bg-opacity))}.ax-collapse-header:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-700),var(--tw-bg-opacity))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"] }]
141
149
  }], ctorParameters: () => [] });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbW9kdWxlLWRlc2lnbmVyL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL21vZHVsZS1kZXNpZ25lci9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQXdCLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBbUQsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFB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O2tCQXJCdEMsU0FBUztvQ0FHTyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osWUFBWTtxQkFDYixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ29sbGFwc2VDbGlja0V2ZW50LCBBWENvbGxhcHNlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbGxhcHNlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQsIEFYTWVudUl0ZW1DbGlja0V2ZW50LCBBWE1lbnVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFNlbGVjdGlvbkxpc3RNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0aW9uLWxpc3QnO1xuaW1wb3J0IHsgQVhTaWRlTWVudU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zaWRlLW1lbnUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlDcmVhdGVFdmVudCwgQVhQRW50aXR5RGVsZXRlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXRzJztcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSwgb2ZUeXBlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWE1Nb2R1bGVEZXNpZ25lckNvbnRleHRNZW51U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRleHQtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUE1vZHVsZURlc2lnbmVyU2VydmljZSB9IGZyb20gJy4vbW9kdWxlLWRlc2lnbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNTW9kdWxlSXRlbSB9IGZyb20gJy4vbW9kdWxlLWRlc2lnbmVyLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYRHJhd2VyTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhTaWRlTWVudU1vZHVsZSxcbiAgICBBWENvbGxhcHNlTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWFNlbGVjdGlvbkxpc3RNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWE1lbnVNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhNTW9kdWxlRGVzaWduZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHJvdGVjdGVkIGRhdGFQcm92aWRlciA9IGluamVjdChBWFBNb2R1bGVEZXNpZ25lclNlcnZpY2UpO1xuICBwcml2YXRlIHdvcmtmbG93ID0gaW5qZWN0KEFYUFdvcmtmbG93U2VydmljZSk7XG4gIHByb3RlY3RlZCBjb250ZXh0TWVudVNlcnZpY2UgPSBpbmplY3QoQVhNTW9kdWxlRGVzaWduZXJDb250ZXh0TWVudVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBtb2R1bGVzID0gc2lnbmFsPGFueVtdPihbXSk7XG5cbiAgcHJvdGVjdGVkIG1vZHVsZURhdGFDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnlbXT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVBY3Rpb25FdmVudHMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZE1vZHVsZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdWJzY3JpYmVBY3Rpb25FdmVudHMoKSB7XG4gICAgdGhpcy53b3JrZmxvdy5ldmVudHMkXG4gICAgICAucGlwZShvZlR5cGUoQVhQRW50aXR5RGVsZXRlZEV2ZW50LCBBWFBFbnRpdHlDcmVhdGVFdmVudCkpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBtZXRhIH0gPSBldmVudC5wYXlsb2FkO1xuICAgICAgICBpZiAobWV0YS50eXBlID09PSAnbW9kdWxlJykge1xuICAgICAgICAgIHRoaXMubG9hZE1vZHVsZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvYWRNb2R1bGVEYXRhKG1ldGEubW9kdWxlSWQsIG1ldGEudHlwZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkTW9kdWxlcygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbW9kdWxlcyA9IGF3YWl0IHRoaXMuZGF0YVByb3ZpZGVyLmdldE1vZHVsZXMoKTtcbiAgICAgIHRoaXMubW9kdWxlcy5zZXQobW9kdWxlcy5pdGVtcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbW9kdWxlczonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNvbGxhcHNlSXRlbUNsaWNrKG1vZHVsZUlkOiBzdHJpbmcsIGU6IEFYQ29sbGFwc2VDbGlja0V2ZW50LCBkYXRhVHlwZTogQVhNTW9kdWxlSXRlbSkge1xuICAgIGlmIChlLmNvbXBvbmVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgZS5oYW5kbGVkID0gdHJ1ZTtcbiAgICAgIGUuY29tcG9uZW50LmlzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgIGF3YWl0IHRoaXMubG9hZE1vZHVsZURhdGEobW9kdWxlSWQsIGRhdGFUeXBlKTtcblxuICAgICAgZS5jb21wb25lbnQudG9nZ2xlKCk7XG4gICAgICBlLmNvbXBvbmVudC5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGUuY29tcG9uZW50WydjZHInXS5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZE1vZHVsZURhdGEobW9kdWxlSWQ6IHN0cmluZywgZGF0YVR5cGU6IEFYTU1vZHVsZUl0ZW0sIGhhcmRSZWxvYWQgPSBmYWxzZSkge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gYCR7bW9kdWxlSWR9LSR7ZGF0YVR5cGV9YDtcblxuICAgIGxldCBkYXRhSXRlbXMgPSB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIC8vIGlmICghZGF0YUl0ZW1zIHx8IGhhcmRSZWxvYWQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0aG9kTWFwID0ge1xuICAgICAgICBlbnRpdHk6IHRoaXMuZGF0YVByb3ZpZGVyLmdldEVudGl0aWVzLFxuICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLmRhdGFQcm92aWRlci5nZXRQZXJtaXNzaW9ucyxcbiAgICAgICAgZmVhdHVyZTogdGhpcy5kYXRhUHJvdmlkZXIuZ2V0RmVhdHVyZXMsXG4gICAgICB9O1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IG1ldGhvZE1hcFtkYXRhVHlwZV0uY2FsbCh0aGlzLmRhdGFQcm92aWRlciwgbW9kdWxlSWQpO1xuXG4gICAgICBkYXRhSXRlbXMgPSBkYXRhLml0ZW1zIGFzIGFueVtdO1xuICAgICAgdGhpcy5tb2R1bGVEYXRhQ2FjaGUuc2V0KGNhY2hlS2V5LCBkYXRhSXRlbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7ZGF0YVR5cGV9OmAsIGVycm9yKTtcbiAgICB9XG4gICAgLy8gfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVudGl0aWVzKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGVEYXRhQ2FjaGUuZ2V0KGAke21vZHVsZUlkfS1lbnRpdHlgKSB8fCBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRQZXJtaXNzaW9ucyhtb2R1bGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlRGF0YUNhY2hlLmdldChgJHttb2R1bGVJZH0tcGVybWlzc2lvbmApIHx8IFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZlYXR1cmVzKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGVEYXRhQ2FjaGUuZ2V0KGAke21vZHVsZUlkfS1mZWF0dXJlYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmluZ0NvbnRleHRNZW51KGU6IEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQpIHtcbiAgICB0aGlzLmNvbnRleHRNZW51U2VydmljZS5vcGVuKGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFjdGlvbkNsaWNrKGU6IEFYTWVudUl0ZW1DbGlja0V2ZW50KSB7XG4gICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2UuaXRlbUNsaWNrKGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU1vZHVsZSgpIHtcbiAgICB0aGlzLmNvbnRleHRNZW51U2VydmljZS5jcmVhdGVFbnRpdHkoJ21vZHVsZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXNzaWduRGF0YSh0YXJnZXQ6IEhUTUxFbGVtZW50LCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBzZXQodGFyZ2V0LCAnZGF0YScsIGRhdGEpO1xuICB9XG59XG4iLCI8YXgtZHJhd2VyLWNvbnRhaW5lciBjbGFzcz1cImF4LW92ZXJmbG93LWhpZGRlblwiPlxuICA8YXgtZHJhd2VyICNkcmF3ZXIgbG9jYXRpb249XCJzdGFydFwiIFtjb2xsYXBzZWRdPVwiZmFsc2VcIiBbbW9kZV09XCIncHVzaCdcIj5cbiAgICA8YXgtY29udGVudCBjbGFzcz1cImF4LXctODAgYXgtcmVsYXRpdmUgYXgtYm9yZGVyLWUgYXgtcHgtNCBheC1weS0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0byBheC1oLVtjYWxjKDEwMHZoLTE4MHB4KV1cIiAjY29udGV4dFRhcmdldD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LWJvbGQgYXgtdGV4dC14bFwiPnt7ICdkZXNpZ25lci5tb2R1bGVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBheC1tdC00XCI+XG4gICAgICAgICAgQGlmKG1vZHVsZXMoKS5sZW5ndGgpe1xuICAgICAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBbYWNjb3JkaW9uXT1cImZhbHNlXCIgbG9vaz1cImJsYW5rXCI+XG4gICAgICAgICAgICBAZm9yKG0gb2YgbW9kdWxlcygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgICAgICA8YXgtY29sbGFwc2VcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb250ZXh0TWVudVwiXG4gICAgICAgICAgICAgIGljb249XCJmYXMgZmEtZm9sZGVyIGF4LXRleHQtd2FybmluZ1wiXG4gICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2NhcHRpb25dPVwibS50aXRsZVwiXG4gICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgZGF0YS1lbGVtZW50VHlwZT1cIm1vZHVsZVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbW9kdWxlSWRdPVwibS5pZFwiXG4gICAgICAgICAgICAgIGRhdGEtZW50aXR5VHlwZT1cIm1vZHVsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1teC0zXCI+XG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlLWdyb3VwIFthY2NvcmRpb25dPVwiZmFsc2VcIiBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRleHRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImZhcyBmYS1ib3ggYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ29sbGFwc2VJdGVtQ2xpY2sobS5pZCwgJGV2ZW50LCAnZW50aXR5JylcIlxuICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCIoJ2Rlc2lnbmVyLmVudGl0aWVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSA/PyAnRW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWVsZW1lbnRUeXBlPVwic3ViTW9kdWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1tb2R1bGVJZF09XCJtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1lbnRpdHlUeXBlPVwiZW50aXR5XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaWxkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgdHlwZTogJ2VudGl0eScsIGl0ZW1zOiBnZXRFbnRpdGllcyhtLmlkKSwgbW9kdWxlSWQ6IG0uaWQgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2F4LWNvbGxhcHNlPlxuXG4gICAgICAgICAgICAgICAgICA8YXgtY29sbGFwc2VcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250ZXh0TWVudVwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJmYXMgZmEtc3RhciBheC10ZXh0LW5ldXRyYWwtNDAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQ29sbGFwc2VkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVDb2xsYXBzZUl0ZW1DbGljayhtLmlkLCAkZXZlbnQsICdmZWF0dXJlJylcIlxuICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCIoJ2Rlc2lnbmVyLmZlYXR1cmVzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSA/PyAnRmVhdHVyZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgbG9vaz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWVsZW1lbnRUeXBlPVwic3ViTW9kdWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1tb2R1bGVJZF09XCJtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1lbnRpdHlUeXBlPVwiZmVhdHVyZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlsZFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IHR5cGU6ICdmZWF0dXJlJywgaXRlbXM6IGdldEZlYXR1cmVzKG0uaWQpLCBtb2R1bGVJZDogbS5pZCB9XG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG5cbiAgICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRleHRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImZhcyBmYS1rZXkgYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ29sbGFwc2VJdGVtQ2xpY2sobS5pZCwgJGV2ZW50LCAncGVybWlzc2lvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiKCdkZXNpZ25lci5wZXJtaXNzaW9ucycgfCB0cmFuc2xhdGUgfCBhc3luYykgPz8gJ1Blcm1pc3Npb25zJ1wiXG4gICAgICAgICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1lbGVtZW50VHlwZT1cInN1Yk1vZHVsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbW9kdWxlSWRdPVwibS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZW50aXR5VHlwZT1cInBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpbGRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyB0eXBlOiAncGVybWlzc2lvbicsIGl0ZW1zOiBnZXRQZXJtaXNzaW9ucyhtLmlkKSwgbW9kdWxlSWQ6IG0uaWQgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2F4LWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2UtZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWNvbGxhcHNlLWdyb3VwPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1oLWZ1bGwgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1uZXV0cmFsLTUwMCBheC10ZXh0LXNtXCI+e3sgJ2Rlc2lnbmVyLmVtcHR5TW9kdWxlc1RleHQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYXgtYWJzb2x1dGUgYXgtYm90dG9tLTQgYXgtdy03MlwiXG4gICAgICAgICAgW3RleHRdPVwiKCdkZXNpZ25lci5jcmVhdGVNb2R1bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICdDcmVhdGUgTmV3IE1vZHVsZSdcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImNyZWF0ZU1vZHVsZSgpXCJcbiAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhcyBmYS1wbHVzXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWNvbnRlbnQ+XG5cbiAgICA8bmctdGVtcGxhdGUgI2NoaWxkVGVtcGxhdGUgbGV0LWNoaWxkPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtY3Vyc29yLXBvaW50ZXIgYXgtc2VsZWN0LW5vbmUgYXgtYm9yZGVyLXMgYXgtbXMtWzE0cHhdIGF4LXBzLTJcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBjaGlsZC5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjZFxuICAgICAgICAgIChjbGljayk9XCJjb250ZXh0TWVudVNlcnZpY2Uuc2hvd0RldGFpbHMoY2hpbGQudHlwZSwgaXRlbS5pZClcIlxuICAgICAgICAgIGNsYXNzPVwiY29udGV4dE1lbnUgYXgtcHgtMiBheC1weS0xIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBob3ZlcjpheC1iZy1uZXV0cmFsLTEwMCBkYXJrOmhvdmVyOmF4LWJnLW5ldXRyYWwtNzAwIGhvdmVyOmF4LXJvdW5kZWQtbWRcIlxuICAgICAgICAgIGRhdGEtZWxlbWVudFR5cGU9XCJzdWJNb2R1bGVJdGVtXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGFzc2lnbkRhdGEoZCwgeyByZWNvcmQ6IGl0ZW0sIGVudGl0eVR5cGU6IGNoaWxkLnR5cGUsIG1vZHVsZUlkOiBjaGlsZC5tb2R1bGVJZCB9KSB9fVxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPGF4LWJhZGdlXG4gICAgICAgICAgICBbbG9va109XCIndHdvdG9uZSdcIlxuICAgICAgICAgICAgW2NvbG9yXT1cIml0ZW0uaXNBcmNoaXZlZCA/ICdkYW5nZXInIDogJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0uaXNBcmNoaXZlZCA/ICdPZmYnIDogJ09uJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvYXgtYmFkZ2U+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2F4LWRyYXdlcj5cbiAgPGF4LWNvbnRlbnQ+XG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICA8L2F4LWNvbnRlbnQ+XG48L2F4LWRyYXdlci1jb250YWluZXI+XG5cbjxheC1jb250ZXh0LW1lbnVcbiAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKCRldmVudClcIlxuICBbaXRlbXNdPVwiW11cIlxuICBbdGFyZ2V0XT1cImNvbnRleHRUYXJnZXRcIlxuICBbb3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiXG4gIFtjbG9zZU9uXT1cIidsZWF2ZSdcIlxuICAob25PcGVuaW5nKT1cIm9wZW5pbmdDb250ZXh0TWVudSgkZXZlbnQpXCJcbj5cbjwvYXgtY29udGV4dC1tZW51PlxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbW9kdWxlLWRlc2lnbmVyL21vZHVsZS1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL21vZHVsZS1kZXNpZ25lci9tb2R1bGUtZGVzaWduZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQXdCLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFJTCxZQUFZLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZ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LE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQXZIVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixvTUN4RHZDLG91TEEwSUEsaWREakdJLFlBQVksMFBBQ1osY0FBYyw2VUFDZCxjQUFjLHVaQUNkLGlCQUFpQix1VkFDakIsbUJBQW1CLDhGQUNuQixnQkFBZ0IsOEJBQ2hCLGdCQUFnQiw4YkFDaEIsZUFBZSw4QkFDZixxQkFBcUIsOEJBQ3JCLGFBQWEseUlBQ2IsWUFBWSwyTkFDWixZQUFZOzsyRkFJSCwwQkFBMEI7a0JBckJ0QyxTQUFTO29DQUdPLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixZQUFZO3FCQUNiLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDb2xsYXBzZUNsaWNrRXZlbnQsIEFYQ29sbGFwc2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29sbGFwc2UnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyYXdlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcmF3ZXInO1xuaW1wb3J0IHtcbiAgQVhDb250ZXh0TWVudUNvbXBvbmVudCxcbiAgQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCxcbiAgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCxcbiAgQVhNZW51TW9kdWxlLFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFNlbGVjdGlvbkxpc3RNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0aW9uLWxpc3QnO1xuaW1wb3J0IHsgQVhTaWRlTWVudU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zaWRlLW1lbnUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlDcmVhdGVFdmVudCwgQVhQRW50aXR5RGVsZXRlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXRzJztcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSwgb2ZUeXBlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTU1vZHVsZURlc2lnbmVyQ29udGV4dE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29udGV4dC1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQTW9kdWxlRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi9tb2R1bGUtZGVzaWduZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Nb2R1bGVJdGVtIH0gZnJvbSAnLi9tb2R1bGUtZGVzaWduZXIudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vbW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kdWxlLWRlc2lnbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFNpZGVNZW51TW9kdWxlLFxuICAgIEFYQ29sbGFwc2VNb2R1bGUsXG4gICAgQVhQb3BvdmVyTW9kdWxlLFxuICAgIEFYU2VsZWN0aW9uTGlzdE1vZHVsZSxcbiAgICBBWEJhZGdlTW9kdWxlLFxuICAgIEFYTWVudU1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Nb2R1bGVEZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIGNvbnRleHRNZW51ID0gdmlld0NoaWxkPEFYQ29udGV4dE1lbnVDb21wb25lbnQ+KCdjb250ZXh0TWVudScpO1xuXG4gIHByb3RlY3RlZCBkYXRhUHJvdmlkZXIgPSBpbmplY3QoQVhQTW9kdWxlRGVzaWduZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgY29udGV4dE1lbnVTZXJ2aWNlID0gaW5qZWN0KEFYTU1vZHVsZURlc2lnbmVyQ29udGV4dE1lbnVTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgbW9kdWxlcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuXG4gIHByb3RlY3RlZCBtb2R1bGVEYXRhQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3Vic2NyaWJlQWN0aW9uRXZlbnRzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRNb2R1bGVzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3Vic2NyaWJlQWN0aW9uRXZlbnRzKCkge1xuICAgIHRoaXMud29ya2Zsb3cuZXZlbnRzJFxuICAgICAgLnBpcGUob2ZUeXBlKEFYUEVudGl0eURlbGV0ZWRFdmVudCwgQVhQRW50aXR5Q3JlYXRlRXZlbnQpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgbWV0YSB9ID0gZXZlbnQucGF5bG9hZDtcbiAgICAgICAgaWYgKG1ldGEudHlwZSA9PT0gJ21vZHVsZScpIHtcbiAgICAgICAgICB0aGlzLmxvYWRNb2R1bGVzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2FkTW9kdWxlRGF0YShtZXRhLm1vZHVsZUlkLCBtZXRhLnR5cGUsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZE1vZHVsZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1vZHVsZXMgPSBhd2FpdCB0aGlzLmRhdGFQcm92aWRlci5nZXRNb2R1bGVzKCk7XG4gICAgICB0aGlzLm1vZHVsZXMuc2V0KG1vZHVsZXMuaXRlbXMpO1xuICAgICAgdGhpcy5yZWZyZXNoQ29udGV4dE1lbnUoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBtb2R1bGVzOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQ29sbGFwc2VJdGVtQ2xpY2sobW9kdWxlSWQ6IHN0cmluZywgZTogQVhDb2xsYXBzZUNsaWNrRXZlbnQsIGRhdGFUeXBlOiBBWE1Nb2R1bGVJdGVtKSB7XG4gICAgaWYgKGUuY29tcG9uZW50LmlzQ29sbGFwc2VkKSB7XG4gICAgICBlLmhhbmRsZWQgPSB0cnVlO1xuICAgICAgZS5jb21wb25lbnQuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgYXdhaXQgdGhpcy5sb2FkTW9kdWxlRGF0YShtb2R1bGVJZCwgZGF0YVR5cGUpO1xuXG4gICAgICBlLmNvbXBvbmVudC50b2dnbGUoKTtcbiAgICAgIGUuY29tcG9uZW50LmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgZS5jb21wb25lbnRbJ2NkciddLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5yZWZyZXNoQ29udGV4dE1lbnUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaENvbnRleHRNZW51KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0TWVudSgpPy5yZWZyZXNoKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZE1vZHVsZURhdGEobW9kdWxlSWQ6IHN0cmluZywgZGF0YVR5cGU6IEFYTU1vZHVsZUl0ZW0sIGhhcmRSZWxvYWQgPSBmYWxzZSkge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gYCR7bW9kdWxlSWR9LSR7ZGF0YVR5cGV9YDtcblxuICAgIGxldCBkYXRhSXRlbXMgPSB0aGlzLm1vZHVsZURhdGFDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIC8vIGlmICghZGF0YUl0ZW1zIHx8IGhhcmRSZWxvYWQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0aG9kTWFwID0ge1xuICAgICAgICBlbnRpdHk6IHRoaXMuZGF0YVByb3ZpZGVyLmdldEVudGl0aWVzLFxuICAgICAgICBwZXJtaXNzaW9uOiB0aGlzLmRhdGFQcm92aWRlci5nZXRQZXJtaXNzaW9ucyxcbiAgICAgICAgZmVhdHVyZTogdGhpcy5kYXRhUHJvdmlkZXIuZ2V0RmVhdHVyZXMsXG4gICAgICB9O1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IG1ldGhvZE1hcFtkYXRhVHlwZV0uY2FsbCh0aGlzLmRhdGFQcm92aWRlciwgbW9kdWxlSWQpO1xuXG4gICAgICBkYXRhSXRlbXMgPSBkYXRhLml0ZW1zIGFzIGFueVtdO1xuICAgICAgdGhpcy5tb2R1bGVEYXRhQ2FjaGUuc2V0KGNhY2hlS2V5LCBkYXRhSXRlbXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBsb2FkaW5nICR7ZGF0YVR5cGV9OmAsIGVycm9yKTtcbiAgICB9XG4gICAgLy8gfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVudGl0aWVzKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGVEYXRhQ2FjaGUuZ2V0KGAke21vZHVsZUlkfS1lbnRpdHlgKSB8fCBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRQZXJtaXNzaW9ucyhtb2R1bGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlRGF0YUNhY2hlLmdldChgJHttb2R1bGVJZH0tcGVybWlzc2lvbmApIHx8IFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZlYXR1cmVzKG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGVEYXRhQ2FjaGUuZ2V0KGAke21vZHVsZUlkfS1mZWF0dXJlYCkgfHwgW107XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmluZ0NvbnRleHRNZW51KGU6IEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQpIHtcbiAgICB0aGlzLmNvbnRleHRNZW51U2VydmljZS5vcGVuKGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFjdGlvbkNsaWNrKGU6IEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQpIHtcbiAgICB0aGlzLmNvbnRleHRNZW51U2VydmljZS5pdGVtQ2xpY2soZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTW9kdWxlKCkge1xuICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNyZWF0ZUVudGl0eSgnbW9kdWxlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3NpZ25EYXRhKHRhcmdldDogSFRNTEVsZW1lbnQsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHNldCh0YXJnZXQsICdkYXRhJywgZGF0YSk7XG4gIH1cbn1cbiIsIjxheC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiYXgtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxheC1kcmF3ZXIgI2RyYXdlciBsb2NhdGlvbj1cInN0YXJ0XCIgW2NvbGxhcHNlZF09XCJmYWxzZVwiIFttb2RlXT1cIidwdXNoJ1wiPlxuICAgIDxheC1jb250ZW50IGNsYXNzPVwiYXgtdy04MCBheC1yZWxhdGl2ZSBheC1ib3JkZXItZSBheC1weC00IGF4LXB5LTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1vdmVyZmxvdy1hdXRvIGF4LWgtW2NhbGMoMTAwdmgtMTgwcHgpXVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtYm9sZCBheC10ZXh0LXhsXCI+e3sgJ2Rlc2lnbmVyLm1vZHVsZXMnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yIGF4LW10LTRcIj5cbiAgICAgICAgICBAaWYobW9kdWxlcygpLmxlbmd0aCl7XG4gICAgICAgICAgPGF4LWNvbGxhcHNlLWdyb3VwIFthY2NvcmRpb25dPVwiZmFsc2VcIiBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICAgIEBmb3IobSBvZiBtb2R1bGVzKCk7dHJhY2sgJGluZGV4KXtcbiAgICAgICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICAgICBjbGFzcz1cImN0eFwiXG4gICAgICAgICAgICAgIGljb249XCJmYXMgZmEtZm9sZGVyIGF4LXRleHQtd2FybmluZ1wiXG4gICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2NhcHRpb25dPVwibS50aXRsZVwiXG4gICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgZGF0YS1lbGVtZW50VHlwZT1cIm1vZHVsZVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbW9kdWxlSWRdPVwibS5pZFwiXG4gICAgICAgICAgICAgIGRhdGEtZW50aXR5VHlwZT1cIm1vZHVsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1teC0zXCI+XG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlLWdyb3VwIFthY2NvcmRpb25dPVwiZmFsc2VcIiBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN0eFwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJmYXMgZmEtYm94IGF4LXRleHQtbmV1dHJhbC00MDBcIlxuICAgICAgICAgICAgICAgICAgICBbaXNDb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUNvbGxhcHNlSXRlbUNsaWNrKG0uaWQsICRldmVudCwgJ2VudGl0eScpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiKCdkZXNpZ25lci5lbnRpdGllcycgfCB0cmFuc2xhdGUgfCBhc3luYykgPz8gJ0VudGl0aWVzJ1wiXG4gICAgICAgICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1lbGVtZW50VHlwZT1cInN1Yk1vZHVsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbW9kdWxlSWRdPVwibS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZW50aXR5VHlwZT1cImVudGl0eVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlsZFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IHR5cGU6ICdlbnRpdHknLCBpdGVtczogZ2V0RW50aXRpZXMobS5pZCksIG1vZHVsZUlkOiBtLmlkIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cblxuICAgICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3R4XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImZhcyBmYS1zdGFyIGF4LXRleHQtbmV1dHJhbC00MDBcIlxuICAgICAgICAgICAgICAgICAgICBbaXNDb2xsYXBzZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUNvbGxhcHNlSXRlbUNsaWNrKG0uaWQsICRldmVudCwgJ2ZlYXR1cmUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIignZGVzaWduZXIuZmVhdHVyZXMnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICdGZWF0dXJlcydcIlxuICAgICAgICAgICAgICAgICAgICBsb29rPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZWxlbWVudFR5cGU9XCJzdWJNb2R1bGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLW1vZHVsZUlkXT1cIm0uaWRcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWVudGl0eVR5cGU9XCJmZWF0dXJlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaWxkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgdHlwZTogJ2ZlYXR1cmUnLCBpdGVtczogZ2V0RmVhdHVyZXMobS5pZCksIG1vZHVsZUlkOiBtLmlkIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cblxuICAgICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3R4XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImZhcyBmYS1rZXkgYXgtdGV4dC1uZXV0cmFsLTQwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0NvbGxhcHNlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ29sbGFwc2VJdGVtQ2xpY2sobS5pZCwgJGV2ZW50LCAncGVybWlzc2lvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiKCdkZXNpZ25lci5wZXJtaXNzaW9ucycgfCB0cmFuc2xhdGUgfCBhc3luYykgPz8gJ1Blcm1pc3Npb25zJ1wiXG4gICAgICAgICAgICAgICAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1lbGVtZW50VHlwZT1cInN1Yk1vZHVsZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbW9kdWxlSWRdPVwibS5pZFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZW50aXR5VHlwZT1cInBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpbGRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyB0eXBlOiAncGVybWlzc2lvbicsIGl0ZW1zOiBnZXRQZXJtaXNzaW9ucyhtLmlkKSwgbW9kdWxlSWQ6IG0uaWQgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2F4LWNvbGxhcHNlPlxuICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2UtZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9heC1jb2xsYXBzZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWNvbGxhcHNlLWdyb3VwPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1oLWZ1bGwgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1uZXV0cmFsLTUwMCBheC10ZXh0LXNtXCI+e3sgJ2Rlc2lnbmVyLmVtcHR5TW9kdWxlc1RleHQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYXgtYWJzb2x1dGUgYXgtYm90dG9tLTQgYXgtdy03MlwiXG4gICAgICAgICAgW3RleHRdPVwiKCdkZXNpZ25lci5jcmVhdGVNb2R1bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICdDcmVhdGUgTmV3IE1vZHVsZSdcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImNyZWF0ZU1vZHVsZSgpXCJcbiAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhcyBmYS1wbHVzXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F4LWNvbnRlbnQ+XG5cbiAgICA8bmctdGVtcGxhdGUgI2NoaWxkVGVtcGxhdGUgbGV0LWNoaWxkPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtY3Vyc29yLXBvaW50ZXIgYXgtc2VsZWN0LW5vbmUgYXgtYm9yZGVyLXMgYXgtbXMtWzE0cHhdIGF4LXBzLTJcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBjaGlsZC5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICNkXG4gICAgICAgICAgKGNsaWNrKT1cImNvbnRleHRNZW51U2VydmljZS5zaG93RGV0YWlscyhjaGlsZC50eXBlLCBpdGVtLmlkKVwiXG4gICAgICAgICAgY2xhc3M9XCJjdHggYXgtcHgtMiBheC1weS0xIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBob3ZlcjpheC1iZy1uZXV0cmFsLTEwMCBkYXJrOmhvdmVyOmF4LWJnLW5ldXRyYWwtNzAwIGhvdmVyOmF4LXJvdW5kZWQtbWRcIlxuICAgICAgICAgIGRhdGEtZWxlbWVudFR5cGU9XCJzdWJNb2R1bGVJdGVtXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGFzc2lnbkRhdGEoZCwgeyByZWNvcmQ6IGl0ZW0sIGVudGl0eVR5cGU6IGNoaWxkLnR5cGUsIG1vZHVsZUlkOiBjaGlsZC5tb2R1bGVJZCB9KSB9fVxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPGF4LWJhZGdlXG4gICAgICAgICAgICBbbG9va109XCIndHdvdG9uZSdcIlxuICAgICAgICAgICAgW2NvbG9yXT1cIml0ZW0uaXNBcmNoaXZlZCA/ICdkYW5nZXInIDogJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIml0ZW0uaXNBcmNoaXZlZCA/ICdPZmYnIDogJ09uJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvYXgtYmFkZ2U+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2F4LWRyYXdlcj5cbiAgPGF4LWNvbnRlbnQ+XG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICA8L2F4LWNvbnRlbnQ+XG48L2F4LWRyYXdlci1jb250YWluZXI+XG5cbjxheC1jb250ZXh0LW1lbnVcbiAgI2NvbnRleHRNZW51XG4gIChvbkl0ZW1DbGljayk9XCJoYW5kbGVBY3Rpb25DbGljaygkZXZlbnQpXCJcbiAgW2l0ZW1zXT1cIltdXCJcbiAgW3RhcmdldF09XCInLmN0eCdcIlxuICBbb3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiXG4gIFtjbG9zZU9uXT1cIidsZWF2ZSdcIlxuICAob25PcGVuaW5nKT1cIm9wZW5pbmdDb250ZXh0TWVudSgkZXZlbnQpXCJcbj5cbjwvYXgtY29udGV4dC1tZW51PlxuIl19
@@ -41,13 +41,12 @@ export class AXMModuleDesignerContextMenuService {
41
41
  ];
42
42
  }
43
43
  open(e) {
44
- const target = e.nativeEvent.target;
45
- const mainTarget = target.closest('.contextMenu');
46
- const elementType = mainTarget?.getAttribute('data-elementType');
47
- const { data } = mainTarget;
44
+ const target = e.targetElement;
45
+ const elementType = target?.getAttribute('data-elementType');
46
+ const { data } = target;
48
47
  if (elementType == 'module' || elementType == 'subModule') {
49
- const moduleId = mainTarget?.getAttribute('data-moduleId');
50
- const entityType = mainTarget?.getAttribute('data-entityType');
48
+ const moduleId = target?.getAttribute('data-moduleId');
49
+ const entityType = target?.getAttribute('data-entityType');
51
50
  if (elementType == 'module') {
52
51
  this.elementData.set({
53
52
  entityType,
@@ -79,7 +78,6 @@ export class AXMModuleDesignerContextMenuService {
79
78
  }
80
79
  }
81
80
  itemClick(e) {
82
- console.log('clicked', e, this.elementData());
83
81
  if (this.elementData()) {
84
82
  switch (e.item.name) {
85
83
  case 'create':
@@ -165,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
165
163
  providedIn: 'root',
166
164
  }]
167
165
  }] });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3NlcnZpY2VzL2NvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0QsTUFBTSxPQUFPLG1DQUFtQztJQUhoRDtRQUlVLGFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLE1BQU0sQ0FBOEMsSUFBSSxDQUFDLENBQUM7UUFDekUsZ0JBQVcsR0FBRyxNQUFNLENBQXNFLElBQUksQ0FBQyxDQUFDO1FBRWxHLGNBQVMsR0FBaUI7WUFDaEM7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLEtBQUssRUFBRSxRQUFRO2FBQ2hCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2FBQ2Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLE9BQU87YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFB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VSxFQUFFO1lBQzlDLElBQUksRUFBRTtnQkFDSixFQUFFO2FBQ0g7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osUUFBUTtnQkFDUixJQUFJLEVBQUUsVUFBVTthQUNqQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsWUFBc0I7UUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBYyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDOzhHQTFLVSxtQ0FBbUM7a0hBQW5DLG1DQUFtQyxjQUZsQyxNQUFNOzsyRkFFUCxtQ0FBbUM7a0JBSC9DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCwgQVhNZW51SXRlbSwgQVhNZW51SXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWE1Nb2R1bGVJdGVtIH0gZnJvbSAnLi4vbW9kdWxlLWRlc2lnbmVyL21vZHVsZS1kZXNpZ25lci50eXBlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYTU1vZHVsZURlc2lnbmVyQ29udGV4dE1lbnVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgY29waWVkUmVjb3JkID0gc2lnbmFsPHsgdHlwZTogQVhNTW9kdWxlSXRlbTsgcmVjb3JkOiBhbnkgfSB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgZWxlbWVudERhdGEgPSBzaWduYWw8eyBlbnRpdHlUeXBlOiBBWE1Nb2R1bGVJdGVtOyByZWNvcmQ6IGFueTsgbW9kdWxlSWQ6IHN0cmluZyB9IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSBtZW51SXRlbXM6IEFYTWVudUl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnY3JlYXRlJyxcbiAgICAgIHRleHQ6ICdDcmVhdGUnLFxuICAgICAgaWNvbjogJ2ZhcyBmYS1wbHVzJyxcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZGVsZXRlJyxcbiAgICAgIHRleHQ6ICdEZWxldGUnLFxuICAgICAgaWNvbjogJ2ZhcyBmYS10cmFzaCcsXG4gICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZGV0YWlscycsXG4gICAgICB0ZXh0OiAnRGV0YWlscycsXG4gICAgICBpY29uOiAnZmFzIGZhLWV5ZScsXG4gICAgICBjb2xvcjogJ2dob3N0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjb3B5JyxcbiAgICAgIHRleHQ6ICdDb3B5JyxcbiAgICAgIGljb246ICdmYXMgZmEtY29weScsXG4gICAgICBjb2xvcjogJ2dob3N0JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYXN0ZScsXG4gICAgICB0ZXh0OiAnUGFzdGUnLFxuICAgICAgaWNvbjogJ2ZhcyBmYS1wYXN0ZScsXG4gICAgICBjb2xvcjogJ2dob3N0JyxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB9LFxuICBdO1xuXG4gIG9wZW4oZTogQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCkge1xuICAgIGNvbnN0IHRhcmdldCA9ICgoZSBhcyBhbnkpLm5hdGl2ZUV2ZW50IGFzIFBvaW50ZXJFdmVudCkudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IG1haW5UYXJnZXQgPSB0YXJnZXQuY2xvc2VzdCgnLmNvbnRleHRNZW51Jyk7XG4gICAgY29uc3QgZWxlbWVudFR5cGUgPSBtYWluVGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2RhdGEtZWxlbWVudFR5cGUnKTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IG1haW5UYXJnZXQgYXMgYW55O1xuXG4gICAgaWYgKGVsZW1lbnRUeXBlID09ICdtb2R1bGUnIHx8IGVsZW1lbnRUeXBlID09ICdzdWJNb2R1bGUnKSB7XG4gICAgICBjb25zdCBtb2R1bGVJZCA9IG1haW5UYXJnZXQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1tb2R1bGVJZCcpO1xuICAgICAgY29uc3QgZW50aXR5VHlwZSA9IG1haW5UYXJnZXQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1lbnRpdHlUeXBlJykgYXMgQVhNTW9kdWxlSXRlbTtcbiAgICAgIGlmIChlbGVtZW50VHlwZSA9PSAnbW9kdWxlJykge1xuICAgICAgICB0aGlzLmVsZW1lbnREYXRhLnNldCh7XG4gICAgICAgICAgZW50aXR5VHlwZSxcbiAgICAgICAgICBtb2R1bGVJZDogbW9kdWxlSWQgYXMgc3RyaW5nLFxuICAgICAgICAgIHJlY29yZDoge1xuICAgICAgICAgICAgaWQ6IG1vZHVsZUlkLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBlLml0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoWydkZXRhaWxzJywgJ2RlbGV0ZSddKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZWxlbWVudERhdGEuc2V0KHtcbiAgICAgICAgICBlbnRpdHlUeXBlLFxuICAgICAgICAgIG1vZHVsZUlkOiBtb2R1bGVJZCBhcyBzdHJpbmcsXG4gICAgICAgICAgcmVjb3JkOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKFsnY3JlYXRlJywgJ3Bhc3RlJ10pO1xuICAgICAgICBjb25zdCBjdXN0b21NZW51SXRlbXMgPSBpdGVtcy5tYXAoKGkpID0+XG4gICAgICAgICAgaS5uYW1lID09ICdwYXN0ZScgPyB7IC4uLmksIGRpc2FibGVkOiBlbnRpdHlUeXBlID09IHRoaXMuY29waWVkUmVjb3JkKCk/LnR5cGUgPyBmYWxzZSA6IHRydWUgfSA6IGlcbiAgICAgICAgKTtcbiAgICAgICAgZS5pdGVtcyA9IGN1c3RvbU1lbnVJdGVtcztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsZW1lbnRUeXBlID09ICdzdWJNb2R1bGVJdGVtJykge1xuICAgICAgdGhpcy5lbGVtZW50RGF0YS5zZXQoZGF0YSk7XG4gICAgICBlLml0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoWydkZWxldGUnLCAnY29weScsICdkZXRhaWxzJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlLml0ZW1zID0gW107XG4gICAgICBlLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpdGVtQ2xpY2soZTogQVhNZW51SXRlbUNsaWNrRXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZygnY2xpY2tlZCcsIGUsIHRoaXMuZWxlbWVudERhdGEoKSk7XG4gICAgaWYgKHRoaXMuZWxlbWVudERhdGEoKSkge1xuICAgICAgc3dpdGNoIChlLml0ZW0ubmFtZSkge1xuICAgICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICAgIHRoaXMuY3JlYXRlRW50aXR5KHRoaXMuZWxlbWVudERhdGEoKT8uZW50aXR5VHlwZSBhcyBBWE1Nb2R1bGVJdGVtLCB0aGlzLmVsZW1lbnREYXRhKCk/Lm1vZHVsZUlkKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkZXRhaWxzJzpcbiAgICAgICAgICB0aGlzLnNob3dEZXRhaWxzKHRoaXMuZWxlbWVudERhdGEoKT8uZW50aXR5VHlwZSBhcyBBWE1Nb2R1bGVJdGVtIHwgJ21vZHVsZScsIHRoaXMuZWxlbWVudERhdGEoKT8ucmVjb3JkLmlkKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgIHRoaXMuZGVsZXRlRW50aXR5KFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50RGF0YSgpPy5lbnRpdHlUeXBlIGFzIEFYTU1vZHVsZUl0ZW0gfCAnbW9kdWxlJyxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudERhdGEoKT8ucmVjb3JkLmlkLFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50RGF0YSgpPy5tb2R1bGVJZFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY29weSc6XG4gICAgICAgICAgdGhpcy5jb3B5UmVjb3JkKHRoaXMuZWxlbWVudERhdGEoKT8uZW50aXR5VHlwZSBhcyBBWE1Nb2R1bGVJdGVtLCB0aGlzLmVsZW1lbnREYXRhKCk/LnJlY29yZCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncGFzdGUnOlxuICAgICAgICAgIHRoaXMucGFzdGVSZWNvcmQodGhpcy5lbGVtZW50RGF0YSgpPy5tb2R1bGVJZCBhcyBzdHJpbmcpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlRW50aXR5KGVudGl0eVR5cGU6ICdtb2R1bGUnIHwgQVhNTW9kdWxlSXRlbSwgbW9kdWxlSWQ/OiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ2NyZWF0ZS1tb2R1bGUtZW50aXR5Jywge1xuICAgICAgZW50aXR5OiBgYXBwbGljYXRpb24tbWFuYWdlbWVudC4ke2VudGl0eVR5cGV9YCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbW9kdWxlSWQsXG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICB0eXBlOiBlbnRpdHlUeXBlLFxuICAgICAgICBtb2R1bGVJZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzaG93RGV0YWlscyhlbnRpdHlUeXBlOiAnbW9kdWxlJyB8IEFYTU1vZHVsZUl0ZW0sIGlkOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ3Nob3ctbW9kdWxlLWVudGl0eS1kZXRhaWxzJywge1xuICAgICAgZW50aXR5OiBgYXBwbGljYXRpb24tbWFuYWdlbWVudC4ke2VudGl0eVR5cGV9YCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3B5UmVjb3JkKGVudGl0eVR5cGU6IEFYTU1vZHVsZUl0ZW0sIHJlY29yZDogYW55KSB7XG4gICAgY29uc3QgbmV3UmVjb3JkID0geyAuLi5yZWNvcmQsIG1vZHVsZUlkOiB1bmRlZmluZWQsIGlkOiB1bmRlZmluZWQgfTtcbiAgICB0aGlzLmNvcGllZFJlY29yZC5zZXQoeyB0eXBlOiBlbnRpdHlUeXBlLCByZWNvcmQ6IG5ld1JlY29yZCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGFzdGVSZWNvcmQobW9kdWxlSWQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmNvcGllZFJlY29yZCgpKSB7XG4gICAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUoJ2NyZWF0ZS1tb2R1bGUtZW50aXR5Jywge1xuICAgICAgICBlbnRpdHk6IGBhcHBsaWNhdGlvbi1tYW5hZ2VtZW50LiR7dGhpcy5jb3BpZWRSZWNvcmQoKT8udHlwZX1gLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4udGhpcy5jb3BpZWRSZWNvcmQoKT8ucmVjb3JkLFxuICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICB9LFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgdHlwZTogdGhpcy5jb3BpZWRSZWNvcmQoKT8udHlwZSxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlRW50aXR5KGVudGl0eVR5cGU6ICdtb2R1bGUnIHwgQVhNTW9kdWxlSXRlbSwgaWQ6IHN0cmluZ1tdIHwgc3RyaW5nLCBtb2R1bGVJZD86IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnZGVsZXRlLWVudGl0eScsIHtcbiAgICAgIGVudGl0eTogYGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQuJHtlbnRpdHlUeXBlfWAsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGlkLFxuICAgICAgfSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgIHR5cGU6IGVudGl0eVR5cGUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNZW51SXRlbXMoaW5jbHVkZUl0ZW1zOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLm1lbnVJdGVtcy5maWx0ZXIoKGkpID0+IGluY2x1ZGVJdGVtcy5pbmNsdWRlcyhpLm5hbWUgYXMgc3RyaW5nKSk7XG4gIH1cbn1cbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3NlcnZpY2VzL2NvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0QsTUFBTSxPQUFPLG1DQUFtQztJQUhoRDtRQUlVLGFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLE1BQU0sQ0FBOEMsSUFBSSxDQUFDLENBQUM7UUFDekUsZ0JBQVcsR0FBRyxNQUFNLENBQXNFLElBQUksQ0FBQyxDQUFDO1FBRWxHLGNBQVMsR0FBaUI7WUFDaEM7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLEtBQUssRUFBRSxRQUFRO2FBQ2hCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2FBQ2Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLE9BQU87YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFB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QUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFjLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7OEdBektVLG1DQUFtQztrSEFBbkMsbUNBQW1DLGNBRmxDLE1BQU07OzJGQUVQLG1DQUFtQztrQkFIL0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbnRleHRNZW51SXRlbXNDbGlja0V2ZW50LCBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50LCBBWE1lbnVJdGVtIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNTW9kdWxlSXRlbSB9IGZyb20gJy4uL21vZHVsZS1kZXNpZ25lci9tb2R1bGUtZGVzaWduZXIudHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Nb2R1bGVEZXNpZ25lckNvbnRleHRNZW51U2VydmljZSB7XG4gIHByaXZhdGUgd29ya2Zsb3cgPSBpbmplY3QoQVhQV29ya2Zsb3dTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGNvcGllZFJlY29yZCA9IHNpZ25hbDx7IHR5cGU6IEFYTU1vZHVsZUl0ZW07IHJlY29yZDogYW55IH0gfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGVsZW1lbnREYXRhID0gc2lnbmFsPHsgZW50aXR5VHlwZTogQVhNTW9kdWxlSXRlbTsgcmVjb3JkOiBhbnk7IG1vZHVsZUlkOiBzdHJpbmcgfSB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgbWVudUl0ZW1zOiBBWE1lbnVJdGVtW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ2NyZWF0ZScsXG4gICAgICB0ZXh0OiAnQ3JlYXRlJyxcbiAgICAgIGljb246ICdmYXMgZmEtcGx1cycsXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2RlbGV0ZScsXG4gICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgIGljb246ICdmYXMgZmEtdHJhc2gnLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2RldGFpbHMnLFxuICAgICAgdGV4dDogJ0RldGFpbHMnLFxuICAgICAgaWNvbjogJ2ZhcyBmYS1leWUnLFxuICAgICAgY29sb3I6ICdnaG9zdCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnY29weScsXG4gICAgICB0ZXh0OiAnQ29weScsXG4gICAgICBpY29uOiAnZmFzIGZhLWNvcHknLFxuICAgICAgY29sb3I6ICdnaG9zdCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAncGFzdGUnLFxuICAgICAgdGV4dDogJ1Bhc3RlJyxcbiAgICAgIGljb246ICdmYXMgZmEtcGFzdGUnLFxuICAgICAgY29sb3I6ICdnaG9zdCcsXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgfSxcbiAgXTtcblxuICBvcGVuKGU6IEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldEVsZW1lbnQ7XG4gICAgY29uc3QgZWxlbWVudFR5cGUgPSB0YXJnZXQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1lbGVtZW50VHlwZScpO1xuXG4gICAgY29uc3QgeyBkYXRhIH0gPSB0YXJnZXQgYXMgYW55O1xuXG4gICAgaWYgKGVsZW1lbnRUeXBlID09ICdtb2R1bGUnIHx8IGVsZW1lbnRUeXBlID09ICdzdWJNb2R1bGUnKSB7XG4gICAgICBjb25zdCBtb2R1bGVJZCA9IHRhcmdldD8uZ2V0QXR0cmlidXRlKCdkYXRhLW1vZHVsZUlkJyk7XG4gICAgICBjb25zdCBlbnRpdHlUeXBlID0gdGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2RhdGEtZW50aXR5VHlwZScpIGFzIEFYTU1vZHVsZUl0ZW07XG4gICAgICBpZiAoZWxlbWVudFR5cGUgPT0gJ21vZHVsZScpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50RGF0YS5zZXQoe1xuICAgICAgICAgIGVudGl0eVR5cGUsXG4gICAgICAgICAgbW9kdWxlSWQ6IG1vZHVsZUlkIGFzIHN0cmluZyxcbiAgICAgICAgICByZWNvcmQ6IHtcbiAgICAgICAgICAgIGlkOiBtb2R1bGVJZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgZS5pdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKFsnZGV0YWlscycsICdkZWxldGUnXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVsZW1lbnREYXRhLnNldCh7XG4gICAgICAgICAgZW50aXR5VHlwZSxcbiAgICAgICAgICBtb2R1bGVJZDogbW9kdWxlSWQgYXMgc3RyaW5nLFxuICAgICAgICAgIHJlY29yZDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcyhbJ2NyZWF0ZScsICdwYXN0ZSddKTtcbiAgICAgICAgY29uc3QgY3VzdG9tTWVudUl0ZW1zID0gaXRlbXMubWFwKChpKSA9PlxuICAgICAgICAgIGkubmFtZSA9PSAncGFzdGUnID8geyAuLi5pLCBkaXNhYmxlZDogZW50aXR5VHlwZSA9PSB0aGlzLmNvcGllZFJlY29yZCgpPy50eXBlID8gZmFsc2UgOiB0cnVlIH0gOiBpXG4gICAgICAgICk7XG4gICAgICAgIGUuaXRlbXMgPSBjdXN0b21NZW51SXRlbXM7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbGVtZW50VHlwZSA9PSAnc3ViTW9kdWxlSXRlbScpIHtcbiAgICAgIHRoaXMuZWxlbWVudERhdGEuc2V0KGRhdGEpO1xuICAgICAgZS5pdGVtcyA9IHRoaXMuZ2V0TWVudUl0ZW1zKFsnZGVsZXRlJywgJ2NvcHknLCAnZGV0YWlscyddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZS5pdGVtcyA9IFtdO1xuICAgICAgZS5jYW5jZWxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaXRlbUNsaWNrKGU6IEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQpIHtcbiAgICBpZiAodGhpcy5lbGVtZW50RGF0YSgpKSB7XG4gICAgICBzd2l0Y2ggKGUuaXRlbS5uYW1lKSB7XG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgICAgdGhpcy5jcmVhdGVFbnRpdHkodGhpcy5lbGVtZW50RGF0YSgpPy5lbnRpdHlUeXBlIGFzIEFYTU1vZHVsZUl0ZW0sIHRoaXMuZWxlbWVudERhdGEoKT8ubW9kdWxlSWQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2RldGFpbHMnOlxuICAgICAgICAgIHRoaXMuc2hvd0RldGFpbHModGhpcy5lbGVtZW50RGF0YSgpPy5lbnRpdHlUeXBlIGFzIEFYTU1vZHVsZUl0ZW0gfCAnbW9kdWxlJywgdGhpcy5lbGVtZW50RGF0YSgpPy5yZWNvcmQuaWQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgdGhpcy5kZWxldGVFbnRpdHkoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnREYXRhKCk/LmVudGl0eVR5cGUgYXMgQVhNTW9kdWxlSXRlbSB8ICdtb2R1bGUnLFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50RGF0YSgpPy5yZWNvcmQuaWQsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnREYXRhKCk/Lm1vZHVsZUlkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjb3B5JzpcbiAgICAgICAgICB0aGlzLmNvcHlSZWNvcmQodGhpcy5lbGVtZW50RGF0YSgpPy5lbnRpdHlUeXBlIGFzIEFYTU1vZHVsZUl0ZW0sIHRoaXMuZWxlbWVudERhdGEoKT8ucmVjb3JkKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdwYXN0ZSc6XG4gICAgICAgICAgdGhpcy5wYXN0ZVJlY29yZCh0aGlzLmVsZW1lbnREYXRhKCk/Lm1vZHVsZUlkIGFzIHN0cmluZyk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVFbnRpdHkoZW50aXR5VHlwZTogJ21vZHVsZScgfCBBWE1Nb2R1bGVJdGVtLCBtb2R1bGVJZD86IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnY3JlYXRlLW1vZHVsZS1lbnRpdHknLCB7XG4gICAgICBlbnRpdHk6IGBhcHBsaWNhdGlvbi1tYW5hZ2VtZW50LiR7ZW50aXR5VHlwZX1gLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2R1bGVJZCxcbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIHR5cGU6IGVudGl0eVR5cGUsXG4gICAgICAgIG1vZHVsZUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNob3dEZXRhaWxzKGVudGl0eVR5cGU6ICdtb2R1bGUnIHwgQVhNTW9kdWxlSXRlbSwgaWQ6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnc2hvdy1tb2R1bGUtZW50aXR5LWRldGFpbHMnLCB7XG4gICAgICBlbnRpdHk6IGBhcHBsaWNhdGlvbi1tYW5hZ2VtZW50LiR7ZW50aXR5VHlwZX1gLFxuICAgICAgZGF0YToge1xuICAgICAgICBpZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvcHlSZWNvcmQoZW50aXR5VHlwZTogQVhNTW9kdWxlSXRlbSwgcmVjb3JkOiBhbnkpIHtcbiAgICBjb25zdCBuZXdSZWNvcmQgPSB7IC4uLnJlY29yZCwgbW9kdWxlSWQ6IHVuZGVmaW5lZCwgaWQ6IHVuZGVmaW5lZCB9O1xuICAgIHRoaXMuY29waWVkUmVjb3JkLnNldCh7IHR5cGU6IGVudGl0eVR5cGUsIHJlY29yZDogbmV3UmVjb3JkIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwYXN0ZVJlY29yZChtb2R1bGVJZDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuY29waWVkUmVjb3JkKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMud29ya2Zsb3cuZXhlY3V0ZSgnY3JlYXRlLW1vZHVsZS1lbnRpdHknLCB7XG4gICAgICAgIGVudGl0eTogYGFwcGxpY2F0aW9uLW1hbmFnZW1lbnQuJHt0aGlzLmNvcGllZFJlY29yZCgpPy50eXBlfWAsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi50aGlzLmNvcGllZFJlY29yZCgpPy5yZWNvcmQsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICB0eXBlOiB0aGlzLmNvcGllZFJlY29yZCgpPy50eXBlLFxuICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWxldGVFbnRpdHkoZW50aXR5VHlwZTogJ21vZHVsZScgfCBBWE1Nb2R1bGVJdGVtLCBpZDogc3RyaW5nW10gfCBzdHJpbmcsIG1vZHVsZUlkPzogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy53b3JrZmxvdy5leGVjdXRlKCdkZWxldGUtZW50aXR5Jywge1xuICAgICAgZW50aXR5OiBgYXBwbGljYXRpb24tbWFuYWdlbWVudC4ke2VudGl0eVR5cGV9YCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaWQsXG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgdHlwZTogZW50aXR5VHlwZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1lbnVJdGVtcyhpbmNsdWRlSXRlbXM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudUl0ZW1zLmZpbHRlcigoaSkgPT4gaW5jbHVkZUl0ZW1zLmluY2x1ZGVzKGkubmFtZSBhcyBzdHJpbmcpKTtcbiAgfVxufVxuIl19
@@ -1,3 +1,27 @@
1
+ import { AXPWorkflowNavigateAction } from '@acorex/platform/common';
2
+ import { AXPWorkflowAction } from '@acorex/platform/workflow';
3
+ import { inject, Injectable } from '@angular/core';
4
+ import * as i0 from "@angular/core";
5
+ export class AXPShowModuleEntityDetailViewAction extends AXPWorkflowAction {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.navigation = inject(AXPWorkflowNavigateAction);
9
+ }
10
+ async execute(context) {
11
+ const [module, entity] = context.getVariable('entity').split('.');
12
+ const { id } = context.getVariable('data');
13
+ const newPayload = {
14
+ commands: `/console/module-designer/m/${module}/e/${entity}/${id}/view`,
15
+ };
16
+ context.setVariable('payload', newPayload);
17
+ this.navigation.execute(context);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
20
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction, decorators: [{
23
+ type: Injectable
24
+ }] });
1
25
  export const AXPCreateModuleEntityWorkflow = {
2
26
  startStepId: 'show-popup',
3
27
  steps: {
@@ -39,4 +63,4 @@ export const AXPCreateModuleEntityWorkflow = {
39
63
  },
40
64
  },
41
65
  };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZHVsZS1lbnRpdHkud29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3dvcmtmbG93cy9jcmVhdGUtbW9kdWxlLWVudGl0eS53b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBZ0I7SUFDeEQsV0FBVyxFQUFFLFlBQVk7SUFDekIsS0FBSyxFQUFFO1FBQ0wsWUFBWSxFQUFFO1lBQ1osTUFBTSxFQUFFLDRCQUE0QjtZQUNwQyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxxQ0FBcUMsRUFBRSxDQUFDO29CQUNuRixVQUFVLEVBQUUsWUFBWTtpQkFDekI7YUFDRjtTQUNGO1FBQ0QsWUFBWSxFQUFFO1lBQ1osTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxnQkFBZ0I7Z0JBQ3ZCLE9BQU8sRUFBRSwyQ0FBMkM7YUFDckQ7WUFDRCxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsVUFBVSxFQUFFLGdCQUFnQjtpQkFDN0I7YUFDRjtTQUNGO1FBQ0QsZ0JBQWdCLEVBQUU7WUFDaEIsTUFBTSxFQUFFLGdDQUFnQztZQUN4QyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSwwQ0FBMEMsRUFBRSxDQUFDO29CQUN4RixVQUFVLEVBQUUsYUFBYTtpQkFDMUI7YUFDRjtTQUNGO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsRUFBRSxFQUFFLGFBQWE7WUFDakIsTUFBTSxFQUFFLHFDQUFxQztTQUM5QztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdvcmtmbG93IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5cbmV4cG9ydCBjb25zdCBBWFBDcmVhdGVNb2R1bGVFbnRpdHlXb3JrZmxvdzogQVhQV29ya2Zsb3cgPSB7XG4gIHN0YXJ0U3RlcElkOiAnc2hvdy1wb3B1cCcsXG4gIHN0ZXBzOiB7XG4gICAgJ3Nob3ctcG9wdXAnOiB7XG4gICAgICBhY3Rpb246ICdBWFBFbnRpdHlDcmVhdGVQb3B1cEFjdGlvbicsXG4gICAgICBuZXh0U3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbmRpdGlvbnM6IFt7IHR5cGU6ICdTSU5HTEUnLCBleHByZXNzaW9uOiAnY29udGV4dC5nZXRPdXRwdXQoXCJyZXN1bHRcIikgPT0gdHJ1ZScgfV0sXG4gICAgICAgICAgbmV4dFN0ZXBJZDogJ3Nob3ctdG9hc3QnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdzaG93LXRvYXN0Jzoge1xuICAgICAgYWN0aW9uOiAnQVhQVG9hc3RBY3Rpb24nLFxuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgdGl0bGU6ICdFbnRpdHkgQ3JlYXRlZCcsXG4gICAgICAgIGNvbnRlbnQ6ICdOZXcgUmVjb3JkIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLicsXG4gICAgICB9LFxuICAgICAgbmV4dFN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb25kaXRpb25zOiBbXSxcbiAgICAgICAgICBuZXh0U3RlcElkOiAnZGlzcGF0Y2gtZXZlbnQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdkaXNwYXRjaC1ldmVudCc6IHtcbiAgICAgIGFjdGlvbjogJ0FYUEVudGl0eUNyZWF0ZVN1Ym1pdHRlZEFjdGlvbicsXG4gICAgICBuZXh0U3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbmRpdGlvbnM6IFt7IHR5cGU6ICdTSU5HTEUnLCBleHByZXNzaW9uOiAnY29udGV4dC5nZXRWYXJpYWJsZShcInJlZGlyZWN0XCIpICE9IGZhbHNlJyB9XSxcbiAgICAgICAgICBuZXh0U3RlcElkOiAnc2hvdy1lbnRpdHknLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdzaG93LWVudGl0eSc6IHtcbiAgICAgIGlkOiAnc2hvdy1lbnRpdHknLFxuICAgICAgYWN0aW9uOiAnQVhQU2hvd01vZHVsZUVudGl0eURldGFpbFZpZXdBY3Rpb24nLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZHVsZS1lbnRpdHkud29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3dvcmtmbG93cy9jcmVhdGUtbW9kdWxlLWVudGl0eS53b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQWUsaUJBQWlCLEVBQXNCLE1BQU0sMkJBQTJCLENBQUM7QUFDL0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxpQkFBaUI7SUFEMUU7O1FBRVUsZUFBVSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBVXhEO0lBVEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUN2QyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLFFBQVEsRUFBRSw4QkFBOEIsTUFBTSxNQUFNLE1BQU0sSUFBSSxFQUFFLE9BQU87U0FDeEUsQ0FBQztRQUNGLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBVlUsbUNBQW1DO2tIQUFuQyxtQ0FBbUM7OzJGQUFuQyxtQ0FBbUM7a0JBRC9DLFVBQVU7O0FBY1gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQWdCO0lBQ3hELFdBQVcsRUFBRSxZQUFZO0lBQ3pCLEtBQUssRUFBRTtRQUNMLFlBQVksRUFBRTtZQUNaLE1BQU0sRUFBRSw0QkFBNEI7WUFDcEMsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUscUNBQXFDLEVBQUUsQ0FBQztvQkFDbkYsVUFBVSxFQUFFLFlBQVk7aUJBQ3pCO2FBQ0Y7U0FDRjtRQUNELFlBQVksRUFBRTtZQUNaLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixPQUFPLEVBQUUsMkNBQTJDO2FBQ3JEO1lBQ0QsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFVBQVUsRUFBRSxFQUFFO29CQUNkLFVBQVUsRUFBRSxnQkFBZ0I7aUJBQzdCO2FBQ0Y7U0FDRjtRQUNELGdCQUFnQixFQUFFO1lBQ2hCLE1BQU0sRUFBRSxnQ0FBZ0M7WUFDeEMsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsMENBQTBDLEVBQUUsQ0FBQztvQkFDeEYsVUFBVSxFQUFFLGFBQWE7aUJBQzFCO2FBQ0Y7U0FDRjtRQUNELGFBQWEsRUFBRTtZQUNiLEVBQUUsRUFBRSxhQUFhO1lBQ2pCLE1BQU0sRUFBRSxxQ0FBcUM7U0FDOUM7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXb3JrZmxvd05hdmlnYXRlQWN0aW9uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3csIEFYUFdvcmtmbG93QWN0aW9uLCBBWFBXb3JrZmxvd0NvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhQU2hvd01vZHVsZUVudGl0eURldGFpbFZpZXdBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gIHByaXZhdGUgbmF2aWdhdGlvbiA9IGluamVjdChBWFBXb3JrZmxvd05hdmlnYXRlQWN0aW9uKTtcbiAgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBbbW9kdWxlLCBlbnRpdHldID0gY29udGV4dC5nZXRWYXJpYWJsZSgnZW50aXR5Jykuc3BsaXQoJy4nKTtcbiAgICBjb25zdCB7IGlkIH0gPSBjb250ZXh0LmdldFZhcmlhYmxlKCdkYXRhJyk7XG4gICAgY29uc3QgbmV3UGF5bG9hZCA9IHtcbiAgICAgIGNvbW1hbmRzOiBgL2NvbnNvbGUvbW9kdWxlLWRlc2lnbmVyL20vJHttb2R1bGV9L2UvJHtlbnRpdHl9LyR7aWR9L3ZpZXdgLFxuICAgIH07XG4gICAgY29udGV4dC5zZXRWYXJpYWJsZSgncGF5bG9hZCcsIG5ld1BheWxvYWQpO1xuICAgIHRoaXMubmF2aWdhdGlvbi5leGVjdXRlKGNvbnRleHQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBWFBDcmVhdGVNb2R1bGVFbnRpdHlXb3JrZmxvdzogQVhQV29ya2Zsb3cgPSB7XG4gIHN0YXJ0U3RlcElkOiAnc2hvdy1wb3B1cCcsXG4gIHN0ZXBzOiB7XG4gICAgJ3Nob3ctcG9wdXAnOiB7XG4gICAgICBhY3Rpb246ICdBWFBFbnRpdHlDcmVhdGVQb3B1cEFjdGlvbicsXG4gICAgICBuZXh0U3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbmRpdGlvbnM6IFt7IHR5cGU6ICdTSU5HTEUnLCBleHByZXNzaW9uOiAnY29udGV4dC5nZXRPdXRwdXQoXCJyZXN1bHRcIikgPT0gdHJ1ZScgfV0sXG4gICAgICAgICAgbmV4dFN0ZXBJZDogJ3Nob3ctdG9hc3QnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdzaG93LXRvYXN0Jzoge1xuICAgICAgYWN0aW9uOiAnQVhQVG9hc3RBY3Rpb24nLFxuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgdGl0bGU6ICdFbnRpdHkgQ3JlYXRlZCcsXG4gICAgICAgIGNvbnRlbnQ6ICdOZXcgUmVjb3JkIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLicsXG4gICAgICB9LFxuICAgICAgbmV4dFN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb25kaXRpb25zOiBbXSxcbiAgICAgICAgICBuZXh0U3RlcElkOiAnZGlzcGF0Y2gtZXZlbnQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdkaXNwYXRjaC1ldmVudCc6IHtcbiAgICAgIGFjdGlvbjogJ0FYUEVudGl0eUNyZWF0ZVN1Ym1pdHRlZEFjdGlvbicsXG4gICAgICBuZXh0U3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbmRpdGlvbnM6IFt7IHR5cGU6ICdTSU5HTEUnLCBleHByZXNzaW9uOiAnY29udGV4dC5nZXRWYXJpYWJsZShcInJlZGlyZWN0XCIpICE9IGZhbHNlJyB9XSxcbiAgICAgICAgICBuZXh0U3RlcElkOiAnc2hvdy1lbnRpdHknLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgICdzaG93LWVudGl0eSc6IHtcbiAgICAgIGlkOiAnc2hvdy1lbnRpdHknLFxuICAgICAgYWN0aW9uOiAnQVhQU2hvd01vZHVsZUVudGl0eURldGFpbFZpZXdBY3Rpb24nLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
@@ -1,3 +1,4 @@
1
1
  export * from './create-module-entity.workflow';
2
+ export * from './modify-property-interface.workflow';
2
3
  export * from './show-module-entity-details.workflow';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3dvcmtmbG93cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NyZWF0ZS1tb2R1bGUtZW50aXR5LndvcmtmbG93JztcbmV4cG9ydCAqIGZyb20gJy4vc2hvdy1tb2R1bGUtZW50aXR5LWRldGFpbHMud29ya2Zsb3cnO1xuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL3dvcmtmbG93cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLW1vZHVsZS1lbnRpdHkud29ya2Zsb3cnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RpZnktcHJvcGVydHktaW50ZXJmYWNlLndvcmtmbG93JztcbmV4cG9ydCAqIGZyb20gJy4vc2hvdy1tb2R1bGUtZW50aXR5LWRldGFpbHMud29ya2Zsb3cnO1xuIl19
@@ -0,0 +1,79 @@
1
+ import { AXPopupService } from '@acorex/components/popup';
2
+ import { AXPlatform } from '@acorex/core/platform';
3
+ import { AXP_ENTITY_CONFIG_TOKEN, AXPEntityDefinitionRegistryService, AXPEntityMasterUpdateViewModelFactory, } from '@acorex/platform/layout/entity';
4
+ import { AXPWorkflowAction, createWorkFlowEvent } from '@acorex/platform/workflow';
5
+ import { inject, Injectable } from '@angular/core';
6
+ import { cloneDeep } from 'lodash-es';
7
+ import * as i0 from "@angular/core";
8
+ export const AXPEntityModifyEvent = createWorkFlowEvent('[Entity] Modified');
9
+ export class AXPEntityModifyPropertyInterfacePopupAction extends AXPWorkflowAction {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.popupService = inject(AXPopupService);
13
+ this.platform = inject(AXPlatform);
14
+ this.entityRegistery = inject(AXPEntityDefinitionRegistryService);
15
+ this.config = inject(AXP_ENTITY_CONFIG_TOKEN);
16
+ this.factory = inject(AXPEntityMasterUpdateViewModelFactory);
17
+ }
18
+ async execute(context) {
19
+ const [moduleName, entityName] = context.getVariable('entity').split('.');
20
+ const { properties, id, title } = context.getVariable('data');
21
+ const entityRef = await this.entityRegistery.resolve(moduleName, entityName);
22
+ const vm = await this.factory.create(moduleName, entityName, id, properties);
23
+ const com = await this.config.viewers.master.modify();
24
+ const popup = await this.popupService.open(com, {
25
+ title: title ?? `Modify ${entityRef.formats.individual}`,
26
+ size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',
27
+ data: {
28
+ vm,
29
+ properties,
30
+ entity: entityRef,
31
+ },
32
+ });
33
+ context.setOutput('result', false);
34
+ if (popup.data?.result == true) {
35
+ context.setOutput('result', true);
36
+ context.setVariable('data', cloneDeep(popup.data.context));
37
+ }
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPEntityModifyPropertyInterfacePopupAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPEntityModifyPropertyInterfacePopupAction }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPEntityModifyPropertyInterfacePopupAction, decorators: [{
43
+ type: Injectable
44
+ }] });
45
+ export const AXPModifyPropertyInterfaceWorkflow = {
46
+ startStepId: 'modifyPopup',
47
+ steps: {
48
+ modifyPopup: {
49
+ id: 'modifyPopup',
50
+ action: 'AXPEntityModifyPropertyInterfacePopupAction',
51
+ nextSteps: [
52
+ {
53
+ conditions: [{ type: 'SINGLE', expression: 'context.getOutput("result") == true' }],
54
+ nextStepId: 'successToast',
55
+ },
56
+ ],
57
+ },
58
+ successToast: {
59
+ id: 'successToast',
60
+ action: 'AXPToastAction',
61
+ input: {
62
+ color: 'success',
63
+ title: 'Entity Modified',
64
+ content: 'Record has been successfully updated.',
65
+ },
66
+ nextSteps: [
67
+ {
68
+ conditions: [],
69
+ nextStepId: 'modifyConfirmed',
70
+ },
71
+ ],
72
+ },
73
+ modifyConfirmed: {
74
+ id: 'modifyConfirmed',
75
+ action: 'AXPEntityModifyConfirmedAction',
76
+ },
77
+ },
78
+ };
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LXByb3BlcnR5LWludGVyZmFjZS53b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvd29ya2Zsb3dzL21vZGlmeS1wcm9wZXJ0eS1pbnRlcmZhY2Uud29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGtDQUFrQyxFQUNsQyxxQ0FBcUMsR0FDdEMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQWUsaUJBQWlCLEVBQXNCLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFdEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsbUJBQW1CLENBQWtDLG1CQUFtQixDQUFDLENBQUM7QUFHOUcsTUFBTSxPQUFPLDJDQUE0QyxTQUFRLGlCQUFpQjtJQURsRjs7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxhQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDN0QsV0FBTSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxNQUFNLENBQUMscUNBQXFDLENBQUMsQ0FBQztLQXdCakU7SUF0QkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUN2QyxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQVMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0UsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU3RSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0RCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM5QyxLQUFLLEVBQUUsS0FBSyxJQUFJLFVBQVUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDeEQsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDMUUsSUFBSSxFQUFFO2dCQUNKLEVBQUU7Z0JBQ0YsVUFBVTtnQkFDVixNQUFNLEVBQUUsU0FBUzthQUNsQjtTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDL0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQzs4R0E1QlUsMkNBQTJDO2tIQUEzQywyQ0FBMkM7OzJGQUEzQywyQ0FBMkM7a0JBRHZELFVBQVU7O0FBZ0NYLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFnQjtJQUM3RCxXQUFXLEVBQUUsYUFBYTtJQUMxQixLQUFLLEVBQUU7UUFDTCxXQUFXLEVBQUU7WUFDWCxFQUFFLEVBQUUsYUFBYTtZQUNqQixNQUFNLEVBQUUsNkNBQTZDO1lBQ3JELFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLHFDQUFxQyxFQUFFLENBQUM7b0JBQ25GLFVBQVUsRUFBRSxjQUFjO2lCQUMzQjthQUNGO1NBQ0Y7UUFDRCxZQUFZLEVBQUU7WUFDWixFQUFFLEVBQUUsY0FBYztZQUNsQixNQUFNLEVBQUUsZ0JBQWdCO1lBQ3hCLEtBQUssRUFBRTtnQkFDTCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsT0FBTyxFQUFFLHVDQUF1QzthQUNqRDtZQUNELFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxVQUFVLEVBQUUsRUFBRTtvQkFDZCxVQUFVLEVBQUUsaUJBQWlCO2lCQUM5QjthQUNGO1NBQ0Y7UUFDRCxlQUFlLEVBQUU7WUFDZixFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLE1BQU0sRUFBRSxnQ0FBZ0M7U0FDekM7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFBsYXRmb3JtIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7XG4gIEFYUF9FTlRJVFlfQ09ORklHX1RPS0VOLFxuICBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlLFxuICBBWFBFbnRpdHlNYXN0ZXJVcGRhdGVWaWV3TW9kZWxGYWN0b3J5LFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3csIEFYUFdvcmtmbG93QWN0aW9uLCBBWFBXb3JrZmxvd0NvbnRleHQsIGNyZWF0ZVdvcmtGbG93RXZlbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IGNvbnN0IEFYUEVudGl0eU1vZGlmeUV2ZW50ID0gY3JlYXRlV29ya0Zsb3dFdmVudDx7IGVudGl0eTogc3RyaW5nOyB2YWx1ZXM6IGFueSB9PignW0VudGl0eV0gTW9kaWZpZWQnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1vZGlmeVByb3BlcnR5SW50ZXJmYWNlUG9wdXBBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybSA9IGluamVjdChBWFBsYXRmb3JtKTtcbiAgcHJpdmF0ZSBlbnRpdHlSZWdpc3RlcnkgPSBpbmplY3QoQVhQRW50aXR5RGVmaW5pdGlvblJlZ2lzdHJ5U2VydmljZSk7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KEFYUF9FTlRJVFlfQ09ORklHX1RPS0VOKTtcbiAgcHJpdmF0ZSBmYWN0b3J5ID0gaW5qZWN0KEFYUEVudGl0eU1hc3RlclVwZGF0ZVZpZXdNb2RlbEZhY3RvcnkpO1xuXG4gIGFzeW5jIGV4ZWN1dGUoY29udGV4dDogQVhQV29ya2Zsb3dDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgW21vZHVsZU5hbWUsIGVudGl0eU5hbWVdID0gY29udGV4dC5nZXRWYXJpYWJsZTxzdHJpbmc+KCdlbnRpdHknKS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHsgcHJvcGVydGllcywgaWQsIHRpdGxlIH0gPSBjb250ZXh0LmdldFZhcmlhYmxlKCdkYXRhJyk7XG4gICAgY29uc3QgZW50aXR5UmVmID0gYXdhaXQgdGhpcy5lbnRpdHlSZWdpc3RlcnkucmVzb2x2ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lKTtcbiAgICBjb25zdCB2bSA9IGF3YWl0IHRoaXMuZmFjdG9yeS5jcmVhdGUobW9kdWxlTmFtZSwgZW50aXR5TmFtZSwgaWQsIHByb3BlcnRpZXMpO1xuXG4gICAgY29uc3QgY29tID0gYXdhaXQgdGhpcy5jb25maWcudmlld2Vycy5tYXN0ZXIubW9kaWZ5KCk7XG4gICAgY29uc3QgcG9wdXAgPSBhd2FpdCB0aGlzLnBvcHVwU2VydmljZS5vcGVuKGNvbSwge1xuICAgICAgdGl0bGU6IHRpdGxlID8/IGBNb2RpZnkgJHtlbnRpdHlSZWYuZm9ybWF0cy5pbmRpdmlkdWFsfWAsXG4gICAgICBzaXplOiB0aGlzLnBsYXRmb3JtLmlzKCdNb2JpbGUnKSB8fCB0aGlzLnBsYXRmb3JtLmlzKCdTTScpID8gJ2Z1bGwnIDogJ21kJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdm0sXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIGVudGl0eTogZW50aXR5UmVmLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb250ZXh0LnNldE91dHB1dCgncmVzdWx0JywgZmFsc2UpO1xuICAgIGlmIChwb3B1cC5kYXRhPy5yZXN1bHQgPT0gdHJ1ZSkge1xuICAgICAgY29udGV4dC5zZXRPdXRwdXQoJ3Jlc3VsdCcsIHRydWUpO1xuICAgICAgY29udGV4dC5zZXRWYXJpYWJsZSgnZGF0YScsIGNsb25lRGVlcChwb3B1cC5kYXRhLmNvbnRleHQpKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYUE1vZGlmeVByb3BlcnR5SW50ZXJmYWNlV29ya2Zsb3c6IEFYUFdvcmtmbG93ID0ge1xuICBzdGFydFN0ZXBJZDogJ21vZGlmeVBvcHVwJyxcbiAgc3RlcHM6IHtcbiAgICBtb2RpZnlQb3B1cDoge1xuICAgICAgaWQ6ICdtb2RpZnlQb3B1cCcsXG4gICAgICBhY3Rpb246ICdBWFBFbnRpdHlNb2RpZnlQcm9wZXJ0eUludGVyZmFjZVBvcHVwQWN0aW9uJyxcbiAgICAgIG5leHRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgY29uZGl0aW9uczogW3sgdHlwZTogJ1NJTkdMRScsIGV4cHJlc3Npb246ICdjb250ZXh0LmdldE91dHB1dChcInJlc3VsdFwiKSA9PSB0cnVlJyB9XSxcbiAgICAgICAgICBuZXh0U3RlcElkOiAnc3VjY2Vzc1RvYXN0JyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICBzdWNjZXNzVG9hc3Q6IHtcbiAgICAgIGlkOiAnc3VjY2Vzc1RvYXN0JyxcbiAgICAgIGFjdGlvbjogJ0FYUFRvYXN0QWN0aW9uJyxcbiAgICAgIGlucHV0OiB7XG4gICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgIHRpdGxlOiAnRW50aXR5IE1vZGlmaWVkJyxcbiAgICAgICAgY29udGVudDogJ1JlY29yZCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdXBkYXRlZC4nLFxuICAgICAgfSxcbiAgICAgIG5leHRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgY29uZGl0aW9uczogW10sXG4gICAgICAgICAgbmV4dFN0ZXBJZDogJ21vZGlmeUNvbmZpcm1lZCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgbW9kaWZ5Q29uZmlybWVkOiB7XG4gICAgICBpZDogJ21vZGlmeUNvbmZpcm1lZCcsXG4gICAgICBhY3Rpb246ICdBWFBFbnRpdHlNb2RpZnlDb25maXJtZWRBY3Rpb24nLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
@@ -11,10 +11,10 @@ export class AXPAuthMasterLayoutComponent {
11
11
  this.platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);
12
12
  }
13
13
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPAuthMasterLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPAuthMasterLayoutComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"ax-w-full ax-h-full ax-flex\">\n <div class=\"ax-flex-1 ax-bg-surface ax-flex ax-flex-col ax-items-center ax-justify-between ax-py-12\">\n <router-outlet></router-outlet>\n <div class=\"ax-flex ax-justify-between\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n <div class=\"ax-hidden lg:ax-flex ax-bg-primary-500 ax-flex-1 axp-auth-bk\">\n <div class=\"ax-flex ax-flex-col ax-text-primary-fore ax-justify-between ax-px-48 ax-py-20 ax-text-center\">\n <div>\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\n class=\"ax-mx-auto ax-text-2xl\"></axp-logo>\n </div>\n <div>\n <p class=\"ax-font-black ax-text-4xl ax-mb-4\">\n {{authConfig.signinPage?.slogan}}\n </p>\n <p>\n {{authConfig.signinPage?.description}}\n </p>\n </div>\n </div>\n </div>\n</div>", styles: [".auth-footer-links{gap:1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.auth-footer-links a{color:rgba(var(--ax-color-primary-500));cursor:pointer}.auth-footer-links a:hover{text-decoration:underline}.auth-footer-links a:visited{color:rgba(var(--ax-color-primary-700))}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["source"] }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i2.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name"] }], encapsulation: i0.ViewEncapsulation.None }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPAuthMasterLayoutComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"ax-w-full ax-h-full ax-flex\">\n <div class=\"ax-flex-1 ax-bg-surface ax-flex ax-flex-col ax-items-center ax-justify-between ax-py-12\">\n <router-outlet></router-outlet>\n <div class=\"ax-flex ax-justify-between\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n <div class=\"ax-hidden lg:ax-flex ax-bg-primary-500 ax-flex-1 axp-auth-bk\">\n <div class=\"ax-flex ax-w-full ax-flex-col ax-text-primary-fore ax-justify-between ax-px-48 ax-py-20 ax-text-center\">\n <div>\n <axp-logo\n [source]=\"platformConfig.logo?.colored\"\n [attr.alt]=\"platformConfig.title\"\n class=\"ax-mx-auto ax-text-2xl\"\n ></axp-logo>\n </div>\n <div>\n <p class=\"ax-font-black ax-text-4xl ax-mb-4\">{{authConfig.signinPage?.slogan}}</p>\n <p>{{authConfig.signinPage?.description}}</p>\n </div>\n </div>\n </div>\n</div>\n", styles: [".auth-footer-links{gap:1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.auth-footer-links a{color:rgba(var(--ax-color-primary-500));cursor:pointer}.auth-footer-links a:hover{text-decoration:underline}.auth-footer-links a:visited{color:rgba(var(--ax-color-primary-700))}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["source"] }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i2.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name"] }], encapsulation: i0.ViewEncapsulation.None }); }
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPAuthMasterLayoutComponent, decorators: [{
17
17
  type: Component,
18
- args: [{ imports: [RouterModule, AXPLogoComponent, AXPComponentSlotModule], standalone: true, encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-w-full ax-h-full ax-flex\">\n <div class=\"ax-flex-1 ax-bg-surface ax-flex ax-flex-col ax-items-center ax-justify-between ax-py-12\">\n <router-outlet></router-outlet>\n <div class=\"ax-flex ax-justify-between\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n <div class=\"ax-hidden lg:ax-flex ax-bg-primary-500 ax-flex-1 axp-auth-bk\">\n <div class=\"ax-flex ax-flex-col ax-text-primary-fore ax-justify-between ax-px-48 ax-py-20 ax-text-center\">\n <div>\n <axp-logo [source]=\"platformConfig.logo?.colored\" [attr.alt]=\"platformConfig.title\"\n class=\"ax-mx-auto ax-text-2xl\"></axp-logo>\n </div>\n <div>\n <p class=\"ax-font-black ax-text-4xl ax-mb-4\">\n {{authConfig.signinPage?.slogan}}\n </p>\n <p>\n {{authConfig.signinPage?.description}}\n </p>\n </div>\n </div>\n </div>\n</div>", styles: [".auth-footer-links{gap:1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.auth-footer-links a{color:rgba(var(--ax-color-primary-500));cursor:pointer}.auth-footer-links a:hover{text-decoration:underline}.auth-footer-links a:visited{color:rgba(var(--ax-color-primary-700))}\n"] }]
18
+ args: [{ imports: [RouterModule, AXPLogoComponent, AXPComponentSlotModule], standalone: true, encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-w-full ax-h-full ax-flex\">\n <div class=\"ax-flex-1 ax-bg-surface ax-flex ax-flex-col ax-items-center ax-justify-between ax-py-12\">\n <router-outlet></router-outlet>\n <div class=\"ax-flex ax-justify-between\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n <div class=\"ax-hidden lg:ax-flex ax-bg-primary-500 ax-flex-1 axp-auth-bk\">\n <div class=\"ax-flex ax-w-full ax-flex-col ax-text-primary-fore ax-justify-between ax-px-48 ax-py-20 ax-text-center\">\n <div>\n <axp-logo\n [source]=\"platformConfig.logo?.colored\"\n [attr.alt]=\"platformConfig.title\"\n class=\"ax-mx-auto ax-text-2xl\"\n ></axp-logo>\n </div>\n <div>\n <p class=\"ax-font-black ax-text-4xl ax-mb-4\">{{authConfig.signinPage?.slogan}}</p>\n <p>{{authConfig.signinPage?.description}}</p>\n </div>\n </div>\n </div>\n</div>\n", styles: [".auth-footer-links{gap:1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.auth-footer-links a{color:rgba(var(--ax-color-primary-500));cursor:pointer}.auth-footer-links a:hover{text-decoration:underline}.auth-footer-links a:visited{color:rgba(var(--ax-color-primary-700))}\n"] }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLmxheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvc2hhcmVkL2xheW91dHMvbWFzdGVyL21hc3Rlci5sYXlvdXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3NoYXJlZC9sYXlvdXRzL21hc3Rlci9tYXN0ZXIubGF5b3V0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBUzdELE1BQU0sT0FBTyw0QkFBNEI7SUFQekM7UUFRWSxlQUFVLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztLQUM5RDs4R0FIWSw0QkFBNEI7a0dBQTVCLDRCQUE0Qix3RUNaekMsdy9CQXlCTSxzVkRqQk0sWUFBWSx5TUFBRSxnQkFBZ0Isd0VBQUUsc0JBQXNCOzsyRkFJckQsNEJBQTRCO2tCQVB4QyxTQUFTOzhCQUdDLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLGNBQ3JELElBQUksaUJBQ0QsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUENvbXBvbmVudFNsb3RNb2R1bGUsIEFYUExvZ29Db21wb25lbnQsIEFYUF9QTEFURk9STV9DT05GSUdfVE9LRU4gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWE1fQVVUSF9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9hdXRoLmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ21hc3Rlci5sYXlvdXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydtYXN0ZXIubGF5b3V0LnNjc3MnXSxcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZSwgQVhQTG9nb0NvbXBvbmVudCwgQVhQQ29tcG9uZW50U2xvdE1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQVhQQXV0aE1hc3RlckxheW91dENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBhdXRoQ29uZmlnID0gaW5qZWN0KEFYTV9BVVRIX0NPTkZJR19UT0tFTik7XG4gIHByb3RlY3RlZCBwbGF0Zm9ybUNvbmZpZyA9IGluamVjdChBWFBfUExBVEZPUk1fQ09ORklHX1RPS0VOKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJheC13LWZ1bGwgYXgtaC1mdWxsIGF4LWZsZXhcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWZsZXgtMSBheC1iZy1zdXJmYWNlIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1weS0xMlwiPlxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdXRoLWZvb3Rlci1saW5rc1wiPlxuICAgICAgICA8YXhwLWNvbXBvbmVudC1zbG90IG5hbWU9XCJhdXRoLWZvb3Rlci1saW5rc1wiPjwvYXhwLWNvbXBvbmVudC1zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtaGlkZGVuIGxnOmF4LWZsZXggYXgtYmctcHJpbWFyeS01MDAgYXgtZmxleC0xIGF4cC1hdXRoLWJrXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtdGV4dC1wcmltYXJ5LWZvcmUgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LXB4LTQ4IGF4LXB5LTIwIGF4LXRleHQtY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8YXhwLWxvZ28gW3NvdXJjZV09XCJwbGF0Zm9ybUNvbmZpZy5sb2dvPy5jb2xvcmVkXCIgW2F0dHIuYWx0XT1cInBsYXRmb3JtQ29uZmlnLnRpdGxlXCJcbiAgICAgICAgICBjbGFzcz1cImF4LW14LWF1dG8gYXgtdGV4dC0yeGxcIj48L2F4cC1sb2dvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtYmxhY2sgYXgtdGV4dC00eGwgYXgtbWItNFwiPlxuICAgICAgICAgIHt7YXV0aENvbmZpZy5zaWduaW5QYWdlPy5zbG9nYW59fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIHt7YXV0aENvbmZpZy5zaWduaW5QYWdlPy5kZXNjcmlwdGlvbn19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLmxheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hdXRoL3NyYy9saWIvc2hhcmVkL2xheW91dHMvbWFzdGVyL21hc3Rlci5sYXlvdXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3NoYXJlZC9sYXlvdXRzL21hc3Rlci9tYXN0ZXIubGF5b3V0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBUzdELE1BQU0sT0FBTyw0QkFBNEI7SUFQekM7UUFRWSxlQUFVLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDM0MsbUJBQWMsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztLQUM5RDs4R0FIWSw0QkFBNEI7a0dBQTVCLDRCQUE0Qix3RUNaekMsdy9CQXlCQSxzVkRqQlksWUFBWSx5TUFBRSxnQkFBZ0Isd0VBQUUsc0JBQXNCOzsyRkFJckQsNEJBQTRCO2tCQVB4QyxTQUFTOzhCQUdDLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLGNBQ3JELElBQUksaUJBQ0QsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUENvbXBvbmVudFNsb3RNb2R1bGUsIEFYUExvZ29Db21wb25lbnQsIEFYUF9QTEFURk9STV9DT05GSUdfVE9LRU4gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWE1fQVVUSF9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9hdXRoLmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ21hc3Rlci5sYXlvdXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydtYXN0ZXIubGF5b3V0LnNjc3MnXSxcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZSwgQVhQTG9nb0NvbXBvbmVudCwgQVhQQ29tcG9uZW50U2xvdE1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQVhQQXV0aE1hc3RlckxheW91dENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBhdXRoQ29uZmlnID0gaW5qZWN0KEFYTV9BVVRIX0NPTkZJR19UT0tFTik7XG4gIHByb3RlY3RlZCBwbGF0Zm9ybUNvbmZpZyA9IGluamVjdChBWFBfUExBVEZPUk1fQ09ORklHX1RPS0VOKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJheC13LWZ1bGwgYXgtaC1mdWxsIGF4LWZsZXhcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWZsZXgtMSBheC1iZy1zdXJmYWNlIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1weS0xMlwiPlxuICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdXRoLWZvb3Rlci1saW5rc1wiPlxuICAgICAgICA8YXhwLWNvbXBvbmVudC1zbG90IG5hbWU9XCJhdXRoLWZvb3Rlci1saW5rc1wiPjwvYXhwLWNvbXBvbmVudC1zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtaGlkZGVuIGxnOmF4LWZsZXggYXgtYmctcHJpbWFyeS01MDAgYXgtZmxleC0xIGF4cC1hdXRoLWJrXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtdy1mdWxsIGF4LWZsZXgtY29sIGF4LXRleHQtcHJpbWFyeS1mb3JlIGF4LWp1c3RpZnktYmV0d2VlbiBheC1weC00OCBheC1weS0yMCBheC10ZXh0LWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGF4cC1sb2dvXG4gICAgICAgICAgW3NvdXJjZV09XCJwbGF0Zm9ybUNvbmZpZy5sb2dvPy5jb2xvcmVkXCJcbiAgICAgICAgICBbYXR0ci5hbHRdPVwicGxhdGZvcm1Db25maWcudGl0bGVcIlxuICAgICAgICAgIGNsYXNzPVwiYXgtbXgtYXV0byBheC10ZXh0LTJ4bFwiXG4gICAgICAgID48L2F4cC1sb2dvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtYmxhY2sgYXgtdGV4dC00eGwgYXgtbWItNFwiPnt7YXV0aENvbmZpZy5zaWduaW5QYWdlPy5zbG9nYW59fTwvcD5cbiAgICAgICAgPHA+e3thdXRoQ29uZmlnLnNpZ25pblBhZ2U/LmRlc2NyaXB0aW9ufX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==