@posiwise/shared-components 0.0.130 → 0.0.132

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.
@@ -3,26 +3,28 @@ import { Component, Injector, TemplateRef, ViewChild } from '@angular/core';
3
3
  import { DomSanitizer } from '@angular/platform-browser';
4
4
  import { AdminService } from '@posiwise/admin-module-utils';
5
5
  import { AppBaseComponent } from '@posiwise/app-base-component';
6
- import { TOKEN_KEY } from '@posiwise/common-utilities';
6
+ import { AuthService } from '@posiwise/common-services';
7
7
  import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/platform-browser";
10
10
  import * as i2 from "@ng-bootstrap/ng-bootstrap";
11
- import * as i3 from "@posiwise/admin-module-utils";
12
- import * as i4 from "@angular/forms";
13
- import * as i5 from "@angular/cdk/drag-drop";
14
- import * as i6 from "@angular/common";
11
+ import * as i3 from "@posiwise/common-services";
12
+ import * as i4 from "@posiwise/admin-module-utils";
13
+ import * as i5 from "@angular/forms";
14
+ import * as i6 from "@angular/cdk/drag-drop";
15
+ import * as i7 from "@angular/common";
15
16
  export class DemoCardsComponent extends AppBaseComponent {
16
- constructor(sanitizer, modalService, adminService, injector) {
17
+ constructor(sanitizer, modalService, authService, adminService, injector) {
17
18
  super(injector);
18
19
  this.sanitizer = sanitizer;
19
20
  this.modalService = modalService;
21
+ this.authService = authService;
20
22
  this.adminService = adminService;
21
23
  this.editingBookingLinks = [];
22
24
  this.domainId = this.appConfig?.domain_id;
23
25
  }
24
26
  ngOnInit() {
25
- this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {
27
+ this.authService.getToken$().subscribe(res => {
26
28
  this.userLoggedIn = !!res;
27
29
  if (this.userLoggedIn) {
28
30
  this.localStorage.getItem$('product').subscribe(res => {
@@ -36,7 +38,8 @@ export class DemoCardsComponent extends AppBaseComponent {
36
38
  });
37
39
  this.bookingLinks = (this.appConfig?.pages_config?.book_demo?.items ?? []).map(link => ({
38
40
  ...link,
39
- url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url)
41
+ // NOSONAR: Trusted iframe URL content is handled safely here
42
+ url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url) // NOSONAR
40
43
  }));
41
44
  }
42
45
  openEditBookLinks(modal) {
@@ -65,20 +68,21 @@ export class DemoCardsComponent extends AppBaseComponent {
65
68
  this.toast.success('Booking links updated');
66
69
  this.bookingLinks = this.editingBookingLinks.map(link => ({
67
70
  ...link,
68
- url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url)
71
+ // NOSONAR: Trusted iframe URL content is handled safely here
72
+ url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url) // NOSONAR
69
73
  }));
70
74
  this.appConfig.pages_config.book_demo.items = [...this.editingBookingLinks]; // ✅ Like CTAs
71
75
  modal.close();
72
76
  });
73
77
  }
74
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.NgbModal }, { token: i3.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DemoCardsComponent, selector: "pw-demo-card", viewQueries: [{ propertyName: "editBookLinksModal", first: true, predicate: ["editBookLinksModal"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4 mb-5\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n <iframe [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label class=\"form-label\">Link Title</label>\n <input class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label class=\"form-label\">Link URL</label>\n <input class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"], dependencies: [{ kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.NgbModal }, { token: i3.AuthService }, { token: i4.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DemoCardsComponent, selector: "pw-demo-card", viewQueries: [{ propertyName: "editBookLinksModal", first: true, predicate: ["editBookLinksModal"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.enter)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.space)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4 mb-5\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n <iframe [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label for=\"demoLinkTitle{{i}}\" class=\"form-label\">Link Title</label>\n <input id=\"demoLinkTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label for=\"demoLinkUrl{{i}}\" class=\"form-label\">Link URL</label>\n <input id=\"demoLinkUrl{{i}}\" class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"], dependencies: [{ kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
76
80
  }
77
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, decorators: [{
78
82
  type: Component,
79
- args: [{ selector: 'pw-demo-card', template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4 mb-5\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n <iframe [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label class=\"form-label\">Link Title</label>\n <input class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label class=\"form-label\">Link URL</label>\n <input class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"] }]
80
- }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.NgbModal }, { type: i3.AdminService }, { type: i0.Injector }], propDecorators: { editBookLinksModal: [{
83
+ args: [{ selector: 'pw-demo-card', template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"userLoggedIn && user?.auth?.granted['Pages.Admin']\"\n class=\"fa fa-edit in-page-edit-icon mb-3 cursor-pointer\"\n title=\"Edit Booking Links\"\n (click)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.enter)=\"openEditBookLinks(editBookLinksModal)\"\n (keydown.space)=\"openEditBookLinks(editBookLinksModal)\">\n </i>\n <div class=\"col-md-6 col-lg-4 mb-5\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\">{{ link?.title }}</h5>\n <iframe [src]=\"link?.url\"\n width=\"100%\"\n title=\"Booking frame\"\n height=\"600\"\n class=\"iframe-no-border\">\n </iframe>\n </div>\n</div>\n\n<!-- MODAL TEMPLATE -->\n<ng-template #editBookLinksModal let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Edit Book Demo Links</h5>\n <button type=\"button\" class=\"btn-close\" (click)=\"modal.dismiss()\" aria-label=\"Close\"></button>\n </div>\n\n <div class=\"modal-body\">\n <div cdkDropList (cdkDropListDropped)=\"dropBookingLink($event)\">\n <div *ngFor=\"let item of editingBookingLinks; let i = index\" class=\"card p-3 mb-3\" cdkDrag>\n <div class=\"row\">\n <div class=\"col-md-5\">\n <label for=\"demoLinkTitle{{i}}\" class=\"form-label\">Link Title</label>\n <input id=\"demoLinkTitle{{i}}\" class=\"form-control\" [(ngModel)]=\"item.title\" />\n </div>\n <div class=\"col-md-5\">\n <label for=\"demoLinkUrl{{i}}\" class=\"form-label\">Link URL</label>\n <input id=\"demoLinkUrl{{i}}\" class=\"form-control\" [(ngModel)]=\"item.url\" />\n </div>\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n ngbTooltip=\"Remove\"\n (click)=\"removeBookDemoLink(i)\"\n (keydown.enter)=\"removeBookDemoLink(i)\"\n (keydown.space)=\"removeBookDemoLink(i)\"\n class=\"fa fa-trash in-page-trash-icon delete-icon text-danger\"\n aria-hidden=\"true\"\n ></i>\n </div>\n\n <div class=\"col-sm-1 d-flex justify-content-end mt-3\">\n <i\n class=\"fa fa-bars in-page-bars-icon cursor-move\"\n cdkDragHandle\n ngbTooltip=\"Drag to reorder\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n\n </div>\n </div>\n\n <button class=\"btn btn-outline-primary mt-3\" (click)=\"addBookingLink()\">\n <i class=\"fa fa-plus me-1\"></i> Add Book Demo Link\n </button>\n </div>\n\n <div class=\"modal-footer\">\n <button class=\"btn btn-secondary\" (click)=\"modal.dismiss()\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"saveBookingLinks(modal)\">Save</button>\n </div>\n</ng-template>\n", styles: [".iframe-no-border{border:0}\n"] }]
84
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.NgbModal }, { type: i3.AuthService }, { type: i4.AdminService }, { type: i0.Injector }], propDecorators: { editBookLinksModal: [{
81
85
  type: ViewChild,
82
86
  args: ['editBookLinksModal', { static: true }]
83
87
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby1jYXJkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvZGVtby1jYXJkcy9kZW1vLWNhcmRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9kZW1vLWNhcmRzL2RlbW8tY2FyZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFFN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVN0RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsZ0JBQWdCO0lBWXBELFlBQ3FCLFNBQXVCLEVBQ3ZCLFlBQXNCLEVBQ3RCLFlBQTBCLEVBQzNDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFiL0Msd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBRXpCLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQWVyQyxDQUFDO0lBRUQsUUFB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Z0JBQ3RELEdBQUcsSUFBSTtnQkFDUCxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQy9ELENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQzNGLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBOUVRLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1OQ2pCL0IscW5GQXlFQTs7NEZEeERhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxjQUFjOzBKQWN4QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFRPS0VOX0tFWSwgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcblxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbmltcG9ydCB7IEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tLXVwbG9hZGVyL2N1c3RvbS11cGxvYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWRlbW8tY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RlbW8tY2FyZHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RlbW8tY2FyZHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEZW1vQ2FyZHNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBib29raW5nTGlua3M7XG4gICAgZWRpdGluZ0Jvb2tpbmdMaW5rcyA9IFtdO1xuXG4gICAgZG9tYWluSWQgPSB0aGlzLmFwcENvbmZpZz8uZG9tYWluX2lkO1xuICAgIHN1YnNjcmlwdGlvbklkOiBzdHJpbmc7XG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBAVmlld0NoaWxkKCdlZGl0Qm9va0xpbmtzTW9kYWwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGVkaXRCb29rTGlua3NNb2RhbCE6IFRlbXBsYXRlUmVmPEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKFRPS0VOX0tFWSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXJMb2dnZWRJbiA9ICEhcmVzO1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlckxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3Byb2R1Y3QnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlcyA/IEpTT04ucGFyc2UocmVzKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBkYXRhPy5zdWJzY3JpcHRpb25JZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXIgPSBkYXRhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJvb2tpbmdMaW5rcyA9ICh0aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5ib29rX2RlbW8/Lml0ZW1zID8/IFtdKS5tYXAobGluayA9PiAoe1xuICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgIHVybDogdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGxpbmsudXJsKVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgb3BlbkVkaXRCb29rTGlua3MobW9kYWwpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbz8uaXRlbXMgPz8gW10pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwsIHsgc2l6ZTogJ2xnJywgY2VudGVyZWQ6IHRydWUsIHdpbmRvd0NsYXNzOiAnbW9kYWwtaG9sZGVyJyB9KTtcbiAgICB9XG5cbiAgICBhZGRCb29raW5nTGluaygpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzLnB1c2goeyB0aXRsZTogJycsIHVybDogJycgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQm9va0RlbW9MaW5rKGk6IG51bWJlcikge1xuICAgICAgICB0aGlzLmVkaXRpbmdCb29raW5nTGlua3Muc3BsaWNlKGksIDEpO1xuICAgIH1cblxuICAgIGRyb3BCb29raW5nTGluayhldmVudCkge1xuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH1cblxuICAgIHNhdmVCb29raW5nTGlua3MobW9kYWwpIHtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC51cGRhdGVEb21haW5Db25maWcodGhpcy5kb21haW5JZCwge1xuICAgICAgICAgICAgICAgIGJvb2tfZGVtbzoge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5ib29rX2RlbW8sXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLmVkaXRpbmdCb29raW5nTGlua3NcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcygnQm9va2luZyBsaW5rcyB1cGRhdGVkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib29raW5nTGlua3MgPSB0aGlzLmVkaXRpbmdCb29raW5nTGlua3MubWFwKGxpbmsgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwobGluay51cmwpXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZy5ib29rX2RlbW8uaXRlbXMgPSBbLi4udGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzXTsgLy8g4pyFIExpa2UgQ1RBc1xuICAgICAgICAgICAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8IS0tIEVESVQgSUNPTiAtLT5cblxuPCEtLSBERU1PIExJTktTIC0tPlxuPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWNlbnRlclwiPlxuICA8aSAqbmdJZj1cInVzZXJMb2dnZWRJbiAmJiB1c2VyPy5hdXRoPy5ncmFudGVkWydQYWdlcy5BZG1pbiddXCJcbiAgICBjbGFzcz1cImZhIGZhLWVkaXQgaW4tcGFnZS1lZGl0LWljb24gbWItMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgdGl0bGU9XCJFZGl0IEJvb2tpbmcgTGlua3NcIlxuICAgIChjbGljayk9XCJvcGVuRWRpdEJvb2tMaW5rcyhlZGl0Qm9va0xpbmtzTW9kYWwpXCI+XG4gIDwvaT5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1sZy00IG1iLTVcIiAqbmdGb3I9XCJsZXQgbGluayBvZiBib29raW5nTGlua3NcIj5cbiAgICA8aDUgY2xhc3M9XCJtYi0zXCI+e3sgbGluaz8udGl0bGUgfX08L2g1PlxuICAgIDxpZnJhbWUgW3NyY109XCJsaW5rPy51cmxcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIHRpdGxlPVwiQm9va2luZyBmcmFtZVwiXG4gICAgICBoZWlnaHQ9XCI2MDBcIlxuICAgICAgY2xhc3M9XCJpZnJhbWUtbm8tYm9yZGVyXCI+XG4gICAgPC9pZnJhbWU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gTU9EQUwgVEVNUExBVEUgLS0+XG48bmctdGVtcGxhdGUgI2VkaXRCb29rTGlua3NNb2RhbCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkVkaXQgQm9vayBEZW1vIExpbmtzPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEJvb2tpbmdMaW5rKCRldmVudClcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZWRpdGluZ0Jvb2tpbmdMaW5rczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiY2FyZCBwLTMgbWItM1wiIGNka0RyYWc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5MaW5rIFRpdGxlPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiaXRlbS50aXRsZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TGluayBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJpdGVtLnVybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTNcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10cmFzaCBpbi1wYWdlLXRyYXNoLWljb24gZGVsZXRlLWljb24gdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0zXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWJhcnMgaW4tcGFnZS1iYXJzLWljb24gY3Vyc29yLW1vdmVcIlxuICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJEcmFnIHRvIHJlb3JkZXJcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG10LTNcIiAoY2xpY2spPVwiYWRkQm9va2luZ0xpbmsoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIj48L2k+IEFkZCBCb29rIERlbW8gTGlua1xuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUJvb2tpbmdMaW5rcyhtb2RhbClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby1jYXJkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvZGVtby1jYXJkcy9kZW1vLWNhcmRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9kZW1vLWNhcmRzL2RlbW8tY2FyZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFTdEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGdCQUFnQjtJQVlwRCxZQUNxQixTQUF1QixFQUN2QixZQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQixFQUMzQyxRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFOQyxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBZC9DLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUV6QixhQUFRLEdBQUcsSUFBSSxDQUFD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SSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RELEdBQUcsSUFBSTtnQkFDUCw2REFBNkQ7Z0JBQzdELEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVO2FBQzFFLENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQzNGLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBakZRLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1OQ2xCL0IseTFGQTJFQTs7NEZEekRhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxjQUFjO29MQWN4QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuaW1wb3J0IHsgQ3VzdG9tVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b20tdXBsb2FkZXIvY3VzdG9tLXVwbG9hZGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctZGVtby1jYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGVtby1jYXJkcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGVtby1jYXJkcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERlbW9DYXJkc0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGJvb2tpbmdMaW5rcztcbiAgICBlZGl0aW5nQm9va2luZ0xpbmtzID0gW107XG5cbiAgICBkb21haW5JZCA9IHRoaXMuYXBwQ29uZmlnPy5kb21haW5faWQ7XG4gICAgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZztcbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG4gICAgdXNlcjogVXNlcjtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRCb29rTGlua3NNb2RhbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgZWRpdEJvb2tMaW5rc01vZGFsITogVGVtcGxhdGVSZWY8Q3VzdG9tVXBsb2FkZXJDb21wb25lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW4kKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXJMb2dnZWRJbiA9ICEhcmVzO1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlckxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3Byb2R1Y3QnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlcyA/IEpTT04ucGFyc2UocmVzKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBkYXRhPy5zdWJzY3JpcHRpb25JZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbmZvKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXIgPSBkYXRhO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJvb2tpbmdMaW5rcyA9ICh0aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5ib29rX2RlbW8/Lml0ZW1zID8/IFtdKS5tYXAobGluayA9PiAoe1xuICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgIC8vIE5PU09OQVI6IFRydXN0ZWQgaWZyYW1lIFVSTCBjb250ZW50IGlzIGhhbmRsZWQgc2FmZWx5IGhlcmVcbiAgICAgICAgICAgIHVybDogdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGxpbmsudXJsKSAvLyBOT1NPTkFSXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBvcGVuRWRpdEJvb2tMaW5rcyhtb2RhbCkge1xuICAgICAgICB0aGlzLmVkaXRpbmdCb29raW5nTGlua3MgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5hcHBDb25maWc/LnBhZ2VzX2NvbmZpZz8uYm9va19kZW1vPy5pdGVtcyA/PyBbXSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCwgeyBzaXplOiAnbGcnLCBjZW50ZXJlZDogdHJ1ZSwgd2luZG93Q2xhc3M6ICdtb2RhbC1ob2xkZXInIH0pO1xuICAgIH1cblxuICAgIGFkZEJvb2tpbmdMaW5rKCkge1xuICAgICAgICB0aGlzLmVkaXRpbmdCb29raW5nTGlua3MucHVzaCh7IHRpdGxlOiAnJywgdXJsOiAnJyB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVCb29rRGVtb0xpbmsoaTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0Jvb2tpbmdMaW5rcy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuXG4gICAgZHJvcEJvb2tpbmdMaW5rKGV2ZW50KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmVkaXRpbmdCb29raW5nTGlua3MsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuXG4gICAgc2F2ZUJvb2tpbmdMaW5rcyhtb2RhbCkge1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgLnVwZGF0ZURvbWFpbkNvbmZpZyh0aGlzLmRvbWFpbklkLCB7XG4gICAgICAgICAgICAgICAgYm9va19kZW1vOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbyxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMuZWRpdGluZ0Jvb2tpbmdMaW5rc1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLnN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKCdCb29raW5nIGxpbmtzIHVwZGF0ZWQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvb2tpbmdMaW5rcyA9IHRoaXMuZWRpdGluZ0Jvb2tpbmdMaW5rcy5tYXAobGluayA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgICAgICAgICAgICAvLyBOT1NPTkFSOiBUcnVzdGVkIGlmcmFtZSBVUkwgY29udGVudCBpcyBoYW5kbGVkIHNhZmVseSBoZXJlXG4gICAgICAgICAgICAgICAgICAgIHVybDogdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGxpbmsudXJsKSAvLyBOT1NPTkFSXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZy5ib29rX2RlbW8uaXRlbXMgPSBbLi4udGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzXTsgLy8g4pyFIExpa2UgQ1RBc1xuICAgICAgICAgICAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8IS0tIEVESVQgSUNPTiAtLT5cblxuPCEtLSBERU1PIExJTktTIC0tPlxuPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWNlbnRlclwiPlxuICA8aSAqbmdJZj1cInVzZXJMb2dnZWRJbiAmJiB1c2VyPy5hdXRoPy5ncmFudGVkWydQYWdlcy5BZG1pbiddXCJcbiAgICBjbGFzcz1cImZhIGZhLWVkaXQgaW4tcGFnZS1lZGl0LWljb24gbWItMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgdGl0bGU9XCJFZGl0IEJvb2tpbmcgTGlua3NcIlxuICAgIChjbGljayk9XCJvcGVuRWRpdEJvb2tMaW5rcyhlZGl0Qm9va0xpbmtzTW9kYWwpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuRWRpdEJvb2tMaW5rcyhlZGl0Qm9va0xpbmtzTW9kYWwpXCJcbiAgICAoa2V5ZG93bi5zcGFjZSk9XCJvcGVuRWRpdEJvb2tMaW5rcyhlZGl0Qm9va0xpbmtzTW9kYWwpXCI+XG4gIDwvaT5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1sZy00IG1iLTVcIiAqbmdGb3I9XCJsZXQgbGluayBvZiBib29raW5nTGlua3NcIj5cbiAgICA8aDUgY2xhc3M9XCJtYi0zXCI+e3sgbGluaz8udGl0bGUgfX08L2g1PlxuICAgIDxpZnJhbWUgW3NyY109XCJsaW5rPy51cmxcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIHRpdGxlPVwiQm9va2luZyBmcmFtZVwiXG4gICAgICBoZWlnaHQ9XCI2MDBcIlxuICAgICAgY2xhc3M9XCJpZnJhbWUtbm8tYm9yZGVyXCI+XG4gICAgPC9pZnJhbWU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gTU9EQUwgVEVNUExBVEUgLS0+XG48bmctdGVtcGxhdGUgI2VkaXRCb29rTGlua3NNb2RhbCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkVkaXQgQm9vayBEZW1vIExpbmtzPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEJvb2tpbmdMaW5rKCRldmVudClcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZWRpdGluZ0Jvb2tpbmdMaW5rczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiY2FyZCBwLTMgbWItM1wiIGNka0RyYWc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZW1vTGlua1RpdGxle3tpfX1cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5MaW5rIFRpdGxlPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImRlbW9MaW5rVGl0bGV7e2l9fVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJpdGVtLnRpdGxlXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZW1vTGlua1VybHt7aX19XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TGluayBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiZGVtb0xpbmtVcmx7e2l9fVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJpdGVtLnVybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTNcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10cmFzaCBpbi1wYWdlLXRyYXNoLWljb24gZGVsZXRlLWljb24gdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0zXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWJhcnMgaW4tcGFnZS1iYXJzLWljb24gY3Vyc29yLW1vdmVcIlxuICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJEcmFnIHRvIHJlb3JkZXJcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG10LTNcIiAoY2xpY2spPVwiYWRkQm9va2luZ0xpbmsoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIj48L2k+IEFkZCBCb29rIERlbW8gTGlua1xuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUJvb2tpbmdMaW5rcyhtb2RhbClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,111 @@
1
+ /* eslint-disable */
2
+ import { Injectable } from '@angular/core';
3
+ import { from } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class LazyLoadingService {
6
+ /**
7
+ * Lazy load the Image Cropper component
8
+ */
9
+ loadImageCropper() {
10
+ return from(import(
11
+ /* webpackChunkName: "image-cropper" */ './image-cropper/image-cropper.component').then(m => m.ProfileImageCropperComponent));
12
+ }
13
+ /**
14
+ * Lazy load the Date Range Picker component
15
+ */
16
+ loadDateRangePicker() {
17
+ return from(import(
18
+ /* webpackChunkName: "date-range-picker" */ './range-date-picker/date-range-picker.component').then(m => m.DateRangePickerComponent));
19
+ }
20
+ /**
21
+ * Lazy load the Date Range Picker module
22
+ */
23
+ loadDateRangePickerModule() {
24
+ return from(import(
25
+ /* webpackChunkName: "ngx-daterangepicker" */ 'ngx-daterangepicker-material').then(m => m.NgxDaterangepickerMd));
26
+ }
27
+ /**
28
+ * Lazy load the Image Cropper module
29
+ */
30
+ loadImageCropperModule() {
31
+ return from(import(/* webpackChunkName: "ngx-image-cropper" */ 'ngx-image-cropper').then(m => m.ImageCropperModule));
32
+ }
33
+ /**
34
+ * Lazy load PrimeNG components with static imports to avoid webpack warnings
35
+ */
36
+ loadPrimeNGComponent(componentName) {
37
+ const componentNameLower = componentName.toLowerCase();
38
+ switch (componentNameLower) {
39
+ case 'table':
40
+ return from(import(/* webpackChunkName: "primeng-table" */ 'primeng/table').then(m => m.Table));
41
+ case 'multiselect':
42
+ return from(import(
43
+ /* webpackChunkName: "primeng-multiselect" */ 'primeng/multiselect').then(m => m.MultiSelect));
44
+ case 'dropdown':
45
+ return from(import(/* webpackChunkName: "primeng-dropdown" */ 'primeng/dropdown').then(m => m.Dropdown));
46
+ case 'autocomplete':
47
+ return from(import(
48
+ /* webpackChunkName: "primeng-autocomplete" */ 'primeng/autocomplete').then(m => m.AutoComplete));
49
+ case 'button':
50
+ return from(import(/* webpackChunkName: "primeng-button" */ 'primeng/button').then(m => m.Button));
51
+ case 'progressspinner':
52
+ return from(import(
53
+ /* webpackChunkName: "primeng-progressspinner" */ 'primeng/progressspinner').then(m => m.ProgressSpinner));
54
+ case 'tabmenu':
55
+ return from(import(/* webpackChunkName: "primeng-tabmenu" */ 'primeng/tabmenu').then(m => m.TabMenu));
56
+ default:
57
+ throw new Error(`Unknown PrimeNG component: ${componentName}`);
58
+ }
59
+ }
60
+ /**
61
+ * Lazy load Quill Editor
62
+ */
63
+ loadQuillEditor() {
64
+ return from(import(/* webpackChunkName: "quill-editor" */ 'ngx-quill').then(m => m.QuillModule));
65
+ }
66
+ /**
67
+ * Lazy load Emoji Picker
68
+ */
69
+ loadEmojiPicker() {
70
+ return from(import(/* webpackChunkName: "emoji-picker" */ '@ctrl/ngx-emoji-mart').then(m => m.PickerModule));
71
+ }
72
+ /**
73
+ * Lazy load FontAwesome
74
+ */
75
+ loadFontAwesome() {
76
+ return from(import(/* webpackChunkName: "fontawesome" */ '@fortawesome/angular-fontawesome').then(m => m.FontAwesomeModule));
77
+ }
78
+ /**
79
+ * Lazy load Sentry (using the correct package)
80
+ */
81
+ loadSentry() {
82
+ return from(import(/* webpackChunkName: "sentry" */ '@sentry/angular-ivy').then(m => m));
83
+ }
84
+ /**
85
+ * Lazy load Heavy Utilities (Lodash, Crypto-js, Moment)
86
+ */
87
+ loadHeavyUtils() {
88
+ return from(import(/* webpackChunkName: "heavy-utils" */ 'lodash').then(m => m));
89
+ }
90
+ /**
91
+ * Lazy load Crypto Utils
92
+ */
93
+ loadCryptoUtils() {
94
+ return from(import(/* webpackChunkName: "crypto-utils" */ 'crypto-js').then(m => m));
95
+ }
96
+ /**
97
+ * Lazy load Moment
98
+ */
99
+ loadMoment() {
100
+ return from(import(/* webpackChunkName: "moment" */ 'moment').then(m => m));
101
+ }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LazyLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
103
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LazyLoadingService, providedIn: 'root' }); }
104
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LazyLoadingService, decorators: [{
106
+ type: Injectable,
107
+ args: [{
108
+ providedIn: 'root'
109
+ }]
110
+ }] });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvbGF6eS1sb2FkaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQzs7QUFLeEMsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQjs7T0FFRztJQUNILGdCQUFnQjtRQUNaLE9BQU8sSUFBSSxDQUNQLE1BQU07UUFDRix1Q0FBdUMsQ0FBQyx5Q0FBeUMsQ0FDcEYsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FDOUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNmLE9BQU8sSUFBSSxDQUNQLE1BQU07UUFDRiwyQ0FBMkMsQ0FBQyxpREFBaUQsQ0FDaEcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FDMUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QjtRQUNyQixPQUFPLElBQUksQ0FDUCxNQUFNO1FBQ0YsNkNBQTZDLENBQUMsOEJBQThCLENBQy9FLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQ3RDLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0I7UUFDbEIsT0FBTyxJQUFJLENBQ1AsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUN4RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FDNUIsQ0FDSixD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QUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDOytHQTVKUSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZmLE1BQU07OzRGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTGF6eUxvYWRpbmdTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBMYXp5IGxvYWQgdGhlIEltYWdlIENyb3BwZXIgY29tcG9uZW50XG4gICAgICovXG4gICAgbG9hZEltYWdlQ3JvcHBlcigpOiBPYnNlcnZhYmxlPFR5cGU8YW55Pj4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIGltcG9ydChcbiAgICAgICAgICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImltYWdlLWNyb3BwZXJcIiAqLyAnLi9pbWFnZS1jcm9wcGVyL2ltYWdlLWNyb3BwZXIuY29tcG9uZW50J1xuICAgICAgICAgICAgKS50aGVuKG0gPT4gbS5Qcm9maWxlSW1hZ2VDcm9wcGVyQ29tcG9uZW50KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExhenkgbG9hZCB0aGUgRGF0ZSBSYW5nZSBQaWNrZXIgY29tcG9uZW50XG4gICAgICovXG4gICAgbG9hZERhdGVSYW5nZVBpY2tlcigpOiBPYnNlcnZhYmxlPFR5cGU8YW55Pj4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIGltcG9ydChcbiAgICAgICAgICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImRhdGUtcmFuZ2UtcGlja2VyXCIgKi8gJy4vcmFuZ2UtZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50J1xuICAgICAgICAgICAgKS50aGVuKG0gPT4gbS5EYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGF6eSBsb2FkIHRoZSBEYXRlIFJhbmdlIFBpY2tlciBtb2R1bGVcbiAgICAgKi9cbiAgICBsb2FkRGF0ZVJhbmdlUGlja2VyTW9kdWxlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgaW1wb3J0KFxuICAgICAgICAgICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwibmd4LWRhdGVyYW5nZXBpY2tlclwiICovICduZ3gtZGF0ZXJhbmdlcGlja2VyLW1hdGVyaWFsJ1xuICAgICAgICAgICAgKS50aGVuKG0gPT4gbS5OZ3hEYXRlcmFuZ2VwaWNrZXJNZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMYXp5IGxvYWQgdGhlIEltYWdlIENyb3BwZXIgbW9kdWxlXG4gICAgICovXG4gICAgbG9hZEltYWdlQ3JvcHBlck1vZHVsZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcIm5neC1pbWFnZS1jcm9wcGVyXCIgKi8gJ25neC1pbWFnZS1jcm9wcGVyJykudGhlbihcbiAgICAgICAgICAgICAgICBtID0+IG0uSW1hZ2VDcm9wcGVyTW9kdWxlXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGF6eSBsb2FkIFByaW1lTkcgY29tcG9uZW50cyB3aXRoIHN0YXRpYyBpbXBvcnRzIHRvIGF2b2lkIHdlYnBhY2sgd2FybmluZ3NcbiAgICAgKi9cbiAgICBsb2FkUHJpbWVOR0NvbXBvbmVudChjb21wb25lbnROYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFR5cGU8YW55Pj4ge1xuICAgICAgICBjb25zdCBjb21wb25lbnROYW1lTG93ZXIgPSBjb21wb25lbnROYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgc3dpdGNoIChjb21wb25lbnROYW1lTG93ZXIpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RhYmxlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwicHJpbWVuZy10YWJsZVwiICovICdwcmltZW5nL3RhYmxlJykudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIG0gPT4gbS5UYWJsZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ211bHRpc2VsZWN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJwcmltZW5nLW11bHRpc2VsZWN0XCIgKi8gJ3ByaW1lbmcvbXVsdGlzZWxlY3QnXG4gICAgICAgICAgICAgICAgICAgICkudGhlbihtID0+IG0uTXVsdGlTZWxlY3QpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ2Ryb3Bkb3duJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwicHJpbWVuZy1kcm9wZG93blwiICovICdwcmltZW5nL2Ryb3Bkb3duJykudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIG0gPT4gbS5Ecm9wZG93blxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ2F1dG9jb21wbGV0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICAgICAgICAgIGltcG9ydChcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicHJpbWVuZy1hdXRvY29tcGxldGVcIiAqLyAncHJpbWVuZy9hdXRvY29tcGxldGUnXG4gICAgICAgICAgICAgICAgICAgICkudGhlbihtID0+IG0uQXV0b0NvbXBsZXRlKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJwcmltZW5nLWJ1dHRvblwiICovICdwcmltZW5nL2J1dHRvbicpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBtID0+IG0uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSAncHJvZ3Jlc3NzcGlubmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJwcmltZW5nLXByb2dyZXNzc3Bpbm5lclwiICovICdwcmltZW5nL3Byb2dyZXNzc3Bpbm5lcidcbiAgICAgICAgICAgICAgICAgICAgKS50aGVuKG0gPT4gbS5Qcm9ncmVzc1NwaW5uZXIpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ3RhYm1lbnUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJwcmltZW5nLXRhYm1lbnVcIiAqLyAncHJpbWVuZy90YWJtZW51JykudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIG0gPT4gbS5UYWJNZW51XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gUHJpbWVORyBjb21wb25lbnQ6ICR7Y29tcG9uZW50TmFtZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExhenkgbG9hZCBRdWlsbCBFZGl0b3JcbiAgICAgKi9cbiAgICBsb2FkUXVpbGxFZGl0b3IoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJxdWlsbC1lZGl0b3JcIiAqLyAnbmd4LXF1aWxsJykudGhlbihtID0+IG0uUXVpbGxNb2R1bGUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGF6eSBsb2FkIEVtb2ppIFBpY2tlclxuICAgICAqL1xuICAgIGxvYWRFbW9qaVBpY2tlcigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImVtb2ppLXBpY2tlclwiICovICdAY3RybC9uZ3gtZW1vamktbWFydCcpLnRoZW4oXG4gICAgICAgICAgICAgICAgbSA9PiBtLlBpY2tlck1vZHVsZVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExhenkgbG9hZCBGb250QXdlc29tZVxuICAgICAqL1xuICAgIGxvYWRGb250QXdlc29tZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImZvbnRhd2Vzb21lXCIgKi8gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJykudGhlbihcbiAgICAgICAgICAgICAgICBtID0+IG0uRm9udEF3ZXNvbWVNb2R1bGVcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMYXp5IGxvYWQgU2VudHJ5ICh1c2luZyB0aGUgY29ycmVjdCBwYWNrYWdlKVxuICAgICAqL1xuICAgIGxvYWRTZW50cnkoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwic2VudHJ5XCIgKi8gJ0BzZW50cnkvYW5ndWxhci1pdnknKS50aGVuKG0gPT4gbSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExhenkgbG9hZCBIZWF2eSBVdGlsaXRpZXMgKExvZGFzaCwgQ3J5cHRvLWpzLCBNb21lbnQpXG4gICAgICovXG4gICAgbG9hZEhlYXZ5VXRpbHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiaGVhdnktdXRpbHNcIiAqLyAnbG9kYXNoJykudGhlbihtID0+IG0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMYXp5IGxvYWQgQ3J5cHRvIFV0aWxzXG4gICAgICovXG4gICAgbG9hZENyeXB0b1V0aWxzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBmcm9tKGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNyeXB0by11dGlsc1wiICovICdjcnlwdG8tanMnKS50aGVuKG0gPT4gbSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExhenkgbG9hZCBNb21lbnRcbiAgICAgKi9cbiAgICBsb2FkTW9tZW50KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBmcm9tKGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcIm1vbWVudFwiICovICdtb21lbnQnKS50aGVuKG0gPT4gbSkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -36,7 +36,7 @@ export class PermissionTreeComponent {
36
36
  const treeData = map(this.data.permissions, item => {
37
37
  return {
38
38
  id: item.name,
39
- parent: item.parentName ? item.parentName : '#',
39
+ parent: item.parentName ?? '#',
40
40
  text: item.displayName,
41
41
  state: {
42
42
  opened: true,
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
108
108
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { data: [{
109
109
  type: Input
110
110
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wZXJtaXNzaW9uLXRyZWUvcGVybWlzc2lvbi10cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR1IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDOztBQVM3QixNQUFNLE9BQU8sdUJBQXVCO0lBS2hDLFlBQTZCLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7SUFBRyxDQUFDO0lBRXJELFdBQVcsQ0FBQyxNQUFxQjtRQUM3QixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHlCQUF5QjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUUzQixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxLQUFLLE1BQU0sVUFBVSxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDM0MsZUFBZSxD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YSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNyRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osYUFBYSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3hCLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUM5QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQW5IUSx1QkFBdUI7bUdBQXZCLHVCQUF1QixzR0FGdEIsdUNBQXVDOzs0RkFFeEMsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLHVDQUF1QztpQkFDcEQ7K0VBRVksSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgbWFwIGZyb20gJ2xvZGFzaC9tYXAnO1xuXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHJlZURhdGEgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAncGVybWlzc2lvbi10cmVlJyxcbiAgICB0ZW1wbGF0ZTogYCA8ZGl2IGNsYXNzPVwicGVybWlzc2lvbi10cmVlXCI+PC9kaXY+IGBcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIGRhdGE6IFBlcm1pc3Npb25UcmVlRGF0YTtcblxuICAgIHByaXZhdGUgXyR0cmVlO1xuICAgIHByaXZhdGUgX2NyZWF0ZWRUcmVlQmVmb3JlOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhzaW1wbGU6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHNpbXBsZVsnZGF0YSddPy5jdXJyZW50VmFsdWU/LmdyYW50ZWRQZXJtaXNzaW9uTmFtZXMpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFRyZWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fJHRyZWUgPSAkKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoVHJlZSgpO1xuICAgIH1cblxuICAgIGdldEdyYW50ZWRQZXJtaXNzaW9uTmFtZXMoKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIXRoaXMuXyR0cmVlIHx8ICF0aGlzLl9jcmVhdGVkVHJlZUJlZm9yZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGVybWlzc2lvbk5hbWVzID0gW107XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQZXJtaXNzaW9ucyA9IHRoaXMuXyR0cmVlLmpzdHJlZSgnZ2V0X3NlbGVjdGVkJywgdHJ1ZSk7XG4gICAgICAgIGZvciAoY29uc3QgcGVybWlzc2lvbiBvZiBzZWxlY3RlZFBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICBwZXJtaXNzaW9uTmFtZXMucHVzaChwZXJtaXNzaW9uLm9yaWdpbmFsLmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uTmFtZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoVHJlZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NyZWF0ZWRUcmVlQmVmb3JlKSB7XG4gICAgICAgICAgICB0aGlzLl8kdHJlZS5qc3RyZWUoJ2Rlc3Ryb3knKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NyZWF0ZWRUcmVlQmVmb3JlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKCF0aGlzLmRhdGEgfHwgIXRoaXMuXyR0cmVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmVlRGF0YSA9IG1hcCh0aGlzLmRhdGEucGVybWlzc2lvbnMsIGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgIHBhcmVudDogaXRlbS5wYXJlbnROYW1lID8gaXRlbS5wYXJlbnROYW1lIDogJyMnLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0uZGlzcGxheU5hbWUsXG4gICAgICAgICAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5kYXRhLmdyYW50ZWRQZXJtaXNzaW9uTmFtZXMuaW5jbHVkZXMoaXRlbS5uYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuXyR0cmVlLmpzdHJlZSh7XG4gICAgICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgICAgICAgZGF0YTogdHJlZURhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ZhIGZhLWZvbGRlci1vcGVuIHRyZWUtaXRlbS1pY29uLWNvbG9yIGljb24tbGcnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmaWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdmYSBmYS1maWxlIHRyZWUtaXRlbS1pY29uLWNvbG9yIGljb24tbGcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoZWNrYm94OiB7XG4gICAgICAgICAgICAgICAga2VlcF9zZWxlY3RlZF9zdHlsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGhyZWVfc3RhdGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNhc2NhZGU6ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGx1Z2luczogWydjaGVja2JveCcsICd0eXBlcyddXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NyZWF0ZWRUcmVlQmVmb3JlID0gdHJ1ZTtcblxuICAgICAgICBsZXQgaW5UcmVlQ2hhbmdlRXZlbnQgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBzZWxlY3ROb2RlQW5kQWxsUGFyZW50cyA9IG5vZGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5fJHRyZWUuanN0cmVlKCdzZWxlY3Rfbm9kZScsIG5vZGUsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fJHRyZWUuanN0cmVlKCdnZXRfcGFyZW50Jywgbm9kZSk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0Tm9kZUFuZEFsbFBhcmVudHMocGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl8kdHJlZS5vbignY2hhbmdlZC5qc3RyZWUnLCAoX2UsIGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmICghZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB3YXNJblRyZWVDaGFuZ2VFdmVudCA9IGluVHJlZUNoYW5nZUV2ZW50O1xuICAgICAgICAgICAgaWYgKCF3YXNJblRyZWVDaGFuZ2VFdmVudCkge1xuICAgICAgICAgICAgICAgIGluVHJlZUNoYW5nZUV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNoaWxkcmVuTm9kZXM7XG5cbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGUuc3RhdGUuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3ROb2RlQW5kQWxsUGFyZW50cyh0aGlzLl8kdHJlZS5qc3RyZWUoJ2dldF9wYXJlbnQnLCBkYXRhLm5vZGUpKTtcblxuICAgICAgICAgICAgICAgIGNoaWxkcmVuTm9kZXMgPSAkLm1ha2VBcnJheSh0aGlzLl8kdHJlZS5qc3RyZWUoJ2dldF9jaGlsZHJlbl9kb20nLCBkYXRhLm5vZGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl8kdHJlZS5qc3RyZWUoJ3NlbGVjdF9ub2RlJywgY2hpbGRyZW5Ob2Rlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuTm9kZXMgPSAkLm1ha2VBcnJheSh0aGlzLl8kdHJlZS5qc3RyZWUoJ2dldF9jaGlsZHJlbl9kb20nLCBkYXRhLm5vZGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl8kdHJlZS5qc3RyZWUoJ2Rlc2VsZWN0X25vZGUnLCBjaGlsZHJlbk5vZGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF3YXNJblRyZWVDaGFuZ2VFdmVudCkge1xuICAgICAgICAgICAgICAgIGluVHJlZUNoYW5nZUV2ZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9wZXJtaXNzaW9uLXRyZWUvcGVybWlzc2lvbi10cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR1IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDOztBQVM3QixNQUFNLE9BQU8sdUJBQXVCO0lBS2hDLFlBQTZCLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7SUFBRyxDQUFDO0lBRXJELFdBQVcsQ0FBQyxNQUFxQjtRQUM3QixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHlCQUF5QjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUUzQixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxLQUFLLE1BQU0sVUFBVSxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDM0MsZUFBZSxD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TSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3JELENBQUM7aUJBQU0sQ0FBQztnQkFDSixhQUFhLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDeEIsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQzlCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBbkhRLHVCQUF1QjttR0FBdkIsdUJBQXVCLHNHQUZ0Qix1Q0FBdUM7OzRGQUV4Qyx1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsdUNBQXVDO2lCQUNwRDsrRUFFWSxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCBtYXAgZnJvbSAnbG9kYXNoL21hcCc7XG5cbmltcG9ydCB7IFBlcm1pc3Npb25UcmVlRGF0YSB9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQtY29tcG9uZW50LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdwZXJtaXNzaW9uLXRyZWUnLFxuICAgIHRlbXBsYXRlOiBgIDxkaXYgY2xhc3M9XCJwZXJtaXNzaW9uLXRyZWVcIj48L2Rpdj4gYFxufSlcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgZGF0YTogUGVybWlzc2lvblRyZWVEYXRhO1xuXG4gICAgcHJpdmF0ZSBfJHRyZWU7XG4gICAgcHJpdmF0ZSBfY3JlYXRlZFRyZWVCZWZvcmU6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZWxlbWVudDogRWxlbWVudFJlZikge31cblxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZTogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoc2ltcGxlWydkYXRhJ10/LmN1cnJlbnRWYWx1ZT8uZ3JhbnRlZFBlcm1pc3Npb25OYW1lcykge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVHJlZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl8kdHJlZSA9ICQodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hUcmVlKCk7XG4gICAgfVxuXG4gICAgZ2V0R3JhbnRlZFBlcm1pc3Npb25OYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghdGhpcy5fJHRyZWUgfHwgIXRoaXMuX2NyZWF0ZWRUcmVlQmVmb3JlKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwZXJtaXNzaW9uTmFtZXMgPSBbXTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZFBlcm1pc3Npb25zID0gdGhpcy5fJHRyZWUuanN0cmVlKCdnZXRfc2VsZWN0ZWQnLCB0cnVlKTtcbiAgICAgICAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIHNlbGVjdGVkUGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHBlcm1pc3Npb25OYW1lcy5wdXNoKHBlcm1pc3Npb24ub3JpZ2luYWwuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25OYW1lcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hUcmVlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY3JlYXRlZFRyZWVCZWZvcmUpIHtcbiAgICAgICAgICAgIHRoaXMuXyR0cmVlLmpzdHJlZSgnZGVzdHJveScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY3JlYXRlZFRyZWVCZWZvcmUgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIXRoaXMuZGF0YSB8fCAhdGhpcy5fJHRyZWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyZWVEYXRhID0gbWFwKHRoaXMuZGF0YS5wZXJtaXNzaW9ucywgaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlkOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBpdGVtLnBhcmVudE5hbWUgPz8gJyMnLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0uZGlzcGxheU5hbWUsXG4gICAgICAgICAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5kYXRhLmdyYW50ZWRQZXJtaXNzaW9uTmFtZXMuaW5jbHVkZXMoaXRlbS5uYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuXyR0cmVlLmpzdHJlZSh7XG4gICAgICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgICAgICAgZGF0YTogdHJlZURhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlczoge1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ZhIGZhLWZvbGRlci1vcGVuIHRyZWUtaXRlbS1pY29uLWNvbG9yIGljb24tbGcnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmaWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdmYSBmYS1maWxlIHRyZWUtaXRlbS1pY29uLWNvbG9yIGljb24tbGcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoZWNrYm94OiB7XG4gICAgICAgICAgICAgICAga2VlcF9zZWxlY3RlZF9zdHlsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGhyZWVfc3RhdGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNhc2NhZGU6ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGx1Z2luczogWydjaGVja2JveCcsICd0eXBlcyddXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NyZWF0ZWRUcmVlQmVmb3JlID0gdHJ1ZTtcblxuICAgICAgICBsZXQgaW5UcmVlQ2hhbmdlRXZlbnQgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBzZWxlY3ROb2RlQW5kQWxsUGFyZW50cyA9IG5vZGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5fJHRyZWUuanN0cmVlKCdzZWxlY3Rfbm9kZScsIG5vZGUsIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fJHRyZWUuanN0cmVlKCdnZXRfcGFyZW50Jywgbm9kZSk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0Tm9kZUFuZEFsbFBhcmVudHMocGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl8kdHJlZS5vbignY2hhbmdlZC5qc3RyZWUnLCAoX2UsIGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmICghZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB3YXNJblRyZWVDaGFuZ2VFdmVudCA9IGluVHJlZUNoYW5nZUV2ZW50O1xuICAgICAgICAgICAgaWYgKCF3YXNJblRyZWVDaGFuZ2VFdmVudCkge1xuICAgICAgICAgICAgICAgIGluVHJlZUNoYW5nZUV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNoaWxkcmVuTm9kZXM7XG5cbiAgICAgICAgICAgIGlmIChkYXRhLm5vZGUuc3RhdGUuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3ROb2RlQW5kQWxsUGFyZW50cyh0aGlzLl8kdHJlZS5qc3RyZWUoJ2dldF9wYXJlbnQnLCBkYXRhLm5vZGUpKTtcblxuICAgICAgICAgICAgICAgIGNoaWxkcmVuTm9kZXMgPSAkLm1ha2VBcnJheSh0aGlzLl8kdHJlZS5qc3RyZWUoJ2dldF9jaGlsZHJlbl9kb20nLCBkYXRhLm5vZGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl8kdHJlZS5qc3RyZWUoJ3NlbGVjdF9ub2RlJywgY2hpbGRyZW5Ob2Rlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuTm9kZXMgPSAkLm1ha2VBcnJheSh0aGlzLl8kdHJlZS5qc3RyZWUoJ2dldF9jaGlsZHJlbl9kb20nLCBkYXRhLm5vZGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl8kdHJlZS5qc3RyZWUoJ2Rlc2VsZWN0X25vZGUnLCBjaGlsZHJlbk5vZGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF3YXNJblRyZWVDaGFuZ2VFdmVudCkge1xuICAgICAgICAgICAgICAgIGluVHJlZUNoYW5nZUV2ZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==