@posiwise/resource-contact-us 0.0.5 → 0.0.7

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.
package/esm2022/index.mjs CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './lib/resource-contact-us/resource-contact-us.component';
2
2
  export * from './lib/shared/resource-modal.interface';
3
3
  export * from './lib/resource-contact-us/resource-contact-us.module';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLHNEQUFzRCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb3VyY2UtY29udGFjdC11cy9yZXNvdXJjZS1jb250YWN0LXVzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvcmVzb3VyY2UtbW9kYWwuaW50ZXJmYWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb3VyY2UtY29udGFjdC11cy9yZXNvdXJjZS1jb250YWN0LXVzLm1vZHVsZSciXX0=
4
+ export * from './lib/demo-cards/demo-cards.component';
5
+ export * from './lib/demo-cards/demo-cards.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc291cmNlLWNvbnRhY3QtdXMvcmVzb3VyY2UtY29udGFjdC11cy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3Jlc291cmNlLW1vZGFsLmludGVyZmFjZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3Jlc291cmNlLWNvbnRhY3QtdXMvcmVzb3VyY2UtY29udGFjdC11cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGVtby1jYXJkcy9kZW1vLWNhcmRzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZW1vLWNhcmRzL2RlbW8tY2FyZHMubW9kdWxlJztcbiJdfQ==
@@ -0,0 +1,101 @@
1
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
2
+ import { Component, Injector, Input, TemplateRef, ViewChild } from '@angular/core';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+ import { AdminService } from '@posiwise/admin-module-utils';
5
+ import { AppBaseComponent } from '@posiwise/app-base-component';
6
+ import { HelperService } from '@posiwise/helper-service';
7
+ import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/platform-browser";
10
+ import * as i2 from "@ng-bootstrap/ng-bootstrap";
11
+ import * as i3 from "@posiwise/admin-module-utils";
12
+ import * as i4 from "@angular/common";
13
+ import * as i5 from "@angular/forms";
14
+ import * as i6 from "@angular/cdk/drag-drop";
15
+ export class DemoCardsComponent extends AppBaseComponent {
16
+ constructor(sanitizer, modalService, adminService, injector) {
17
+ super(injector);
18
+ this.sanitizer = sanitizer;
19
+ this.modalService = modalService;
20
+ this.adminService = adminService;
21
+ this.editingBookingLinks = [];
22
+ this.domainId = this.appConfig?.domain_id;
23
+ }
24
+ ngOnInit() {
25
+ if (this.userLoggedIn) {
26
+ this.localStorage.getItem$('product').subscribe(res => {
27
+ const data = res ? JSON.parse(res) : null;
28
+ this.subscriptionId = data?.subscriptionId;
29
+ });
30
+ }
31
+ this.bookingLinks = (this.appConfig?.pages_config?.book_demo?.items ?? [])
32
+ .filter(link => link?.url)
33
+ .map(link => ({
34
+ ...link,
35
+ // NOSONAR: Trusted iframe URL content is handled safely here
36
+ url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url) // NOSONAR
37
+ }));
38
+ }
39
+ ngOnChanges(changes) {
40
+ if (changes['user'] || changes['userLoggedIn']) {
41
+ if (this.userLoggedIn && this.user) {
42
+ this.updateCanEditResourcesValue();
43
+ }
44
+ }
45
+ }
46
+ openEditBookLinks(modal) {
47
+ this.editingBookingLinks = JSON.parse(JSON.stringify(this.appConfig?.pages_config?.book_demo?.items ?? []));
48
+ this.modalService.open(modal, { size: 'lg', centered: true, windowClass: 'modal-holder' });
49
+ }
50
+ addBookingLink() {
51
+ this.editingBookingLinks.push({ title: '', url: '' });
52
+ }
53
+ removeBookDemoLink(i) {
54
+ this.editingBookingLinks.splice(i, 1);
55
+ }
56
+ dropBookingLink(event) {
57
+ moveItemInArray(this.editingBookingLinks, event.previousIndex, event.currentIndex);
58
+ }
59
+ saveBookingLinks(modal) {
60
+ this.adminService
61
+ .updateDomainConfig(this.domainId, {
62
+ book_demo: {
63
+ ...this.appConfig?.pages_config?.book_demo,
64
+ items: this.editingBookingLinks
65
+ },
66
+ subscription_id: this.subscriptionId
67
+ })
68
+ .subscribe(() => {
69
+ this.toast.success('Booking links updated');
70
+ this.bookingLinks = this.editingBookingLinks
71
+ .filter(link => link?.url)
72
+ .map(link => ({
73
+ ...link,
74
+ // NOSONAR: Trusted iframe URL content is handled safely here
75
+ url: this.sanitizer.bypassSecurityTrustResourceUrl(link.url) // NOSONAR
76
+ }));
77
+ this.appConfig.pages_config.book_demo.items = [...this.editingBookingLinks]; // ✅ Like CTAs
78
+ modal.close();
79
+ });
80
+ }
81
+ updateCanEditResourcesValue() {
82
+ this.canEditResourcesValue = HelperService.canEditResources(this.user, this.userLoggedIn, this.permissionService);
83
+ }
84
+ canEditResources() {
85
+ return this.canEditResourcesValue;
86
+ }
87
+ 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 }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DemoCardsComponent, selector: "pw-demo-card", inputs: { user: "user", userLoggedIn: "userLoggedIn" }, viewQueries: [{ propertyName: "editBookLinksModal", first: true, predicate: ["editBookLinksModal"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"canEditResourcesValue\"\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\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\" *ngIf=\"link?.url && link?.title\">{{ link?.title }}</h5>\n <iframe *ngIf=\"link?.url\"\n [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: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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"] }] }); }
89
+ }
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsComponent, decorators: [{
91
+ type: Component,
92
+ args: [{ selector: 'pw-demo-card', template: "<!-- EDIT ICON -->\n\n<!-- DEMO LINKS -->\n<div class=\"row text-center\">\n <i *ngIf=\"canEditResourcesValue\"\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\" *ngFor=\"let link of bookingLinks\">\n <h5 class=\"mb-3\" *ngIf=\"link?.url && link?.title\">{{ link?.title }}</h5>\n <iframe *ngIf=\"link?.url\"\n [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"] }]
93
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.NgbModal }, { type: i3.AdminService }, { type: i0.Injector }], propDecorators: { user: [{
94
+ type: Input
95
+ }], userLoggedIn: [{
96
+ type: Input
97
+ }], editBookLinksModal: [{
98
+ type: ViewChild,
99
+ args: ['editBookLinksModal', { static: true }]
100
+ }] } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby1jYXJkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2xpYi9kZW1vLWNhcmRzL2RlbW8tY2FyZHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1jb250YWN0LXVzL3NyYy9saWIvZGVtby1jYXJkcy9kZW1vLWNhcmRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBSUwsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxnQkFBZ0I7SUFlcEQsWUFDcUIsU0FBdUIsRUFDdkIsWUFBc0IsRUFDdEIsWUFBMEIsRUFDM0MsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBTEMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWIvQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFFekIsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO0lBZXJD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QUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2lCQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNWLEdBQUcsSUFBSTtnQkFDUCw2REFBNkQ7Z0JBQzdELEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVO2FBQzFFLENBQUMsQ0FBQyxDQUFDO1lBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQzNGLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDTywyQkFBMkI7UUFDL0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDdkQsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDdEMsQ0FBQzsrR0FwR1Esa0JBQWtCO21HQUFsQixrQkFBa0IsZ1NDMUIvQixxM0ZBNEVBOzs0RkRsRGEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNJLGNBQWM7MEpBS2YsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBV04sa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL3V0aWxzJztcblxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctZGVtby1jYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGVtby1jYXJkcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGVtby1jYXJkcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERlbW9DYXJkc0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgdXNlcjogVXNlcjtcbiAgICBASW5wdXQoKSB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG5cbiAgICBib29raW5nTGlua3M7XG4gICAgZWRpdGluZ0Jvb2tpbmdMaW5rcyA9IFtdO1xuXG4gICAgZG9tYWluSWQgPSB0aGlzLmFwcENvbmZpZz8uZG9tYWluX2lkO1xuICAgIHN1YnNjcmlwdGlvbklkOiBzdHJpbmc7XG5cbiAgICBjYW5FZGl0UmVzb3VyY2VzVmFsdWU7XG5cbiAgICBAVmlld0NoaWxkKCdlZGl0Qm9va0xpbmtzTW9kYWwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGVkaXRCb29rTGlua3NNb2RhbCE6IFRlbXBsYXRlUmVmPEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoJ3Byb2R1Y3QnKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8gSlNPTi5wYXJzZShyZXMpIDogbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gZGF0YT8uc3Vic2NyaXB0aW9uSWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYm9va2luZ0xpbmtzID0gKHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbz8uaXRlbXMgPz8gW10pXG4gICAgICAgICAgICAuZmlsdGVyKGxpbmsgPT4gbGluaz8udXJsKVxuICAgICAgICAgICAgLm1hcChsaW5rID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICAvLyBOT1NPTkFSOiBUcnVzdGVkIGlmcmFtZSBVUkwgY29udGVudCBpcyBoYW5kbGVkIHNhZmVseSBoZXJlXG4gICAgICAgICAgICAgICAgdXJsOiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwobGluay51cmwpIC8vIE5PU09OQVJcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWyd1c2VyJ10gfHwgY2hhbmdlc1sndXNlckxvZ2dlZEluJ10pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbiAmJiB0aGlzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbkVkaXRSZXNvdXJjZXNWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkVkaXRCb29rTGlua3MobW9kYWwpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuYXBwQ29uZmlnPy5wYWdlc19jb25maWc/LmJvb2tfZGVtbz8uaXRlbXMgPz8gW10pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwsIHsgc2l6ZTogJ2xnJywgY2VudGVyZWQ6IHRydWUsIHdpbmRvd0NsYXNzOiAnbW9kYWwtaG9sZGVyJyB9KTtcbiAgICB9XG5cbiAgICBhZGRCb29raW5nTGluaygpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzLnB1c2goeyB0aXRsZTogJycsIHVybDogJycgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQm9va0RlbW9MaW5rKGk6IG51bWJlcikge1xuICAgICAgICB0aGlzLmVkaXRpbmdCb29raW5nTGlua3Muc3BsaWNlKGksIDEpO1xuICAgIH1cblxuICAgIGRyb3BCb29raW5nTGluayhldmVudCkge1xuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH1cblxuICAgIHNhdmVCb29raW5nTGlua3MobW9kYWwpIHtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC51cGRhdGVEb21haW5Db25maWcodGhpcy5kb21haW5JZCwge1xuICAgICAgICAgICAgICAgIGJvb2tfZGVtbzoge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmFwcENvbmZpZz8ucGFnZXNfY29uZmlnPy5ib29rX2RlbW8sXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiB0aGlzLmVkaXRpbmdCb29raW5nTGlua3NcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2VzcygnQm9va2luZyBsaW5rcyB1cGRhdGVkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib29raW5nTGlua3MgPSB0aGlzLmVkaXRpbmdCb29raW5nTGlua3NcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihsaW5rID0+IGxpbms/LnVybClcbiAgICAgICAgICAgICAgICAgICAgLm1hcChsaW5rID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9TT05BUjogVHJ1c3RlZCBpZnJhbWUgVVJMIGNvbnRlbnQgaXMgaGFuZGxlZCBzYWZlbHkgaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwobGluay51cmwpIC8vIE5PU09OQVJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwQ29uZmlnLnBhZ2VzX2NvbmZpZy5ib29rX2RlbW8uaXRlbXMgPSBbLi4udGhpcy5lZGl0aW5nQm9va2luZ0xpbmtzXTsgLy8g4pyFIExpa2UgQ1RBc1xuICAgICAgICAgICAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSB1cGRhdGVDYW5FZGl0UmVzb3VyY2VzVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FuRWRpdFJlc291cmNlc1ZhbHVlID0gSGVscGVyU2VydmljZS5jYW5FZGl0UmVzb3VyY2VzKFxuICAgICAgICAgICAgdGhpcy51c2VyLFxuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4sXG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY2FuRWRpdFJlc291cmNlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuRWRpdFJlc291cmNlc1ZhbHVlO1xuICAgIH1cbn1cbiIsIjwhLS0gRURJVCBJQ09OIC0tPlxuXG48IS0tIERFTU8gTElOS1MgLS0+XG48ZGl2IGNsYXNzPVwicm93IHRleHQtY2VudGVyXCI+XG4gIDxpICpuZ0lmPVwiY2FuRWRpdFJlc291cmNlc1ZhbHVlXCJcbiAgICBjbGFzcz1cImZhIGZhLWVkaXQgaW4tcGFnZS1lZGl0LWljb24gbWItMyBjdXJzb3ItcG9pbnRlclwiXG4gICAgdGl0bGU9XCJFZGl0IEJvb2tpbmcgTGlua3NcIlxuICAgIChjbGljayk9XCJvcGVuRWRpdEJvb2tMaW5rcyhlZGl0Qm9va0xpbmtzTW9kYWwpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJvcGVuRWRpdEJvb2tMaW5rcyhlZGl0Qm9va0xpbmtzTW9kYWwpXCJcbiAgICAoa2V5ZG93bi5zcGFjZSk9XCJvcGVuRWRpdEJvb2tMaW5rcyhlZGl0Qm9va0xpbmtzTW9kYWwpXCI+XG4gIDwvaT5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1sZy00XCIgKm5nRm9yPVwibGV0IGxpbmsgb2YgYm9va2luZ0xpbmtzXCI+XG4gICAgPGg1IGNsYXNzPVwibWItM1wiICpuZ0lmPVwibGluaz8udXJsICYmIGxpbms/LnRpdGxlXCI+e3sgbGluaz8udGl0bGUgfX08L2g1PlxuICAgIDxpZnJhbWUgKm5nSWY9XCJsaW5rPy51cmxcIlxuICAgICAgW3NyY109XCJsaW5rPy51cmxcIlxuICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIHRpdGxlPVwiQm9va2luZyBmcmFtZVwiXG4gICAgICBoZWlnaHQ9XCI2MDBcIlxuICAgICAgY2xhc3M9XCJpZnJhbWUtbm8tYm9yZGVyXCI+XG4gICAgPC9pZnJhbWU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gTU9EQUwgVEVNUExBVEUgLS0+XG48bmctdGVtcGxhdGUgI2VkaXRCb29rTGlua3NNb2RhbCBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkVkaXQgQm9vayBEZW1vIExpbmtzPC9oNT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEJvb2tpbmdMaW5rKCRldmVudClcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZWRpdGluZ0Jvb2tpbmdMaW5rczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiY2FyZCBwLTMgbWItM1wiIGNka0RyYWc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZW1vTGlua1RpdGxle3tpfX1cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5MaW5rIFRpdGxlPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImRlbW9MaW5rVGl0bGV7e2l9fVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJpdGVtLnRpdGxlXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZW1vTGlua1VybHt7aX19XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TGluayBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiZGVtb0xpbmtVcmx7e2l9fVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJpdGVtLnVybFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTNcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwicmVtb3ZlQm9va0RlbW9MaW5rKGkpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10cmFzaCBpbi1wYWdlLXRyYXNoLWljb24gZGVsZXRlLWljb24gdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC0zXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWJhcnMgaW4tcGFnZS1iYXJzLWljb24gY3Vyc29yLW1vdmVcIlxuICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJEcmFnIHRvIHJlb3JkZXJcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IG10LTNcIiAoY2xpY2spPVwiYWRkQm9va2luZ0xpbmsoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIj48L2k+IEFkZCBCb29rIERlbW8gTGlua1xuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUJvb2tpbmdMaW5rcyhtb2RhbClcIj5TYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { DragDropModule } from '@angular/cdk/drag-drop';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgModule } from '@angular/core';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { AdminModuleUtilsModule } from '@posiwise/admin-module-utils';
6
+ import { DirectivesModule } from '@posiwise/directives';
7
+ import { PipesModule } from '@posiwise/pipes';
8
+ import { NgbModalModule } from '@ng-bootstrap/ng-bootstrap';
9
+ import { DemoCardsComponent } from './demo-cards.component';
10
+ import * as i0 from "@angular/core";
11
+ export class DemoCardsModule {
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsModule, declarations: [DemoCardsComponent], imports: [CommonModule,
14
+ FormsModule,
15
+ DragDropModule,
16
+ NgbModalModule,
17
+ DirectivesModule,
18
+ PipesModule,
19
+ AdminModuleUtilsModule], exports: [DemoCardsComponent] }); }
20
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsModule, imports: [CommonModule,
21
+ FormsModule,
22
+ DragDropModule,
23
+ NgbModalModule,
24
+ DirectivesModule,
25
+ PipesModule,
26
+ AdminModuleUtilsModule] }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DemoCardsModule, decorators: [{
29
+ type: NgModule,
30
+ args: [{
31
+ declarations: [DemoCardsComponent],
32
+ imports: [
33
+ CommonModule,
34
+ FormsModule,
35
+ DragDropModule,
36
+ NgbModalModule,
37
+ DirectivesModule,
38
+ PipesModule,
39
+ AdminModuleUtilsModule
40
+ ],
41
+ exports: [DemoCardsComponent]
42
+ }]
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby1jYXJkcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2xpYi9kZW1vLWNhcmRzL2RlbW8tY2FyZHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFlNUQsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTtnSEFBZixlQUFlLGlCQVpULGtCQUFrQixhQUU3QixZQUFZO1lBQ1osV0FBVztZQUNYLGNBQWM7WUFDZCxjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxzQkFBc0IsYUFFaEIsa0JBQWtCO2dIQUVuQixlQUFlLFlBVnBCLFlBQVk7WUFDWixXQUFXO1lBQ1gsY0FBYztZQUNkLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLHNCQUFzQjs7NEZBSWpCLGVBQWU7a0JBYjNCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xDLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxzQkFBc0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBZG1pbk1vZHVsZVV0aWxzTW9kdWxlIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBEaXJlY3RpdmVzTW9kdWxlIH0gZnJvbSAnQHBvc2l3aXNlL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUGlwZXNNb2R1bGUgfSBmcm9tICdAcG9zaXdpc2UvcGlwZXMnO1xuXG5pbXBvcnQgeyBOZ2JNb2RhbE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuaW1wb3J0IHsgRGVtb0NhcmRzQ29tcG9uZW50IH0gZnJvbSAnLi9kZW1vLWNhcmRzLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbRGVtb0NhcmRzQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIERyYWdEcm9wTW9kdWxlLFxuICAgICAgICBOZ2JNb2RhbE1vZHVsZSxcbiAgICAgICAgRGlyZWN0aXZlc01vZHVsZSxcbiAgICAgICAgUGlwZXNNb2R1bGUsXG4gICAgICAgIEFkbWluTW9kdWxlVXRpbHNNb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtEZW1vQ2FyZHNDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIERlbW9DYXJkc01vZHVsZSB7fVxuIl19