@tsi-developpement/tsi-shared-ui 1.8.37 → 1.8.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2022/lib/consts/business-class-names.mjs +3 -1
  2. package/esm2022/lib/end-points/endpoints.mjs +7 -2
  3. package/esm2022/lib/models/actionErp/actionErp.mjs +7 -1
  4. package/esm2022/lib/models/actionErp/nature-action.mjs +6 -0
  5. package/esm2022/lib/models/tsi-card/tsi-card.mjs +1 -1
  6. package/esm2022/lib/services/actionErp/nature-action-service.service.mjs +23 -0
  7. package/esm2022/lib/tsi-components/manage-import-export/manage-import-export.component.mjs +9 -1
  8. package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +18 -3
  9. package/esm2022/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.mjs +1 -1
  10. package/esm2022/lib/tsi-components/tsi-action-erp-create-or-edit/tsi-action-erp-create-or-edit.component.mjs +182 -25
  11. package/esm2022/lib/tsi-components/tsi-calender/context-menu/context-menu.component.mjs +16 -4
  12. package/esm2022/lib/tsi-components/tsi-calender/tsi-calender.component.mjs +30 -3
  13. package/esm2022/lib/tsi-components/tsi-card/tsi-card.component.mjs +50 -23
  14. package/esm2022/lib/tsi-components/tsi-card-list/tsi-card-list.component.mjs +14 -4
  15. package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +17 -5
  16. package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +48 -22
  17. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +395 -84
  18. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
  19. package/lib/consts/business-class-names.d.ts +2 -0
  20. package/lib/end-points/endpoints.d.ts +5 -0
  21. package/lib/models/actionErp/actionErp.d.ts +10 -0
  22. package/lib/models/actionErp/nature-action.d.ts +12 -0
  23. package/lib/models/tsi-card/tsi-card.d.ts +1 -0
  24. package/lib/providers/shared-ui-tsi.provider.d.ts +1 -1
  25. package/lib/services/actionErp/nature-action-service.service.d.ts +12 -0
  26. package/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.d.ts +3 -0
  27. package/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.d.ts +6 -1
  28. package/lib/tsi-components/tsi-action-erp-create-or-edit/tsi-action-erp-create-or-edit.component.d.ts +19 -4
  29. package/lib/tsi-components/tsi-calender/context-menu/context-menu.component.d.ts +5 -1
  30. package/lib/tsi-components/tsi-calender/tsi-calender.component.d.ts +6 -1
  31. package/lib/tsi-components/tsi-card/tsi-card.component.d.ts +15 -5
  32. package/lib/tsi-components/tsi-card-list/tsi-card-list.component.d.ts +5 -1
  33. package/lib/tsi-components/tsi-kanban/tsi-kanban.component.d.ts +14 -6
  34. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Output, ViewChild } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { Modes } from '../../../enums/component-use-modes-enum';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
@@ -6,6 +6,10 @@ import * as i2 from "../../output-components/tsi-label/tsi-label.component";
6
6
  export class ContextMenuComponent {
7
7
  constructor() {
8
8
  this.actionSelected = new EventEmitter();
9
+ this.showInfoButton = false;
10
+ this.showUploadButton = false;
11
+ this.showNoteButton = false;
12
+ this.showActionButton = false;
9
13
  this.isVisible = false;
10
14
  this.menuPosition = { x: '0px', y: '0px' };
11
15
  this.modes = Modes;
@@ -32,15 +36,23 @@ export class ContextMenuComponent {
32
36
  }
33
37
  }
34
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ContextMenuComponent, selector: "app-context-menu", outputs: { actionSelected: "actionSelected" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: "<div #menu class=\"context-menu\" (click)=\"closeMenu()\" [class.visible]=\"isVisible\"\r\n [ngStyle]=\"{ top: menuPosition.y, left: menuPosition.x }\">\r\n <ul>\r\n <li (click)=\"onMenuClick(modes.consult)\" class=\"flx\">\r\n <Tsi-Label labelValue=\"cmpt_parametres_exercices_consulter\"></Tsi-Label>\r\n </li>\r\n <li (click)=\"onMenuClick(modes.edit)\" class=\"flx\">\r\n <Tsi-Label labelValue=\"parambase_autres_tier_btnmodifier\"></Tsi-Label>\r\n </li>\r\n <li (click)=\"onMenuClick(modes.delete)\" class=\"flx delete\">\r\n <Tsi-Label labelValue=\"parambase_autres_tier_btnsupprimer\"></Tsi-Label>\r\n </li>\r\n </ul>\r\n</div>", styles: [".context-menu{position:fixed;display:none;background-color:#fff;border:1px solid #ccc;box-shadow:3px 3px 5px #0003;z-index:1000;width:120px}.context-menu.visible{display:block}.context-menu ul{list-style-type:none;padding:0;margin:0}.context-menu li{padding:8px 12px;cursor:pointer}.context-menu li:hover{background-color:#eee}.flx{display:flex;justify-content:center}.delete{color:#d00}li{font-weight:500}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }] }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ContextMenuComponent, selector: "app-context-menu", inputs: { showInfoButton: "showInfoButton", showUploadButton: "showUploadButton", showNoteButton: "showNoteButton", showActionButton: "showActionButton" }, outputs: { actionSelected: "actionSelected" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], ngImport: i0, template: "<div #menu class=\"context-menu\" (click)=\"closeMenu()\" [class.visible]=\"isVisible\"\r\n [ngStyle]=\"{ top: menuPosition.y, left: menuPosition.x }\">\r\n <ul style=\"white-space:nowrap\">\r\n <li (click)=\"onMenuClick(modes.consult)\" class=\"flx\">\r\n <i class=\"pi pi-eye \"></i>\r\n <Tsi-Label labelValue=\"cmpt_parametres_exercices_consulter\"></Tsi-Label>\r\n </li>\r\n <li (click)=\"onMenuClick(modes.edit)\" class=\"flx\">\r\n <i class=\"pi pi-pencil \"></i>\r\n <Tsi-Label labelValue=\"parambase_autres_tier_btnmodifier\"></Tsi-Label>\r\n </li>\r\n <li (click)=\"onMenuClick(modes.delete)\" class=\"flx delete\">\r\n <i class=\"pi pi-trash \"></i>\r\n <Tsi-Label labelValue=\"parambase_autres_tier_btnsupprimer\"></Tsi-Label>\r\n </li>\r\n\r\n <li *ngIf=\"showInfoButton\" (click)=\"onMenuClick('info')\" class=\"flx\">\r\n <i class=\"pi pi-info \"></i>\r\n <Tsi-Label labelValue=\"shared_actions_info\"></Tsi-Label>\r\n </li>\r\n\r\n <li *ngIf=\"showUploadButton\" (click)=\"onMenuClick('upload')\" class=\"flx\">\r\n <i class=\"pi pi-paperclip \"></i>\r\n <Tsi-Label labelValue=\"shared_actions_attachment\"></Tsi-Label>\r\n </li>\r\n <li *ngIf=\"showNoteButton\" (click)=\"onMenuClick('notes')\" class=\"flx\">\r\n <i class=\"pi pi-comment \"></i>\r\n <Tsi-Label labelValue=\"shared_actions_notes\"></Tsi-Label>\r\n </li>\r\n <li *ngIf=\"showActionButton\" (click)=\"onMenuClick('ActionERP')\" class=\"flx\">\r\n <i class=\"pi pi-bolt \"></i>\r\n <Tsi-Label labelValue=\"shared_actions_action\"></Tsi-Label>\r\n </li>\r\n\r\n\r\n </ul>\r\n</div>", styles: [".context-menu{position:fixed;display:none;background-color:#fff;border:1px solid #ccc;box-shadow:3px 3px 5px #0003;z-index:1000;width:140px}.context-menu.visible{display:block}.context-menu ul{list-style-type:none;padding:0;margin:0}.context-menu li{padding:8px 12px;cursor:pointer}.context-menu li:hover{background-color:#eee}.flx{display:flex;justify-content:flex-start;gap:.5rem;padding:.5rem}.delete{color:#d00}li{font-weight:500}.flx i{width:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }] }); }
36
40
  }
37
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContextMenuComponent, decorators: [{
38
42
  type: Component,
39
- args: [{ selector: 'app-context-menu', template: "<div #menu class=\"context-menu\" (click)=\"closeMenu()\" [class.visible]=\"isVisible\"\r\n [ngStyle]=\"{ top: menuPosition.y, left: menuPosition.x }\">\r\n <ul>\r\n <li (click)=\"onMenuClick(modes.consult)\" class=\"flx\">\r\n <Tsi-Label labelValue=\"cmpt_parametres_exercices_consulter\"></Tsi-Label>\r\n </li>\r\n <li (click)=\"onMenuClick(modes.edit)\" class=\"flx\">\r\n <Tsi-Label labelValue=\"parambase_autres_tier_btnmodifier\"></Tsi-Label>\r\n </li>\r\n <li (click)=\"onMenuClick(modes.delete)\" class=\"flx delete\">\r\n <Tsi-Label labelValue=\"parambase_autres_tier_btnsupprimer\"></Tsi-Label>\r\n </li>\r\n </ul>\r\n</div>", styles: [".context-menu{position:fixed;display:none;background-color:#fff;border:1px solid #ccc;box-shadow:3px 3px 5px #0003;z-index:1000;width:120px}.context-menu.visible{display:block}.context-menu ul{list-style-type:none;padding:0;margin:0}.context-menu li{padding:8px 12px;cursor:pointer}.context-menu li:hover{background-color:#eee}.flx{display:flex;justify-content:center}.delete{color:#d00}li{font-weight:500}\n"] }]
43
+ args: [{ selector: 'app-context-menu', template: "<div #menu class=\"context-menu\" (click)=\"closeMenu()\" [class.visible]=\"isVisible\"\r\n [ngStyle]=\"{ top: menuPosition.y, left: menuPosition.x }\">\r\n <ul style=\"white-space:nowrap\">\r\n <li (click)=\"onMenuClick(modes.consult)\" class=\"flx\">\r\n <i class=\"pi pi-eye \"></i>\r\n <Tsi-Label labelValue=\"cmpt_parametres_exercices_consulter\"></Tsi-Label>\r\n </li>\r\n <li (click)=\"onMenuClick(modes.edit)\" class=\"flx\">\r\n <i class=\"pi pi-pencil \"></i>\r\n <Tsi-Label labelValue=\"parambase_autres_tier_btnmodifier\"></Tsi-Label>\r\n </li>\r\n <li (click)=\"onMenuClick(modes.delete)\" class=\"flx delete\">\r\n <i class=\"pi pi-trash \"></i>\r\n <Tsi-Label labelValue=\"parambase_autres_tier_btnsupprimer\"></Tsi-Label>\r\n </li>\r\n\r\n <li *ngIf=\"showInfoButton\" (click)=\"onMenuClick('info')\" class=\"flx\">\r\n <i class=\"pi pi-info \"></i>\r\n <Tsi-Label labelValue=\"shared_actions_info\"></Tsi-Label>\r\n </li>\r\n\r\n <li *ngIf=\"showUploadButton\" (click)=\"onMenuClick('upload')\" class=\"flx\">\r\n <i class=\"pi pi-paperclip \"></i>\r\n <Tsi-Label labelValue=\"shared_actions_attachment\"></Tsi-Label>\r\n </li>\r\n <li *ngIf=\"showNoteButton\" (click)=\"onMenuClick('notes')\" class=\"flx\">\r\n <i class=\"pi pi-comment \"></i>\r\n <Tsi-Label labelValue=\"shared_actions_notes\"></Tsi-Label>\r\n </li>\r\n <li *ngIf=\"showActionButton\" (click)=\"onMenuClick('ActionERP')\" class=\"flx\">\r\n <i class=\"pi pi-bolt \"></i>\r\n <Tsi-Label labelValue=\"shared_actions_action\"></Tsi-Label>\r\n </li>\r\n\r\n\r\n </ul>\r\n</div>", styles: [".context-menu{position:fixed;display:none;background-color:#fff;border:1px solid #ccc;box-shadow:3px 3px 5px #0003;z-index:1000;width:140px}.context-menu.visible{display:block}.context-menu ul{list-style-type:none;padding:0;margin:0}.context-menu li{padding:8px 12px;cursor:pointer}.context-menu li:hover{background-color:#eee}.flx{display:flex;justify-content:flex-start;gap:.5rem;padding:.5rem}.delete{color:#d00}li{font-weight:500}.flx i{width:16px}\n"] }]
40
44
  }], propDecorators: { actionSelected: [{
41
45
  type: Output
42
46
  }], menu: [{
43
47
  type: ViewChild,
44
48
  args: ['menu']
49
+ }], showInfoButton: [{
50
+ type: Input
51
+ }], showUploadButton: [{
52
+ type: Input
53
+ }], showNoteButton: [{
54
+ type: Input
55
+ }], showActionButton: [{
56
+ type: Input
45
57
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FsZW5kZXIvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWNhbGVuZGVyL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFPaEUsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU9ZLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVuRCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN0QyxVQUFLLEdBQUcsS0FBSyxDQUFDO0tBMEJmO0lBeEJDLFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixzREFBc0Q7UUFDdEQsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsMkNBQTJDO1FBQzNDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUMsY0FBYyxFQUFHLE1BQU0sRUFBQyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELG1DQUFtQztJQUMzQixlQUFlLENBQUMsS0FBaUI7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7K0dBL0JVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHFNQ1JqQyxndEJBYU07OzRGRExPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7OEJBTWxCLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ1ksSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1vZGVzIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tcG9uZW50LXVzZS1tb2Rlcy1lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvbnRleHQtbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29udGV4dC1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51Q29tcG9uZW50IHtcclxuICBcclxuICBAT3V0cHV0KCkgYWN0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAVmlld0NoaWxkKCdtZW51JykgbWVudTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICBpc1Zpc2libGUgPSBmYWxzZTtcclxuICBtZW51UG9zaXRpb24gPSB7IHg6ICcwcHgnLCB5OiAnMHB4JyB9O1xyXG4gIG1vZGVzID0gTW9kZXM7XHJcblxyXG4gIG9wZW5NZW51KHg6IG51bWJlciwgeTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lbnVQb3NpdGlvbiA9IHsgeDogYCR7eH1weGAsIHk6IGAke3l9cHhgIH07XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAvL0FkZCBldmVudCBsaXN0ZW5lciB0byBkZXRlY3QgY2xpY2tzIG91dHNpZGUgdGhlIG1lbnVcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbkRvY3VtZW50Q2xpY2suYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZU1lbnUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgLy9SZW1vdmUgZXZlbnQgbGlzdGVuZXIgd2hlbiBtZW51IGlzIGNsb3NlZFxyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uRG9jdW1lbnRDbGljay5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIG9uTWVudUNsaWNrKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlTWVudSgpO1xyXG4gICAgdGhpcy5hY3Rpb25TZWxlY3RlZC5lbWl0KHtzZWxlY3RlZEFjdGlvbiA6IGFjdGlvbn0pXHJcbiAgfVxyXG5cclxuICAvL1RvIGRldGVjdCBjbGlja3Mgb3V0c2lkZSB0aGUgbWVudVxyXG4gIHByaXZhdGUgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubWVudT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcclxuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiAjbWVudSBjbGFzcz1cImNvbnRleHQtbWVudVwiIChjbGljayk9XCJjbG9zZU1lbnUoKVwiIFtjbGFzcy52aXNpYmxlXT1cImlzVmlzaWJsZVwiXHJcbiAgICBbbmdTdHlsZV09XCJ7IHRvcDogbWVudVBvc2l0aW9uLnksIGxlZnQ6IG1lbnVQb3NpdGlvbi54IH1cIj5cclxuICAgIDx1bD5cclxuICAgICAgICA8bGkgKGNsaWNrKT1cIm9uTWVudUNsaWNrKG1vZGVzLmNvbnN1bHQpXCIgY2xhc3M9XCJmbHhcIj5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwiY21wdF9wYXJhbWV0cmVzX2V4ZXJjaWNlc19jb25zdWx0ZXJcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSAoY2xpY2spPVwib25NZW51Q2xpY2sobW9kZXMuZWRpdClcIiBjbGFzcz1cImZseFwiPlxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJwYXJhbWJhc2VfYXV0cmVzX3RpZXJfYnRubW9kaWZpZXJcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSAoY2xpY2spPVwib25NZW51Q2xpY2sobW9kZXMuZGVsZXRlKVwiIGNsYXNzPVwiZmx4IGRlbGV0ZVwiPlxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJwYXJhbWJhc2VfYXV0cmVzX3RpZXJfYnRuc3VwcHJpbWVyXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbjwvZGl2PiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FsZW5kZXIvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvdHNpLWNhbGVuZGVyL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7O0FBT2hFLE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFPWSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFMUMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUMzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN0QyxVQUFLLEdBQUcsS0FBSyxDQUFDO0tBMEJmO0lBeEJDLFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixzREFBc0Q7UUFDdEQsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsMkNBQTJDO1FBQzNDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUMsY0FBYyxFQUFHLE1BQU0sRUFBQyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELG1DQUFtQztJQUMzQixlQUFlLENBQUMsS0FBaUI7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7K0dBbkNVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGlXQ1JqQywreURBb0NNOzs0RkQ1Qk8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFNbEIsY0FBYztzQkFBdkIsTUFBTTtnQkFDWSxJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBQ1IsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1vZGVzIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvY29tcG9uZW50LXVzZS1tb2Rlcy1lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvbnRleHQtbWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29udGV4dC1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51Q29tcG9uZW50IHtcclxuXHJcbiAgQE91dHB1dCgpIGFjdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQFZpZXdDaGlsZCgnbWVudScpIG1lbnU6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2hvd0luZm9CdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93VXBsb2FkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd05vdGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93QWN0aW9uQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgbWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcclxuICBtb2RlcyA9IE1vZGVzO1xyXG5cclxuICBvcGVuTWVudSh4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5tZW51UG9zaXRpb24gPSB7IHg6IGAke3h9cHhgLCB5OiBgJHt5fXB4YCB9O1xyXG4gICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgLy9BZGQgZXZlbnQgbGlzdGVuZXIgdG8gZGV0ZWN0IGNsaWNrcyBvdXRzaWRlIHRoZSBtZW51XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25Eb2N1bWVudENsaWNrLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VNZW51KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcclxuICAgIC8vUmVtb3ZlIGV2ZW50IGxpc3RlbmVyIHdoZW4gbWVudSBpcyBjbG9zZWRcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbkRvY3VtZW50Q2xpY2suYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBvbk1lbnVDbGljayhhY3Rpb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZU1lbnUoKTtcclxuICAgIHRoaXMuYWN0aW9uU2VsZWN0ZWQuZW1pdCh7c2VsZWN0ZWRBY3Rpb24gOiBhY3Rpb259KVxyXG4gIH1cclxuXHJcbiAgLy9UbyBkZXRlY3QgY2xpY2tzIG91dHNpZGUgdGhlIG1lbnVcclxuICBwcml2YXRlIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm1lbnU/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VNZW51KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI21lbnUgY2xhc3M9XCJjb250ZXh0LW1lbnVcIiAoY2xpY2spPVwiY2xvc2VNZW51KClcIiBbY2xhc3MudmlzaWJsZV09XCJpc1Zpc2libGVcIlxyXG4gICAgW25nU3R5bGVdPVwieyB0b3A6IG1lbnVQb3NpdGlvbi55LCBsZWZ0OiBtZW51UG9zaXRpb24ueCB9XCI+XHJcbiAgICA8dWwgc3R5bGU9XCJ3aGl0ZS1zcGFjZTpub3dyYXBcIj5cclxuICAgICAgICA8bGkgKGNsaWNrKT1cIm9uTWVudUNsaWNrKG1vZGVzLmNvbnN1bHQpXCIgY2xhc3M9XCJmbHhcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1leWUgXCI+PC9pPlxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJjbXB0X3BhcmFtZXRyZXNfZXhlcmNpY2VzX2NvbnN1bHRlclwiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIChjbGljayk9XCJvbk1lbnVDbGljayhtb2Rlcy5lZGl0KVwiIGNsYXNzPVwiZmx4XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktcGVuY2lsIFwiPjwvaT5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwicGFyYW1iYXNlX2F1dHJlc190aWVyX2J0bm1vZGlmaWVyXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwib25NZW51Q2xpY2sobW9kZXMuZGVsZXRlKVwiIGNsYXNzPVwiZmx4IGRlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdHJhc2ggXCI+PC9pPlxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJwYXJhbWJhc2VfYXV0cmVzX3RpZXJfYnRuc3VwcHJpbWVyXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgPGxpICpuZ0lmPVwic2hvd0luZm9CdXR0b25cIiAoY2xpY2spPVwib25NZW51Q2xpY2soJ2luZm8nKVwiIGNsYXNzPVwiZmx4XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5mbyBcIj48L2k+XHJcbiAgICAgICAgICAgIDxUc2ktTGFiZWwgbGFiZWxWYWx1ZT1cInNoYXJlZF9hY3Rpb25zX2luZm9cIj48L1RzaS1MYWJlbD5cclxuICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICA8bGkgKm5nSWY9XCJzaG93VXBsb2FkQnV0dG9uXCIgKGNsaWNrKT1cIm9uTWVudUNsaWNrKCd1cGxvYWQnKVwiIGNsYXNzPVwiZmx4XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktcGFwZXJjbGlwIFwiPjwvaT5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBsYWJlbFZhbHVlPVwic2hhcmVkX2FjdGlvbnNfYXR0YWNobWVudFwiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwic2hvd05vdGVCdXR0b25cIiAoY2xpY2spPVwib25NZW51Q2xpY2soJ25vdGVzJylcIiBjbGFzcz1cImZseFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNvbW1lbnQgXCI+PC9pPlxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJzaGFyZWRfYWN0aW9uc19ub3Rlc1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwic2hvd0FjdGlvbkJ1dHRvblwiIChjbGljayk9XCJvbk1lbnVDbGljaygnQWN0aW9uRVJQJylcIiBjbGFzcz1cImZseFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWJvbHQgXCI+PC9pPlxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGxhYmVsVmFsdWU9XCJzaGFyZWRfYWN0aW9uc19hY3Rpb25cIj48L1RzaS1MYWJlbD5cclxuICAgICAgICA8L2xpPlxyXG5cclxuXHJcbiAgICA8L3VsPlxyXG48L2Rpdj4iXX0=
@@ -23,6 +23,11 @@ export class TsiCalenderComponent {
23
23
  this._messageService = _messageService;
24
24
  this._localizePipe = _localizePipe;
25
25
  this.renderer = renderer;
26
+ this.showInfoButton = false;
27
+ this.showDownloadButton = false;
28
+ this.showUploadButton = false;
29
+ this.showNoteButton = false;
30
+ this.showActionButton = false;
26
31
  this.eventClick = new EventEmitter();
27
32
  this.dateRangeChange = new EventEmitter();
28
33
  this.displayModeOptions = [];
@@ -257,6 +262,18 @@ export class TsiCalenderComponent {
257
262
  id: this.currentContextMenuEvent.id
258
263
  });
259
264
  break;
265
+ case 'info':
266
+ this.eventClick.emit({ mode: 'info', id: this.currentContextMenuEvent.id });
267
+ break;
268
+ case 'upload':
269
+ this.eventClick.emit({ mode: 'upload', id: this.currentContextMenuEvent.id });
270
+ break;
271
+ case 'notes':
272
+ this.eventClick.emit({ mode: 'notes', id: this.currentContextMenuEvent.id });
273
+ break;
274
+ case 'ActionERP':
275
+ this.eventClick.emit({ mode: 'ActionERP', id: this.currentContextMenuEvent.id });
276
+ break;
260
277
  }
261
278
  }
262
279
  onDisplayModeChange(event) {
@@ -273,11 +290,11 @@ export class TsiCalenderComponent {
273
290
  }
274
291
  }
275
292
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCalenderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }, { token: i1.TsiNotificationService }, { token: i2.LocalizePipe }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
276
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCalenderComponent, selector: "tsi-calender", inputs: { crudService: "crudService", schema: "schema", eventsData: "eventsData" }, outputs: { eventClick: "eventClick", dateRangeChange: "dateRangeChange" }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ContextMenuComponent, descendants: true }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true }], ngImport: i0, template: "<p-calendar #datePicker class=\"hidden-calendar\" (onSelect)=\"navigateToDate($event)\"/>\r\n<full-calendar #calendar [options]='calendarOptions()'>\r\n <ng-template let-arg>\r\n\r\n <i [ngStyle]=\"arg.event.color && arg.event.color !== '' ? {'background-color': arg.event.color} : {}\" >\r\n \r\n {{ arg.event.title }}</i>\r\n </ng-template>\r\n</full-calendar>\r\n<app-context-menu (actionSelected)=\"handleSelectedAction($event)\"></app-context-menu>\r\n<ng-template #dropdownTemplate>\r\n <p-dropdown [style]=\"{'width' : '200px','border-radius': '5px'}\" [options]=\"displayModeOptions\" (onChange)=\"onDisplayModeChange($event)\"></p-dropdown>\r\n</ng-template>\r\n", styles: ["::ng-deep .hidden-calendar .p-inputtext{border:none;width:0px;height:0px}::ng-deep .hidden-calendar .p-inputtext:enabled:focus{box-shadow:none}::ng-deep .displayModeOptions{background:#fff;border:none}.attachment-info{margin-left:50px;font-size:12px;color:#080808}.attachment-info i{margin-right:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i5.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6.FullCalendarComponent, selector: "full-calendar", inputs: ["options", "deepChangeDetection", "events", "eventSources", "resources"] }, { kind: "component", type: i7.ContextMenuComponent, selector: "app-context-menu", outputs: ["actionSelected"] }] }); }
293
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCalenderComponent, selector: "tsi-calender", inputs: { crudService: "crudService", schema: "schema", eventsData: "eventsData", showInfoButton: "showInfoButton", showDownloadButton: "showDownloadButton", showUploadButton: "showUploadButton", showNoteButton: "showNoteButton", showActionButton: "showActionButton" }, outputs: { eventClick: "eventClick", dateRangeChange: "dateRangeChange" }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ContextMenuComponent, descendants: true }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true }], ngImport: i0, template: "<p-calendar #datePicker class=\"hidden-calendar\" (onSelect)=\"navigateToDate($event)\"/>\r\n<full-calendar #calendar [options]='calendarOptions()'>\r\n <ng-template let-arg>\r\n\r\n <i [ngStyle]=\"arg.event.color && arg.event.color !== '' ? {'background-color': arg.event.color} : {}\" >\r\n \r\n {{ arg.event.title }}</i>\r\n </ng-template>\r\n</full-calendar>\r\n<app-context-menu \r\n [showInfoButton]=\"showInfoButton\"\r\n [showUploadButton]=\"showUploadButton\"\r\n [showNoteButton]=\"showNoteButton\"\r\n [showActionButton]=\"showActionButton\"\r\n (actionSelected)=\"handleSelectedAction($event)\">\r\n</app-context-menu>\r\n<ng-template #dropdownTemplate>\r\n <p-dropdown [style]=\"{'width' : '200px','border-radius': '5px'}\" [options]=\"displayModeOptions\" (onChange)=\"onDisplayModeChange($event)\"></p-dropdown>\r\n</ng-template>\r\n", styles: ["::ng-deep .hidden-calendar .p-inputtext{border:none;width:0px;height:0px}::ng-deep .hidden-calendar .p-inputtext:enabled:focus{box-shadow:none}::ng-deep .displayModeOptions{background:#fff;border:none}.attachment-info{margin-left:50px;font-size:12px;color:#080808}.attachment-info i{margin-right:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i5.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6.FullCalendarComponent, selector: "full-calendar", inputs: ["options", "deepChangeDetection", "events", "eventSources", "resources"] }, { kind: "component", type: i7.ContextMenuComponent, selector: "app-context-menu", inputs: ["showInfoButton", "showUploadButton", "showNoteButton", "showActionButton"], outputs: ["actionSelected"] }] }); }
277
294
  }
278
295
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCalenderComponent, decorators: [{
279
296
  type: Component,
280
- args: [{ selector: 'tsi-calender', template: "<p-calendar #datePicker class=\"hidden-calendar\" (onSelect)=\"navigateToDate($event)\"/>\r\n<full-calendar #calendar [options]='calendarOptions()'>\r\n <ng-template let-arg>\r\n\r\n <i [ngStyle]=\"arg.event.color && arg.event.color !== '' ? {'background-color': arg.event.color} : {}\" >\r\n \r\n {{ arg.event.title }}</i>\r\n </ng-template>\r\n</full-calendar>\r\n<app-context-menu (actionSelected)=\"handleSelectedAction($event)\"></app-context-menu>\r\n<ng-template #dropdownTemplate>\r\n <p-dropdown [style]=\"{'width' : '200px','border-radius': '5px'}\" [options]=\"displayModeOptions\" (onChange)=\"onDisplayModeChange($event)\"></p-dropdown>\r\n</ng-template>\r\n", styles: ["::ng-deep .hidden-calendar .p-inputtext{border:none;width:0px;height:0px}::ng-deep .hidden-calendar .p-inputtext:enabled:focus{box-shadow:none}::ng-deep .displayModeOptions{background:#fff;border:none}.attachment-info{margin-left:50px;font-size:12px;color:#080808}.attachment-info i{margin-right:5px}\n"] }]
297
+ args: [{ selector: 'tsi-calender', template: "<p-calendar #datePicker class=\"hidden-calendar\" (onSelect)=\"navigateToDate($event)\"/>\r\n<full-calendar #calendar [options]='calendarOptions()'>\r\n <ng-template let-arg>\r\n\r\n <i [ngStyle]=\"arg.event.color && arg.event.color !== '' ? {'background-color': arg.event.color} : {}\" >\r\n \r\n {{ arg.event.title }}</i>\r\n </ng-template>\r\n</full-calendar>\r\n<app-context-menu \r\n [showInfoButton]=\"showInfoButton\"\r\n [showUploadButton]=\"showUploadButton\"\r\n [showNoteButton]=\"showNoteButton\"\r\n [showActionButton]=\"showActionButton\"\r\n (actionSelected)=\"handleSelectedAction($event)\">\r\n</app-context-menu>\r\n<ng-template #dropdownTemplate>\r\n <p-dropdown [style]=\"{'width' : '200px','border-radius': '5px'}\" [options]=\"displayModeOptions\" (onChange)=\"onDisplayModeChange($event)\"></p-dropdown>\r\n</ng-template>\r\n", styles: ["::ng-deep .hidden-calendar .p-inputtext{border:none;width:0px;height:0px}::ng-deep .hidden-calendar .p-inputtext:enabled:focus{box-shadow:none}::ng-deep .displayModeOptions{background:#fff;border:none}.attachment-info{margin-left:50px;font-size:12px;color:#080808}.attachment-info i{margin-right:5px}\n"] }]
281
298
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i1.TsiNotificationService }, { type: i2.LocalizePipe }, { type: i0.Renderer2 }], propDecorators: { contextMenu: [{
282
299
  type: ViewChild,
283
300
  args: [ContextMenuComponent]
@@ -296,9 +313,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
296
313
  type: Input
297
314
  }], eventsData: [{
298
315
  type: Input
316
+ }], showInfoButton: [{
317
+ type: Input
318
+ }], showDownloadButton: [{
319
+ type: Input
320
+ }], showUploadButton: [{
321
+ type: Input
322
+ }], showNoteButton: [{
323
+ type: Input
324
+ }], showActionButton: [{
325
+ type: Input
299
326
  }], eventClick: [{
300
327
  type: Output
301
328
  }], dateRangeChange: [{
302
329
  type: Output
303
330
  }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWNhbGVuZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FsZW5kZXIvdHNpLWNhbGVuZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FsZW5kZXIvdHNpLWNhbGVuZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sRUFBZSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRzlLLE9BQU8saUJBQXlDLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxhQUFhLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxjQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxVQUFVLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7OztBQVdyRCxNQUFNLE9BQU8sb0JBQW9CO0lBVS9CLElBQWEsVUFBVSxDQUFDLEtBQVk7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBT0QsWUFDVSxlQUFrQyxFQUNsQyxpQkFBbUMsRUFDbkMsZUFBdUMsRUFDdkMsYUFBMkIsRUFDM0IsUUFBbUI7UUFKbkIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZD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LFdBQVcsR0FBZ0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztnQkFDeEIsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDbkcsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM5RixDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0F0U1Usb0JBQW9CO21HQUFwQixvQkFBb0IsZ1FBR3BCLG9CQUFvQix5VUN2QmpDLDRyQkFhQTs7NEZET2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGNBQWM7Nk1BT1MsV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ04sVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNBLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDVSxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUVwQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIsIHNpZ25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYWxlbmRhckFwaSwgQ2FsZW5kYXJPcHRpb25zLCBEYXRlU2VsZWN0QXJnLCBFdmVudEFwaSwgRXZlbnRDbGlja0FyZywgRXZlbnRJbnB1dCB9IGZyb20gJ0BmdWxsY2FsZW5kYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIHByaW1lTmcgZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XHJcbmltcG9ydCBpbnRlcmFjdGlvblBsdWdpbiwgeyBFdmVudFJlc2l6ZURvbmVBcmcgfSBmcm9tICdAZnVsbGNhbGVuZGFyL2ludGVyYWN0aW9uJztcclxuaW1wb3J0IGRheUdyaWRQbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci9kYXlncmlkJztcclxuaW1wb3J0IHRpbWVHcmlkUGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvdGltZWdyaWQnO1xyXG5pbXBvcnQgbGlzdFBsdWdpbiBmcm9tICdAZnVsbGNhbGVuZGFyL2xpc3QnO1xyXG5pbXBvcnQgeyBGdWxsQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICdAZnVsbGNhbGVuZGFyL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRfTW9kZXMsIE1vZGVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9sb2NhbGl6ZS5waXBlJztcclxuaW1wb3J0IHsgQ3J1ZEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS9jcnVkLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXZlbnRTY2hlbWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tbW9uL2V2ZW50LXNjaGVtYSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RzaS1jYWxlbmRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1jYWxlbmRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWNhbGVuZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUNhbGVuZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgY3VycmVudENvbnRleHRNZW51RXZlbnQ6IGFueTtcclxuICBAVmlld0NoaWxkKENvbnRleHRNZW51Q29tcG9uZW50KSBjb250ZXh0TWVudTogQ29udGV4dE1lbnVDb21wb25lbnQgfCB1bmRlZmluZWQ7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXI6IHByaW1lTmcuQ2FsZW5kYXIgfCB1bmRlZmluZWQ7XHJcbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXInKSBjYWxlbmRhcjogRnVsbENhbGVuZGFyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xyXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duVGVtcGxhdGUnKSBkcm9wZG93blRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBASW5wdXQoKSBjcnVkU2VydmljZT86IENydWRCYXNlU2VydmljZTxhbnksIGFueSwgYW55LCBhbnk+O1xyXG4gIEBJbnB1dCgpIHNjaGVtYTogRXZlbnRTY2hlbWEgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc2V0IGV2ZW50c0RhdGEodmFsdWU6IGFueVtdKSB7XHJcbiAgICB0aGlzLm1hcERhdGFUb0V2ZW50cyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgZXZlbnRDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZGF0ZVJhbmdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBkaXNwbGF5TW9kZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgX21lc3NhZ2VTZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbG9jYWxpemVQaXBlOiBMb2NhbGl6ZVBpcGUsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICAgIHRoaXMuZGlzcGxheU1vZGVPcHRpb25zID0gW1xyXG4gICAgICB7IGxhYmVsOiB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX2RheUdyaWRNb250aCcpLCB2YWx1ZTogJ2RheUdyaWRNb250aCcgfSxcclxuICAgICAgeyBsYWJlbDogdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl9kYXlHcmlkV2VlaycpLCB2YWx1ZTogJ2RheUdyaWRXZWVrJyB9LFxyXG4gICAgICB7IGxhYmVsOiB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX2RheUdyaWREYXknKSwgdmFsdWU6ICdkYXlHcmlkRGF5JyB9LFxyXG4gICAgICB7IGxhYmVsOiB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX3RpbWVHcmlkRGF5JyksIHZhbHVlOiAndGltZUdyaWREYXknIH0sXHJcbiAgICAgIHsgbGFiZWw6IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfdGltZUdyaWRXZWVrJyksIHZhbHVlOiAndGltZUdyaWRXZWVrJyB9LFxyXG4gICAgICB7IGxhYmVsOiB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX2xpc3RZZWFyJyksIHZhbHVlOiAnbGlzdFllYXInIH0sXHJcbiAgICAgIHsgbGFiZWw6IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfbGlzdE1vbnRoJyksIHZhbHVlOiAnbGlzdE1vbnRoJyB9LFxyXG4gICAgICB7IGxhYmVsOiB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX2xpc3RXZWVrJyksIHZhbHVlOiAnbGlzdFdlZWsnIH0sXHJcbiAgICAgIHsgbGFiZWw6IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfbGlzdERheScpLCB2YWx1ZTogJ2xpc3REYXknIH0sXHJcbiAgICAgIC8vcHJlbWl1bVxyXG4gICAgICAvLyB7IGxhYmVsOiAndnVlIGNocm9ub2xvZ2lxdWUgYW5uw6llJywgdmFsdWU6ICd0aW1lbGluZVllYXInIH0sXHJcbiAgICAgIC8vIHsgbGFiZWw6ICd2dWUgY2hyb25vbG9naXF1ZSBtb2lzJywgdmFsdWU6ICd0aW1lbGluZU1vbnRoJyB9LFxyXG4gICAgICAvLyB7IGxhYmVsOiAndnVlIGNocm9ub2xvZ2lxdWUgc2VtYWluZScsIHZhbHVlOiAndGltZWxpbmVXZWVrJyB9LFxyXG4gICAgICAvLyB7IGxhYmVsOiAndnVlIGNocm9ub2xvZ2lxdWUgam91cicsIHZhbHVlOiAndGltZWxpbmVEYXknIH0sXHJcbiAgICBdXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgY29uc3QgaWNvbkZvckNhbGVuZGFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZjLWljb24tQ2FsZW5kYXInKTtcclxuICAgIGlmIChpY29uRm9yQ2FsZW5kYXIpIHtcclxuICAgICAgaWNvbkZvckNhbGVuZGFyLmNsYXNzTGlzdC52YWx1ZSA9IFwicGkgcGktY2FsZW5kYXJcIlxyXG4gICAgfVxyXG4gICAgY29uc3QgaWNvbkZvclNlYXJjaEZpbHRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mYy1pY29uLVNlYXJjaEZpbHRlcicpO1xyXG4gICAgaWYgKGljb25Gb3JTZWFyY2hGaWx0ZXIpIHtcclxuICAgICAgaWNvbkZvclNlYXJjaEZpbHRlci5jbGFzc0xpc3QudmFsdWUgPSBcInBpIHBpLXNlYXJjaFwiXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZHJvcGRvd25FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZjLWRpc3BsYXlNb2RlT3B0aW9ucy1idXR0b24nKTtcclxuICAgIGlmIChkcm9wZG93bkVsZW1lbnQpIHtcclxuICAgICAgZHJvcGRvd25FbGVtZW50LmlubmVySFRNTCA9ICcnOyAvLyBDbGVhciBhbnkgZGVmYXVsdCBjb250ZW50XHJcbiAgICAgIC8vIENyZWF0ZSBhbiBlbWJlZGRlZCB2aWV3IGZyb20gdGhlIHRlbXBsYXRlXHJcbiAgICAgIGNvbnN0IGVtYmVkZGVkVmlldyA9IHRoaXMuZHJvcGRvd25UZW1wbGF0ZSEuY3JlYXRlRW1iZWRkZWRWaWV3KG51bGwpO1xyXG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluc2VydChlbWJlZGRlZFZpZXcpO1xyXG4gICAgICAvLyBBcHBlbmQgdGhlIGRyb3Bkb3duIHRvIHRoZSB0b29sYmFyXHJcbiAgICAgIGVtYmVkZGVkVmlldyEucm9vdE5vZGVzLmZvckVhY2gobm9kZSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkcm9wZG93bkVsZW1lbnQsIG5vZGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgZHJvcGRvd25FbGVtZW50LmNsYXNzTGlzdC52YWx1ZSA9ICdkaXNwbGF5TW9kZU9wdGlvbnMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJPcHRpb25zID0gc2lnbmFsPENhbGVuZGFyT3B0aW9ucz4oe1xyXG4gICAgcGx1Z2luczogW1xyXG4gICAgICBpbnRlcmFjdGlvblBsdWdpbixcclxuICAgICAgZGF5R3JpZFBsdWdpbixcclxuICAgICAgdGltZUdyaWRQbHVnaW4sXHJcbiAgICAgIGxpc3RQbHVnaW4sXHJcbiAgICBdLFxyXG4gICAgaGVhZGVyVG9vbGJhcjoge1xyXG4gICAgICBsZWZ0OiAncHJldlllYXIscHJldixkYXRlUGlja2VyTmF2aWdhdG9yLHNlYXJjaEZpbHRlcixuZXh0LG5leHRZZWFyLHRvZGF5JyxcclxuICAgICAgY2VudGVyOiAndGl0bGUnLFxyXG4gICAgICByaWdodDogJ2Rpc3BsYXlNb2RlT3B0aW9ucycsXHJcbiAgICB9LFxyXG4gICAgYnV0dG9uVGV4dDoge1xyXG4gICAgICB0b2RheTogXCJBdWpvdXJkJ2h1aVwiLFxyXG4gICAgfSxcclxuICAgIGN1c3RvbUJ1dHRvbnM6IHtcclxuICAgICAgZGF0ZVBpY2tlck5hdmlnYXRvcjoge1xyXG4gICAgICAgIGljb246IFwiQ2FsZW5kYXJcIixcclxuICAgICAgICBoaW50OiBcIlwiLFxyXG4gICAgICAgIGNsaWNrOiB0aGlzLmhhbmRsZURhdGVQaWNrZXJOYXZpZ2F0b3JDbGljay5iaW5kKHRoaXMpXHJcbiAgICAgIH0sXHJcbiAgICAgIHNlYXJjaEZpbHRlcjoge1xyXG4gICAgICAgIGljb246IFwiU2VhcmNoRmlsdGVyXCIsXHJcbiAgICAgICAgaGludDogXCJcIixcclxuICAgICAgICBjbGljazogdGhpcy5oYW5kbGVTZWFyY2hGaWx0ZXIuYmluZCh0aGlzKVxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGluaXRpYWxWaWV3OiAnZGF5R3JpZE1vbnRoJyxcclxuICAgIGxvY2FsZTogXCJmclwiLFxyXG4gICAgZXZlbnRzOiB0aGlzLmV2ZW50c0RhdGEsXHJcbiAgICB3ZWVrZW5kczogdHJ1ZSxcclxuICAgIHNlbGVjdGFibGU6IHRydWUsXHJcbiAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgIGV2ZW50UmVzaXphYmxlRnJvbVN0YXJ0OiB0cnVlLFxyXG4gICAgZXZlbnRTdGFydEVkaXRhYmxlOiB0cnVlLFxyXG4gICAgZXZlbnREdXJhdGlvbkVkaXRhYmxlOiB0cnVlLFxyXG4gICAgc2VsZWN0TWlycm9yOiB0cnVlLFxyXG4gICAgZGF5TWF4RXZlbnRzOiB0cnVlLFxyXG4gICAgc2VsZWN0OiB0aGlzLmhhbmRsZURhdGVTZWxlY3QuYmluZCh0aGlzKSxcclxuICAgIGV2ZW50Q2xpY2s6IHRoaXMuaGFuZGxlRXZlbnRDbGljay5iaW5kKHRoaXMpLFxyXG4gICAgZXZlbnRzU2V0OiB0aGlzLmhhbmRsZUV2ZW50cy5iaW5kKHRoaXMpLFxyXG4gICAgZXZlbnREcm9wOiB0aGlzLmhhbmRsZUV2ZW50RHJvcC5iaW5kKHRoaXMpLFxyXG4gICAgZXZlbnRSZXNpemU6IHRoaXMuaGFuZGxlRXZlbnRSZXNpemUuYmluZCh0aGlzKSxcclxuICAgIGV2ZW50RGlkTW91bnQ6IHRoaXMuaGFuZGxlRXZlbnREaWRNb3VudC5iaW5kKHRoaXMpLFxyXG4gICAgZGF0ZXNTZXQ6IHRoaXMuZ2V0Q3VycmVudERhdGVzLmJpbmQodGhpcyksXHJcbiAgICBldmVudENvbnRlbnQ6IChhcmcpID0+IHtcclxuICAgICAgY29uc3Qgbm9tYnJlQXR0YWNoZW1lbnQgPSBhcmcuZXZlbnQuZXh0ZW5kZWRQcm9wcz8uWydub21icmVBdHRhY2hlbWVudCddIHx8IDA7XHJcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRIdG1sID0gbm9tYnJlQXR0YWNoZW1lbnQgPiAwXHJcbiAgICAgICAgPyBgPHNwYW4gY2xhc3M9XCJhdHRhY2htZW50LWluZm9cIj48aSBjbGFzcz1cInBpIHBpLXBhcGVyY2xpcFwiPjwvaT4gWyR7bm9tYnJlQXR0YWNoZW1lbnR9XTwvc3Bhbj5gXHJcbiAgICAgICAgOiAnJztcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaHRtbDogYFxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldmVudC10aXRsZVwiPiR7YXJnLmV2ZW50LnRpdGxlfTwvc3Bhbj5cclxuICAgICAgICAgICAgJHthdHRhY2htZW50SHRtbH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIGAsXHJcbiAgICAgIH07XHJcbiAgICB9LFxyXG4gIH0pO1xyXG4gIGN1cnJlbnRFdmVudHMgPSBzaWduYWw8RXZlbnRBcGlbXT4oW10pO1xyXG5cclxuICBtYXBEYXRhVG9FdmVudHModmFsdWU6IGFueVtdKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyT3B0aW9ucy51cGRhdGUoKG9sZENhbGVuZGVyT3B0czogQ2FsZW5kYXJPcHRpb25zKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5zY2hlbWEpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzY2hlbWEgc2hvdWxkIGJlIGRlZmluZWQuXCIpXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGV2dHMgPSB2YWx1ZS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgbGV0IHRpdGxlOiBzdHJpbmcgPSB0aGlzLnNjaGVtYSEudGl0bGVcclxuICAgICAgICAgIC5tYXAoKGNvbHVtbk5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPVxyXG4gICAgICAgICAgICAgIGNvbHVtbk5hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjb2x1bW5OYW1lLnNsaWNlKDEpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIChpdGVtW3Byb3BlcnR5TmFtZV0gPz8gaXRlbVtjb2x1bW5OYW1lXSA/PyAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXHJcbiAgICAgICAgICAuam9pbignIC0gJyk7XHJcbiAgICAgICAgbGV0IGV2ZW50OiBFdmVudElucHV0ID0ge1xyXG4gICAgICAgICAgaWQ6IGl0ZW1bdGhpcy5zY2hlbWEhLmlkXSxcclxuICAgICAgICAgIHN0YXJ0OiBpdGVtW3RoaXMuc2NoZW1hIS5zdGFydF0sXHJcbiAgICAgICAgICBlbmQ6IGl0ZW1bdGhpcy5zY2hlbWEhLmVuZF0sXHJcbiAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICBjb2xvcjogaXRlbS5jb2xvcixcclxuICAgICAgICAgIGV4dGVuZGVkUHJvcHM6IHtcclxuICAgICAgICAgICAgbm9tYnJlQXR0YWNoZW1lbnQ6IGl0ZW0ubm9tYnJlQXR0YWNoZW1lbnQsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gZXZlbnQ7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgb2xkQ2FsZW5kZXJPcHRzLmV2ZW50cyA9IGV2dHM7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4ub2xkQ2FsZW5kZXJPcHRzLFxyXG4gICAgICAgIGV2ZW50czogZXZ0c1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVEYXRlU2VsZWN0KHNlbGVjdEluZm86IERhdGVTZWxlY3RBcmcpIHtcclxuICAgIHRoaXMuZXZlbnRDbGljay5lbWl0KHtcclxuICAgICAgbW9kZTogQ29tcG9uZW50X01vZGVzLkNSRUFURSxcclxuICAgICAgZGF0ZURlYnV0OiBzZWxlY3RJbmZvLnN0YXJ0LnRvTG9jYWxlRGF0ZVN0cmluZygnZnItRlInKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFdmVudENsaWNrKGNsaWNrSW5mbzogRXZlbnRDbGlja0FyZykge1xyXG4gICAgdGhpcy5ldmVudENsaWNrLmVtaXQoe1xyXG4gICAgICBtb2RlOiBDb21wb25lbnRfTW9kZXMuRURJVCxcclxuICAgICAgaWQ6IGNsaWNrSW5mby5ldmVudC5pZFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFdmVudHMoZXZlbnRzOiBFdmVudEFwaVtdKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRFdmVudHMuc2V0KGV2ZW50cyk7XHJcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7IC8vIHdvcmthcm91bmQgZm9yIHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXHJcbiAgfVxyXG5cclxuICBoYW5kbGVFdmVudFJlc2l6ZShpbmZvOiBFdmVudFJlc2l6ZURvbmVBcmcpIHtcclxuICAgIHRoaXMudXBkYXRlRXZlbnQoaW5mbyk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFdmVudERyb3AoaW5mbzogYW55KSB7XHJcbiAgICB0aGlzLnVwZGF0ZUV2ZW50KGluZm8pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRXZlbnQoaW5mbzogYW55KSB7XHJcbiAgICBjb25zdCBuZXdTdGFydCA9IGluZm8uZXZlbnQuc3RhcnQ7XHJcbiAgICBjb25zdCBuZXdFbmQgPSBpbmZvLmV2ZW50LmVuZDtcclxuICAgIGNvbnN0IGlkID0gaW5mby5ldmVudC5pZDtcclxuXHJcbiAgICBpZiAodGhpcy5jcnVkU2VydmljZSkge1xyXG4gICAgICB0aGlzLmNydWRTZXJ2aWNlLmdldEJ5SWQoaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuc2NoZW1hKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNjaGVtYSBzaG91bGQgYmUgZGVmaW5lZC5cIilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBpdGVtID0gcmVzO1xyXG4gICAgICAgICAgaXRlbVt0aGlzLnNjaGVtYSEuc3RhcnRdID0gbmV3U3RhcnQ7XHJcbiAgICAgICAgICBpdGVtW3RoaXMuc2NoZW1hIS5lbmRdID0gbmV3RW5kID8gbmV3RW5kIDogbmV3U3RhcnQ7IC8vIGlmIGl0J3Mgb24gdGhlIHNhbWUgZGF5XHJcbiAgICAgICAgICB0aGlzLmNydWRTZXJ2aWNlPy51cGRhdGUoaXRlbSwgaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXCJzaGFyZWRfcmVwb3J0aW5nX3N1Y2Nlc3NfdXBkYXRlZFwiKSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IGNvbnNvbGUubG9nKGVycilcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4gY29uc29sZS5sb2coXCJDYW4gbm90IHVwZGF0ZSBpdGVtIDpcIiwgZXJyKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGF0ZVBpY2tlck5hdmlnYXRvckNsaWNrKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRhdGVQaWNrZXIpIHtcclxuICAgICAgbGV0IGNhbGVuZGFySW5wdXQgPSB0aGlzLmRhdGVQaWNrZXIuaW5wdXRmaWVsZFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgY2FsZW5kYXJJbnB1dC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBoYW5kbGVTZWFyY2hGaWx0ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5ldmVudENsaWNrLmVtaXQoe1xyXG4gICAgICBtb2RlOiBcIlNFQVJDSFwiXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb0RhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZnVsbENhbGVuZGFyID0gdGhpcy5jYWxlbmRhcj8uZ2V0QXBpKCk7XHJcbiAgICBmdWxsQ2FsZW5kYXI/LmdvdG9EYXRlKGV2ZW50KTtcclxuICAgIGlmICh0aGlzLmRhdGVQaWNrZXIpIHtcclxuICAgICAgbGV0IGNhbGVuZGFySW5wdXQgPSB0aGlzLmRhdGVQaWNrZXIuaW5wdXRmaWVsZFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgY2FsZW5kYXJJbnB1dC5ibHVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFdmVudERpZE1vdW50KGFyZzogYW55KSB7XHJcbiAgICAvL0F0dGFjaCByaWdodC1jbGljayBldmVudCB0byBlYWNoIGV2ZW50IGNlbGxcclxuICAgIGFyZy5lbC5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAvL1ByZXZlbnQgdGhlIGRlZmF1bHQgY29udGV4dCBtZW51IGZyb20gYXBwZWFyaW5nXHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuY3VycmVudENvbnRleHRNZW51RXZlbnQgPSBhcmcuZXZlbnQ7XHJcbiAgICAgIHRoaXMuY29udGV4dE1lbnU/Lm9wZW5NZW51KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTZWxlY3RlZEFjdGlvbihhY3Rpb246IGFueSk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChhY3Rpb24uc2VsZWN0ZWRBY3Rpb24pIHtcclxuICAgICAgY2FzZSBNb2Rlcy5kZWxldGU6XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENvbnRleHRNZW51RXZlbnQpIHtcclxuICAgICAgICAgIHRoaXMuY3J1ZFNlcnZpY2U/LmRlbGV0ZSh0aGlzLmN1cnJlbnRDb250ZXh0TWVudUV2ZW50LmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnVsbENhbGVuZGFyID0gdGhpcy5jYWxlbmRhcj8uZ2V0QXBpKCk7XHJcbiAgICAgICAgICAgICAgZnVsbENhbGVuZGFyPy5nZXRFdmVudEJ5SWQodGhpcy5jdXJyZW50Q29udGV4dE1lbnVFdmVudC5pZCk/LnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX2RlbGV0ZV9pdGVtX3N1Y2Nlc3NcIilcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHRoaXMuX21lc3NhZ2VTZXJ2aWNlLmVycm9yKGVyci5lcnJvci5lcnJvcnNbNTQ3XSA/IFwic2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl9kZWxldGVfaXRlbV9mYWlsZWRcIiA6IGVyci5lcnJvci5kZXRhaWwpLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTW9kZXMuY29uc3VsdDpcclxuICAgICAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdCh7XHJcbiAgICAgICAgICBtb2RlOiBDb21wb25lbnRfTW9kZXMuQ09OU1VMVCxcclxuICAgICAgICAgIGlkOiB0aGlzLmN1cnJlbnRDb250ZXh0TWVudUV2ZW50LmlkXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTW9kZXMuZWRpdDpcclxuICAgICAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdCh7XHJcbiAgICAgICAgICBtb2RlOiBDb21wb25lbnRfTW9kZXMuRURJVCxcclxuICAgICAgICAgIGlkOiB0aGlzLmN1cnJlbnRDb250ZXh0TWVudUV2ZW50LmlkXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRpc3BsYXlNb2RlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGNhbGVuZGFyQXBpID0gdGhpcy5jYWxlbmRhcj8uZ2V0QXBpKCk7XHJcbiAgICBjYWxlbmRhckFwaT8uY2hhbmdlVmlldyhldmVudC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50RGF0ZXMoKSB7XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xyXG4gICAgICBjb25zdCBjYWxlbmRhckFwaTogQ2FsZW5kYXJBcGkgPSB0aGlzLmNhbGVuZGFyLmdldEFwaSgpO1xyXG4gICAgICB0aGlzLmRhdGVSYW5nZUNoYW5nZS5lbWl0KHtcclxuICAgICAgICBzdGFydDogbmV3IERhdGUoY2FsZW5kYXJBcGkudmlldy5jdXJyZW50U3RhcnQuc2V0RGF0ZShjYWxlbmRhckFwaS52aWV3LmN1cnJlbnRTdGFydC5nZXREYXRlKCkgKyAxKSksXHJcbiAgICAgICAgZW5kOiBuZXcgRGF0ZShjYWxlbmRhckFwaS52aWV3LmN1cnJlbnRFbmQuc2V0RGF0ZShjYWxlbmRhckFwaS52aWV3LmN1cnJlbnRFbmQuZ2V0RGF0ZSgpICsgMSkpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8cC1jYWxlbmRhciAjZGF0ZVBpY2tlciBjbGFzcz1cImhpZGRlbi1jYWxlbmRhclwiIChvblNlbGVjdCk9XCJuYXZpZ2F0ZVRvRGF0ZSgkZXZlbnQpXCIvPlxyXG48ZnVsbC1jYWxlbmRhciAjY2FsZW5kYXIgW29wdGlvbnNdPSdjYWxlbmRhck9wdGlvbnMoKSc+XHJcbiAgICA8bmctdGVtcGxhdGUgIGxldC1hcmc+XHJcblxyXG4gICAgPGkgW25nU3R5bGVdPVwiYXJnLmV2ZW50LmNvbG9yICYmIGFyZy5ldmVudC5jb2xvciAhPT0gJycgPyB7J2JhY2tncm91bmQtY29sb3InOiBhcmcuZXZlbnQuY29sb3J9IDoge31cIiA+XHJcbiAgICAgICAgXHJcbiAgICAgICAge3sgYXJnLmV2ZW50LnRpdGxlIH19PC9pPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9mdWxsLWNhbGVuZGFyPlxyXG48YXBwLWNvbnRleHQtbWVudSAoYWN0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlU2VsZWN0ZWRBY3Rpb24oJGV2ZW50KVwiPjwvYXBwLWNvbnRleHQtbWVudT5cclxuPG5nLXRlbXBsYXRlICNkcm9wZG93blRlbXBsYXRlPlxyXG4gICAgPHAtZHJvcGRvd24gW3N0eWxlXT1cInsnd2lkdGgnIDogJzIwMHB4JywnYm9yZGVyLXJhZGl1cyc6ICc1cHgnfVwiIFtvcHRpb25zXT1cImRpc3BsYXlNb2RlT3B0aW9uc1wiIChvbkNoYW5nZSk9XCJvbkRpc3BsYXlNb2RlQ2hhbmdlKCRldmVudClcIj48L3AtZHJvcGRvd24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWNhbGVuZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FsZW5kZXIvdHNpLWNhbGVuZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FsZW5kZXIvdHNpLWNhbGVuZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sRUFBZSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRzlLLE9BQU8saUJBQXlDLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxhQUFhLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxjQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxVQUFVLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7OztBQVdyRCxNQUFNLE9BQU8sb0JBQW9CO0lBVS9CLElBQWEsVUFBVSxDQUFDLEtBQVk7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBWUQsWUFDVSxlQUFrQyxFQUNsQyxpQkFBbUMsRUFDbkMsZUFBdUMsRUFDdkMsYUFBMkIsRUFDM0IsUUFBbUI7UUFKbkIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZD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QUFDLENBQUMsQ0FBQztnQkFDbkcsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM5RixDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0EzVFUsb0JBQW9CO21HQUFwQixvQkFBb0IsMGJBR3BCLG9CQUFvQix5VUN2QmpDLGszQkFtQkE7OzRGRENhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjOzZNQU9TLFdBQVc7c0JBQTNDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNOLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDQSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ1UsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFFcEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ08sVUFBVTtzQkFBdEIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFJlbmRlcmVyMiwgc2lnbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbGVuZGFyQXBpLCBDYWxlbmRhck9wdGlvbnMsIERhdGVTZWxlY3RBcmcsIEV2ZW50QXBpLCBFdmVudENsaWNrQXJnLCBFdmVudElucHV0IH0gZnJvbSAnQGZ1bGxjYWxlbmRhci9jb3JlJztcclxuaW1wb3J0ICogYXMgcHJpbWVOZyBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcclxuaW1wb3J0IGludGVyYWN0aW9uUGx1Z2luLCB7IEV2ZW50UmVzaXplRG9uZUFyZyB9IGZyb20gJ0BmdWxsY2FsZW5kYXIvaW50ZXJhY3Rpb24nO1xyXG5pbXBvcnQgZGF5R3JpZFBsdWdpbiBmcm9tICdAZnVsbGNhbGVuZGFyL2RheWdyaWQnO1xyXG5pbXBvcnQgdGltZUdyaWRQbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci90aW1lZ3JpZCc7XHJcbmltcG9ydCBsaXN0UGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvbGlzdCc7XHJcbmltcG9ydCB7IEZ1bGxDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJ0BmdWxsY2FsZW5kYXIvYW5ndWxhcic7XHJcbmltcG9ydCB7IENvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbXBvbmVudF9Nb2RlcywgTW9kZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBDcnVkQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlL2NydWQtYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFdmVudFNjaGVtYSB9IGZyb20gJy4uLy4uL21vZGVscy9jb21tb24vZXZlbnQtc2NoZW1hJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHNpLWNhbGVuZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHNpLWNhbGVuZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90c2ktY2FsZW5kZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQ2FsZW5kZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBjdXJyZW50Q29udGV4dE1lbnVFdmVudDogYW55O1xyXG4gIEBWaWV3Q2hpbGQoQ29udGV4dE1lbnVDb21wb25lbnQpIGNvbnRleHRNZW51OiBDb250ZXh0TWVudUNvbXBvbmVudCB8IHVuZGVmaW5lZDtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlcjogcHJpbWVOZy5DYWxlbmRhciB8IHVuZGVmaW5lZDtcclxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyOiBGdWxsQ2FsZW5kYXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XHJcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25UZW1wbGF0ZScpIGRyb3Bkb3duVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIGNydWRTZXJ2aWNlPzogQ3J1ZEJhc2VTZXJ2aWNlPGFueSwgYW55LCBhbnksIGFueT47XHJcbiAgQElucHV0KCkgc2NoZW1hOiBFdmVudFNjaGVtYSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzZXQgZXZlbnRzRGF0YSh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMubWFwRGF0YVRvRXZlbnRzKHZhbHVlKTtcclxuICB9XHJcbiAgQElucHV0KCkgc2hvd0luZm9CdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93RG93bmxvYWRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93VXBsb2FkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd05vdGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93QWN0aW9uQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBldmVudENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkYXRlUmFuZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGRpc3BsYXlNb2RlT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9sb2NhbGl6ZVBpcGU6IExvY2FsaXplUGlwZSxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICkge1xyXG4gICAgdGhpcy5kaXNwbGF5TW9kZU9wdGlvbnMgPSBbXHJcbiAgICAgIHsgbGFiZWw6IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfZGF5R3JpZE1vbnRoJyksIHZhbHVlOiAnZGF5R3JpZE1vbnRoJyB9LFxyXG4gICAgICB7IGxhYmVsOiB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKCdzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX2RheUdyaWRXZWVrJyksIHZhbHVlOiAnZGF5R3JpZFdlZWsnIH0sXHJcbiAgICAgIHsgbGFiZWw6IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfZGF5R3JpZERheScpLCB2YWx1ZTogJ2RheUdyaWREYXknIH0sXHJcbiAgICAgIHsgbGFiZWw6IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfdGltZUdyaWREYXknKSwgdmFsdWU6ICd0aW1lR3JpZERheScgfSxcclxuICAgICAgeyBsYWJlbDogdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl90aW1lR3JpZFdlZWsnKSwgdmFsdWU6ICd0aW1lR3JpZFdlZWsnIH0sXHJcbiAgICAgIHsgbGFiZWw6IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfbGlzdFllYXInKSwgdmFsdWU6ICdsaXN0WWVhcicgfSxcclxuICAgICAgeyBsYWJlbDogdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl9saXN0TW9udGgnKSwgdmFsdWU6ICdsaXN0TW9udGgnIH0sXHJcbiAgICAgIHsgbGFiZWw6IHRoaXMuX2xvY2FsaXplUGlwZS50cmFuc2Zvcm0oJ3NoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfbGlzdFdlZWsnKSwgdmFsdWU6ICdsaXN0V2VlaycgfSxcclxuICAgICAgeyBsYWJlbDogdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybSgnc2hhcmVkX3RzaV9jb21wb25lbnRfZ3JpZF9jYWxlbmRlcl9saXN0RGF5JyksIHZhbHVlOiAnbGlzdERheScgfSxcclxuICAgICAgLy9wcmVtaXVtXHJcbiAgICAgIC8vIHsgbGFiZWw6ICd2dWUgY2hyb25vbG9naXF1ZSBhbm7DqWUnLCB2YWx1ZTogJ3RpbWVsaW5lWWVhcicgfSxcclxuICAgICAgLy8geyBsYWJlbDogJ3Z1ZSBjaHJvbm9sb2dpcXVlIG1vaXMnLCB2YWx1ZTogJ3RpbWVsaW5lTW9udGgnIH0sXHJcbiAgICAgIC8vIHsgbGFiZWw6ICd2dWUgY2hyb25vbG9naXF1ZSBzZW1haW5lJywgdmFsdWU6ICd0aW1lbGluZVdlZWsnIH0sXHJcbiAgICAgIC8vIHsgbGFiZWw6ICd2dWUgY2hyb25vbG9naXF1ZSBqb3VyJywgdmFsdWU6ICd0aW1lbGluZURheScgfSxcclxuICAgIF1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBjb25zdCBpY29uRm9yQ2FsZW5kYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmMtaWNvbi1DYWxlbmRhcicpO1xyXG4gICAgaWYgKGljb25Gb3JDYWxlbmRhcikge1xyXG4gICAgICBpY29uRm9yQ2FsZW5kYXIuY2xhc3NMaXN0LnZhbHVlID0gXCJwaSBwaS1jYWxlbmRhclwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBpY29uRm9yU2VhcmNoRmlsdGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZjLWljb24tU2VhcmNoRmlsdGVyJyk7XHJcbiAgICBpZiAoaWNvbkZvclNlYXJjaEZpbHRlcikge1xyXG4gICAgICBpY29uRm9yU2VhcmNoRmlsdGVyLmNsYXNzTGlzdC52YWx1ZSA9IFwicGkgcGktc2VhcmNoXCJcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmMtZGlzcGxheU1vZGVPcHRpb25zLWJ1dHRvbicpO1xyXG4gICAgaWYgKGRyb3Bkb3duRWxlbWVudCkge1xyXG4gICAgICBkcm9wZG93bkVsZW1lbnQuaW5uZXJIVE1MID0gJyc7IC8vIENsZWFyIGFueSBkZWZhdWx0IGNvbnRlbnRcclxuICAgICAgLy8gQ3JlYXRlIGFuIGVtYmVkZGVkIHZpZXcgZnJvbSB0aGUgdGVtcGxhdGVcclxuICAgICAgY29uc3QgZW1iZWRkZWRWaWV3ID0gdGhpcy5kcm9wZG93blRlbXBsYXRlIS5jcmVhdGVFbWJlZGRlZFZpZXcobnVsbCk7XHJcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5zZXJ0KGVtYmVkZGVkVmlldyk7XHJcbiAgICAgIC8vIEFwcGVuZCB0aGUgZHJvcGRvd24gdG8gdGhlIHRvb2xiYXJcclxuICAgICAgZW1iZWRkZWRWaWV3IS5yb290Tm9kZXMuZm9yRWFjaChub2RlID0+IHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRyb3Bkb3duRWxlbWVudCwgbm9kZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBkcm9wZG93bkVsZW1lbnQuY2xhc3NMaXN0LnZhbHVlID0gJ2Rpc3BsYXlNb2RlT3B0aW9ucyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxlbmRhck9wdGlvbnMgPSBzaWduYWw8Q2FsZW5kYXJPcHRpb25zPih7XHJcbiAgICBwbHVnaW5zOiBbXHJcbiAgICAgIGludGVyYWN0aW9uUGx1Z2luLFxyXG4gICAgICBkYXlHcmlkUGx1Z2luLFxyXG4gICAgICB0aW1lR3JpZFBsdWdpbixcclxuICAgICAgbGlzdFBsdWdpbixcclxuICAgIF0sXHJcbiAgICBoZWFkZXJUb29sYmFyOiB7XHJcbiAgICAgIGxlZnQ6ICdwcmV2WWVhcixwcmV2LGRhdGVQaWNrZXJOYXZpZ2F0b3Isc2VhcmNoRmlsdGVyLG5leHQsbmV4dFllYXIsdG9kYXknLFxyXG4gICAgICBjZW50ZXI6ICd0aXRsZScsXHJcbiAgICAgIHJpZ2h0OiAnZGlzcGxheU1vZGVPcHRpb25zJyxcclxuICAgIH0sXHJcbiAgICBidXR0b25UZXh0OiB7XHJcbiAgICAgIHRvZGF5OiBcIkF1am91cmQnaHVpXCIsXHJcbiAgICB9LFxyXG4gICAgY3VzdG9tQnV0dG9uczoge1xyXG4gICAgICBkYXRlUGlja2VyTmF2aWdhdG9yOiB7XHJcbiAgICAgICAgaWNvbjogXCJDYWxlbmRhclwiLFxyXG4gICAgICAgIGhpbnQ6IFwiXCIsXHJcbiAgICAgICAgY2xpY2s6IHRoaXMuaGFuZGxlRGF0ZVBpY2tlck5hdmlnYXRvckNsaWNrLmJpbmQodGhpcylcclxuICAgICAgfSxcclxuICAgICAgc2VhcmNoRmlsdGVyOiB7XHJcbiAgICAgICAgaWNvbjogXCJTZWFyY2hGaWx0ZXJcIixcclxuICAgICAgICBoaW50OiBcIlwiLFxyXG4gICAgICAgIGNsaWNrOiB0aGlzLmhhbmRsZVNlYXJjaEZpbHRlci5iaW5kKHRoaXMpXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgaW5pdGlhbFZpZXc6ICdkYXlHcmlkTW9udGgnLFxyXG4gICAgbG9jYWxlOiBcImZyXCIsXHJcbiAgICBldmVudHM6IHRoaXMuZXZlbnRzRGF0YSxcclxuICAgIHdlZWtlbmRzOiB0cnVlLFxyXG4gICAgc2VsZWN0YWJsZTogdHJ1ZSxcclxuICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgZXZlbnRSZXNpemFibGVGcm9tU3RhcnQ6IHRydWUsXHJcbiAgICBldmVudFN0YXJ0RWRpdGFibGU6IHRydWUsXHJcbiAgICBldmVudER1cmF0aW9uRWRpdGFibGU6IHRydWUsXHJcbiAgICBzZWxlY3RNaXJyb3I6IHRydWUsXHJcbiAgICBkYXlNYXhFdmVudHM6IHRydWUsXHJcbiAgICBzZWxlY3Q6IHRoaXMuaGFuZGxlRGF0ZVNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgZXZlbnRDbGljazogdGhpcy5oYW5kbGVFdmVudENsaWNrLmJpbmQodGhpcyksXHJcbiAgICBldmVudHNTZXQ6IHRoaXMuaGFuZGxlRXZlbnRzLmJpbmQodGhpcyksXHJcbiAgICBldmVudERyb3A6IHRoaXMuaGFuZGxlRXZlbnREcm9wLmJpbmQodGhpcyksXHJcbiAgICBldmVudFJlc2l6ZTogdGhpcy5oYW5kbGVFdmVudFJlc2l6ZS5iaW5kKHRoaXMpLFxyXG4gICAgZXZlbnREaWRNb3VudDogdGhpcy5oYW5kbGVFdmVudERpZE1vdW50LmJpbmQodGhpcyksXHJcbiAgICBkYXRlc1NldDogdGhpcy5nZXRDdXJyZW50RGF0ZXMuYmluZCh0aGlzKSxcclxuICAgIGV2ZW50Q29udGVudDogKGFyZykgPT4ge1xyXG4gICAgICBjb25zdCBub21icmVBdHRhY2hlbWVudCA9IGFyZy5ldmVudC5leHRlbmRlZFByb3BzPy5bJ25vbWJyZUF0dGFjaGVtZW50J10gfHwgMDtcclxuICAgICAgY29uc3QgYXR0YWNobWVudEh0bWwgPSBub21icmVBdHRhY2hlbWVudCA+IDBcclxuICAgICAgICA/IGA8c3BhbiBjbGFzcz1cImF0dGFjaG1lbnQtaW5mb1wiPjxpIGNsYXNzPVwicGkgcGktcGFwZXJjbGlwXCI+PC9pPiBbJHtub21icmVBdHRhY2hlbWVudH1dPC9zcGFuPmBcclxuICAgICAgICA6ICcnO1xyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBodG1sOiBgXHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV2ZW50LXRpdGxlXCI+JHthcmcuZXZlbnQudGl0bGV9PC9zcGFuPlxyXG4gICAgICAgICAgICAke2F0dGFjaG1lbnRIdG1sfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgYCxcclxuICAgICAgfTtcclxuICAgIH0sXHJcbiAgfSk7XHJcbiAgY3VycmVudEV2ZW50cyA9IHNpZ25hbDxFdmVudEFwaVtdPihbXSk7XHJcblxyXG4gIG1hcERhdGFUb0V2ZW50cyh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zLnVwZGF0ZSgob2xkQ2FsZW5kZXJPcHRzOiBDYWxlbmRhck9wdGlvbnMpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnNjaGVtYSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInNjaGVtYSBzaG91bGQgYmUgZGVmaW5lZC5cIilcclxuICAgICAgfVxyXG4gICAgICBsZXQgZXZ0cyA9IHZhbHVlLm1hcChpdGVtID0+IHtcclxuICAgICAgICBsZXQgdGl0bGU6IHN0cmluZyA9IHRoaXMuc2NoZW1hIS50aXRsZVxyXG4gICAgICAgICAgLm1hcCgoY29sdW1uTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9XHJcbiAgICAgICAgICAgICAgY29sdW1uTmFtZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGNvbHVtbk5hbWUuc2xpY2UoMSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gKGl0ZW1bcHJvcGVydHlOYW1lXSA/PyBpdGVtW2NvbHVtbk5hbWVdID8/ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgICAgIC5qb2luKCcgLSAnKTtcclxuICAgICAgICBsZXQgZXZlbnQ6IEV2ZW50SW5wdXQgPSB7XHJcbiAgICAgICAgICBpZDogaXRlbVt0aGlzLnNjaGVtYSEuaWRdLFxyXG4gICAgICAgICAgc3RhcnQ6IGl0ZW1bdGhpcy5zY2hlbWEhLnN0YXJ0XSxcclxuICAgICAgICAgIGVuZDogaXRlbVt0aGlzLnNjaGVtYSEuZW5kXSxcclxuICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgIGNvbG9yOiBpdGVtLmNvbG9yLFxyXG4gICAgICAgICAgZXh0ZW5kZWRQcm9wczoge1xyXG4gICAgICAgICAgICBub21icmVBdHRhY2hlbWVudDogaXRlbS5ub21icmVBdHRhY2hlbWVudCxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBldmVudDtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBvbGRDYWxlbmRlck9wdHMuZXZlbnRzID0gZXZ0cztcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5vbGRDYWxlbmRlck9wdHMsXHJcbiAgICAgICAgZXZlbnRzOiBldnRzXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZURhdGVTZWxlY3Qoc2VsZWN0SW5mbzogRGF0ZVNlbGVjdEFyZykge1xyXG4gICAgdGhpcy5ldmVudENsaWNrLmVtaXQoe1xyXG4gICAgICBtb2RlOiBDb21wb25lbnRfTW9kZXMuQ1JFQVRFLFxyXG4gICAgICBkYXRlRGVidXQ6IHNlbGVjdEluZm8uc3RhcnQudG9Mb2NhbGVEYXRlU3RyaW5nKCdmci1GUicpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUV2ZW50Q2xpY2soY2xpY2tJbmZvOiBFdmVudENsaWNrQXJnKSB7XHJcbiAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdCh7XHJcbiAgICAgIG1vZGU6IENvbXBvbmVudF9Nb2Rlcy5FRElULFxyXG4gICAgICBpZDogY2xpY2tJbmZvLmV2ZW50LmlkXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUV2ZW50cyhldmVudHM6IEV2ZW50QXBpW10pIHtcclxuICAgIHRoaXMuY3VycmVudEV2ZW50cy5zZXQoZXZlbnRzKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTsgLy8gd29ya2Fyb3VuZCBmb3IgcHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcclxuICB9XHJcblxyXG4gIGhhbmRsZUV2ZW50UmVzaXplKGluZm86IEV2ZW50UmVzaXplRG9uZUFyZykge1xyXG4gICAgdGhpcy51cGRhdGVFdmVudChpbmZvKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUV2ZW50RHJvcChpbmZvOiBhbnkpIHtcclxuICAgIHRoaXMudXBkYXRlRXZlbnQoaW5mbyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVFdmVudChpbmZvOiBhbnkpIHtcclxuICAgIGNvbnN0IG5ld1N0YXJ0ID0gaW5mby5ldmVudC5zdGFydDtcclxuICAgIGNvbnN0IG5ld0VuZCA9IGluZm8uZXZlbnQuZW5kO1xyXG4gICAgY29uc3QgaWQgPSBpbmZvLmV2ZW50LmlkO1xyXG5cclxuICAgIGlmICh0aGlzLmNydWRTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuY3J1ZFNlcnZpY2UuZ2V0QnlJZChpZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5zY2hlbWEpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2NoZW1hIHNob3VsZCBiZSBkZWZpbmVkLlwiKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGl0ZW0gPSByZXM7XHJcbiAgICAgICAgICBpdGVtW3RoaXMuc2NoZW1hIS5zdGFydF0gPSBuZXdTdGFydDtcclxuICAgICAgICAgIGl0ZW1bdGhpcy5zY2hlbWEhLmVuZF0gPSBuZXdFbmQgPyBuZXdFbmQgOiBuZXdTdGFydDsgLy8gaWYgaXQncyBvbiB0aGUgc2FtZSBkYXlcclxuICAgICAgICAgIHRoaXMuY3J1ZFNlcnZpY2U/LnVwZGF0ZShpdGVtLCBpZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcInNoYXJlZF9yZXBvcnRpbmdfc3VjY2Vzc191cGRhdGVkXCIpLFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4gY29uc29sZS5sb2coZXJyKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiBjb25zb2xlLmxvZyhcIkNhbiBub3QgdXBkYXRlIGl0ZW0gOlwiLCBlcnIpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVEYXRlUGlja2VyTmF2aWdhdG9yQ2xpY2soZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlcikge1xyXG4gICAgICBsZXQgY2FsZW5kYXJJbnB1dCA9IHRoaXMuZGF0ZVBpY2tlci5pbnB1dGZpZWxkVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjYWxlbmRhcklucHV0LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZVNlYXJjaEZpbHRlcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdCh7XHJcbiAgICAgIG1vZGU6IFwiU0VBUkNIXCJcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvRGF0ZShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBmdWxsQ2FsZW5kYXIgPSB0aGlzLmNhbGVuZGFyPy5nZXRBcGkoKTtcclxuICAgIGZ1bGxDYWxlbmRhcj8uZ290b0RhdGUoZXZlbnQpO1xyXG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlcikge1xyXG4gICAgICBsZXQgY2FsZW5kYXJJbnB1dCA9IHRoaXMuZGF0ZVBpY2tlci5pbnB1dGZpZWxkVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjYWxlbmRhcklucHV0LmJsdXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUV2ZW50RGlkTW91bnQoYXJnOiBhbnkpIHtcclxuICAgIC8vQXR0YWNoIHJpZ2h0LWNsaWNrIGV2ZW50IHRvIGVhY2ggZXZlbnQgY2VsbFxyXG4gICAgYXJnLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIC8vUHJldmVudCB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnUgZnJvbSBhcHBlYXJpbmdcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5jdXJyZW50Q29udGV4dE1lbnVFdmVudCA9IGFyZy5ldmVudDtcclxuICAgICAgdGhpcy5jb250ZXh0TWVudT8ub3Blbk1lbnUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVNlbGVjdGVkQWN0aW9uKGFjdGlvbjogYW55KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGFjdGlvbi5zZWxlY3RlZEFjdGlvbikge1xyXG4gICAgICBjYXNlIE1vZGVzLmRlbGV0ZTpcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q29udGV4dE1lbnVFdmVudCkge1xyXG4gICAgICAgICAgdGhpcy5jcnVkU2VydmljZT8uZGVsZXRlKHRoaXMuY3VycmVudENvbnRleHRNZW51RXZlbnQuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBmdWxsQ2FsZW5kYXIgPSB0aGlzLmNhbGVuZGFyPy5nZXRBcGkoKTtcclxuICAgICAgICAgICAgICBmdWxsQ2FsZW5kYXI/LmdldEV2ZW50QnlJZCh0aGlzLmN1cnJlbnRDb250ZXh0TWVudUV2ZW50LmlkKT8ucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcInNoYXJlZF90c2lfY29tcG9uZW50X2dyaWRfY2FsZW5kZXJfZGVsZXRlX2l0ZW1fc3VjY2Vzc1wiKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4gdGhpcy5fbWVzc2FnZVNlcnZpY2UuZXJyb3IoZXJyLmVycm9yLmVycm9yc1s1NDddID8gXCJzaGFyZWRfdHNpX2NvbXBvbmVudF9ncmlkX2NhbGVuZGVyX2RlbGV0ZV9pdGVtX2ZhaWxlZFwiIDogZXJyLmVycm9yLmRldGFpbCksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBNb2Rlcy5jb25zdWx0OlxyXG4gICAgICAgIHRoaXMuZXZlbnRDbGljay5lbWl0KHtcclxuICAgICAgICAgIG1vZGU6IENvbXBvbmVudF9Nb2Rlcy5DT05TVUxULFxyXG4gICAgICAgICAgaWQ6IHRoaXMuY3VycmVudENvbnRleHRNZW51RXZlbnQuaWRcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBNb2Rlcy5lZGl0OlxyXG4gICAgICAgIHRoaXMuZXZlbnRDbGljay5lbWl0KHtcclxuICAgICAgICAgIG1vZGU6IENvbXBvbmVudF9Nb2Rlcy5FRElULFxyXG4gICAgICAgICAgaWQ6IHRoaXMuY3VycmVudENvbnRleHRNZW51RXZlbnQuaWRcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaW5mbyc6XHJcbiAgICAgICAgdGhpcy5ldmVudENsaWNrLmVtaXQoeyBtb2RlOiAnaW5mbycsIGlkOiB0aGlzLmN1cnJlbnRDb250ZXh0TWVudUV2ZW50LmlkIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAndXBsb2FkJzpcclxuICAgICAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdCh7IG1vZGU6ICd1cGxvYWQnLCBpZDogdGhpcy5jdXJyZW50Q29udGV4dE1lbnVFdmVudC5pZCB9KTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ25vdGVzJzpcclxuICAgICAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdCh7IG1vZGU6ICdub3RlcycsIGlkOiB0aGlzLmN1cnJlbnRDb250ZXh0TWVudUV2ZW50LmlkIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnQWN0aW9uRVJQJzpcclxuICAgICAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdCh7IG1vZGU6ICdBY3Rpb25FUlAnLCBpZDogdGhpcy5jdXJyZW50Q29udGV4dE1lbnVFdmVudC5pZCB9KTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRpc3BsYXlNb2RlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGNhbGVuZGFyQXBpID0gdGhpcy5jYWxlbmRhcj8uZ2V0QXBpKCk7XHJcbiAgICBjYWxlbmRhckFwaT8uY2hhbmdlVmlldyhldmVudC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50RGF0ZXMoKSB7XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xyXG4gICAgICBjb25zdCBjYWxlbmRhckFwaTogQ2FsZW5kYXJBcGkgPSB0aGlzLmNhbGVuZGFyLmdldEFwaSgpO1xyXG4gICAgICB0aGlzLmRhdGVSYW5nZUNoYW5nZS5lbWl0KHtcclxuICAgICAgICBzdGFydDogbmV3IERhdGUoY2FsZW5kYXJBcGkudmlldy5jdXJyZW50U3RhcnQuc2V0RGF0ZShjYWxlbmRhckFwaS52aWV3LmN1cnJlbnRTdGFydC5nZXREYXRlKCkgKyAxKSksXHJcbiAgICAgICAgZW5kOiBuZXcgRGF0ZShjYWxlbmRhckFwaS52aWV3LmN1cnJlbnRFbmQuc2V0RGF0ZShjYWxlbmRhckFwaS52aWV3LmN1cnJlbnRFbmQuZ2V0RGF0ZSgpICsgMSkpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8cC1jYWxlbmRhciAjZGF0ZVBpY2tlciBjbGFzcz1cImhpZGRlbi1jYWxlbmRhclwiIChvblNlbGVjdCk9XCJuYXZpZ2F0ZVRvRGF0ZSgkZXZlbnQpXCIvPlxyXG48ZnVsbC1jYWxlbmRhciAjY2FsZW5kYXIgW29wdGlvbnNdPSdjYWxlbmRhck9wdGlvbnMoKSc+XHJcbiAgICA8bmctdGVtcGxhdGUgIGxldC1hcmc+XHJcblxyXG4gICAgPGkgW25nU3R5bGVdPVwiYXJnLmV2ZW50LmNvbG9yICYmIGFyZy5ldmVudC5jb2xvciAhPT0gJycgPyB7J2JhY2tncm91bmQtY29sb3InOiBhcmcuZXZlbnQuY29sb3J9IDoge31cIiA+XHJcbiAgICAgICAgXHJcbiAgICAgICAge3sgYXJnLmV2ZW50LnRpdGxlIH19PC9pPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9mdWxsLWNhbGVuZGFyPlxyXG48YXBwLWNvbnRleHQtbWVudSBcclxuICBbc2hvd0luZm9CdXR0b25dPVwic2hvd0luZm9CdXR0b25cIlxyXG4gIFtzaG93VXBsb2FkQnV0dG9uXT1cInNob3dVcGxvYWRCdXR0b25cIlxyXG4gIFtzaG93Tm90ZUJ1dHRvbl09XCJzaG93Tm90ZUJ1dHRvblwiXHJcbiAgW3Nob3dBY3Rpb25CdXR0b25dPVwic2hvd0FjdGlvbkJ1dHRvblwiXHJcbiAgKGFjdGlvblNlbGVjdGVkKT1cImhhbmRsZVNlbGVjdGVkQWN0aW9uKCRldmVudClcIj5cclxuPC9hcHAtY29udGV4dC1tZW51PlxyXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XHJcbiAgICA8cC1kcm9wZG93biBbc3R5bGVdPVwieyd3aWR0aCcgOiAnMjAwcHgnLCdib3JkZXItcmFkaXVzJzogJzVweCd9XCIgW29wdGlvbnNdPVwiZGlzcGxheU1vZGVPcHRpb25zXCIgKG9uQ2hhbmdlKT1cIm9uRGlzcGxheU1vZGVDaGFuZ2UoJGV2ZW50KVwiPjwvcC1kcm9wZG93bj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -1,49 +1,68 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
- import * as i2 from "primeng/api";
5
- import * as i3 from "primeng/card";
6
- import * as i4 from "../button-components/tsi-button/tsi-button.component";
4
+ import * as i2 from "primeng/button";
5
+ import * as i3 from "primeng/api";
6
+ import * as i4 from "primeng/menu";
7
+ import * as i5 from "primeng/card";
8
+ import * as i6 from "primeng/badge";
9
+ import * as i7 from "../button-components/tsi-button/tsi-button.component";
10
+ import * as i8 from "../../pipes/localize.pipe";
7
11
  export class TsiCardComponent {
8
12
  constructor() {
13
+ this.overflowActionsMenu = [];
14
+ this.hasOverflowActions = false;
15
+ this.overflowActionColumns = [];
16
+ this.selectKeyOnly = true;
17
+ this.key = 'uid';
9
18
  this.buttonClicked = new EventEmitter();
10
19
  }
11
20
  ngOnInit() {
12
21
  }
13
- consult(uid) {
14
- if (uid) {
15
- this.openModalComponent(uid, 'consult');
16
- }
17
- }
18
22
  edit(uid) {
19
23
  if (uid) {
20
24
  this.openModalComponent(uid, 'edit');
21
25
  }
22
26
  }
23
- delete(uid) {
24
- if (uid) {
25
- this.openModalComponent(uid, 'delete');
26
- }
27
+ openModalComponent(uid, mode) {
28
+ this.buttonClicked.emit({ field: mode, key: uid, selectKeyOnly: true });
27
29
  }
28
- upload(uid) {
29
- if (uid) {
30
- this.openModalComponent(uid, 'upload');
30
+ getOverflowMenuModel() {
31
+ if (!this.hasOverflowActions) {
32
+ return [];
31
33
  }
34
+ return this.overflowActionColumns.map(col => ({
35
+ id: col.field,
36
+ label: col.header,
37
+ iconClass: col.buttonIcon,
38
+ styleClass: col.styleClass,
39
+ iconStyleClass: col.iconStyleClass,
40
+ }));
32
41
  }
33
- info(uid) {
34
- if (uid) {
35
- this.openModalComponent(uid, 'info');
42
+ overflowColumnClicked(menu, event, row) {
43
+ this.currentActionRow = row;
44
+ menu.toggle(event);
45
+ }
46
+ onOverflowActionClicked(row, menuItem) {
47
+ if (!row || !menuItem || !menuItem.id) {
48
+ return;
36
49
  }
50
+ this.handleButtonClicked(row, menuItem.id);
37
51
  }
38
- openModalComponent(uid, mode) {
39
- this.buttonClicked.emit({ field: mode, key: uid, selectKeyOnly: true });
52
+ handleButtonClicked(item, field) {
53
+ if (this.selectKeyOnly) {
54
+ this.buttonClicked.emit({ field: field, key: item[this.key], selectKeyOnly: this.selectKeyOnly });
55
+ }
56
+ else {
57
+ this.buttonClicked.emit({ field: field, key: item, selectKeyOnly: this.selectKeyOnly });
58
+ }
40
59
  }
41
60
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCardComponent, selector: "Tsi-card", inputs: { id: "id", headerTitle: "headerTitle", subHeaderTitle: "subHeaderTitle", description: "description", imgUrl: "imgUrl", uid: "uid", formName: "formName", statut: "statut" }, outputs: { buttonClicked: "buttonClicked" }, ngImport: i0, template: "<div class=\"card-container\">\r\n <p-card>\r\n <ng-template pTemplate=\"header\" >\r\n <div class=\"fixed-card-header\">\r\n <img *ngIf=\"imgUrl\" [src]=\"imgUrl.startsWith('./assets') ? imgUrl : 'data:image/png;base64,' + imgUrl\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"title\">\r\n <span *ngIf=\"headerTitle\">\r\n {{ headerTitle }}\r\n </span>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"subtitle\">\r\n <span *ngIf=\"subHeaderTitle\">\r\n {{ subHeaderTitle }}\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n <span *ngIf=\"statut\">\r\n {{ statut }}\r\n </span>\r\n <p class=\"clamp-text\" *ngIf=\"description\">\r\n {{ description }}\r\n </p>\r\n </ng-template> \r\n\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-content-center align-items-center mt-1 gap-4\">\r\n <div class=\"flex\">\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\"\r\n type=\"button\" icon=\"pi pi pi-eye\"\r\n (click)=\"consult(uid)\">\r\n </Tsi-Button>\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\"\r\n type=\"button\" icon=\"pi pi-pencil\"\r\n (click)=\"edit(uid)\">\r\n </Tsi-Button>\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-button-danger p-0-5'\"\r\n type=\"button\" icon=\"pi pi-trash\"\r\n (click)=\"delete(uid)\">\r\n </Tsi-Button>\r\n </div>\r\n <div class=\"flex\">\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\"\r\n type=\"button\" icon=\"pi pi-paperclip\"\r\n (click)=\"upload(uid)\">\r\n </Tsi-Button>\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\"\r\n type=\"button\" icon=\"pi pi-info\"\r\n (click)=\"info(uid)\">\r\n </Tsi-Button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-card>\r\n</div>", styles: [".clamp-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.fixed-card-header{height:100px;display:flex;align-items:center;justify-content:center;background-color:#f0f0f0}.fixed-card-header img{max-height:100%;max-width:100%;object-fit:contain}.card-container{height:100%}::ng-deep .card-container .p-card{display:flex!important;flex-direction:column!important;height:100%!important}::ng-deep .p-card-body{flex-grow:1!important;display:flex!important;flex-direction:column!important}::ng-deep .p-card-content{flex-grow:1!important}::ng-deep .p-card-footer{margin:auto!important}::ng-deep .p-0-5{padding:.5rem!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: i4.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }] }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiCardComponent, selector: "Tsi-card", inputs: { id: "id", headerTitle: "headerTitle", subHeaderTitle: "subHeaderTitle", description: "description", imgUrl: "imgUrl", uid: "uid", formName: "formName", statut: "statut", overflowActionsMenu: "overflowActionsMenu", item: "item", selectKeyOnly: "selectKeyOnly", key: "key" }, outputs: { buttonClicked: "buttonClicked" }, ngImport: i0, template: "<div class=\"card-container\">\r\n <p-card>\r\n <ng-template pTemplate=\"header\" >\r\n <div class=\"fixed-card-header\">\r\n <img *ngIf=\"imgUrl\" [src]=\"imgUrl.startsWith('./assets') ? imgUrl : 'data:image/png;base64,' + imgUrl\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"title\">\r\n <span *ngIf=\"headerTitle\">\r\n {{ headerTitle }}\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"subtitle\">\r\n <span *ngIf=\"subHeaderTitle\">\r\n {{ subHeaderTitle }}\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n <span *ngIf=\"statut\">\r\n {{ statut }}\r\n </span>\r\n <p class=\"clamp-text\" *ngIf=\"description\">\r\n {{ description }}\r\n </p>\r\n </ng-template>\r\n<ng-template pTemplate=\"footer p-0 \">\r\n <div class=\"flex justify-content-end align-items-center mt-1 gap-2\">\r\n \r\n <Tsi-Button \r\n [styleClass]=\"'p-button-rounded p-button-text p-0-5'\" \r\n type=\"button\" \r\n icon=\"pi pi-pencil\"\r\n (click)=\"edit(uid)\">\r\n </Tsi-Button>\r\n\r\n <p-button \r\n type=\"button\"\r\n icon=\"pi pi-ellipsis-v\"\r\n styleClass=\"overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button>\r\n\r\n <!-- Menu popup -->\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a pRipple class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i *ngIf=\"menuItem.id === 'notes'\" \r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\" \r\n pBadge severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\" \r\n badgePosition=\"top-right\">\r\n </i>\r\n <i *ngIf=\"menuItem.id !== 'notes'\" \r\n class=\"{{menuItem.iconClass}} p-menuitem-icon\"\r\n [ngClass]=\"menuItem.iconStyleClass\">\r\n </i>\r\n <span class=\"menu-label\">{{ menuItem.label | localize }}</span>\r\n </a>\r\n </ng-template>\r\n </p-menu>\r\n\r\n </div>\r\n </ng-template>\r\n </p-card>\r\n</div>", styles: [".clamp-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.fixed-card-header{height:100px;display:flex;align-items:center;justify-content:center;background-color:#f0f0f0}.fixed-card-header img{max-height:100%;max-width:100%;object-fit:contain}.card-container{height:100%}::ng-deep .card-container .p-card{display:flex!important;flex-direction:column!important;height:100%!important}::ng-deep .p-card-body{flex-grow:1!important;display:flex!important;flex-direction:column!important}::ng-deep .p-card-content{flex-grow:1!important}::ng-deep .p-card-footer{margin:auto!important}::ng-deep .p-0-5{padding:.5rem!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i5.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "directive", type: i6.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "component", type: i7.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "pipe", type: i8.LocalizePipe, name: "localize" }] }); }
43
62
  }
44
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiCardComponent, decorators: [{
45
64
  type: Component,
46
- args: [{ selector: 'Tsi-card', template: "<div class=\"card-container\">\r\n <p-card>\r\n <ng-template pTemplate=\"header\" >\r\n <div class=\"fixed-card-header\">\r\n <img *ngIf=\"imgUrl\" [src]=\"imgUrl.startsWith('./assets') ? imgUrl : 'data:image/png;base64,' + imgUrl\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"title\">\r\n <span *ngIf=\"headerTitle\">\r\n {{ headerTitle }}\r\n </span>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"subtitle\">\r\n <span *ngIf=\"subHeaderTitle\">\r\n {{ subHeaderTitle }}\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n <span *ngIf=\"statut\">\r\n {{ statut }}\r\n </span>\r\n <p class=\"clamp-text\" *ngIf=\"description\">\r\n {{ description }}\r\n </p>\r\n </ng-template> \r\n\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-content-center align-items-center mt-1 gap-4\">\r\n <div class=\"flex\">\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\"\r\n type=\"button\" icon=\"pi pi pi-eye\"\r\n (click)=\"consult(uid)\">\r\n </Tsi-Button>\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\"\r\n type=\"button\" icon=\"pi pi-pencil\"\r\n (click)=\"edit(uid)\">\r\n </Tsi-Button>\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-button-danger p-0-5'\"\r\n type=\"button\" icon=\"pi pi-trash\"\r\n (click)=\"delete(uid)\">\r\n </Tsi-Button>\r\n </div>\r\n <div class=\"flex\">\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\"\r\n type=\"button\" icon=\"pi pi-paperclip\"\r\n (click)=\"upload(uid)\">\r\n </Tsi-Button>\r\n <Tsi-Button [styleClass]=\"'p-button-rounded p-button-text p-0-5'\"\r\n type=\"button\" icon=\"pi pi-info\"\r\n (click)=\"info(uid)\">\r\n </Tsi-Button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-card>\r\n</div>", styles: [".clamp-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.fixed-card-header{height:100px;display:flex;align-items:center;justify-content:center;background-color:#f0f0f0}.fixed-card-header img{max-height:100%;max-width:100%;object-fit:contain}.card-container{height:100%}::ng-deep .card-container .p-card{display:flex!important;flex-direction:column!important;height:100%!important}::ng-deep .p-card-body{flex-grow:1!important;display:flex!important;flex-direction:column!important}::ng-deep .p-card-content{flex-grow:1!important}::ng-deep .p-card-footer{margin:auto!important}::ng-deep .p-0-5{padding:.5rem!important}\n"] }]
65
+ args: [{ selector: 'Tsi-card', template: "<div class=\"card-container\">\r\n <p-card>\r\n <ng-template pTemplate=\"header\" >\r\n <div class=\"fixed-card-header\">\r\n <img *ngIf=\"imgUrl\" [src]=\"imgUrl.startsWith('./assets') ? imgUrl : 'data:image/png;base64,' + imgUrl\" />\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"title\">\r\n <span *ngIf=\"headerTitle\">\r\n {{ headerTitle }}\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"subtitle\">\r\n <span *ngIf=\"subHeaderTitle\">\r\n {{ subHeaderTitle }}\r\n </span>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"body\">\r\n <span *ngIf=\"statut\">\r\n {{ statut }}\r\n </span>\r\n <p class=\"clamp-text\" *ngIf=\"description\">\r\n {{ description }}\r\n </p>\r\n </ng-template>\r\n<ng-template pTemplate=\"footer p-0 \">\r\n <div class=\"flex justify-content-end align-items-center mt-1 gap-2\">\r\n \r\n <Tsi-Button \r\n [styleClass]=\"'p-button-rounded p-button-text p-0-5'\" \r\n type=\"button\" \r\n icon=\"pi pi-pencil\"\r\n (click)=\"edit(uid)\">\r\n </Tsi-Button>\r\n\r\n <p-button \r\n type=\"button\"\r\n icon=\"pi pi-ellipsis-v\"\r\n styleClass=\"overflow-btn\"\r\n (onClick)=\"overflowColumnClicked(menuMoreActions, $event, item)\">\r\n </p-button>\r\n\r\n <!-- Menu popup -->\r\n <p-menu \r\n appendTo=\"body\" \r\n #menuMoreActions \r\n [model]=\"overflowActionsMenu\" \r\n [popup]=\"true\"\r\n styleClass=\"overflow-menu\"\r\n [style]=\"{ 'width': 'auto', 'min-width': '0px' }\">\r\n <ng-template pTemplate=\"item\" let-menuItem>\r\n <a pRipple class=\"flex align-items-center p-menuitem-link\"\r\n [ngClass]=\"menuItem.styleClass\"\r\n (click)=\"onOverflowActionClicked(item, menuItem)\">\r\n <i *ngIf=\"menuItem.id === 'notes'\" \r\n class=\"{{ menuItem.iconClass }} p-menuitem-icon badge-icon has-badge\"\r\n [ngClass]=\"menuItem.iconStyleClass\" \r\n pBadge severity=\"danger\"\r\n [value]=\"item.notesCount\"\r\n [badgeDisabled]=\"item.notesCount == null\" \r\n badgePosition=\"top-right\">\r\n </i>\r\n <i *ngIf=\"menuItem.id !== 'notes'\" \r\n class=\"{{menuItem.iconClass}} p-menuitem-icon\"\r\n [ngClass]=\"menuItem.iconStyleClass\">\r\n </i>\r\n <span class=\"menu-label\">{{ menuItem.label | localize }}</span>\r\n </a>\r\n </ng-template>\r\n </p-menu>\r\n\r\n </div>\r\n </ng-template>\r\n </p-card>\r\n</div>", styles: [".clamp-text{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.fixed-card-header{height:100px;display:flex;align-items:center;justify-content:center;background-color:#f0f0f0}.fixed-card-header img{max-height:100%;max-width:100%;object-fit:contain}.card-container{height:100%}::ng-deep .card-container .p-card{display:flex!important;flex-direction:column!important;height:100%!important}::ng-deep .p-card-body{flex-grow:1!important;display:flex!important;flex-direction:column!important}::ng-deep .p-card-content{flex-grow:1!important}::ng-deep .p-card-footer{margin:auto!important}::ng-deep .p-0-5{padding:.5rem!important}\n"] }]
47
66
  }], ctorParameters: () => [], propDecorators: { id: [{
48
67
  type: Input
49
68
  }], headerTitle: [{
@@ -60,7 +79,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
60
79
  type: Input
61
80
  }], statut: [{
62
81
  type: Input
82
+ }], overflowActionsMenu: [{
83
+ type: Input
84
+ }], item: [{
85
+ type: Input
86
+ }], selectKeyOnly: [{
87
+ type: Input
88
+ }], key: [{
89
+ type: Input
63
90
  }], buttonClicked: [{
64
91
  type: Output
65
92
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1jYXJkL3RzaS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FyZC90c2ktY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRL0UsTUFBTSxPQUFPLGdCQUFnQjtJQWMzQjtRQUpVLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7SUFPaEUsQ0FBQztJQUVELFFBQVE7SUFFUixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVk7UUFDbEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsR0FBWTtRQUNmLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVk7UUFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsR0FBWTtRQUNqQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFZO1FBQ2YsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxHQUFXLEVBQUUsSUFBWTtRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDOytHQXZEVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixtUkNSN0IsOCtFQTBETTs7NEZEbERPLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxVQUFVO3dEQUtYLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7ICBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgQnV0dG9uQ2xpY2tSZXN1bHQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2dyaWQvZ3JpZC1jb25maWd1cmF0aW9uJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdUc2ktY2FyZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1jYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdHNpLWNhcmQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBpZD86IG51bWJlcjtcclxuICBASW5wdXQoKSBoZWFkZXJUaXRsZT86IHN0cmluZztcclxuICBASW5wdXQoKSBzdWJIZWFkZXJUaXRsZT86IHN0cmluZztcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICBASW5wdXQoKSBpbWdVcmw/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdWlkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZvcm1OYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN0YXR1dD8gOiBzdHJpbmcgO1xyXG5cclxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tSZXN1bHQ+KCk7XHJcblxyXG4gIF9kaWFsb2dSZWY/OiBEeW5hbWljRGlhbG9nUmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgfVxyXG5cclxuICBjb25zdWx0KHVpZD86IHN0cmluZykge1xyXG4gICAgaWYgKHVpZCkge1xyXG4gICAgICB0aGlzLm9wZW5Nb2RhbENvbXBvbmVudCh1aWQsICdjb25zdWx0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlZGl0KHVpZD86IHN0cmluZykge1xyXG4gICAgaWYgKHVpZCkge1xyXG4gICAgICAgdGhpcy5vcGVuTW9kYWxDb21wb25lbnQodWlkLCAnZWRpdCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlKHVpZD86IHN0cmluZykge1xyXG4gICAgaWYgKHVpZCkge1xyXG4gICAgICB0aGlzLm9wZW5Nb2RhbENvbXBvbmVudCh1aWQsICdkZWxldGUnKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgdXBsb2FkKHVpZD86IHN0cmluZykge1xyXG4gICAgaWYgKHVpZCkge1xyXG4gICAgICB0aGlzLm9wZW5Nb2RhbENvbXBvbmVudCh1aWQsICd1cGxvYWQnKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgaW5mbyh1aWQ/OiBzdHJpbmcpIHtcclxuICAgIGlmICh1aWQpIHtcclxuICAgICAgdGhpcy5vcGVuTW9kYWxDb21wb25lbnQodWlkLCAnaW5mbycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuTW9kYWxDb21wb25lbnQodWlkOiBzdHJpbmcsIG1vZGU6IHN0cmluZyl7XHJcbiAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdCh7IGZpZWxkOiBtb2RlLCBrZXk6IHVpZCwgc2VsZWN0S2V5T25seTogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cImNhcmQtY29udGFpbmVyXCI+XHJcbiAgICA8cC1jYXJkPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZml4ZWQtY2FyZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpbWdVcmxcIiBbc3JjXT1cImltZ1VybC5zdGFydHNXaXRoKCcuL2Fzc2V0cycpID8gIGltZ1VybCA6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGltZ1VybFwiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRlclRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBoZWFkZXJUaXRsZSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICBcclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwic3VidGl0bGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJIZWFkZXJUaXRsZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgc3ViSGVhZGVyVGl0bGUgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RhdHV0XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzdGF0dXQgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNsYW1wLXRleHRcIiAqbmdJZj1cImRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT4gICAgIFxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTEgZ2FwLTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gW3N0eWxlQ2xhc3NdPVwiJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLTAtNSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpIHBpLWV5ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25zdWx0KHVpZClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gW3N0eWxlQ2xhc3NdPVwiJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLTAtNSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLXBlbmNpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0KHVpZClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gW3N0eWxlQ2xhc3NdPVwiJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXIgcC0wLTUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS10cmFzaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGUodWlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQnV0dG9uIFtzdHlsZUNsYXNzXT1cIidwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC0wLTUnXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLXBhcGVyY2xpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwbG9hZCh1aWQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUJ1dHRvbiBbc3R5bGVDbGFzc109XCIncC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtMC01J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1pbmZvXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5mbyh1aWQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC1jYXJkPlxyXG48L2Rpdj4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL3RzaS1jYXJkL3RzaS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktY2FyZC90c2ktY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBWS9FLE1BQU0sT0FBTyxnQkFBZ0I7SUFvQjNCO1FBWFMsd0JBQW1CLEdBQWUsRUFBRSxDQUFDO1FBQzlDLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQywwQkFBcUIsR0FBaUIsRUFBRSxDQUFDO1FBR2hDLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLFFBQUcsR0FBVyxLQUFLLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztJQU9oRSxDQUFDO0lBRUQsUUFBUTtJQUVSLENBQUM7SUFHRCxJQUFJLENBQUMsR0FBWTtRQUNmLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QyxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDYixLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDakIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxVQUFVO1lBQ3pCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTtZQUMxQixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7U0FDbkMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBVSxFQUFFLEtBQVksRUFBRSxHQUFRO1FBQ3RELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsR0FBUSxFQUFFLFFBQWtCO1FBQ2xELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBUyxFQUFFLEtBQWE7UUFFMUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUNwRyxDQUFDO2FBQ0ksQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQzsrR0ExRVUsZ0JBQWdCO21HQUFoQixnQkFBZ0IseVhDWjdCLGs1R0E2RU07OzRGRGpFTyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsVUFBVTt3REFLWCxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBCdXR0b25DbGlja1Jlc3VsdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZ3JpZC9ncmlkLWNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBHcmlkQ29sdW1uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51JztcclxuaW1wb3J0IHsgVHNpQ2FyZCB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLWNhcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RzaS1jYXJkLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgaWQ/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgaGVhZGVyVGl0bGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3ViSGVhZGVyVGl0bGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW1nVXJsPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVpZD86IHN0cmluZztcclxuICBASW5wdXQoKSBmb3JtTmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSBzdGF0dXQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3ZlcmZsb3dBY3Rpb25zTWVudTogTWVudUl0ZW1bXSA9IFtdO1xyXG4gIGhhc092ZXJmbG93QWN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG92ZXJmbG93QWN0aW9uQ29sdW1uczogR3JpZENvbHVtbltdID0gW107XHJcbiAgY3VycmVudEFjdGlvblJvdzogYW55O1xyXG4gIEBJbnB1dCgpIGl0ZW06IGFueTtcclxuICBASW5wdXQoKSBzZWxlY3RLZXlPbmx5OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBrZXk6IHN0cmluZyA9ICd1aWQnO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25DbGlja1Jlc3VsdD4oKTtcclxuXHJcbiAgX2RpYWxvZ1JlZj86IER5bmFtaWNEaWFsb2dSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICB9XHJcblxyXG5cclxuICBlZGl0KHVpZD86IHN0cmluZykge1xyXG4gICAgaWYgKHVpZCkge1xyXG4gICAgICB0aGlzLm9wZW5Nb2RhbENvbXBvbmVudCh1aWQsICdlZGl0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW5Nb2RhbENvbXBvbmVudCh1aWQ6IHN0cmluZywgbW9kZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdCh7IGZpZWxkOiBtb2RlLCBrZXk6IHVpZCwgc2VsZWN0S2V5T25seTogdHJ1ZSB9KTtcclxuICB9XHJcbiAgZ2V0T3ZlcmZsb3dNZW51TW9kZWwoKTogTWVudUl0ZW1bXSB7XHJcbiAgICBpZiAoIXRoaXMuaGFzT3ZlcmZsb3dBY3Rpb25zKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5vdmVyZmxvd0FjdGlvbkNvbHVtbnMubWFwKGNvbCA9PiAoe1xyXG4gICAgICBpZDogY29sLmZpZWxkLFxyXG4gICAgICBsYWJlbDogY29sLmhlYWRlcixcclxuICAgICAgaWNvbkNsYXNzOiBjb2wuYnV0dG9uSWNvbixcclxuICAgICAgc3R5bGVDbGFzczogY29sLnN0eWxlQ2xhc3MsXHJcbiAgICAgIGljb25TdHlsZUNsYXNzOiBjb2wuaWNvblN0eWxlQ2xhc3MsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBvdmVyZmxvd0NvbHVtbkNsaWNrZWQobWVudTogTWVudSwgZXZlbnQ6IEV2ZW50LCByb3c6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50QWN0aW9uUm93ID0gcm93O1xyXG4gICAgbWVudS50b2dnbGUoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25PdmVyZmxvd0FjdGlvbkNsaWNrZWQocm93OiBhbnksIG1lbnVJdGVtOiBNZW51SXRlbSkge1xyXG4gICAgaWYgKCFyb3cgfHwgIW1lbnVJdGVtIHx8ICFtZW51SXRlbS5pZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVCdXR0b25DbGlja2VkKHJvdywgbWVudUl0ZW0uaWQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQnV0dG9uQ2xpY2tlZChpdGVtOiBhbnksIGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RLZXlPbmx5KSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uQ2xpY2tlZC5lbWl0KHsgZmllbGQ6IGZpZWxkLCBrZXk6IGl0ZW1bdGhpcy5rZXldLCBzZWxlY3RLZXlPbmx5OiB0aGlzLnNlbGVjdEtleU9ubHkgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5idXR0b25DbGlja2VkLmVtaXQoeyBmaWVsZDogZmllbGQsIGtleTogaXRlbSwgc2VsZWN0S2V5T25seTogdGhpcy5zZWxlY3RLZXlPbmx5IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZC1jb250YWluZXJcIj5cclxuICAgIDxwLWNhcmQ+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaXhlZC1jYXJkLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImltZ1VybFwiIFtzcmNdPVwiaW1nVXJsLnN0YXJ0c1dpdGgoJy4vYXNzZXRzJykgPyAgaW1nVXJsIDogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgaW1nVXJsXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZGVyVGl0bGVcIj5cclxuICAgICAgICAgICAgICAgIHt7IGhlYWRlclRpdGxlIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwic3VidGl0bGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWJIZWFkZXJUaXRsZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgc3ViSGVhZGVyVGl0bGUgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic3RhdHV0XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzdGF0dXQgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImNsYW1wLXRleHRcIiAqbmdJZj1cImRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlciBwLTAgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIG10LTEgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlQ2xhc3NdPVwiJ3AtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLTAtNSdcIiBcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXQodWlkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktQnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktZWxsaXBzaXMtdlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cIm92ZXJmbG93LWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib3ZlcmZsb3dDb2x1bW5DbGlja2VkKG1lbnVNb3JlQWN0aW9ucywgJGV2ZW50LCBpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIE1lbnUgcG9wdXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8cC1tZW51IFxyXG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICNtZW51TW9yZUFjdGlvbnMgXHJcbiAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cIm92ZXJmbG93QWN0aW9uc01lbnVcIiBcclxuICAgICAgICAgICAgICAgICAgICBbcG9wdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cIm92ZXJmbG93LW1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7ICd3aWR0aCc6ICdhdXRvJywgJ21pbi13aWR0aCc6ICcwcHgnIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1tZW51SXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgcFJpcHBsZSBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIHAtbWVudWl0ZW0tbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJtZW51SXRlbS5zdHlsZUNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk92ZXJmbG93QWN0aW9uQ2xpY2tlZChpdGVtLCBtZW51SXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibWVudUl0ZW0uaWQgPT09ICdub3RlcydcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7IG1lbnVJdGVtLmljb25DbGFzcyB9fSBwLW1lbnVpdGVtLWljb24gYmFkZ2UtaWNvbiBoYXMtYmFkZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm1lbnVJdGVtLmljb25TdHlsZUNsYXNzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJhZGdlIHNldmVyaXR5PVwiZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5ub3Rlc0NvdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFkZ2VEaXNhYmxlZF09XCJpdGVtLm5vdGVzQ291bnQgPT0gbnVsbFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlUG9zaXRpb249XCJ0b3AtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibWVudUl0ZW0uaWQgIT09ICdub3RlcydcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7bWVudUl0ZW0uaWNvbkNsYXNzfX0gcC1tZW51aXRlbS1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJtZW51SXRlbS5pY29uU3R5bGVDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxhYmVsXCI+e3sgbWVudUl0ZW0ubGFiZWwgfCBsb2NhbGl6ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtbWVudT5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtY2FyZD5cclxuPC9kaXY+Il19