@onemrvapublic/design-system 17.9.1-develop.1 → 17.12.6

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 (27) hide show
  1. package/esm2022/layout/src/components/layout/layout.component.mjs +6 -3
  2. package/esm2022/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.mjs +15 -15
  3. package/esm2022/mat-empty-row/index.mjs +2 -0
  4. package/esm2022/mat-empty-row/onemrvapublic-design-system-mat-empty-row.mjs +5 -0
  5. package/esm2022/mat-empty-row/src/onemrva-mat-empty-row.component.mjs +35 -0
  6. package/esm2022/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.mjs +6 -3
  7. package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +3 -3
  8. package/esm2022/mat-paginator/src/onemrva-mat-paginator.component.mjs +4 -1
  9. package/fesm2022/onemrvapublic-design-system-layout.mjs +5 -2
  10. package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
  11. package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs +15 -15
  12. package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs.map +1 -1
  13. package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs +42 -0
  14. package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs.map +1 -0
  15. package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +7 -4
  16. package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs.map +1 -1
  17. package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs +3 -0
  18. package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs.map +1 -1
  19. package/layout/src/components/layout/layout.component.d.ts +1 -0
  20. package/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.d.ts +3 -0
  21. package/mat-empty-row/index.d.ts +1 -0
  22. package/mat-empty-row/src/onemrva-mat-empty-row.component.d.ts +19 -0
  23. package/mat-empty-row/src/onemrva-mat-empty-row.component.scss +29 -0
  24. package/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.d.ts +2 -1
  25. package/mat-paginator/src/onemrva-mat-paginator.component.d.ts +1 -0
  26. package/mat-selectable-box/src/onemrva-mat-selectable-box.component.scss +4 -0
  27. package/package.json +7 -1
@@ -14,6 +14,7 @@ export class OnemrvaFilePanelComponent {
14
14
  this.dataCy = 'onemrva-file-panel-' + NEXT_ID;
15
15
  this.actions = [];
16
16
  this.showProgress = true;
17
+ this.displayDate = '';
17
18
  }
18
19
  get progress$() {
19
20
  return of(this.file.progress);
@@ -45,11 +46,11 @@ export class OnemrvaFilePanelComponent {
45
46
  return this.color === OnemrvaMatColor.PRIMARY;
46
47
  }
47
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: OnemrvaFilePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: OnemrvaFilePanelComponent, selector: "file-panel", inputs: { id: "id", dataCy: "dataCy", file: "file", actions: "actions", showProgress: "showProgress" }, host: { properties: { "attr.id": "this.id", "attr.data-cy": "this.dataCy", "mat-accent": "this._colorAccent", "class.mat-error": "this._isError", "class.mat-warn": "this._isWarn", "class.mat-success": "this._isSuccess", "class.mat-primary": "this._isPrimary" } }, ngImport: i0, template: "<div class=\"file-panel-title\" [attr.data-cy]=\"dataCy\">\n <div class=\"file-panel-title-left\">\n <mat-icon *ngIf=\"file.color === 'error'\" class=\"filled mat-error\"\n >error</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'success'\" class=\"filled mat-success\"\n >check_circle</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'warn'\" class=\"filled mat-warn\"\n >warning</mat-icon\n >\n <span class=\"file-name\">\n {{ file.name }}\n </span>\n </div>\n <div class=\"file-panel-title-action\">\n <ng-container *ngIf=\"actions.length > 0\">\n <ng-container *ngFor=\"let action of actions\">\n <mat-icon\n *ngIf=\"action.showAction(file)\"\n role=\"button\"\n color=\"primary\"\n [attr.data-cy]=\"action.dataCy\"\n matTooltip=\"{{ action.tooltipCode | translate }}\"\n [attr.aria-label]=\"action.ariaCode | translate\"\n class=\"clickable\"\n (click)=\"action.clickHandler(file)\"\n >{{ action.iconName }}</mat-icon\n >\n </ng-container>\n </ng-container>\n </div>\n</div>\n<div class=\"file-panel-content\">\n <ng-container *ngIf=\"file.message === ''\">\n <div class=\"fileInfos\">\n {{ file.lastModified | date }}\n <span class=\"float-right\" *ngIf=\"file.size > 0\">{{ size }}</span>\n </div>\n\n <div\n class=\"onemrva-progress-bar\"\n *ngIf=\"showProgress && file.enableProgressBar\"\n >\n <div class=\"onemrva-progress-bar-outer mt-s\" #onemrvaProgressBar>\n <div\n class=\"onemrva-progress-bar-inner\"\n [ngStyle]=\"{ width: (progress$ | async) + '%' }\"\n [ngClass]=\"{\n 'progress-success': (progress$ | async)! >= 100\n }\"\n data-cy=\"file-upload-progress\"\n [attr.value]=\"progress$ | async\"\n ></div>\n </div>\n </div>\n </ng-container>\n <p *ngIf=\"file.message !== ''\" class=\"message\">{{ file.message }}</p>\n</div>\n", styles: [":host{flex:1 1 100%}:host.clickable:hover{box-shadow:0 3px 3px #312f3a29}.fileInfos{display:inline-block;width:100%;height:24px;font-size:14px}.fileInfos .float-right{margin-right:8px}.file-panel-title-left{display:inline-flex;align-items:center;gap:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: OnemrvaFilePanelComponent, selector: "file-panel", inputs: { id: "id", dataCy: "dataCy", file: "file", actions: "actions", showProgress: "showProgress", displayDate: "displayDate" }, host: { properties: { "attr.id": "this.id", "attr.data-cy": "this.dataCy", "mat-accent": "this._colorAccent", "class.mat-error": "this._isError", "class.mat-warn": "this._isWarn", "class.mat-success": "this._isSuccess", "class.mat-primary": "this._isPrimary" } }, ngImport: i0, template: "<div class=\"file-panel-title\" [attr.data-cy]=\"dataCy\">\n <div class=\"file-panel-title-left\">\n <mat-icon *ngIf=\"file.color === 'error'\" class=\"filled mat-error\"\n >error</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'success'\" class=\"filled mat-success\"\n >check_circle</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'warn'\" class=\"filled mat-warn\"\n >warning</mat-icon\n >\n <span class=\"file-name\">\n {{ file.name }}\n </span>\n </div>\n <div class=\"file-panel-title-action\">\n <ng-container *ngIf=\"actions.length > 0\">\n <ng-container *ngFor=\"let action of actions\">\n <mat-icon\n *ngIf=\"action.showAction(file)\"\n role=\"button\"\n color=\"primary\"\n [attr.data-cy]=\"action.dataCy\"\n matTooltip=\"{{ action.tooltipCode | translate }}\"\n [attr.aria-label]=\"action.ariaCode | translate\"\n class=\"clickable\"\n (click)=\"action.clickHandler(file)\"\n >{{ action.iconName }}</mat-icon\n >\n </ng-container>\n </ng-container>\n </div>\n</div>\n<div class=\"file-panel-content\">\n <ng-container *ngIf=\"file.message === ''\">\n <div class=\"fileInfos\">\n <span>{{ displayDate }}</span>\n\n <span class=\"float-right\" *ngIf=\"file.size > 0\">{{ size }}</span>\n </div>\n\n <div\n class=\"onemrva-progress-bar\"\n *ngIf=\"showProgress && file.enableProgressBar\"\n >\n <div class=\"onemrva-progress-bar-outer mt-s\" #onemrvaProgressBar>\n <div\n class=\"onemrva-progress-bar-inner\"\n [ngStyle]=\"{ width: (progress$ | async) + '%' }\"\n [ngClass]=\"{\n 'progress-success': (progress$ | async)! >= 100,\n }\"\n data-cy=\"file-upload-progress\"\n [attr.value]=\"progress$ | async\"\n ></div>\n </div>\n </div>\n </ng-container>\n <p *ngIf=\"file.message !== ''\" class=\"message\">{{ file.message }}</p>\n</div>\n", styles: [":host{flex:1 1 100%}:host.clickable:hover{box-shadow:0 3px 3px #312f3a29}.fileInfos{display:inline-block;width:100%;height:24px;font-size:14px}.fileInfos .float-right{margin-right:8px}.file-panel-title-left{display:inline-flex;align-items:center;gap:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
50
  }
50
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: OnemrvaFilePanelComponent, decorators: [{
51
52
  type: Component,
52
- args: [{ selector: 'file-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"file-panel-title\" [attr.data-cy]=\"dataCy\">\n <div class=\"file-panel-title-left\">\n <mat-icon *ngIf=\"file.color === 'error'\" class=\"filled mat-error\"\n >error</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'success'\" class=\"filled mat-success\"\n >check_circle</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'warn'\" class=\"filled mat-warn\"\n >warning</mat-icon\n >\n <span class=\"file-name\">\n {{ file.name }}\n </span>\n </div>\n <div class=\"file-panel-title-action\">\n <ng-container *ngIf=\"actions.length > 0\">\n <ng-container *ngFor=\"let action of actions\">\n <mat-icon\n *ngIf=\"action.showAction(file)\"\n role=\"button\"\n color=\"primary\"\n [attr.data-cy]=\"action.dataCy\"\n matTooltip=\"{{ action.tooltipCode | translate }}\"\n [attr.aria-label]=\"action.ariaCode | translate\"\n class=\"clickable\"\n (click)=\"action.clickHandler(file)\"\n >{{ action.iconName }}</mat-icon\n >\n </ng-container>\n </ng-container>\n </div>\n</div>\n<div class=\"file-panel-content\">\n <ng-container *ngIf=\"file.message === ''\">\n <div class=\"fileInfos\">\n {{ file.lastModified | date }}\n <span class=\"float-right\" *ngIf=\"file.size > 0\">{{ size }}</span>\n </div>\n\n <div\n class=\"onemrva-progress-bar\"\n *ngIf=\"showProgress && file.enableProgressBar\"\n >\n <div class=\"onemrva-progress-bar-outer mt-s\" #onemrvaProgressBar>\n <div\n class=\"onemrva-progress-bar-inner\"\n [ngStyle]=\"{ width: (progress$ | async) + '%' }\"\n [ngClass]=\"{\n 'progress-success': (progress$ | async)! >= 100\n }\"\n data-cy=\"file-upload-progress\"\n [attr.value]=\"progress$ | async\"\n ></div>\n </div>\n </div>\n </ng-container>\n <p *ngIf=\"file.message !== ''\" class=\"message\">{{ file.message }}</p>\n</div>\n", styles: [":host{flex:1 1 100%}:host.clickable:hover{box-shadow:0 3px 3px #312f3a29}.fileInfos{display:inline-block;width:100%;height:24px;font-size:14px}.fileInfos .float-right{margin-right:8px}.file-panel-title-left{display:inline-flex;align-items:center;gap:8px}\n"] }]
53
+ args: [{ selector: 'file-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"file-panel-title\" [attr.data-cy]=\"dataCy\">\n <div class=\"file-panel-title-left\">\n <mat-icon *ngIf=\"file.color === 'error'\" class=\"filled mat-error\"\n >error</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'success'\" class=\"filled mat-success\"\n >check_circle</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'warn'\" class=\"filled mat-warn\"\n >warning</mat-icon\n >\n <span class=\"file-name\">\n {{ file.name }}\n </span>\n </div>\n <div class=\"file-panel-title-action\">\n <ng-container *ngIf=\"actions.length > 0\">\n <ng-container *ngFor=\"let action of actions\">\n <mat-icon\n *ngIf=\"action.showAction(file)\"\n role=\"button\"\n color=\"primary\"\n [attr.data-cy]=\"action.dataCy\"\n matTooltip=\"{{ action.tooltipCode | translate }}\"\n [attr.aria-label]=\"action.ariaCode | translate\"\n class=\"clickable\"\n (click)=\"action.clickHandler(file)\"\n >{{ action.iconName }}</mat-icon\n >\n </ng-container>\n </ng-container>\n </div>\n</div>\n<div class=\"file-panel-content\">\n <ng-container *ngIf=\"file.message === ''\">\n <div class=\"fileInfos\">\n <span>{{ displayDate }}</span>\n\n <span class=\"float-right\" *ngIf=\"file.size > 0\">{{ size }}</span>\n </div>\n\n <div\n class=\"onemrva-progress-bar\"\n *ngIf=\"showProgress && file.enableProgressBar\"\n >\n <div class=\"onemrva-progress-bar-outer mt-s\" #onemrvaProgressBar>\n <div\n class=\"onemrva-progress-bar-inner\"\n [ngStyle]=\"{ width: (progress$ | async) + '%' }\"\n [ngClass]=\"{\n 'progress-success': (progress$ | async)! >= 100,\n }\"\n data-cy=\"file-upload-progress\"\n [attr.value]=\"progress$ | async\"\n ></div>\n </div>\n </div>\n </ng-container>\n <p *ngIf=\"file.message !== ''\" class=\"message\">{{ file.message }}</p>\n</div>\n", styles: [":host{flex:1 1 100%}:host.clickable:hover{box-shadow:0 3px 3px #312f3a29}.fileInfos{display:inline-block;width:100%;height:24px;font-size:14px}.fileInfos .float-right{margin-right:8px}.file-panel-title-left{display:inline-flex;align-items:center;gap:8px}\n"] }]
53
54
  }], propDecorators: { id: [{
54
55
  type: HostBinding,
55
56
  args: ['attr.id']
@@ -66,6 +67,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
66
67
  type: Input
67
68
  }], showProgress: [{
68
69
  type: Input
70
+ }], displayDate: [{
71
+ type: Input
69
72
  }], _colorAccent: [{
70
73
  type: HostBinding,
71
74
  args: ['mat-accent']
@@ -82,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
82
85
  type: HostBinding,
83
86
  args: ['class.mat-primary']
84
87
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1maWxlLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9tYXQtZmlsZS11cGxvYWQvc3JjL2NvbXBvbmVudHMvb25lbXJ2YS1tYXQtZmlsZS1wYW5lbC9vbmVtcnZhLWZpbGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXBhbmVsL29uZW1ydmEtZmlsZS1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE9BQU8sRUFDTCxhQUFhLEdBRWQsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7O0FBRTFDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQVFoQixNQUFNLE9BQU8seUJBQXlCO0lBTnRDO1FBU1MsT0FBRSxHQUFHLHNCQUFzQixPQUFPLEVBQUUsRUFBRSxDQUFDO1FBSTlDLFdBQU0sR0FBVyxxQkFBcUIsR0FBRyxPQUFPLENBQUM7UUFNakQsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFHN0IsaUJBQVksR0FBWSxJQUFJLENBQUM7S0F3QzlCO0lBdENDLElBQUksU0FBUztRQUNYLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUNXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUNXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUNELHdCQUF3QjtJQUN4QixJQUNXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDN0MsQ0FBQztJQUNELHdCQUF3QjtJQUN4QixJQUNXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztJQUNELHdCQUF3QjtJQUN4QixJQUNXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQzsrR0F2RFUseUJBQXlCO21HQUF6Qix5QkFBeUIsa2FDdEJ0QyxrL0RBMkRBOzs0RkRyQ2EseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLFlBQVksbUJBQ0wsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsRUFBRTtzQkFGUixXQUFXO3VCQUFDLFNBQVM7O3NCQUNyQixLQUFLO2dCQUtOLE1BQU07c0JBRkwsV0FBVzt1QkFBQyxjQUFjOztzQkFDMUIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFpQkssWUFBWTtzQkFEdEIsV0FBVzt1QkFBQyxZQUFZO2dCQU9kLFFBQVE7c0JBRGxCLFdBQVc7dUJBQUMsaUJBQWlCO2dCQU1uQixPQUFPO3NCQURqQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFNbEIsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBTXJCLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9uZW1ydmFNYXRDb2xvciB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vdXRpbHMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24tY29uZmlnLm1vZGVsJztcbmltcG9ydCB7XG4gIGZvcm1hdHRlZFNpemUsXG4gIFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUsXG59IGZyb20gJy4uLy4uL21vZGVscy9wcm9ncmVzcy1maWxlLm1vZGVsJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmaWxlLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0eWxlVXJsczogWycuL29uZW1ydmEtZmlsZS1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vb25lbXJ2YS1maWxlLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgT25lbXJ2YUZpbGVQYW5lbENvbXBvbmVudCB7XG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZCA9IGBvbmVtcnZhLWZpbGUtcGFuZWwtJHtORVhUX0lEKyt9YDtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1jeScpXG4gIEBJbnB1dCgpXG4gIGRhdGFDeTogc3RyaW5nID0gJ29uZW1ydmEtZmlsZS1wYW5lbC0nICsgTkVYVF9JRDtcblxuICBASW5wdXQoKVxuICBmaWxlITogUmVmZXJlbmNlZFByb2dyZXNzRmlsZTtcblxuICBASW5wdXQoKVxuICBhY3Rpb25zOiBBY3Rpb25Db25maWdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dQcm9ncmVzczogYm9vbGVhbiA9IHRydWU7XG5cbiAgZ2V0IHByb2dyZXNzJCgpIHtcbiAgICByZXR1cm4gb2YodGhpcy5maWxlLnByb2dyZXNzKTtcbiAgfVxuXG4gIGdldCBzaXplKCkge1xuICAgIHJldHVybiBmb3JtYXR0ZWRTaXplKHRoaXMuZmlsZS5zaXplKTtcbiAgfVxuXG4gIGdldCBjb2xvcigpOiBPbmVtcnZhTWF0Q29sb3Ige1xuICAgIHJldHVybiB0aGlzLmZpbGUuY29sb3I7XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgQEhvc3RCaW5kaW5nKCdtYXQtYWNjZW50JylcbiAgcHVibGljIGdldCBfY29sb3JBY2NlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sb3IgPT09IE9uZW1ydmFNYXRDb2xvci5BQ0NFTlQ7XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtZXJyb3InKVxuICBwdWJsaWMgZ2V0IF9pc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbG9yID09PSBPbmVtcnZhTWF0Q29sb3IuRVJST1I7XG4gIH1cbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LXdhcm4nKVxuICBwdWJsaWMgZ2V0IF9pc1dhcm4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sb3IgPT09IE9uZW1ydmFNYXRDb2xvci5XQVJOO1xuICB9XG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1zdWNjZXNzJylcbiAgcHVibGljIGdldCBfaXNTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbG9yID09PSBPbmVtcnZhTWF0Q29sb3IuU1VDQ0VTUztcbiAgfVxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtcHJpbWFyeScpXG4gIHB1YmxpYyBnZXQgX2lzUHJpbWFyeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2xvciA9PT0gT25lbXJ2YU1hdENvbG9yLlBSSU1BUlk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmaWxlLXBhbmVsLXRpdGxlXCIgW2F0dHIuZGF0YS1jeV09XCJkYXRhQ3lcIj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtcGFuZWwtdGl0bGUtbGVmdFwiPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImZpbGUuY29sb3IgPT09ICdlcnJvcidcIiBjbGFzcz1cImZpbGxlZCBtYXQtZXJyb3JcIlxuICAgICAgPmVycm9yPC9tYXQtaWNvblxuICAgID5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJmaWxlLmNvbG9yID09PSAnc3VjY2VzcydcIiBjbGFzcz1cImZpbGxlZCBtYXQtc3VjY2Vzc1wiXG4gICAgICA+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvblxuICAgID5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJmaWxlLmNvbG9yID09PSAnd2FybidcIiBjbGFzcz1cImZpbGxlZCBtYXQtd2FyblwiXG4gICAgICA+d2FybmluZzwvbWF0LWljb25cbiAgICA+XG4gICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj5cbiAgICAgIHt7IGZpbGUubmFtZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmaWxlLXBhbmVsLXRpdGxlLWFjdGlvblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zXCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnNob3dBY3Rpb24oZmlsZSlcIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJhY3Rpb24uZGF0YUN5XCJcbiAgICAgICAgICBtYXRUb29sdGlwPVwie3sgYWN0aW9uLnRvb2x0aXBDb2RlIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFjdGlvbi5hcmlhQ29kZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgY2xhc3M9XCJjbGlja2FibGVcIlxuICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uY2xpY2tIYW5kbGVyKGZpbGUpXCJcbiAgICAgICAgICA+e3sgYWN0aW9uLmljb25OYW1lIH19PC9tYXQtaWNvblxuICAgICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJmaWxlLXBhbmVsLWNvbnRlbnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGUubWVzc2FnZSA9PT0gJydcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsZUluZm9zXCI+XG4gICAgICB7eyBmaWxlLmxhc3RNb2RpZmllZCB8IGRhdGUgfX1cbiAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHRcIiAqbmdJZj1cImZpbGUuc2l6ZSA+IDBcIj57eyBzaXplIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvbmVtcnZhLXByb2dyZXNzLWJhclwiXG4gICAgICAqbmdJZj1cInNob3dQcm9ncmVzcyAmJiBmaWxlLmVuYWJsZVByb2dyZXNzQmFyXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwib25lbXJ2YS1wcm9ncmVzcy1iYXItb3V0ZXIgbXQtc1wiICNvbmVtcnZhUHJvZ3Jlc3NCYXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm9uZW1ydmEtcHJvZ3Jlc3MtYmFyLWlubmVyXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiAocHJvZ3Jlc3MkIHwgYXN5bmMpICsgJyUnIH1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdwcm9ncmVzcy1zdWNjZXNzJzogKHByb2dyZXNzJCB8IGFzeW5jKSEgPj0gMTAwXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgZGF0YS1jeT1cImZpbGUtdXBsb2FkLXByb2dyZXNzXCJcbiAgICAgICAgICBbYXR0ci52YWx1ZV09XCJwcm9ncmVzcyQgfCBhc3luY1wiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPHAgKm5nSWY9XCJmaWxlLm1lc3NhZ2UgIT09ICcnXCIgY2xhc3M9XCJtZXNzYWdlXCI+e3sgZmlsZS5tZXNzYWdlIH19PC9wPlxuPC9kaXY+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1maWxlLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9tYXQtZmlsZS11cGxvYWQvc3JjL2NvbXBvbmVudHMvb25lbXJ2YS1tYXQtZmlsZS1wYW5lbC9vbmVtcnZhLWZpbGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXBhbmVsL29uZW1ydmEtZmlsZS1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFCLE9BQU8sRUFDTCxhQUFhLEdBRWQsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7O0FBRTFDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQVFoQixNQUFNLE9BQU8seUJBQXlCO0lBTnRDO1FBU1MsT0FBRSxHQUFHLHNCQUFzQixPQUFPLEVBQUUsRUFBRSxDQUFDO1FBSTlDLFdBQU0sR0FBVyxxQkFBcUIsR0FBRyxPQUFPLENBQUM7UUFNakQsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFHN0IsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFHN0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7S0F3QzFCO0lBdENDLElBQUksU0FBUztRQUNYLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUNXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUNXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUNELHdCQUF3QjtJQUN4QixJQUNXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDN0MsQ0FBQztJQUNELHdCQUF3QjtJQUN4QixJQUNXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztJQUNELHdCQUF3QjtJQUN4QixJQUNXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQzsrR0ExRFUseUJBQXlCO21HQUF6Qix5QkFBeUIsOGJDdEJ0QyxxL0RBNERBOzs0RkR0Q2EseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLFlBQVksbUJBQ0wsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsRUFBRTtzQkFGUixXQUFXO3VCQUFDLFNBQVM7O3NCQUNyQixLQUFLO2dCQUtOLE1BQU07c0JBRkwsV0FBVzt1QkFBQyxjQUFjOztzQkFDMUIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBaUJLLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsWUFBWTtnQkFPZCxRQUFRO3NCQURsQixXQUFXO3VCQUFDLGlCQUFpQjtnQkFNbkIsT0FBTztzQkFEakIsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBTWxCLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU1yQixVQUFVO3NCQURwQixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0Q29sb3IgfSBmcm9tICdAb25lbXJ2YXB1YmxpYy9kZXNpZ24tc3lzdGVtL3V0aWxzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3Rpb25Db25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQge1xuICBmb3JtYXR0ZWRTaXplLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5cbmxldCBORVhUX0lEID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmlsZS1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdHlsZVVybHM6IFsnLi9vbmVtcnZhLWZpbGUtcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL29uZW1ydmEtZmlsZS1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFGaWxlUGFuZWxDb21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICBASW5wdXQoKVxuICBwdWJsaWMgaWQgPSBgb25lbXJ2YS1maWxlLXBhbmVsLSR7TkVYVF9JRCsrfWA7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtY3knKVxuICBASW5wdXQoKVxuICBkYXRhQ3k6IHN0cmluZyA9ICdvbmVtcnZhLWZpbGUtcGFuZWwtJyArIE5FWFRfSUQ7XG5cbiAgQElucHV0KClcbiAgZmlsZSE6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU7XG5cbiAgQElucHV0KClcbiAgYWN0aW9uczogQWN0aW9uQ29uZmlnW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzaG93UHJvZ3Jlc3M6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXlEYXRlOiBzdHJpbmcgPSAnJztcblxuICBnZXQgcHJvZ3Jlc3MkKCkge1xuICAgIHJldHVybiBvZih0aGlzLmZpbGUucHJvZ3Jlc3MpO1xuICB9XG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIGZvcm1hdHRlZFNpemUodGhpcy5maWxlLnNpemUpO1xuICB9XG5cbiAgZ2V0IGNvbG9yKCk6IE9uZW1ydmFNYXRDb2xvciB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZS5jb2xvcjtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBASG9zdEJpbmRpbmcoJ21hdC1hY2NlbnQnKVxuICBwdWJsaWMgZ2V0IF9jb2xvckFjY2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2xvciA9PT0gT25lbXJ2YU1hdENvbG9yLkFDQ0VOVDtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1lcnJvcicpXG4gIHB1YmxpYyBnZXQgX2lzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sb3IgPT09IE9uZW1ydmFNYXRDb2xvci5FUlJPUjtcbiAgfVxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtd2FybicpXG4gIHB1YmxpYyBnZXQgX2lzV2FybigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2xvciA9PT0gT25lbXJ2YU1hdENvbG9yLldBUk47XG4gIH1cbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LXN1Y2Nlc3MnKVxuICBwdWJsaWMgZ2V0IF9pc1N1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sb3IgPT09IE9uZW1ydmFNYXRDb2xvci5TVUNDRVNTO1xuICB9XG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1wcmltYXJ5JylcbiAgcHVibGljIGdldCBfaXNQcmltYXJ5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbG9yID09PSBPbmVtcnZhTWF0Q29sb3IuUFJJTUFSWTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZpbGUtcGFuZWwtdGl0bGVcIiBbYXR0ci5kYXRhLWN5XT1cImRhdGFDeVwiPlxuICA8ZGl2IGNsYXNzPVwiZmlsZS1wYW5lbC10aXRsZS1sZWZ0XCI+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiZmlsZS5jb2xvciA9PT0gJ2Vycm9yJ1wiIGNsYXNzPVwiZmlsbGVkIG1hdC1lcnJvclwiXG4gICAgICA+ZXJyb3I8L21hdC1pY29uXG4gICAgPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImZpbGUuY29sb3IgPT09ICdzdWNjZXNzJ1wiIGNsYXNzPVwiZmlsbGVkIG1hdC1zdWNjZXNzXCJcbiAgICAgID5jaGVja19jaXJjbGU8L21hdC1pY29uXG4gICAgPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImZpbGUuY29sb3IgPT09ICd3YXJuJ1wiIGNsYXNzPVwiZmlsbGVkIG1hdC13YXJuXCJcbiAgICAgID53YXJuaW5nPC9tYXQtaWNvblxuICAgID5cbiAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPlxuICAgICAge3sgZmlsZS5uYW1lIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtcGFuZWwtdGl0bGUtYWN0aW9uXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbnMubGVuZ3RoID4gMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgKm5nSWY9XCJhY3Rpb24uc2hvd0FjdGlvbihmaWxlKVwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cImFjdGlvbi5kYXRhQ3lcIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBhY3Rpb24udG9vbHRpcENvZGUgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aW9uLmFyaWFDb2RlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBjbGFzcz1cImNsaWNrYWJsZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jbGlja0hhbmRsZXIoZmlsZSlcIlxuICAgICAgICAgID57eyBhY3Rpb24uaWNvbk5hbWUgfX08L21hdC1pY29uXG4gICAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImZpbGUtcGFuZWwtY29udGVudFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZS5tZXNzYWdlID09PSAnJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWxlSW5mb3NcIj5cbiAgICAgIDxzcGFuPnt7IGRpc3BsYXlEYXRlIH19PC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzcz1cImZsb2F0LXJpZ2h0XCIgKm5nSWY9XCJmaWxlLnNpemUgPiAwXCI+e3sgc2l6ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1wcm9ncmVzcy1iYXJcIlxuICAgICAgKm5nSWY9XCJzaG93UHJvZ3Jlc3MgJiYgZmlsZS5lbmFibGVQcm9ncmVzc0JhclwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm9uZW1ydmEtcHJvZ3Jlc3MtYmFyLW91dGVyIG10LXNcIiAjb25lbXJ2YVByb2dyZXNzQmFyPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJvbmVtcnZhLXByb2dyZXNzLWJhci1pbm5lclwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogKHByb2dyZXNzJCB8IGFzeW5jKSArICclJyB9XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAncHJvZ3Jlc3Mtc3VjY2Vzcyc6IChwcm9ncmVzcyQgfCBhc3luYykhID49IDEwMCxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBkYXRhLWN5PVwiZmlsZS11cGxvYWQtcHJvZ3Jlc3NcIlxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cInByb2dyZXNzJCB8IGFzeW5jXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8cCAqbmdJZj1cImZpbGUubWVzc2FnZSAhPT0gJydcIiBjbGFzcz1cIm1lc3NhZ2VcIj57eyBmaWxlLm1lc3NhZ2UgfX08L3A+XG48L2Rpdj5cbiJdfQ==
@@ -113,7 +113,7 @@ export class OnemrvaMatFileUploadComponent {
113
113
  });
114
114
  }
115
115
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: OnemrvaMatFileUploadComponent, deps: [{ token: i1.MatDialog }, { token: i2.TranslateService }, { token: i3.OnemrvaMatFileUploadStore }], target: i0.ɵɵFactoryTarget.Component }); }
116
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n [ngClass]=\"{ filein: files.length > 0 }\"\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{ 'fu-error': errorMessage !== '' }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p\n class=\"outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <span class=\"inner\"\n ><mat-icon class=\"onemrva-upload\">download</mat-icon></span\n >\n <span class=\"inner\">{{\n dropFilesHereTextTranslationKey | translate\n }}</span>\n <span class=\"inner\"\n >{{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">{{\n 'file.upload.browse.for.file' | translate\n }}</label></span\n >\n <span class=\"inner\" aria-disabled=\"true\"\n ><span *ngIf=\"maxFileSize > 0\"\n >{{ 'file.upload.maximum' | translate }} {{ maxFileSizeFormatted }}\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n {{ acceptString }}</span\n ></span\n >\n </p>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n <mat-error\n *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\"\n >{{ fileUploadErrorMessage | translate }}</mat-error\n >\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], animations: [
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p\n class=\"outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <span class=\"inner\">\n <mat-icon class=\"onemrva-upload\">download</mat-icon>\n </span>\n\n <span class=\"inner\">\n {{ dropFilesHereTextTranslationKey | translate }}\n </span>\n\n <span class=\"inner\">\n {{ 'file.upload.or' | translate }}\n\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }}\n </label>\n </span>\n\n <span class=\"inner\" aria-disabled=\"true\">\n <span *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString }}\n </span>\n </span>\n </p>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], animations: [
117
117
  trigger('inOutAnimation', [
118
118
  state('in', style({ opacity: 1 })),
119
119
  transition(':enter', [
@@ -161,7 +161,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
161
161
  ])),
162
162
  ]),
163
163
  ]),
164
- ], template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n [ngClass]=\"{ filein: files.length > 0 }\"\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{ 'fu-error': errorMessage !== '' }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p\n class=\"outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <span class=\"inner\"\n ><mat-icon class=\"onemrva-upload\">download</mat-icon></span\n >\n <span class=\"inner\">{{\n dropFilesHereTextTranslationKey | translate\n }}</span>\n <span class=\"inner\"\n >{{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">{{\n 'file.upload.browse.for.file' | translate\n }}</label></span\n >\n <span class=\"inner\" aria-disabled=\"true\"\n ><span *ngIf=\"maxFileSize > 0\"\n >{{ 'file.upload.maximum' | translate }} {{ maxFileSizeFormatted }}\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n {{ acceptString }}</span\n ></span\n >\n </p>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n <mat-error\n *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\"\n >{{ fileUploadErrorMessage | translate }}</mat-error\n >\n</ng-container>\n" }]
164
+ ], template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p\n class=\"outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <span class=\"inner\">\n <mat-icon class=\"onemrva-upload\">download</mat-icon>\n </span>\n\n <span class=\"inner\">\n {{ dropFilesHereTextTranslationKey | translate }}\n </span>\n\n <span class=\"inner\">\n {{ 'file.upload.or' | translate }}\n\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }}\n </label>\n </span>\n\n <span class=\"inner\" aria-disabled=\"true\">\n <span *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"acceptString.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString }}\n </span>\n </span>\n </p>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n" }]
165
165
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.TranslateService }, { type: i3.OnemrvaMatFileUploadStore }], propDecorators: { accept: [{
166
166
  type: Input
167
167
  }], maxFileSize: [{
@@ -187,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
187
187
  type: ViewChild,
188
188
  args: [`fileDropRef`]
189
189
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsV0FBVyxHQUdaLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7OztBQUkxQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFtQ2hCLE1BQU0sT0FBTyw2QkFBNkI7SUFpRHhDLFlBQ1MsTUFBaUIsRUFDaEIsU0FBMkIsRUFDM0IsZUFBMEM7UUFGM0MsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FBMkI7UUFsRHBE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LEVBQUUsQ0FBQyxFQUFFLENBQUM7aUNBQ2pDLENBQUMsQ0FDSDs2QkFDRixDQUFDO3lCQUNILENBQUM7cUJBQ0g7cUpBSUQsTUFBTTtzQkFETCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sK0JBQStCO3NCQUQ5QixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFjQyxNQUFNO3NCQUZaLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1pbWVUeXBlcyB9IGZyb20gJ21pbWUtd3JhcHBlcic7XG5pbXBvcnQge1xuICBzdGF0ZSxcbiAga2V5ZnJhbWVzLFxuICBzdHlsZSxcbiAgYW5pbWF0ZSxcbiAgdHJpZ2dlcixcbiAgdHJhbnNpdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBmb3JtYXRCeXRlcyxcbiAgUHJvZ3Jlc3NGaWxlLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlIH0gZnJvbSAnLi4vLi4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgMzAwLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIG9mZnNldDogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC4yNSwgb2Zmc2V0OiAwLjI1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIG9mZnNldDogMC41IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuNzUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMSB9KSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgIDMwMCxcbiAgICAgICAgICBrZXlmcmFtZXMoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDAgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuNzUsIG9mZnNldDogMC4yNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC41LCBvZmZzZXQ6IDAuNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC4yNSwgb2Zmc2V0OiAwLjc1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBvZmZzZXQ6IDEgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT25lbXJ2YU1hdEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBhY2NlcHQ6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgYWNjZXB0U3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgbWF4RmlsZVNpemU6IG51bWJlciA9IDA7XG5cbiAgQElucHV0KClcbiAgbnVtYmVyT2ZGaWxlczogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKVxuICB1cGxvYWRPbkRyb3A6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGluaXRpYWxGaWxlczogUHJvZ3Jlc3NGaWxlW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGRyb3BGaWxlc0hlcmVUZXh0VHJhbnNsYXRpb25LZXk6IHN0cmluZyA9ICdmaWxlLnVwbG9hZC5kcmFnLmFuZC5kcm9wJztcblxuICBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGZpbGVzJDogT2JzZXJ2YWJsZTxSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlW10+O1xuXG4gIEBJbnB1dCgpIGZpbGVQYW5lbFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICByZXRyeUZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgY21wUmVmOiBzeW1ib2wgfT4oKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGRhdGEtY3lgIG9mIHRoZSBlbGVtZW50LiBJZiBub3Qgc2V0LCB0aGUgZmlyc3QgY29tcG9uZW50IGluc3RhbmNlIHdpbGwgaGF2ZSBgZGF0YS1jeWAgPSBgXCJvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtMFwiYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8b25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0IGlkPVwibXktZmlyc3QtbXVsdGktc2VsZWN0XCI+PC9vbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3Q+XG4gICAqIGBgYFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtY3knKVxuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YUN5ID0gYG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdC0ke05FWFRfSUQrK31gO1xuXG4gIEBWaWV3Q2hpbGQoYGZpbGVEcm9wUmVmYClcbiAgZmlsZURyb3BSZWYhOiBFbGVtZW50UmVmO1xuXG4gIGlucHV0SWQgPSBgZmlsZURyb3BSZWYtJHtORVhUX0lEfWA7XG4gIG1heEZpbGVTaXplRm9ybWF0dGVkOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlVXBsb2FkU3RvcmU6IE9uZW1ydmFNYXRGaWxlVXBsb2FkU3RvcmUsXG4gICkge1xuICAgIHRoaXMuZmlsZXMkID0gZmlsZVVwbG9hZFN0b3JlLmZpbGVzJDtcblxuICAgIHRoaXMuZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQgPSB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlVXBsb2FkRXJyb3IkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWNjZXB0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWNjZXB0U3RyaW5nID0gdGhpcy5hY2NlcHRcbiAgICAgICAgLm1hcCh2YWwgPT4ge1xuICAgICAgICAgIGNvbnN0IHQgPSBtaW1lVHlwZXMuZ2V0RXh0ZW5zaW9uKHZhbCk7XG4gICAgICAgICAgcmV0dXJuIGAuJHt0fWA7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIodmFsID0+IHtcbiAgICAgICAgICByZXR1cm4gdmFsLmxlbmd0aCA+IDE7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpO1xuXG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5zZXRBY2NlcHQodGhpcy5hY2NlcHQpO1xuICAgIH1cblxuICAgIHRoaXMubWF4RmlsZVNpemVGb3JtYXR0ZWQgPSBmb3JtYXRCeXRlcyh0aGlzLm1heEZpbGVTaXplKTtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5zZXRNYXhGaWxlU2l6ZSh0aGlzLm1heEZpbGVTaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvbiBmaWxlIGRyb3AgaGFuZGxlclxuICAgKi9cbiAgb25GaWxlRHJvcHBlZCgkZXZlbnQ6IEZpbGVMaXN0KSB7XG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KCRldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogaGFuZGxlIGZpbGUgZnJvbSBicm93c2luZ1xuICAgKi9cbiAgZmlsZUJyb3dzZUhhbmRsZXIoJGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGVsbSA9ICRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCxcbiAgICAgIGZpbGVzID0gZWxtLmZpbGVzIGFzIEZpbGVMaXN0O1xuXG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KGZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEZpbGVzIGxpc3QgdG8gbm9ybWFsIGFycmF5IGxpc3RcbiAgICogQHBhcmFtIGZpbGVzIChGaWxlcyBMaXN0KVxuICAgKi9cbiAgcHJlcGFyZUZpbGVzTGlzdChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgLy8gaWYgbnVtYmVyT2ZmaWxlcyBpcyBzZXQgYW5kIHRoZSB0b3RhbCBsZW5ndGggb2YgZmlsZXMgaXMgc21hbGxlciB0aGFuIGl0XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubnVtYmVyT2ZGaWxlcyA+IDAgJiZcbiAgICAgICAgZmlsZXMubGVuZ3RoICsgdmFsdWUubGVuZ3RoID4gdGhpcy5udW1iZXJPZkZpbGVzXG4gICAgICApIHtcbiAgICAgICAgLy8gdG9vIG1hbnkgZmlsZXNcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdmaWxlLnVwbG9hZC50b28ubWFueS5maWxlcycsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjbGVhciBlcnJvciBtZXNzYWdlXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICAgICAgY29uc3QgZnM6IFByb2dyZXNzRmlsZVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBmaWxlID0gZmlsZXMuaXRlbShpKTtcbiAgICAgICAgICBpZiAoZmlsZSA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgICAgICBjb25zdCBpdGVtOiBQcm9ncmVzc0ZpbGUgPSB7XG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICB1cmw6IG51bGwsXG4gICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIGVuYWJsZVByb2dyZXNzQmFyOiB0aGlzLnVwbG9hZE9uRHJvcCxcblxuICAgICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgc2l6ZTogZmlsZSEuc2l6ZSxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGZzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy51cGxvYWRPbkRyb3ApIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnVwbG9hZEZpbGVzKGZzKTtcbiAgICAgICAgZWxzZSB0aGlzLmZpbGVVcGxvYWRTdG9yZS5hZGRTZXZlcmFsRm9yUG90ZW50aWFsVXBsb2FkKGZzKTtcblxuICAgICAgICB0aGlzLmZpbGVEcm9wUmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZXMkIHwgYXN5bmMgYXMgZmlsZXNcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQtZHJvcC1hcmVhXCJcbiAgICBhcHBEbmRcbiAgICBbbmdDbGFzc109XCJ7IGZpbGVpbjogZmlsZXMubGVuZ3RoID4gMCB9XCJcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7ICdmdS1lcnJvcic6IGVycm9yTWVzc2FnZSAhPT0gJycgfVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICNmaWxlRHJvcFJlZlxuICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIG11bHRpcGxlXG4gICAgICAoY2hhbmdlKT1cImZpbGVCcm93c2VIYW5kbGVyKCRldmVudClcIlxuICAgICAgYWNjZXB0PVwie3sgYWNjZXB0U3RyaW5nIH19XCJcbiAgICAvPlxuICAgIDxwXG4gICAgICBjbGFzcz1cIm91dGVyXCJcbiAgICAgICpuZ0lmPVwibnVtYmVyT2ZGaWxlcyA9PT0gMCB8fCBudW1iZXJPZkZpbGVzID4gZmlsZXMubGVuZ3RoXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCJcbiAgICAgICAgPjxtYXQtaWNvbiBjbGFzcz1cIm9uZW1ydmEtdXBsb2FkXCI+ZG93bmxvYWQ8L21hdC1pY29uPjwvc3BhblxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiPnt7XG4gICAgICAgIGRyb3BGaWxlc0hlcmVUZXh0VHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiXG4gICAgICAgID57eyAnZmlsZS51cGxvYWQub3InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxsYWJlbCBmb3I9XCJ7eyBpbnB1dElkIH19XCIgY2xhc3M9XCJjb250ZW50XCI+e3tcbiAgICAgICAgICAnZmlsZS51cGxvYWQuYnJvd3NlLmZvci5maWxlJyB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvbGFiZWw+PC9zcGFuXG4gICAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIlxuICAgICAgICA+PHNwYW4gKm5nSWY9XCJtYXhGaWxlU2l6ZSA+IDBcIlxuICAgICAgICAgID57eyAnZmlsZS51cGxvYWQubWF4aW11bScgfCB0cmFuc2xhdGUgfX0ge3sgbWF4RmlsZVNpemVGb3JtYXR0ZWQgfX1cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImFjY2VwdFN0cmluZy5sZW5ndGggPiAwXCI+e3sgJ3wgJyB9fTwvc3Bhbj5cbiAgICAgICAgICB7eyBhY2NlcHRTdHJpbmcgfX08L3NwYW5cbiAgICAgICAgPjwvc3BhblxuICAgICAgPlxuICAgIDwvcD5cbiAgICA8dWwgY2xhc3M9XCJmaWxlcy1saXN0XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBmaWxlUGFuZWxUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgZmlsZSwgJGltcGxpY2l0OiBmaWxlIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+e3sgZXJyb3JNZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gIDxtYXQtZXJyb3JcbiAgICAqbmdJZj1cImZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkIHwgYXN5bmMgYXMgZmlsZVVwbG9hZEVycm9yTWVzc2FnZVwiXG4gICAgPnt7IGZpbGVVcGxvYWRFcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvclxuICA+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsV0FBVyxHQUdaLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7OztBQUkxQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFtQ2hCLE1BQU0sT0FBTyw2QkFBNkI7SUFpRHhDLFlBQ1MsTUFBaUIsRUFDaEIsU0FBMkIsRUFDM0IsZUFBMEM7UUFGM0MsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FBMkI7UUFsRHBE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LEVBQUUsQ0FBQyxFQUFFLENBQUM7aUNBQ2pDLENBQUMsQ0FDSDs2QkFDRixDQUFDO3lCQUNILENBQUM7cUJBQ0g7cUpBSUQsTUFBTTtzQkFETCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sK0JBQStCO3NCQUQ5QixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFjQyxNQUFNO3NCQUZaLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1pbWVUeXBlcyB9IGZyb20gJ21pbWUtd3JhcHBlcic7XG5pbXBvcnQge1xuICBzdGF0ZSxcbiAga2V5ZnJhbWVzLFxuICBzdHlsZSxcbiAgYW5pbWF0ZSxcbiAgdHJpZ2dlcixcbiAgdHJhbnNpdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBmb3JtYXRCeXRlcyxcbiAgUHJvZ3Jlc3NGaWxlLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlIH0gZnJvbSAnLi4vLi4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgMzAwLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIG9mZnNldDogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC4yNSwgb2Zmc2V0OiAwLjI1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIG9mZnNldDogMC41IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuNzUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMSB9KSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgIDMwMCxcbiAgICAgICAgICBrZXlmcmFtZXMoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDAgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuNzUsIG9mZnNldDogMC4yNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC41LCBvZmZzZXQ6IDAuNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC4yNSwgb2Zmc2V0OiAwLjc1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBvZmZzZXQ6IDEgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT25lbXJ2YU1hdEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBhY2NlcHQ6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgYWNjZXB0U3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgbWF4RmlsZVNpemU6IG51bWJlciA9IDA7XG5cbiAgQElucHV0KClcbiAgbnVtYmVyT2ZGaWxlczogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKVxuICB1cGxvYWRPbkRyb3A6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGluaXRpYWxGaWxlczogUHJvZ3Jlc3NGaWxlW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGRyb3BGaWxlc0hlcmVUZXh0VHJhbnNsYXRpb25LZXk6IHN0cmluZyA9ICdmaWxlLnVwbG9hZC5kcmFnLmFuZC5kcm9wJztcblxuICBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGZpbGVzJDogT2JzZXJ2YWJsZTxSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlW10+O1xuXG4gIEBJbnB1dCgpIGZpbGVQYW5lbFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICByZXRyeUZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgY21wUmVmOiBzeW1ib2wgfT4oKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGRhdGEtY3lgIG9mIHRoZSBlbGVtZW50LiBJZiBub3Qgc2V0LCB0aGUgZmlyc3QgY29tcG9uZW50IGluc3RhbmNlIHdpbGwgaGF2ZSBgZGF0YS1jeWAgPSBgXCJvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtMFwiYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8b25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0IGlkPVwibXktZmlyc3QtbXVsdGktc2VsZWN0XCI+PC9vbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3Q+XG4gICAqIGBgYFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtY3knKVxuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YUN5ID0gYG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdC0ke05FWFRfSUQrK31gO1xuXG4gIEBWaWV3Q2hpbGQoYGZpbGVEcm9wUmVmYClcbiAgZmlsZURyb3BSZWYhOiBFbGVtZW50UmVmO1xuXG4gIGlucHV0SWQgPSBgZmlsZURyb3BSZWYtJHtORVhUX0lEfWA7XG4gIG1heEZpbGVTaXplRm9ybWF0dGVkOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlVXBsb2FkU3RvcmU6IE9uZW1ydmFNYXRGaWxlVXBsb2FkU3RvcmUsXG4gICkge1xuICAgIHRoaXMuZmlsZXMkID0gZmlsZVVwbG9hZFN0b3JlLmZpbGVzJDtcblxuICAgIHRoaXMuZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQgPSB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlVXBsb2FkRXJyb3IkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWNjZXB0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWNjZXB0U3RyaW5nID0gdGhpcy5hY2NlcHRcbiAgICAgICAgLm1hcCh2YWwgPT4ge1xuICAgICAgICAgIGNvbnN0IHQgPSBtaW1lVHlwZXMuZ2V0RXh0ZW5zaW9uKHZhbCk7XG4gICAgICAgICAgcmV0dXJuIGAuJHt0fWA7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIodmFsID0+IHtcbiAgICAgICAgICByZXR1cm4gdmFsLmxlbmd0aCA+IDE7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpO1xuXG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5zZXRBY2NlcHQodGhpcy5hY2NlcHQpO1xuICAgIH1cblxuICAgIHRoaXMubWF4RmlsZVNpemVGb3JtYXR0ZWQgPSBmb3JtYXRCeXRlcyh0aGlzLm1heEZpbGVTaXplKTtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5zZXRNYXhGaWxlU2l6ZSh0aGlzLm1heEZpbGVTaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvbiBmaWxlIGRyb3AgaGFuZGxlclxuICAgKi9cbiAgb25GaWxlRHJvcHBlZCgkZXZlbnQ6IEZpbGVMaXN0KSB7XG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KCRldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogaGFuZGxlIGZpbGUgZnJvbSBicm93c2luZ1xuICAgKi9cbiAgZmlsZUJyb3dzZUhhbmRsZXIoJGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGVsbSA9ICRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCxcbiAgICAgIGZpbGVzID0gZWxtLmZpbGVzIGFzIEZpbGVMaXN0O1xuXG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KGZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEZpbGVzIGxpc3QgdG8gbm9ybWFsIGFycmF5IGxpc3RcbiAgICogQHBhcmFtIGZpbGVzIChGaWxlcyBMaXN0KVxuICAgKi9cbiAgcHJlcGFyZUZpbGVzTGlzdChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgLy8gaWYgbnVtYmVyT2ZmaWxlcyBpcyBzZXQgYW5kIHRoZSB0b3RhbCBsZW5ndGggb2YgZmlsZXMgaXMgc21hbGxlciB0aGFuIGl0XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubnVtYmVyT2ZGaWxlcyA+IDAgJiZcbiAgICAgICAgZmlsZXMubGVuZ3RoICsgdmFsdWUubGVuZ3RoID4gdGhpcy5udW1iZXJPZkZpbGVzXG4gICAgICApIHtcbiAgICAgICAgLy8gdG9vIG1hbnkgZmlsZXNcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdmaWxlLnVwbG9hZC50b28ubWFueS5maWxlcycsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjbGVhciBlcnJvciBtZXNzYWdlXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICAgICAgY29uc3QgZnM6IFByb2dyZXNzRmlsZVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBmaWxlID0gZmlsZXMuaXRlbShpKTtcbiAgICAgICAgICBpZiAoZmlsZSA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgICAgICBjb25zdCBpdGVtOiBQcm9ncmVzc0ZpbGUgPSB7XG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICB1cmw6IG51bGwsXG4gICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIGVuYWJsZVByb2dyZXNzQmFyOiB0aGlzLnVwbG9hZE9uRHJvcCxcblxuICAgICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgc2l6ZTogZmlsZSEuc2l6ZSxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGZzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy51cGxvYWRPbkRyb3ApIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnVwbG9hZEZpbGVzKGZzKTtcbiAgICAgICAgZWxzZSB0aGlzLmZpbGVVcGxvYWRTdG9yZS5hZGRTZXZlcmFsRm9yUG90ZW50aWFsVXBsb2FkKGZzKTtcblxuICAgICAgICB0aGlzLmZpbGVEcm9wUmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZXMkIHwgYXN5bmMgYXMgZmlsZXNcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQtZHJvcC1hcmVhXCJcbiAgICBhcHBEbmRcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnZnUtZXJyb3InOiBlcnJvck1lc3NhZ2UgIT09ICcnLFxuICAgICAgZmlsZWluOiBmaWxlcy5sZW5ndGggPiAwLFxuICAgIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAjZmlsZURyb3BSZWZcbiAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBtdWx0aXBsZVxuICAgICAgKGNoYW5nZSk9XCJmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIGFjY2VwdD1cInt7IGFjY2VwdFN0cmluZyB9fVwiXG4gICAgLz5cbiAgICA8cFxuICAgICAgY2xhc3M9XCJvdXRlclwiXG4gICAgICAqbmdJZj1cIm51bWJlck9mRmlsZXMgPT09IDAgfHwgbnVtYmVyT2ZGaWxlcyA+IGZpbGVzLmxlbmd0aFwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJvbmVtcnZhLXVwbG9hZFwiPmRvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiPlxuICAgICAgICB7eyBkcm9wRmlsZXNIZXJlVGV4dFRyYW5zbGF0aW9uS2V5IHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5uZXJcIj5cbiAgICAgICAge3sgJ2ZpbGUudXBsb2FkLm9yJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxsYWJlbCBmb3I9XCJ7eyBpbnB1dElkIH19XCIgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAge3sgJ2ZpbGUudXBsb2FkLmJyb3dzZS5mb3IuZmlsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibWF4RmlsZVNpemUgPiAwXCI+XG4gICAgICAgICAge3sgJ2ZpbGUudXBsb2FkLm1heGltdW0nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAge3sgbWF4RmlsZVNpemVGb3JtYXR0ZWQgfX1cblxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWNjZXB0U3RyaW5nLmxlbmd0aCA+IDBcIj57eyAnfCAnIH19PC9zcGFuPlxuXG4gICAgICAgICAge3sgYWNjZXB0U3RyaW5nIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3A+XG4gICAgPHVsIGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgZmlsZVBhbmVsVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7IGZpbGUsICRpbXBsaWNpdDogZmlsZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cblxuICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+e3sgZXJyb3JNZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkIHwgYXN5bmMgYXMgZmlsZVVwbG9hZEVycm9yTWVzc2FnZVwiPlxuICAgIHt7IGZpbGVVcGxvYWRFcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtZXJyb3I+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -11,6 +11,9 @@ export class OnemrvaMatPaginatorComponent {
11
11
  get pageIndex() {
12
12
  return this._pageIndex;
13
13
  }
14
+ resetPageIndex() {
15
+ this._pageIndex = 0;
16
+ }
14
17
  set pageIndex(index) {
15
18
  if (this._pageIndex !== index) {
16
19
  this._pageIndex = Math.min(index, this._totalNumberOfPages - 1);
@@ -207,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
207
210
  }], page: [{
208
211
  type: Output
209
212
  }] } });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtcGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9tYXQtcGFnaW5hdG9yL3NyYy9vbmVtcnZhLW1hdC1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1wYWdpbmF0b3Ivc3JjL29uZW1ydmEtbWF0LXBhZ2luYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVF2QyxNQUFNLE9BQU8sNEJBQTRCO0lBYXZDLElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLEtBQWE7UUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDVyxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLElBQUksQ0FBQyxP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QyxDQUFDO1FBRUgsYUFBYTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDOytHQXRNVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixvWkNoQnpDLGcyR0E0R0E7OzRGRDVGYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUNoQix1QkFBdUIsQ0FBQyxNQUFNO3NGQUl0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBYUssU0FBUztzQkFEbkIsS0FBSztnQkFjSyxNQUFNO3NCQURoQixLQUFLO2dCQWFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUksYUFBYTtzQkFBdEIsTUFBTTtnQkFHWSxJQUFJO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbWF0LXBhZ2luYXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJy4vb25lbXJ2YS1tYXQtcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgT25lbXJ2YU1hdFBhZ2luYXRvckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHR5cGU6ICdkZWZhdWx0JyB8ICdjb21wbGV4JyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgcGFnZVNpemVTZWxlY3RvciA9IHRydWU7IC8vIFNwZWNzOiBEUy03NFxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzEwLCAyMCwgNTAsIDEwMF07IC8vIFNwZWNzOiBEUy03NFxuICBASW5wdXQoKSBwYWdlU2l6ZURlZmF1bHRPcHRpb246IG51bWJlciA9IDEwO1xuICBASW5wdXQoKSByZWNvcmRLZXk6IHN0cmluZyA9ICdyZWNvcmRzUGVyUGFnZSc7IC8vIHRoaXMgcmVjb3JkIGtleSB3aWxsIGJlIGluc2lkZSBrZXkgXCJwYWdpbmF0b3JcIi4gSS5lIHRoZSBkZWZhdWx0IGtleSB2YWx1ZSB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkIG91dCBvZiB0aGlzIGlucHV0IGlzIHBhZ2luYXRvci5yZWNvcmRzUGVyUGFnZVxuXG4gIG1heFJlY29yZE51bWJlciA9IDA7XG4gIHByaXZhdGUgX3BhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfbGVuZ3RoOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9wYWdlU2l6ZTogbnVtYmVyID0gdGhpcy5wYWdlU2l6ZURlZmF1bHRPcHRpb247XG4gIHByaXZhdGUgX3RvdGFsTnVtYmVyT2ZQYWdlczogbnVtYmVyID0gMDtcblxuICBwdWJsaWMgZ2V0IHBhZ2VJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlSW5kZXg7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBhZ2VJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3BhZ2VJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgIHRoaXMuX3BhZ2VJbmRleCA9IE1hdGgubWluKGluZGV4LCB0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSAxKTtcbiAgICAgIHRoaXMuX2VtaXRQYWdlRXZlbnQodGhpcy5fcGFnZUluZGV4KTtcbiAgICAgIHRoaXMucmVmcmVzaFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbGVuZ3RoO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsZW5ndGgobGVuZ3RoOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fbGVuZ3RoICE9PSBsZW5ndGgpIHtcbiAgICAgIHRoaXMuX2xlbmd0aCA9IGxlbmd0aDtcbiAgICAgIHRoaXMucmVmcmVzaFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBwYWdlU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlU2l6ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFnZVNpemUocGFnZVNpemU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9wYWdlU2l6ZSAhPT0gcGFnZVNpemUpIHtcbiAgICAgIHRoaXMuX3BhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICB0aGlzLnBhZ2VTaXplJC5uZXh0KHRoaXMuX3BhZ2VTaXplKTtcbiAgICAgIHRoaXMuX3BhZ2VJbmRleCA9IDA7XG4gICAgICB0aGlzLl9lbWl0UGFnZUV2ZW50KHRoaXMuX3BhZ2VJbmRleCk7XG4gICAgICB0aGlzLnJlZnJlc2hTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b3RhbE51bWJlck9mUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzO1xuICB9XG5cbiAgQElucHV0KCkgcHJldmlvdXNLZXk6IHN0cmluZyA9ICdQcmV2aW91cyc7XG4gIEBJbnB1dCgpIG5leHRLZXk6IHN0cmluZyA9ICdOZXh0JztcblxuICAvKiogRGVwcmVjYXRlZCAqKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gIEBPdXRwdXQoKSBvblJlcXVlc3RQYWdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gUGFnZXMgYXJlIGRpc3BsYXllZCBzdGFydGluZyBmcm9tIDEgYnV0IHRoZSBpbmRleCBzdGFydHMgYXQgMFxuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBhZ2luYXRvciBjaGFuZ2VzIHRoZSBwYWdlIHNpemUgb3IgcGFnZSBpbmRleC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBhZ2U6IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcblxuICBwYWdlSW5kZXgkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG4gIHBhZ2VTaXplJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxuICAgIHRoaXMucGFnZVNpemVEZWZhdWx0T3B0aW9uLFxuICApO1xuXG4gIHBhZ2VzOiBudW1iZXJbXSA9IFtdO1xuICBudW1iZXJPZlJlYWNoYWJsZVBhZ2VzID0gNTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICByZWZyZXNoU3RhdGUoKSB7XG4gICAgdGhpcy5tYXhSZWNvcmROdW1iZXIgPSBNYXRoLm1pbihcbiAgICAgIHRoaXMuX3BhZ2VJbmRleCAqIHRoaXMuX3BhZ2VTaXplICsgdGhpcy5fcGFnZVNpemUsXG4gICAgICB0aGlzLl9sZW5ndGgsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLl9wYWdlSW5kZXggPCAwKSB0aHJvdyBFcnJvcignTmVnYXRpdmUgaW5kZXgnKTtcbiAgICB0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgPSBNYXRoLmNlaWwodGhpcy5sZW5ndGggLyB0aGlzLnBhZ2VTaXplKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgPiAwICYmXG4gICAgICB0aGlzLl9wYWdlSW5kZXggPiB0aGlzLl90b3RhbE51bWJlck9mUGFnZXNcbiAgICApXG4gICAgICB0aHJvdyBFcnJvcignSW5kZXggb3V0IG9mIGJvdW5kJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHRoaXMuX3BhZ2VJbmRleCkpIHRocm93IEVycm9yKCdJbmRleCBpcyBub3QgaW50ZWdlcicpO1xuXG4gICAgdGhpcy5wYWdlSW5kZXgkLm5leHQodGhpcy5fcGFnZUluZGV4KTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdjb21wbGV4JykgdGhpcy5yZWZyZXNoQ29tcGxleCgpO1xuICAgIGVsc2UgdGhpcy5yZWZyZXNoRGVmYXVsdCgpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZWZyZXNoRGVmYXVsdCgpIHtcbiAgICBpZiAodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIDw9IHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcyArIDEpIHtcbiAgICAgIC8vIENhc2UgMTogbm90IGVub3VnaCBwYWdlcyB0byBkaXNwbGF5IHRoZSBmaXJzdCBcIi4uLlwiXG4gICAgICB0aGlzLnBhZ2VzID0gWy4uLkFycmF5KHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcykua2V5cygpXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFnZUluZGV4IDw9IHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcyAtIDEpIHtcbiAgICAgIC8vIENhc2UgMjogcGFnZSBpbmRleCBpbiBmaXJzdCA1IHBhZ2VzXG4gICAgICB0aGlzLnBhZ2VzID0gWy4uLkFycmF5KHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcykua2V5cygpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGZpcnN0UGFnZUluZGV4ID1cbiAgICAgICAgTWF0aC5mbG9vcih0aGlzLl9wYWdlSW5kZXggLyB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMpICpcbiAgICAgICAgdGhpcy5udW1iZXJPZlJlYWNoYWJsZVBhZ2VzO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyAtIGZpcnN0UGFnZUluZGV4IDw9XG4gICAgICAgIHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcyArIDFcbiAgICAgICkge1xuICAgICAgICBpZiAodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIC0gZmlyc3RQYWdlSW5kZXggPD0gMSkge1xuICAgICAgICAgIC8vIENhc2UgMzogaW4gdGhlIGxhc3QgYmxvY2sgY29udGFpbmluZyBvbmx5IDEgcGFnZVxuICAgICAgICAgIGZpcnN0UGFnZUluZGV4ID0gZmlyc3RQYWdlSW5kZXggLSB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXM7XG4gICAgICAgICAgdGhpcy5wYWdlcyA9IFtcbiAgICAgICAgICAgIC4uLkFycmF5KHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyAtIGZpcnN0UGFnZUluZGV4KS5rZXlzKCksXG4gICAgICAgICAgXS5tYXAoeCA9PiB4ICsgZmlyc3RQYWdlSW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIENhc2UgNDogb25lIGJsb2NrIGJlZm9yZSB0aGUgbGFzdCB3aXRoIGxhc3QgYmxvY2sgY29udGFpbmluZyBvbmx5IDEgcGFnZVxuICAgICAgICAgIHRoaXMucGFnZXMgPSBbXG4gICAgICAgICAgICAuLi5BcnJheSh0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSBmaXJzdFBhZ2VJbmRleCkua2V5cygpLFxuICAgICAgICAgIF0ubWFwKHggPT4geCArIGZpcnN0UGFnZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSAxIC0gZmlyc3RQYWdlSW5kZXggPD0gMikge1xuICAgICAgICAvLyBDYXNlIDU6IGluIHRoZSBsYXN0IGJsb2NrIGNvbnRhaW5pbmcgMiBwYWdlcyBvciBtb3JlXG4gICAgICAgIGZpcnN0UGFnZUluZGV4ID0gZmlyc3RQYWdlSW5kZXggLSB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXM7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIC0gZmlyc3RQYWdlSW5kZXgpLmtleXMoKSxcbiAgICAgICAgXS5tYXAoeCA9PiB4ICsgZmlyc3RQYWdlSW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ2FzZSA2OiBzYW1lIGFzIGNhc2UgNCBidXQgdGhlIG5leHQgYmxvY2sgY29udGFpbnMgYXQgbGVhc3QgMiBwYWdlc1xuICAgICAgICB0aGlzLnBhZ2VzID0gWy4uLkFycmF5KHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcykua2V5cygpXS5tYXAoXG4gICAgICAgICAgeCA9PiB4ICsgZmlyc3RQYWdlSW5kZXgsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaENvbXBsZXgoKSB7XG4gICAgaWYgKHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyA8PSB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMgKyAyKSB7XG4gICAgICAvLyBDYXNlIDE6IG5vdCBlbm91Z2ggcGFnZXMgdG8gZGlzcGxheSB0aGUgZmlyc3QgXCIuLi5cIlxuICAgICAgdGhpcy5wYWdlcyA9IFsuLi5BcnJheSh0aGlzLl90b3RhbE51bWJlck9mUGFnZXMpLmtleXMoKV07XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhZ2VJbmRleCA8PSB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMgLSAxKSB7XG4gICAgICAvLyBDYXNlIDI6IHBhZ2UgaW5kZXggaW4gZmlyc3QgNSBwYWdlc1xuICAgICAgdGhpcy5wYWdlcyA9IFsuLi5BcnJheSh0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMpLmtleXMoKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBmaXJzdFBhZ2VJbmRleCA9XG4gICAgICAgIE1hdGguZmxvb3IodGhpcy5fcGFnZUluZGV4IC8gdGhpcy5udW1iZXJPZlJlYWNoYWJsZVBhZ2VzKSAqXG4gICAgICAgIHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcztcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSBmaXJzdFBhZ2VJbmRleCA8PVxuICAgICAgICB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMgKyAyXG4gICAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyAtIGZpcnN0UGFnZUluZGV4IDw9IDIpIHtcbiAgICAgICAgICAvLyBDYXNlIDM6IGluIHRoZSBsYXN0IGJsb2NrIGNvbnRhaW5pbmcgbWF4IDIgcGFnZXNcbiAgICAgICAgICBmaXJzdFBhZ2VJbmRleCA9IGZpcnN0UGFnZUluZGV4IC0gdGhpcy5udW1iZXJPZlJlYWNoYWJsZVBhZ2VzO1xuICAgICAgICAgIHRoaXMucGFnZXMgPSBbXG4gICAgICAgICAgICAuLi5BcnJheSh0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSBmaXJzdFBhZ2VJbmRleCkua2V5cygpLFxuICAgICAgICAgIF0ubWFwKHggPT4geCArIGZpcnN0UGFnZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBDYXNlIDQ6IG9uZSBibG9jayBiZWZvcmUgdGhlIGxhc3Qgd2l0aCBsYXN0IGJsb2NrIGNvbnRhaW5pbmcgbWF4IDIgcGFnZXNcbiAgICAgICAgICB0aGlzLnBhZ2VzID0gW1xuICAgICAgICAgICAgLi4uQXJyYXkodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIC0gZmlyc3RQYWdlSW5kZXgpLmtleXMoKSxcbiAgICAgICAgICBdLm1hcCh4ID0+IHggKyBmaXJzdFBhZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIC0gMSAtIGZpcnN0UGFnZUluZGV4IDw9IDMpIHtcbiAgICAgICAgLy8gQ2FzZSA1OiBpbiB0aGUgbGFzdCBibG9jayBjb250YWluaW5nIDIgcGFnZXMgb3IgbW9yZVxuICAgICAgICBmaXJzdFBhZ2VJbmRleCA9IGZpcnN0UGFnZUluZGV4IC0gdGhpcy5udW1iZXJPZlJlYWNoYWJsZVBhZ2VzO1xuICAgICAgICB0aGlzLnBhZ2VzID0gW1xuICAgICAgICAgIC4uLkFycmF5KHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyAtIGZpcnN0UGFnZUluZGV4KS5rZXlzKCksXG4gICAgICAgIF0ubWFwKHggPT4geCArIGZpcnN0UGFnZUluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENhc2UgNjogc2FtZSBhcyBjYXNlIDQgYnV0IHRoZSBuZXh0IGJsb2NrIGNvbnRhaW5zIGF0IGxlYXN0IDIgcGFnZXNcbiAgICAgICAgdGhpcy5wYWdlcyA9IFsuLi5BcnJheSh0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMpLmtleXMoKV0ubWFwKFxuICAgICAgICAgIHggPT4geCArIGZpcnN0UGFnZUluZGV4LFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBldmVudCBub3RpZnlpbmcgdGhhdCBhIGNoYW5nZSBvZiB0aGUgcGFnaW5hdG9yJ3MgcHJvcGVydGllcyBoYXMgYmVlbiB0cmlnZ2VyZWQuICovXG4gIHByaXZhdGUgX2VtaXRQYWdlRXZlbnQocHJldmlvdXNQYWdlSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucGFnZS5lbWl0KHtcbiAgICAgIHByZXZpb3VzUGFnZUluZGV4LFxuICAgICAgcGFnZUluZGV4OiB0aGlzLl9wYWdlSW5kZXgsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5fcGFnZVNpemUsXG4gICAgICBsZW5ndGg6IHRoaXMuX2xlbmd0aCxcbiAgICB9KTtcblxuICAgIC8vIERlcHJlY2F0ZWRcbiAgICB0aGlzLm9uUmVxdWVzdFBhZ2UuZW1pdCh0aGlzLl9wYWdlSW5kZXgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGFnaW5hdG9yLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwicGFnaW5hdG9yLXNpemUtc2VsZWN0b3ItY29udGFpbmVyXCIgKm5nSWY9XCJwYWdlU2l6ZVNlbGVjdG9yXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICAgICBjbGFzcz1cInBhZ2luYXRvci1zaXplLXNlbGVjdG9yXCJcbiAgICAgIGRhdGEtY3k9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdG9yXCJcbiAgICA+XG4gICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwicGFnZVNpemVEZWZhdWx0T3B0aW9uXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHNpemUgb2YgcGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgICBbdmFsdWVdPVwic2l6ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInBhZ2VTaXplID0gc2l6ZVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInb25lbXJ2YS1tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1vcHRpb24tJyArIHNpemVcIlxuICAgICAgICAgID57eyBzaXplIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXY+XG4gICAgICA8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9ja1wiPnt7XG4gICAgICAgICdwYWdpbmF0b3IuJyArIHJlY29yZEtleSB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8bWF0LWRpdmlkZXIgdmVydGljYWw+PC9tYXQtZGl2aWRlcj5cblxuICAgICAge3sgcGFnZUluZGV4ICogcGFnZVNpemUgKyAxIH19IC0ge3sgbWF4UmVjb3JkTnVtYmVyIH19XG4gICAgICA8c3Bhbj57eyAncGFnaW5hdG9yLm91dE9mJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIHt7IGxlbmd0aCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJwYWdlcy5sZW5ndGggPiAxXCJcbiAgICBjbGFzcz1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvclwiXG4gICAgZGF0YS1jeT1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvclwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0biBvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXByZXZpb3VzXCJcbiAgICAgIGRhdGEtY3k9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXByZXZpb3VzXCJcbiAgICAgIFtkaXNhYmxlZF09XCJwYWdlSW5kZXggPT09IDBcIlxuICAgICAgKGNsaWNrKT1cInBhZ2VJbmRleCA9IHBhZ2VJbmRleCAtIDFcIlxuICAgID5cbiAgICAgIHt7ICdwYWdpbmF0b3IuJyArIHByZXZpb3VzS2V5IHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0biBvbmVtcnZhLW1hdC1wYWdpbmF0b3ItZmlyc3RcIlxuICAgICAgZGF0YS1jeT1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvci1maXJzdFwiXG4gICAgICAqbmdJZj1cInBhZ2VzWzBdID4gMCAmJiB0eXBlID09PSAnY29tcGxleCdcIlxuICAgICAgKGNsaWNrKT1cInBhZ2VJbmRleCA9IDBcIlxuICAgID5cbiAgICAgIDFcbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuIG9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tdG9vLW1hbnlcIlxuICAgICAgZGF0YS1jeT1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tdG9vLW1hbnktYmVmb3JlXCJcbiAgICAgICpuZ0lmPVwicGFnZXNbMF0gPiAwXCJcbiAgICAgIChjbGljayk9XCJwYWdlSW5kZXggPSBwYWdlSW5kZXggLSBudW1iZXJPZlJlYWNoYWJsZVBhZ2VzXCJcbiAgICA+XG4gICAgICAuLi5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuIG9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tcGFnZVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdvbmVtcnZhLW1hdC1wYWdpbmF0b3ItY3VycmVudC1pbmRleCc6IHBhZ2VJbmRleCA9PT0gcGFnZSB9XCJcbiAgICAgIGRhdGEtY3k9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXBhZ2VcIlxuICAgICAgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZXNcIlxuICAgICAgKGNsaWNrKT1cInBhZ2VJbmRleCA9IHBhZ2VcIlxuICAgID5cbiAgICAgIHt7IHBhZ2UgKyAxIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0biBvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXRvby1tYW55XCJcbiAgICAgIGRhdGEtY3k9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXRvby1tYW55LWFmdGVyXCJcbiAgICAgICpuZ0lmPVwicGFnZXNbcGFnZXMubGVuZ3RoIC0gMV0gPCB0b3RhbE51bWJlck9mUGFnZXMgLSAxXCJcbiAgICAgIChjbGljayk9XCJwYWdlSW5kZXggPSBwYWdlSW5kZXggKyBudW1iZXJPZlJlYWNoYWJsZVBhZ2VzXCJcbiAgICA+XG4gICAgICAuLi5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuIG9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tbGFzdFwiXG4gICAgICBkYXRhLWN5PVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0bi1sYXN0XCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIHBhZ2VzW3BhZ2VzLmxlbmd0aCAtIDFdIDwgdG90YWxOdW1iZXJPZlBhZ2VzIC0gMSAmJiB0eXBlID09PSAnY29tcGxleCdcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwicGFnZUluZGV4ID0gdG90YWxOdW1iZXJPZlBhZ2VzIC0gMVwiXG4gICAgPlxuICAgICAge3sgdG90YWxOdW1iZXJPZlBhZ2VzIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0biBvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLW5leHRcIlxuICAgICAgZGF0YS1jeT1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tbmV4dFwiXG4gICAgICBbZGlzYWJsZWRdPVwicGFnZUluZGV4ID49IHRvdGFsTnVtYmVyT2ZQYWdlcyAtIDFcIlxuICAgICAgKGNsaWNrKT1cInBhZ2VJbmRleCA9IHBhZ2VJbmRleCArIDFcIlxuICAgID5cbiAgICAgIHt7ICdwYWdpbmF0b3IuJyArIG5leHRLZXkgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtcGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9tYXQtcGFnaW5hdG9yL3NyYy9vbmVtcnZhLW1hdC1wYWdpbmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1wYWdpbmF0b3Ivc3JjL29uZW1ydmEtbWF0LXBhZ2luYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVF2QyxNQUFNLE9BQU8sNEJBQTRCO0lBYXZDLElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLEtBQWE7UUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJ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RSxJQUFJLENBQUMsU0FBUztZQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDckIsQ0FBQyxDQUFDO1FBRUgsYUFBYTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDOytHQTFNVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixvWkNoQnpDLGcyR0E0R0E7OzRGRDVGYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUNoQix1QkFBdUIsQ0FBQyxNQUFNO3NGQUl0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBaUJLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBY0ssTUFBTTtzQkFEaEIsS0FBSztnQkFhSyxRQUFRO3NCQURsQixLQUFLO2dCQWVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUlJLGFBQWE7c0JBQXRCLE1BQU07Z0JBR1ksSUFBSTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLW1hdC1wYWdpbmF0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICcuL29uZW1ydmEtbWF0LXBhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRQYWdpbmF0b3JDb21wb25lbnQge1xuICBASW5wdXQoKSB0eXBlOiAnZGVmYXVsdCcgfCAnY29tcGxleCcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIHBhZ2VTaXplU2VsZWN0b3IgPSB0cnVlOyAvLyBTcGVjczogRFMtNzRcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFsxMCwgMjAsIDUwLCAxMDBdOyAvLyBTcGVjczogRFMtNzRcbiAgQElucHV0KCkgcGFnZVNpemVEZWZhdWx0T3B0aW9uOiBudW1iZXIgPSAxMDtcbiAgQElucHV0KCkgcmVjb3JkS2V5OiBzdHJpbmcgPSAncmVjb3Jkc1BlclBhZ2UnOyAvLyB0aGlzIHJlY29yZCBrZXkgd2lsbCBiZSBpbnNpZGUga2V5IFwicGFnaW5hdG9yXCIuIEkuZSB0aGUgZGVmYXVsdCBrZXkgdmFsdWUgdGhhdCB3aWxsIGJlIGdlbmVyYXRlZCBvdXQgb2YgdGhpcyBpbnB1dCBpcyBwYWdpbmF0b3IucmVjb3Jkc1BlclBhZ2VcblxuICBtYXhSZWNvcmROdW1iZXIgPSAwO1xuICBwcml2YXRlIF9wYWdlSW5kZXg6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX2xlbmd0aDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfcGFnZVNpemU6IG51bWJlciA9IHRoaXMucGFnZVNpemVEZWZhdWx0T3B0aW9uO1xuICBwcml2YXRlIF90b3RhbE51bWJlck9mUGFnZXM6IG51bWJlciA9IDA7XG5cbiAgcHVibGljIGdldCBwYWdlSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUluZGV4O1xuICB9XG5cbiAgcHVibGljIHJlc2V0UGFnZUluZGV4KCkge1xuICAgIHRoaXMuX3BhZ2VJbmRleCA9IDA7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBhZ2VJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3BhZ2VJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgIHRoaXMuX3BhZ2VJbmRleCA9IE1hdGgubWluKGluZGV4LCB0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSAxKTtcbiAgICAgIHRoaXMuX2VtaXRQYWdlRXZlbnQodGhpcy5fcGFnZUluZGV4KTtcbiAgICAgIHRoaXMucmVmcmVzaFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbGVuZ3RoO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsZW5ndGgobGVuZ3RoOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fbGVuZ3RoICE9PSBsZW5ndGgpIHtcbiAgICAgIHRoaXMuX2xlbmd0aCA9IGxlbmd0aDtcbiAgICAgIHRoaXMucmVmcmVzaFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBwYWdlU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlU2l6ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFnZVNpemUocGFnZVNpemU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9wYWdlU2l6ZSAhPT0gcGFnZVNpemUpIHtcbiAgICAgIHRoaXMuX3BhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgICB0aGlzLnBhZ2VTaXplJC5uZXh0KHRoaXMuX3BhZ2VTaXplKTtcbiAgICAgIHRoaXMuX3BhZ2VJbmRleCA9IDA7XG4gICAgICB0aGlzLl9lbWl0UGFnZUV2ZW50KHRoaXMuX3BhZ2VJbmRleCk7XG4gICAgICB0aGlzLnJlZnJlc2hTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b3RhbE51bWJlck9mUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzO1xuICB9XG5cbiAgQElucHV0KCkgcHJldmlvdXNLZXk6IHN0cmluZyA9ICdQcmV2aW91cyc7XG4gIEBJbnB1dCgpIG5leHRLZXk6IHN0cmluZyA9ICdOZXh0JztcblxuICAvKiogRGVwcmVjYXRlZCAqKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gIEBPdXRwdXQoKSBvblJlcXVlc3RQYWdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gUGFnZXMgYXJlIGRpc3BsYXllZCBzdGFydGluZyBmcm9tIDEgYnV0IHRoZSBpbmRleCBzdGFydHMgYXQgMFxuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBhZ2luYXRvciBjaGFuZ2VzIHRoZSBwYWdlIHNpemUgb3IgcGFnZSBpbmRleC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBhZ2U6IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcblxuICBwYWdlSW5kZXgkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG4gIHBhZ2VTaXplJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxuICAgIHRoaXMucGFnZVNpemVEZWZhdWx0T3B0aW9uLFxuICApO1xuXG4gIHBhZ2VzOiBudW1iZXJbXSA9IFtdO1xuICBudW1iZXJPZlJlYWNoYWJsZVBhZ2VzID0gNTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICByZWZyZXNoU3RhdGUoKSB7XG4gICAgdGhpcy5tYXhSZWNvcmROdW1iZXIgPSBNYXRoLm1pbihcbiAgICAgIHRoaXMuX3BhZ2VJbmRleCAqIHRoaXMuX3BhZ2VTaXplICsgdGhpcy5fcGFnZVNpemUsXG4gICAgICB0aGlzLl9sZW5ndGgsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLl9wYWdlSW5kZXggPCAwKSB0aHJvdyBFcnJvcignTmVnYXRpdmUgaW5kZXgnKTtcbiAgICB0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgPSBNYXRoLmNlaWwodGhpcy5sZW5ndGggLyB0aGlzLnBhZ2VTaXplKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgPiAwICYmXG4gICAgICB0aGlzLl9wYWdlSW5kZXggPiB0aGlzLl90b3RhbE51bWJlck9mUGFnZXNcbiAgICApXG4gICAgICB0aHJvdyBFcnJvcignSW5kZXggb3V0IG9mIGJvdW5kJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHRoaXMuX3BhZ2VJbmRleCkpIHRocm93IEVycm9yKCdJbmRleCBpcyBub3QgaW50ZWdlcicpO1xuXG4gICAgdGhpcy5wYWdlSW5kZXgkLm5leHQodGhpcy5fcGFnZUluZGV4KTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdjb21wbGV4JykgdGhpcy5yZWZyZXNoQ29tcGxleCgpO1xuICAgIGVsc2UgdGhpcy5yZWZyZXNoRGVmYXVsdCgpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZWZyZXNoRGVmYXVsdCgpIHtcbiAgICBpZiAodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIDw9IHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcyArIDEpIHtcbiAgICAgIC8vIENhc2UgMTogbm90IGVub3VnaCBwYWdlcyB0byBkaXNwbGF5IHRoZSBmaXJzdCBcIi4uLlwiXG4gICAgICB0aGlzLnBhZ2VzID0gWy4uLkFycmF5KHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcykua2V5cygpXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFnZUluZGV4IDw9IHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcyAtIDEpIHtcbiAgICAgIC8vIENhc2UgMjogcGFnZSBpbmRleCBpbiBmaXJzdCA1IHBhZ2VzXG4gICAgICB0aGlzLnBhZ2VzID0gWy4uLkFycmF5KHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcykua2V5cygpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGZpcnN0UGFnZUluZGV4ID1cbiAgICAgICAgTWF0aC5mbG9vcih0aGlzLl9wYWdlSW5kZXggLyB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMpICpcbiAgICAgICAgdGhpcy5udW1iZXJPZlJlYWNoYWJsZVBhZ2VzO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyAtIGZpcnN0UGFnZUluZGV4IDw9XG4gICAgICAgIHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcyArIDFcbiAgICAgICkge1xuICAgICAgICBpZiAodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIC0gZmlyc3RQYWdlSW5kZXggPD0gMSkge1xuICAgICAgICAgIC8vIENhc2UgMzogaW4gdGhlIGxhc3QgYmxvY2sgY29udGFpbmluZyBvbmx5IDEgcGFnZVxuICAgICAgICAgIGZpcnN0UGFnZUluZGV4ID0gZmlyc3RQYWdlSW5kZXggLSB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXM7XG4gICAgICAgICAgdGhpcy5wYWdlcyA9IFtcbiAgICAgICAgICAgIC4uLkFycmF5KHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyAtIGZpcnN0UGFnZUluZGV4KS5rZXlzKCksXG4gICAgICAgICAgXS5tYXAoeCA9PiB4ICsgZmlyc3RQYWdlSW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIENhc2UgNDogb25lIGJsb2NrIGJlZm9yZSB0aGUgbGFzdCB3aXRoIGxhc3QgYmxvY2sgY29udGFpbmluZyBvbmx5IDEgcGFnZVxuICAgICAgICAgIHRoaXMucGFnZXMgPSBbXG4gICAgICAgICAgICAuLi5BcnJheSh0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSBmaXJzdFBhZ2VJbmRleCkua2V5cygpLFxuICAgICAgICAgIF0ubWFwKHggPT4geCArIGZpcnN0UGFnZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSAxIC0gZmlyc3RQYWdlSW5kZXggPD0gMikge1xuICAgICAgICAvLyBDYXNlIDU6IGluIHRoZSBsYXN0IGJsb2NrIGNvbnRhaW5pbmcgMiBwYWdlcyBvciBtb3JlXG4gICAgICAgIGZpcnN0UGFnZUluZGV4ID0gZmlyc3RQYWdlSW5kZXggLSB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXM7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIC0gZmlyc3RQYWdlSW5kZXgpLmtleXMoKSxcbiAgICAgICAgXS5tYXAoeCA9PiB4ICsgZmlyc3RQYWdlSW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ2FzZSA2OiBzYW1lIGFzIGNhc2UgNCBidXQgdGhlIG5leHQgYmxvY2sgY29udGFpbnMgYXQgbGVhc3QgMiBwYWdlc1xuICAgICAgICB0aGlzLnBhZ2VzID0gWy4uLkFycmF5KHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcykua2V5cygpXS5tYXAoXG4gICAgICAgICAgeCA9PiB4ICsgZmlyc3RQYWdlSW5kZXgsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaENvbXBsZXgoKSB7XG4gICAgaWYgKHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyA8PSB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMgKyAyKSB7XG4gICAgICAvLyBDYXNlIDE6IG5vdCBlbm91Z2ggcGFnZXMgdG8gZGlzcGxheSB0aGUgZmlyc3QgXCIuLi5cIlxuICAgICAgdGhpcy5wYWdlcyA9IFsuLi5BcnJheSh0aGlzLl90b3RhbE51bWJlck9mUGFnZXMpLmtleXMoKV07XG4gICAgfSBlbHNlIGlmICh0aGlzLnBhZ2VJbmRleCA8PSB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMgLSAxKSB7XG4gICAgICAvLyBDYXNlIDI6IHBhZ2UgaW5kZXggaW4gZmlyc3QgNSBwYWdlc1xuICAgICAgdGhpcy5wYWdlcyA9IFsuLi5BcnJheSh0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMpLmtleXMoKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBmaXJzdFBhZ2VJbmRleCA9XG4gICAgICAgIE1hdGguZmxvb3IodGhpcy5fcGFnZUluZGV4IC8gdGhpcy5udW1iZXJPZlJlYWNoYWJsZVBhZ2VzKSAqXG4gICAgICAgIHRoaXMubnVtYmVyT2ZSZWFjaGFibGVQYWdlcztcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSBmaXJzdFBhZ2VJbmRleCA8PVxuICAgICAgICB0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMgKyAyXG4gICAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyAtIGZpcnN0UGFnZUluZGV4IDw9IDIpIHtcbiAgICAgICAgICAvLyBDYXNlIDM6IGluIHRoZSBsYXN0IGJsb2NrIGNvbnRhaW5pbmcgbWF4IDIgcGFnZXNcbiAgICAgICAgICBmaXJzdFBhZ2VJbmRleCA9IGZpcnN0UGFnZUluZGV4IC0gdGhpcy5udW1iZXJPZlJlYWNoYWJsZVBhZ2VzO1xuICAgICAgICAgIHRoaXMucGFnZXMgPSBbXG4gICAgICAgICAgICAuLi5BcnJheSh0aGlzLl90b3RhbE51bWJlck9mUGFnZXMgLSBmaXJzdFBhZ2VJbmRleCkua2V5cygpLFxuICAgICAgICAgIF0ubWFwKHggPT4geCArIGZpcnN0UGFnZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBDYXNlIDQ6IG9uZSBibG9jayBiZWZvcmUgdGhlIGxhc3Qgd2l0aCBsYXN0IGJsb2NrIGNvbnRhaW5pbmcgbWF4IDIgcGFnZXNcbiAgICAgICAgICB0aGlzLnBhZ2VzID0gW1xuICAgICAgICAgICAgLi4uQXJyYXkodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIC0gZmlyc3RQYWdlSW5kZXgpLmtleXMoKSxcbiAgICAgICAgICBdLm1hcCh4ID0+IHggKyBmaXJzdFBhZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdG90YWxOdW1iZXJPZlBhZ2VzIC0gMSAtIGZpcnN0UGFnZUluZGV4IDw9IDMpIHtcbiAgICAgICAgLy8gQ2FzZSA1OiBpbiB0aGUgbGFzdCBibG9jayBjb250YWluaW5nIDIgcGFnZXMgb3IgbW9yZVxuICAgICAgICBmaXJzdFBhZ2VJbmRleCA9IGZpcnN0UGFnZUluZGV4IC0gdGhpcy5udW1iZXJPZlJlYWNoYWJsZVBhZ2VzO1xuICAgICAgICB0aGlzLnBhZ2VzID0gW1xuICAgICAgICAgIC4uLkFycmF5KHRoaXMuX3RvdGFsTnVtYmVyT2ZQYWdlcyAtIGZpcnN0UGFnZUluZGV4KS5rZXlzKCksXG4gICAgICAgIF0ubWFwKHggPT4geCArIGZpcnN0UGFnZUluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENhc2UgNjogc2FtZSBhcyBjYXNlIDQgYnV0IHRoZSBuZXh0IGJsb2NrIGNvbnRhaW5zIGF0IGxlYXN0IDIgcGFnZXNcbiAgICAgICAgdGhpcy5wYWdlcyA9IFsuLi5BcnJheSh0aGlzLm51bWJlck9mUmVhY2hhYmxlUGFnZXMpLmtleXMoKV0ubWFwKFxuICAgICAgICAgIHggPT4geCArIGZpcnN0UGFnZUluZGV4LFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBldmVudCBub3RpZnlpbmcgdGhhdCBhIGNoYW5nZSBvZiB0aGUgcGFnaW5hdG9yJ3MgcHJvcGVydGllcyBoYXMgYmVlbiB0cmlnZ2VyZWQuICovXG4gIHByaXZhdGUgX2VtaXRQYWdlRXZlbnQocHJldmlvdXNQYWdlSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucGFnZS5lbWl0KHtcbiAgICAgIHByZXZpb3VzUGFnZUluZGV4LFxuICAgICAgcGFnZUluZGV4OiB0aGlzLl9wYWdlSW5kZXgsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5fcGFnZVNpemUsXG4gICAgICBsZW5ndGg6IHRoaXMuX2xlbmd0aCxcbiAgICB9KTtcblxuICAgIC8vIERlcHJlY2F0ZWRcbiAgICB0aGlzLm9uUmVxdWVzdFBhZ2UuZW1pdCh0aGlzLl9wYWdlSW5kZXgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGFnaW5hdG9yLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwicGFnaW5hdG9yLXNpemUtc2VsZWN0b3ItY29udGFpbmVyXCIgKm5nSWY9XCJwYWdlU2l6ZVNlbGVjdG9yXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICAgICBjbGFzcz1cInBhZ2luYXRvci1zaXplLXNlbGVjdG9yXCJcbiAgICAgIGRhdGEtY3k9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdG9yXCJcbiAgICA+XG4gICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwicGFnZVNpemVEZWZhdWx0T3B0aW9uXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHNpemUgb2YgcGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgICBbdmFsdWVdPVwic2l6ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInBhZ2VTaXplID0gc2l6ZVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInb25lbXJ2YS1tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1vcHRpb24tJyArIHNpemVcIlxuICAgICAgICAgID57eyBzaXplIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXY+XG4gICAgICA8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9ja1wiPnt7XG4gICAgICAgICdwYWdpbmF0b3IuJyArIHJlY29yZEtleSB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8bWF0LWRpdmlkZXIgdmVydGljYWw+PC9tYXQtZGl2aWRlcj5cblxuICAgICAge3sgcGFnZUluZGV4ICogcGFnZVNpemUgKyAxIH19IC0ge3sgbWF4UmVjb3JkTnVtYmVyIH19XG4gICAgICA8c3Bhbj57eyAncGFnaW5hdG9yLm91dE9mJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIHt7IGxlbmd0aCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJwYWdlcy5sZW5ndGggPiAxXCJcbiAgICBjbGFzcz1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvclwiXG4gICAgZGF0YS1jeT1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvclwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0biBvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXByZXZpb3VzXCJcbiAgICAgIGRhdGEtY3k9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXByZXZpb3VzXCJcbiAgICAgIFtkaXNhYmxlZF09XCJwYWdlSW5kZXggPT09IDBcIlxuICAgICAgKGNsaWNrKT1cInBhZ2VJbmRleCA9IHBhZ2VJbmRleCAtIDFcIlxuICAgID5cbiAgICAgIHt7ICdwYWdpbmF0b3IuJyArIHByZXZpb3VzS2V5IHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0biBvbmVtcnZhLW1hdC1wYWdpbmF0b3ItZmlyc3RcIlxuICAgICAgZGF0YS1jeT1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvci1maXJzdFwiXG4gICAgICAqbmdJZj1cInBhZ2VzWzBdID4gMCAmJiB0eXBlID09PSAnY29tcGxleCdcIlxuICAgICAgKGNsaWNrKT1cInBhZ2VJbmRleCA9IDBcIlxuICAgID5cbiAgICAgIDFcbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuIG9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tdG9vLW1hbnlcIlxuICAgICAgZGF0YS1jeT1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tdG9vLW1hbnktYmVmb3JlXCJcbiAgICAgICpuZ0lmPVwicGFnZXNbMF0gPiAwXCJcbiAgICAgIChjbGljayk9XCJwYWdlSW5kZXggPSBwYWdlSW5kZXggLSBudW1iZXJPZlJlYWNoYWJsZVBhZ2VzXCJcbiAgICA+XG4gICAgICAuLi5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuIG9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tcGFnZVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdvbmVtcnZhLW1hdC1wYWdpbmF0b3ItY3VycmVudC1pbmRleCc6IHBhZ2VJbmRleCA9PT0gcGFnZSB9XCJcbiAgICAgIGRhdGEtY3k9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXBhZ2VcIlxuICAgICAgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZXNcIlxuICAgICAgKGNsaWNrKT1cInBhZ2VJbmRleCA9IHBhZ2VcIlxuICAgID5cbiAgICAgIHt7IHBhZ2UgKyAxIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0biBvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXRvby1tYW55XCJcbiAgICAgIGRhdGEtY3k9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLXRvby1tYW55LWFmdGVyXCJcbiAgICAgICpuZ0lmPVwicGFnZXNbcGFnZXMubGVuZ3RoIC0gMV0gPCB0b3RhbE51bWJlck9mUGFnZXMgLSAxXCJcbiAgICAgIChjbGljayk9XCJwYWdlSW5kZXggPSBwYWdlSW5kZXggKyBudW1iZXJPZlJlYWNoYWJsZVBhZ2VzXCJcbiAgICA+XG4gICAgICAuLi5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuIG9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tbGFzdFwiXG4gICAgICBkYXRhLWN5PVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0bi1sYXN0XCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIHBhZ2VzW3BhZ2VzLmxlbmd0aCAtIDFdIDwgdG90YWxOdW1iZXJPZlBhZ2VzIC0gMSAmJiB0eXBlID09PSAnY29tcGxleCdcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwicGFnZUluZGV4ID0gdG90YWxOdW1iZXJPZlBhZ2VzIC0gMVwiXG4gICAgPlxuICAgICAge3sgdG90YWxOdW1iZXJPZlBhZ2VzIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtcGFnaW5hdG9yLWJ0biBvbmVtcnZhLW1hdC1wYWdpbmF0b3ItYnRuLW5leHRcIlxuICAgICAgZGF0YS1jeT1cIm9uZW1ydmEtbWF0LXBhZ2luYXRvci1idG4tbmV4dFwiXG4gICAgICBbZGlzYWJsZWRdPVwicGFnZUluZGV4ID49IHRvdGFsTnVtYmVyT2ZQYWdlcyAtIDFcIlxuICAgICAgKGNsaWNrKT1cInBhZ2VJbmRleCA9IHBhZ2VJbmRleCArIDFcIlxuICAgID5cbiAgICAgIHt7ICdwYWdpbmF0b3IuJyArIG5leHRLZXkgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -446,6 +446,9 @@ class LayoutComponent {
446
446
  this.drawerService.host = this.drawerHost;
447
447
  this.drawerService.drawer = this.drawer;
448
448
  }
449
+ get currentLanguage() {
450
+ return this.translateService.currentLang || '';
451
+ }
449
452
  ngAfterViewInit() {
450
453
  if (isDevMode()) {
451
454
  this.cd.detectChanges();
@@ -475,11 +478,11 @@ class LayoutComponent {
475
478
  this.drawer.open();
476
479
  }
477
480
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutComponent, deps: [{ token: i1$2.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i2.BreakpointObserver }, { token: DOCUMENT }, { token: OnemrvaDrawerService }], target: i0.ɵɵFactoryTarget.Component }); }
478
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: LayoutComponent, selector: "onemrva-layout", inputs: { logo: "logo", languages: "languages", environment: "environment", logoRedictionUrl: "logoRedictionUrl", profile: "profile", id: "id", role: "role" }, outputs: { login: "login", logout: "logout" }, queries: [{ propertyName: "title", first: true, predicate: LayoutTitleComponent, descendants: true }, { propertyName: "loginMenu", first: true, predicate: LayoutLoginMenuComponent, descendants: true }, { propertyName: "content", first: true, predicate: LayoutContentComponent, descendants: true }, { propertyName: "afterNav", first: true, predicate: LayoutAfterNavComponent, descendants: true }, { propertyName: "footer", first: true, predicate: LayoutFooterComponent, descendants: true }, { propertyName: "routes", predicate: LayoutRouteComponent }], viewQueries: [{ propertyName: "drawer", first: true, predicate: MatDrawer, descendants: true, static: true }, { propertyName: "drawerHost", first: true, predicate: DrawerHostDirective, descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"\n 'onemrva_logo_' +\n translateService.currentLang?.toLocaleLowerCase()\n \"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default',\n }\"\n />\n <div\n class=\"application-title\"\n [ngClass]=\"{ 'small-screen': isSmall }\"\n >\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"!profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n icon=\"account_circle\"\n color=\"\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n [attr.aria-label]=\"'layout.logout' | translate\"\n >\n <mat-icon>logout</mat-icon>\n {{ 'layout.logout' | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n [attr.aria-label]=\"'layout.login' | translate\"\n >\n <mat-icon>login</mat-icon>\n {{ 'layout.login' | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n [attr.aria-label]=\"'layout.menu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <a\n [matMenuTriggerFor]=\"languageMenu\"\n data-cy=\"languageMenu\"\n [attr.aria-label]=\"'language.selection' | translate\"\n mat-tab-link\n >\n {{ translateService.currentLang }}\n <mat-icon style=\"width: 16px\">expand_more</mat-icon>\n </a>\n </div>\n <mat-menu #languageMenu>\n <button\n *ngFor=\"let lang of languages\"\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n [attr.data-cy]=\"'language_' + lang.code\"\n (click)=\"changeLanguage(lang.code)\"\n [attr.aria-label]=\"lang.label\"\n >\n {{ lang.label }}\n </button>\n </mat-menu>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div\n [id]=\"id\"\n [attr.role]=\"role\"\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"onemrva-layout-content\"\n *ngIf=\"content?.template as tpl\"\n >\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment &&\n (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <div [class.onemrva-layout-container]=\"!fluid\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1.3rem;font-weight:700;height:42px;line-height:42px}:host .mat-toolbar{background:#fff;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174,#eb142a) 0 0 no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{min-height:calc(100vh - 195px)}.onemrva-footer{text-align:center;padding:9.5px;margin-top:16px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i6$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i1$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i1$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i6.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i6.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i6.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.OnemrvaMatAvatarComponent, selector: "onemrva-mat-avatar", inputs: ["id", "roundShape", "initials", "icon", "src", "size", "color"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i15.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: DrawerHostDirective, selector: "[drawerhost]" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); }
481
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: LayoutComponent, selector: "onemrva-layout", inputs: { logo: "logo", languages: "languages", environment: "environment", logoRedictionUrl: "logoRedictionUrl", profile: "profile", id: "id", role: "role" }, outputs: { login: "login", logout: "logout" }, queries: [{ propertyName: "title", first: true, predicate: LayoutTitleComponent, descendants: true }, { propertyName: "loginMenu", first: true, predicate: LayoutLoginMenuComponent, descendants: true }, { propertyName: "content", first: true, predicate: LayoutContentComponent, descendants: true }, { propertyName: "afterNav", first: true, predicate: LayoutAfterNavComponent, descendants: true }, { propertyName: "footer", first: true, predicate: LayoutFooterComponent, descendants: true }, { propertyName: "routes", predicate: LayoutRouteComponent }], viewQueries: [{ propertyName: "drawer", first: true, predicate: MatDrawer, descendants: true, static: true }, { propertyName: "drawerHost", first: true, predicate: DrawerHostDirective, descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"\n 'onemrva_logo_' + currentLanguage.toLocaleLowerCase()\n \"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default',\n }\"\n />\n <div\n class=\"application-title\"\n [ngClass]=\"{ 'small-screen': isSmall }\"\n >\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"!profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n icon=\"account_circle\"\n color=\"\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n [attr.aria-label]=\"'layout.logout' | translate\"\n >\n <mat-icon>logout</mat-icon>\n {{ 'layout.logout' | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n [attr.aria-label]=\"'layout.login' | translate\"\n >\n <mat-icon>login</mat-icon>\n {{ 'layout.login' | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n [attr.aria-label]=\"'layout.menu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <a\n [matMenuTriggerFor]=\"languageMenu\"\n data-cy=\"languageMenu\"\n [attr.aria-label]=\"'language.selection' | translate\"\n mat-tab-link\n >\n {{ currentLanguage }}\n <mat-icon style=\"width: 16px\">expand_more</mat-icon>\n </a>\n </div>\n <mat-menu #languageMenu>\n <button\n *ngFor=\"let lang of languages\"\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n [attr.data-cy]=\"'language_' + lang.code\"\n (click)=\"changeLanguage(lang.code)\"\n [attr.aria-label]=\"lang.label\"\n >\n {{ lang.label }}\n </button>\n </mat-menu>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div\n [id]=\"id\"\n [attr.role]=\"role\"\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"onemrva-layout-content\"\n *ngIf=\"content?.template as tpl\"\n >\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment &&\n (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <div [class.onemrva-layout-container]=\"!fluid\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1.3rem;font-weight:700;height:42px;line-height:42px}:host .mat-toolbar{background:#fff;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174,#eb142a) 0 0 no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{min-height:calc(100vh - 195px)}.onemrva-footer{text-align:center;padding:9.5px;margin-top:16px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i6$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i1$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i1$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i6.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i6.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i6.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.OnemrvaMatAvatarComponent, selector: "onemrva-mat-avatar", inputs: ["id", "roundShape", "initials", "icon", "src", "size", "color"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i15.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: DrawerHostDirective, selector: "[drawerhost]" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); }
479
482
  }
480
483
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutComponent, decorators: [{
481
484
  type: Component,
482
- args: [{ selector: 'onemrva-layout', template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"\n 'onemrva_logo_' +\n translateService.currentLang?.toLocaleLowerCase()\n \"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default',\n }\"\n />\n <div\n class=\"application-title\"\n [ngClass]=\"{ 'small-screen': isSmall }\"\n >\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"!profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n icon=\"account_circle\"\n color=\"\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n [attr.aria-label]=\"'layout.logout' | translate\"\n >\n <mat-icon>logout</mat-icon>\n {{ 'layout.logout' | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n [attr.aria-label]=\"'layout.login' | translate\"\n >\n <mat-icon>login</mat-icon>\n {{ 'layout.login' | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n [attr.aria-label]=\"'layout.menu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <a\n [matMenuTriggerFor]=\"languageMenu\"\n data-cy=\"languageMenu\"\n [attr.aria-label]=\"'language.selection' | translate\"\n mat-tab-link\n >\n {{ translateService.currentLang }}\n <mat-icon style=\"width: 16px\">expand_more</mat-icon>\n </a>\n </div>\n <mat-menu #languageMenu>\n <button\n *ngFor=\"let lang of languages\"\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n [attr.data-cy]=\"'language_' + lang.code\"\n (click)=\"changeLanguage(lang.code)\"\n [attr.aria-label]=\"lang.label\"\n >\n {{ lang.label }}\n </button>\n </mat-menu>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div\n [id]=\"id\"\n [attr.role]=\"role\"\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"onemrva-layout-content\"\n *ngIf=\"content?.template as tpl\"\n >\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment &&\n (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <div [class.onemrva-layout-container]=\"!fluid\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1.3rem;font-weight:700;height:42px;line-height:42px}:host .mat-toolbar{background:#fff;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174,#eb142a) 0 0 no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{min-height:calc(100vh - 195px)}.onemrva-footer{text-align:center;padding:9.5px;margin-top:16px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"] }]
485
+ args: [{ selector: 'onemrva-layout', template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"\n 'onemrva_logo_' + currentLanguage.toLocaleLowerCase()\n \"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default',\n }\"\n />\n <div\n class=\"application-title\"\n [ngClass]=\"{ 'small-screen': isSmall }\"\n >\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\">\n </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n\n <onemrva-mat-avatar\n matRipple\n *ngIf=\"!profile.isLoggedIn\"\n [matMenuTriggerFor]=\"menu\"\n icon=\"account_circle\"\n color=\"\"\n size=\"extrasmall\"\n class=\"clickable\"\n ></onemrva-mat-avatar>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n [attr.aria-label]=\"'layout.logout' | translate\"\n >\n <mat-icon>logout</mat-icon>\n {{ 'layout.logout' | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n [attr.aria-label]=\"'layout.login' | translate\"\n >\n <mat-icon>login</mat-icon>\n {{ 'layout.login' | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n [attr.aria-label]=\"'layout.menu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n <div\n class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <a\n [matMenuTriggerFor]=\"languageMenu\"\n data-cy=\"languageMenu\"\n [attr.aria-label]=\"'language.selection' | translate\"\n mat-tab-link\n >\n {{ currentLanguage }}\n <mat-icon style=\"width: 16px\">expand_more</mat-icon>\n </a>\n </div>\n <mat-menu #languageMenu>\n <button\n *ngFor=\"let lang of languages\"\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-item\n [attr.data-cy]=\"'language_' + lang.code\"\n (click)=\"changeLanguage(lang.code)\"\n [attr.aria-label]=\"lang.label\"\n >\n {{ lang.label }}\n </button>\n </mat-menu>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div\n [id]=\"id\"\n [attr.role]=\"role\"\n [class.onemrva-layout-container]=\"!fluid\"\n class=\"onemrva-layout-content\"\n *ngIf=\"content?.template as tpl\"\n >\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment &&\n (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <div [class.onemrva-layout-container]=\"!fluid\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1.3rem;font-weight:700;height:42px;line-height:42px}:host .mat-toolbar{background:#fff;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174,#eb142a) 0 0 no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{min-height:calc(100vh - 195px)}.onemrva-footer{text-align:center;padding:9.5px;margin-top:16px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"] }]
483
486
  }], ctorParameters: () => [{ type: i1$2.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i2.BreakpointObserver }, { type: Document, decorators: [{
484
487
  type: Inject,
485
488
  args: [DOCUMENT]