ontimize-web-ngx 15.5.1 → 15.5.3

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 (25) hide show
  1. package/esm2020/lib/components/app-header/o-app-header.component.mjs +3 -3
  2. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +3 -3
  3. package/esm2020/lib/components/grid/o-grid.component.mjs +17 -16
  4. package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +12 -15
  5. package/esm2020/lib/components/index.mjs +2 -1
  6. package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +8 -3
  7. package/esm2020/lib/components/list/o-list.component.mjs +39 -15
  8. package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +12 -15
  9. package/esm2020/lib/components/o-repeatable-skeleton.component.mjs +33 -0
  10. package/esm2020/lib/components/o-skeleton.component.mjs +15 -6
  11. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +5 -19
  12. package/esm2020/lib/components/user-info/o-user-info.component.mjs +5 -4
  13. package/fesm2015/ontimize-web-ngx.mjs +209 -162
  14. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  15. package/fesm2020/ontimize-web-ngx.mjs +208 -162
  16. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  17. package/lib/components/grid/skeketon/o-grid-skeleton.component.d.ts +4 -7
  18. package/lib/components/index.d.ts +1 -0
  19. package/lib/components/list/o-list.component.d.ts +5 -1
  20. package/lib/components/list/skeleton/o-list-skeleton.component.d.ts +4 -7
  21. package/lib/components/o-repeatable-skeleton.component.d.ts +9 -0
  22. package/lib/components/o-skeleton.component.d.ts +10 -5
  23. package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -10
  24. package/lib/components/user-info/o-user-info.component.d.ts +2 -1
  25. package/package.json +1 -1
@@ -2,6 +2,7 @@ import { ChangeDetectorRef, Component, ContentChildren, ElementRef, forwardRef,
2
2
  import { MatListItem, MatListItemLine, MatListItemTitle } from '@angular/material/list';
3
3
  import { Util } from '../../../util/util';
4
4
  import { OListComponent } from '../o-list.component';
5
+ import { ListItem } from './o-list-item';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/common";
7
8
  import * as i2 from "@angular/flex-layout/flex";
@@ -64,10 +65,14 @@ export class OListItemComponent {
64
65
  }
65
66
  }
66
67
  OListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => OListComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
67
- OListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListItemComponent, selector: "o-list-item", host: { properties: { "class.o-list-item": "true" } }, queries: [{ propertyName: "_lines", predicate: MatListItemLine, descendants: true }, { propertyName: "_titles", predicate: MatListItemTitle, descendants: true }], viewQueries: [{ propertyName: "_innerListItem", first: true, predicate: ["innerListItem"], descendants: true, static: true }], ngImport: i0, template: "<mat-list-item #innerListItem>\n <div class=\"o-list-row-action o-list-item-selection-check\" *ngIf=\"_list && _list.selectable\">\n <mat-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxChange()\" (click)=\"onCheckboxClicked($event)\"></mat-checkbox>\n </div>\n <ng-content select=\"[o-list-item-avatar], [matListAvatar], [matListIcon]\"> </ng-content>\n <div class=\"mat-mdc-list-item\">\n <ng-content select=\"[matLine]\"></ng-content>\n </div>\n <!--matListItemMeta to put content into the meta section of a list item-->\n <div matListItemMeta>\n <ng-content select=\"o-list-item-card-image,o-list-item-card\"></ng-content>\n </div>\n <ng-content select=\"o-list-item-text,o-list-item-avatar, [o-list-item]\"></ng-content>\n\n <div fxLayout=\"row\" class=\"row-buttons-container\">\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.editButtonInRow\" (click)=\"onEditIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.editButtonInRowIcon }}</mat-icon>\n </div>\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.detailButtonInRow\" (click)=\"onDetailIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.detailButtonInRowIcon }}</mat-icon>\n </div>\n </div>\n</mat-list-item>\n", styles: [".o-list-item{display:flex}.o-list-item .o-card-item{padding:8px 4px}.o-list-item .mat-mdc-list-item{width:100%}.o-list-item .mat-mdc-list-item.mdc-list-item--with-trailing-meta{height:auto}.o-list-item .mat-mdc-list-item .row-buttons-container .o-list-row-action{height:24px;text-align:center;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemMeta, selector: "[matListItemMeta]" }], encapsulation: i0.ViewEncapsulation.None });
68
+ OListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListItemComponent, selector: "o-list-item", host: { properties: { "class.o-list-item": "true" } }, providers: [
69
+ { provide: ListItem, useExisting: forwardRef(() => OListItemComponent) }
70
+ ], queries: [{ propertyName: "_lines", predicate: MatListItemLine, descendants: true }, { propertyName: "_titles", predicate: MatListItemTitle, descendants: true }], viewQueries: [{ propertyName: "_innerListItem", first: true, predicate: ["innerListItem"], descendants: true, static: true }], ngImport: i0, template: "<mat-list-item #innerListItem>\n <div class=\"o-list-row-action o-list-item-selection-check\" *ngIf=\"_list && _list.selectable\">\n <mat-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxChange()\" (click)=\"onCheckboxClicked($event)\"></mat-checkbox>\n </div>\n <ng-content select=\"[o-list-item-avatar], [matListAvatar], [matListIcon]\"> </ng-content>\n <div class=\"mat-mdc-list-item\">\n <ng-content select=\"[matLine]\"></ng-content>\n </div>\n <!--matListItemMeta to put content into the meta section of a list item-->\n <div matListItemMeta>\n <ng-content select=\"o-list-item-card-image,o-list-item-card\"></ng-content>\n </div>\n <ng-content select=\"o-list-item-text,o-list-item-avatar, [o-list-item]\"></ng-content>\n\n <div fxLayout=\"row\" class=\"row-buttons-container\">\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.editButtonInRow\" (click)=\"onEditIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.editButtonInRowIcon }}</mat-icon>\n </div>\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.detailButtonInRow\" (click)=\"onDetailIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.detailButtonInRowIcon }}</mat-icon>\n </div>\n </div>\n</mat-list-item>\n", styles: [".o-list-item{display:flex}.o-list-item .o-card-item{padding:8px 4px}.o-list-item .mat-mdc-list-item{width:100%}.o-list-item .mat-mdc-list-item.mdc-list-item--with-trailing-meta{height:auto}.o-list-item .mat-mdc-list-item .row-buttons-container .o-list-row-action{height:24px;text-align:center;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemMeta, selector: "[matListItemMeta]" }], encapsulation: i0.ViewEncapsulation.None });
68
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemComponent, decorators: [{
69
72
  type: Component,
70
- args: [{ selector: 'o-list-item', encapsulation: ViewEncapsulation.None, host: {
73
+ args: [{ selector: 'o-list-item', encapsulation: ViewEncapsulation.None, providers: [
74
+ { provide: ListItem, useExisting: forwardRef(() => OListItemComponent) }
75
+ ], host: {
71
76
  '[class.o-list-item]': 'true'
72
77
  }, template: "<mat-list-item #innerListItem>\n <div class=\"o-list-row-action o-list-item-selection-check\" *ngIf=\"_list && _list.selectable\">\n <mat-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxChange()\" (click)=\"onCheckboxClicked($event)\"></mat-checkbox>\n </div>\n <ng-content select=\"[o-list-item-avatar], [matListAvatar], [matListIcon]\"> </ng-content>\n <div class=\"mat-mdc-list-item\">\n <ng-content select=\"[matLine]\"></ng-content>\n </div>\n <!--matListItemMeta to put content into the meta section of a list item-->\n <div matListItemMeta>\n <ng-content select=\"o-list-item-card-image,o-list-item-card\"></ng-content>\n </div>\n <ng-content select=\"o-list-item-text,o-list-item-avatar, [o-list-item]\"></ng-content>\n\n <div fxLayout=\"row\" class=\"row-buttons-container\">\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.editButtonInRow\" (click)=\"onEditIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.editButtonInRowIcon }}</mat-icon>\n </div>\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.detailButtonInRow\" (click)=\"onDetailIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.detailButtonInRowIcon }}</mat-icon>\n </div>\n </div>\n</mat-list-item>\n", styles: [".o-list-item{display:flex}.o-list-item .o-card-item{padding:8px 4px}.o-list-item .mat-mdc-list-item{width:100%}.o-list-item .mat-mdc-list-item.mdc-list-item--with-trailing-meta{height:auto}.o-list-item .mat-mdc-list-item .row-buttons-container .o-list-row-action{height:24px;text-align:center;cursor:pointer}\n"] }]
73
78
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i6.OListComponent, decorators: [{
@@ -85,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
85
90
  type: ViewChild,
86
91
  args: ['innerListItem', { static: true }]
87
92
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFZckQsTUFBTSxPQUFPLGtCQUFrQjtJQWE3QixZQUNTLEtBQWlCLEVBQ2QsU0FBb0IsRUFDcEIsU0FBbUIsRUFDbkIsRUFBcUIsRUFDOEIsS0FBcUI7UUFKM0UsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUM4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQWY3RSxZQUFPLEdBQUcsQ0FBQyxDQUFDO0lBZ0JmLENBQUM7SUFFRSxrQkFBa0I7UUFDdkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFN0QsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztRQUV2RSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRztZQUNwQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNuRixJQUFJLFFBQVEsRUFBRTtnQkFDWixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDbkI7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztZQUMxQiwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLG1CQUFtQixDQUFDLENBQVM7UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JCLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUNyQjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsQ0FBUztRQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBUztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDM0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQVk7UUFDbkMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDOztnSEF6RVUsa0JBQWtCLDhIQWtCUCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO29HQWxCM0Msa0JBQWtCLGlJQUtaLGVBQWUsNkRBQ2YsZ0JBQWdCLCtLQ3BDbkMsZ3lDQXVCQTs0RkRPYSxrQkFBa0I7a0JBVDlCLFNBQVM7K0JBQ0UsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLHFCQUFxQixFQUFFLE1BQU07cUJBQzlCOzswQkFvQkUsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDOzRDQWJHLE1BQU07c0JBQTlELGVBQWU7dUJBQUMsZUFBZSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFDRyxPQUFPO3NCQUFoRSxlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJakQsY0FBYztzQkFEcEIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRMaXN0SXRlbSwgTWF0TGlzdEl0ZW1MaW5lLCBNYXRMaXN0SXRlbVRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9vLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi9vLWxpc3QtaXRlbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tbGlzdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1saXN0LWl0ZW1dJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgTGlzdEl0ZW0sIEFmdGVyQ29udGVudEluaXQge1xuXG4gIHB1YmxpYyBtb2RlbERhdGE6IGFueTtcbiAgcHVibGljIGxpbmVzTm8gPSAxO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1MaW5lLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9saW5lczogUXVlcnlMaXN0PE1hdExpc3RJdGVtTGluZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1UaXRsZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfdGl0bGVzOiBRdWVyeUxpc3Q8TWF0TGlzdEl0ZW1UaXRsZT47XG5cblxuICBAVmlld0NoaWxkKCdpbm5lckxpc3RJdGVtJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIF9pbm5lckxpc3RJdGVtOiBNYXRMaXN0SXRlbTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0xpc3RDb21wb25lbnQpKSBwdWJsaWMgX2xpc3Q6IE9MaXN0Q29tcG9uZW50XG4gICkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXRMaW5lc1JlZiA9IHRoaXMuX3RpdGxlcy5sZW5ndGggKyB0aGlzLl9saW5lcy5sZW5ndGg7XG5cbiAgICBjb25zdCBuZ0FmdGVyQ29udGVudEluaXRPcmlnaW5hbCA9IHRoaXMuX2lubmVyTGlzdEl0ZW0ubmdBZnRlclZpZXdJbml0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW5cbiAgICB0aGlzLl9pbm5lckxpc3RJdGVtLm5nQWZ0ZXJWaWV3SW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVtcHR5RGl2ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtbGlzdC10ZXh0OmVtcHR5Jyk7XG4gICAgICBpZiAoZW1wdHlEaXYpIHtcbiAgICAgICAgZW1wdHlEaXYucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9saW5lcyA9IG1hdExpbmVzUmVmO1xuICAgICAgbmdBZnRlckNvbnRlbnRJbml0T3JpZ2luYWwuYXBwbHkodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRldGFpbEljb25DbGlja2VkKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChlKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5fbGlzdC52aWV3RGV0YWlsKHRoaXMubW9kZWxEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRJY29uQ2xpY2tlZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoZSkpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3QuZWRpdERldGFpbCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm1vZGVsRGF0YSkpIHtcbiAgICAgIHRoaXMubW9kZWxEYXRhID0gZGF0YTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9saXN0LnNlbGVjdGFibGUgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5tb2RlbERhdGEpKSB7XG4gICAgICB0aGlzLl9saXN0LnNldFNlbGVjdGVkKHRoaXMubW9kZWxEYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGVja2JveENsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXQgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdC5pc0l0ZW1TZWxlY3RlZCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxufVxuIiwiPG1hdC1saXN0LWl0ZW0gI2lubmVyTGlzdEl0ZW0+XG4gIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1zZWxlY3Rpb24tY2hlY2tcIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LnNlbGVjdGFibGVcIj5cbiAgICA8bWF0LWNoZWNrYm94IFtjaGVja2VkXT1cImlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIChjbGljayk9XCJvbkNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCI+PC9tYXQtY2hlY2tib3g+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LWl0ZW0tYXZhdGFyXSwgW21hdExpc3RBdmF0YXJdLCBbbWF0TGlzdEljb25dXCI+IDwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtbGlzdC1pdGVtXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdExpbmVdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPCEtLW1hdExpc3RJdGVtTWV0YSB0byBwdXQgY29udGVudCBpbnRvIHRoZSBtZXRhIHNlY3Rpb24gb2YgYSBsaXN0IGl0ZW0tLT5cbiAgPGRpdiBtYXRMaXN0SXRlbU1ldGE+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tY2FyZC1pbWFnZSxvLWxpc3QtaXRlbS1jYXJkXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tdGV4dCxvLWxpc3QtaXRlbS1hdmF0YXIsIFtvLWxpc3QtaXRlbV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwicm93LWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbGlzdC1yb3ctYWN0aW9uIG8tbGlzdC1pdGVtLWljb25cIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LmVkaXRCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkVkaXRJY29uQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IF9saXN0LmVkaXRCdXR0b25JblJvd0ljb24gfX08L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1pY29uXCIgKm5nSWY9XCJfbGlzdCAmJiBfbGlzdC5kZXRhaWxCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkRldGFpbEljb25DbGlja2VkKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+e3sgX2xpc3QuZGV0YWlsQnV0dG9uSW5Sb3dJY29uIH19PC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC1saXN0LWl0ZW0+XG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQWN6QyxNQUFNLE9BQU8sa0JBQWtCO0lBYTdCLFlBQ1MsS0FBaUIsRUFDZCxTQUFvQixFQUNwQixTQUFtQixFQUNuQixFQUFxQixFQUM4QixLQUFxQjtRQUozRSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQzhCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBZjdFLFlBQU8sR0FBRyxD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QUFjLENBQUM7NENBYkcsTUFBTTtzQkFBOUQsZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUNHLE9BQU87c0JBQWhFLGVBQWU7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCxjQUFjO3NCQURwQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdExpc3RJdGVtLCBNYXRMaXN0SXRlbUxpbmUsIE1hdExpc3RJdGVtVGl0bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcblxuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL28tbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuL28tbGlzdC1pdGVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1saXN0LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vby1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IExpc3RJdGVtLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPTGlzdEl0ZW1Db21wb25lbnQpIH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1saXN0LWl0ZW1dJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgTGlzdEl0ZW0sIEFmdGVyQ29udGVudEluaXQge1xuXG4gIHB1YmxpYyBtb2RlbERhdGE6IGFueTtcbiAgcHVibGljIGxpbmVzTm8gPSAxO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1MaW5lLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9saW5lczogUXVlcnlMaXN0PE1hdExpc3RJdGVtTGluZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1UaXRsZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfdGl0bGVzOiBRdWVyeUxpc3Q8TWF0TGlzdEl0ZW1UaXRsZT47XG5cblxuICBAVmlld0NoaWxkKCdpbm5lckxpc3RJdGVtJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIF9pbm5lckxpc3RJdGVtOiBNYXRMaXN0SXRlbTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0xpc3RDb21wb25lbnQpKSBwdWJsaWMgX2xpc3Q6IE9MaXN0Q29tcG9uZW50XG4gICkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXRMaW5lc1JlZiA9IHRoaXMuX3RpdGxlcy5sZW5ndGggKyB0aGlzLl9saW5lcy5sZW5ndGg7XG5cbiAgICBjb25zdCBuZ0FmdGVyQ29udGVudEluaXRPcmlnaW5hbCA9IHRoaXMuX2lubmVyTGlzdEl0ZW0ubmdBZnRlclZpZXdJbml0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW5cbiAgICB0aGlzLl9pbm5lckxpc3RJdGVtLm5nQWZ0ZXJWaWV3SW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVtcHR5RGl2ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtbGlzdC10ZXh0OmVtcHR5Jyk7XG4gICAgICBpZiAoZW1wdHlEaXYpIHtcbiAgICAgICAgZW1wdHlEaXYucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9saW5lcyA9IG1hdExpbmVzUmVmO1xuICAgICAgbmdBZnRlckNvbnRlbnRJbml0T3JpZ2luYWwuYXBwbHkodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRldGFpbEljb25DbGlja2VkKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChlKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5fbGlzdC52aWV3RGV0YWlsKHRoaXMubW9kZWxEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRJY29uQ2xpY2tlZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoZSkpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3QuZWRpdERldGFpbCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm1vZGVsRGF0YSkpIHtcbiAgICAgIHRoaXMubW9kZWxEYXRhID0gZGF0YTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9saXN0LnNlbGVjdGFibGUgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5tb2RlbERhdGEpKSB7XG4gICAgICB0aGlzLl9saXN0LnNldFNlbGVjdGVkKHRoaXMubW9kZWxEYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGVja2JveENsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXQgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdC5pc0l0ZW1TZWxlY3RlZCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxufVxuIiwiPG1hdC1saXN0LWl0ZW0gI2lubmVyTGlzdEl0ZW0+XG4gIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1zZWxlY3Rpb24tY2hlY2tcIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LnNlbGVjdGFibGVcIj5cbiAgICA8bWF0LWNoZWNrYm94IFtjaGVja2VkXT1cImlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIChjbGljayk9XCJvbkNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCI+PC9tYXQtY2hlY2tib3g+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LWl0ZW0tYXZhdGFyXSwgW21hdExpc3RBdmF0YXJdLCBbbWF0TGlzdEljb25dXCI+IDwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtbGlzdC1pdGVtXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdExpbmVdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPCEtLW1hdExpc3RJdGVtTWV0YSB0byBwdXQgY29udGVudCBpbnRvIHRoZSBtZXRhIHNlY3Rpb24gb2YgYSBsaXN0IGl0ZW0tLT5cbiAgPGRpdiBtYXRMaXN0SXRlbU1ldGE+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tY2FyZC1pbWFnZSxvLWxpc3QtaXRlbS1jYXJkXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tdGV4dCxvLWxpc3QtaXRlbS1hdmF0YXIsIFtvLWxpc3QtaXRlbV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwicm93LWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbGlzdC1yb3ctYWN0aW9uIG8tbGlzdC1pdGVtLWljb25cIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LmVkaXRCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkVkaXRJY29uQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IF9saXN0LmVkaXRCdXR0b25JblJvd0ljb24gfX08L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1pY29uXCIgKm5nSWY9XCJfbGlzdCAmJiBfbGlzdC5kZXRhaWxCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkRldGFpbEljb25DbGlja2VkKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+e3sgX2xpc3QuZGV0YWlsQnV0dG9uSW5Sb3dJY29uIH19PC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC1saXN0LWl0ZW0+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, ContentChildren, ElementRef, EventEmitter, forwardRef, Inject, Injector, Optional, QueryList, ViewEncapsulation } from '@angular/core';
2
+ import { Component, ContentChildren, ElementRef, EventEmitter, forwardRef, Inject, Injector, Optional, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';
3
3
  import { merge, Subscription } from 'rxjs';
4
4
  import { BooleanInputConverter } from '../../decorators/input-converter';
5
5
  import { ComponentStateServiceProvider, O_COMPONENT_STATE_SERVICE, OntimizeServiceProvider } from '../../services/factories';
@@ -16,14 +16,15 @@ import * as i0 from "@angular/core";
16
16
  import * as i1 from "@angular/common";
17
17
  import * as i2 from "../input/search-input/o-search-input.component";
18
18
  import * as i3 from "@angular/flex-layout/flex";
19
- import * as i4 from "@angular/material/button";
20
- import * as i5 from "@angular/material/icon";
21
- import * as i6 from "@angular/material/list";
22
- import * as i7 from "@angular/material/paginator";
23
- import * as i8 from "../o-data-toolbar/o-data-toolbar.component";
24
- import * as i9 from "./skeleton/o-list-skeleton.component";
25
- import * as i10 from "../../pipes/o-translate.pipe";
26
- import * as i11 from "../form/o-form.component";
19
+ import * as i4 from "@angular/flex-layout/extended";
20
+ import * as i5 from "@angular/material/button";
21
+ import * as i6 from "@angular/material/icon";
22
+ import * as i7 from "@angular/material/list";
23
+ import * as i8 from "@angular/material/paginator";
24
+ import * as i9 from "../o-data-toolbar/o-data-toolbar.component";
25
+ import * as i10 from "./skeleton/o-list-skeleton.component";
26
+ import * as i11 from "../../pipes/o-translate.pipe";
27
+ import * as i12 from "../form/o-form.component";
27
28
  export const DEFAULT_INPUTS_O_LIST = [
28
29
  'quickFilterColumns: quick-filter-columns',
29
30
  'refreshButton: refresh-button',
@@ -38,7 +39,9 @@ export const DEFAULT_INPUTS_O_LIST = [
38
39
  ];
39
40
  export const DEFAULT_OUTPUTS_O_LIST = [
40
41
  'onInsertButtonClick',
41
- 'onItemDeleted'
42
+ 'onItemDeleted',
43
+ 'onItemSelected',
44
+ 'onItemDeselected'
42
45
  ];
43
46
  export class OListComponent extends AbstractOServiceComponent {
44
47
  constructor(injector, elRef, form) {
@@ -58,8 +61,17 @@ export class OListComponent extends AbstractOServiceComponent {
58
61
  this.subscription = new Subscription();
59
62
  this._quickFilterAppearance = 'outline';
60
63
  this.keysSqlTypesArray = [];
64
+ this.onItemSelected = new EventEmitter();
65
+ this.onItemDeselected = new EventEmitter();
61
66
  this.oMatSort = new OMatSort();
62
67
  }
68
+ get toolBarHeight() {
69
+ let height = 0;
70
+ if (this.toolbarEl?.nativeElement) {
71
+ height += this.toolbarEl.nativeElement.offsetHeight;
72
+ }
73
+ return height;
74
+ }
63
75
  get state() {
64
76
  return this.componentStateService.state;
65
77
  }
@@ -104,6 +116,15 @@ export class OListComponent extends AbstractOServiceComponent {
104
116
  this.state.totalQueryRecordsNumber = 0;
105
117
  }
106
118
  this.permissions = this.permissionsService.getListPermissions(this.oattr, this.actRoute);
119
+ const selectionSubscription = this.selection.changed.subscribe(({ added, removed }) => {
120
+ if (added?.length) {
121
+ ObservableWrapper.callEmit(this.onItemSelected, added);
122
+ }
123
+ if (removed?.length) {
124
+ ObservableWrapper.callEmit(this.onItemDeselected, removed);
125
+ }
126
+ });
127
+ this.subscription.add(selectionSubscription);
107
128
  }
108
129
  reinitialize(options) {
109
130
  super.reinitialize(options);
@@ -260,11 +281,11 @@ export class OListComponent extends AbstractOServiceComponent {
260
281
  }
261
282
  }
262
283
  OListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: forwardRef(() => OFormComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
263
- OListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListComponent, selector: "o-list", inputs: { quickFilterColumns: ["quick-filter-columns", "quickFilterColumns"], refreshButton: ["refresh-button", "refreshButton"], route: "route", selectable: "selectable", deleteButton: ["delete-button", "deleteButton"], sortColumns: ["sort-columns", "sortColumns"], insertButtonPosition: ["insert-button-position", "insertButtonPosition"], insertButtonFloatable: ["insert-button-floatable", "insertButtonFloatable"], showButtonsText: ["show-buttons-text", "showButtonsText"], keysSqlTypes: ["keys-sql-types", "keysSqlTypes"] }, outputs: { onInsertButtonClick: "onInsertButtonClick", onItemDeleted: "onItemDeleted" }, host: { properties: { "class.o-list": "true" } }, providers: [
284
+ OListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListComponent, selector: "o-list", inputs: { quickFilterColumns: ["quick-filter-columns", "quickFilterColumns"], refreshButton: ["refresh-button", "refreshButton"], route: "route", selectable: "selectable", deleteButton: ["delete-button", "deleteButton"], sortColumns: ["sort-columns", "sortColumns"], insertButtonPosition: ["insert-button-position", "insertButtonPosition"], insertButtonFloatable: ["insert-button-floatable", "insertButtonFloatable"], showButtonsText: ["show-buttons-text", "showButtonsText"], keysSqlTypes: ["keys-sql-types", "keysSqlTypes"] }, outputs: { onInsertButtonClick: "onInsertButtonClick", onItemDeleted: "onItemDeleted", onItemSelected: "onItemSelected", onItemDeselected: "onItemDeselected" }, host: { properties: { "class.o-list": "true" } }, providers: [
264
285
  OntimizeServiceProvider,
265
286
  ComponentStateServiceProvider,
266
287
  { provide: O_COMPONENT_STATE_SERVICE, useClass: OListComponentStateService },
267
- ], queries: [{ propertyName: "listItemDirectives", predicate: OListItemDirective }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n class=\"spinner-container\">\n <o-list-skeleton></o-list-skeleton>\n </div>\n <o-data-toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n <ng-container o-data-toolbar-projection-start>\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n <button *ngIf=\"insertButton && !insertButtonFloatable\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'ADD' | oTranslate }}</span>\n </button>\n\n <button type=\"button\" mat-stroked-button class=\"o-list-button text\" [disabled]=\"!enabledRefreshButton\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n </ng-container>\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button type=\"button\" mat-icon-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n </ng-container>\n <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-container o-data-toolbar-projection-end>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n </o-search-input>\n </ng-container>\n </o-data-toolbar>\n <ng-container *ngIf=\"(loading | async) === false\">\n <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\" >\n <!--MAT-LIST-->\n <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\">\n\n <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n <h3 matListItemTitle fxLayout=\"row\" fxLayoutAlign=\"center center\">\n {{ 'TABLE.EMPTY' | oTranslate }}\n <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n </ng-container>\n </h3>\n </mat-list-item>\n <ng-content></ng-content>\n </mat-list>\n </div>\n <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"></mat-paginator>\n\n <!--INSERT BUTTON -->\n <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n</ng-container>\n</div>\n", styles: ["::-webkit-input-placeholder{color:#8e0c39}:-moz-placeholder{color:#8e0c39;opacity:1}::-moz-placeholder{color:#8e0c39;opacity:1}:-ms-input-placeholder{color:#8e0c39}:placeholder-shown{color:#8e0c39}.o-list-container{position:relative;flex-direction:column}.o-list-container .spinner-container{position:absolute;top:0;bottom:0;left:0;right:0;z-index:500}.o-list-container .spinner-container:not(.pageable-loading){top:0}.o-list-container .spinner-container path{stroke-width:5px!important}.o-list-container .mat-mdc-list{overflow:auto}.o-list-container .mat-mdc-list .mdc-list-item--with-three-lines .o-custom-list-item{position:relative}.o-list-container .mat-mdc-list .o-custom-list-item{max-width:100%;width:100%}.o-list-container .mat-mdc-list .o-custom-list-item .o-list-item-icon{cursor:pointer;padding-right:6px}.o-list-container .mat-mdc-list.o-list-item-has-buttons .o-list-item .mat-mdc-list-item{padding-right:72px}.o-list-container .mat-mdc-list .o-list-item.mat-mdc-card{margin:6px 0;padding-bottom:16px}.o-list-container .mat-mdc-list .o-list-item .mat-mdc-list-item .mat-mdc-list-item-unscoped-content{display:flex;align-items:center}.o-list-container .add-button{right:12px;position:absolute}.o-list-container .add-button.add-button-bottom{bottom:12px}.o-list-container .add-button.add-button-top{top:88px}.o-list-container .o-mat-paginator~.add-button.add-button-bottom{bottom:68px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.OSearchInputComponent, selector: "o-search-input", inputs: ["placeholder", "label", "width", "float-label", "appearance", "columns", "filter-case-sensitive", "show-case-sensitive-checkbox", "show-menu"], outputs: ["onSearch"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i6.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i6.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.ODataToolbarComponent, selector: "o-data-toolbar", inputs: ["show-title", "title"] }, { kind: "component", type: i9.OListSkeletonComponent, selector: "o-list-skeleton" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
288
+ ], queries: [{ propertyName: "listItemDirectives", predicate: OListItemDirective }], viewQueries: [{ propertyName: "toolbarEl", first: true, predicate: ["toolbar"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n class=\"spinner-container\" [ngStyle]=\"{'top.px': toolBarHeight}\">\n <o-list-skeleton></o-list-skeleton>\n </div>\n <o-data-toolbar #toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n <ng-container o-data-toolbar-projection-start>\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n <button *ngIf=\"insertButton && !insertButtonFloatable\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'ADD' | oTranslate }}</span>\n </button>\n\n <button type=\"button\" mat-stroked-button class=\"o-list-button text\" [disabled]=\"!enabledRefreshButton\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n </ng-container>\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button type=\"button\" mat-icon-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n </ng-container>\n <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-container o-data-toolbar-projection-end>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n </o-search-input>\n </ng-container>\n </o-data-toolbar>\n <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\">\n <!--MAT-LIST-->\n <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\" [ngStyle]=\"{'visibility': (loading | async) === false ? 'visible':'hidden'}\">\n\n <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n <h3 matListItemTitle fxLayout=\"row\" fxLayoutAlign=\"center center\">\n {{ 'TABLE.EMPTY' | oTranslate }}\n <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n </ng-container>\n </h3>\n </mat-list-item>\n <ng-content></ng-content>\n </mat-list>\n </div>\n <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"\n [ngStyle]=\"{'visibility': (loading | async) === false ? 'visible':'hidden'}\"></mat-paginator>\n\n <!--INSERT BUTTON -->\n <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n</div>\n", styles: ["::-webkit-input-placeholder{color:#8e0c39}:-moz-placeholder{color:#8e0c39;opacity:1}::-moz-placeholder{color:#8e0c39;opacity:1}:-ms-input-placeholder{color:#8e0c39}:placeholder-shown{color:#8e0c39}.o-list-container{position:relative;flex-direction:column}.o-list-container .spinner-container{position:absolute;top:0;bottom:0;left:0;right:0;z-index:500}.o-list-container .spinner-container:not(.pageable-loading){top:0}.o-list-container .spinner-container path{stroke-width:5px!important}.o-list-container .mat-mdc-list{overflow:auto}.o-list-container .mat-mdc-list .mdc-list-item--with-three-lines .o-custom-list-item{position:relative}.o-list-container .mat-mdc-list .o-custom-list-item{max-width:100%;width:100%}.o-list-container .mat-mdc-list .o-custom-list-item .o-list-item-icon{cursor:pointer;padding-right:6px}.o-list-container .mat-mdc-list.o-list-item-has-buttons .o-list-item .mat-mdc-list-item{padding-right:72px}.o-list-container .mat-mdc-list .o-list-item.mat-mdc-card{margin:6px 0;padding-bottom:16px}.o-list-container .mat-mdc-list .o-list-item .mat-mdc-list-item .mat-mdc-list-item-unscoped-content{display:flex;align-items:center}.o-list-container .add-button{right:12px;position:absolute}.o-list-container .add-button.add-button-bottom{bottom:12px}.o-list-container .add-button.add-button-top{top:88px}.o-list-container .o-mat-paginator~.add-button.add-button-bottom{bottom:68px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.OSearchInputComponent, selector: "o-search-input", inputs: ["placeholder", "label", "width", "float-label", "appearance", "columns", "filter-case-sensitive", "show-case-sensitive-checkbox", "show-menu"], outputs: ["onSearch"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i4.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i7.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.ODataToolbarComponent, selector: "o-data-toolbar", inputs: ["show-title", "title"] }, { kind: "component", type: i10.OListSkeletonComponent, selector: "o-list-skeleton" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None });
268
289
  __decorate([
269
290
  BooleanInputConverter(),
270
291
  __metadata("design:type", Boolean)
@@ -293,8 +314,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
293
314
  { provide: O_COMPONENT_STATE_SERVICE, useClass: OListComponentStateService },
294
315
  ], inputs: DEFAULT_INPUTS_O_LIST, outputs: DEFAULT_OUTPUTS_O_LIST, encapsulation: ViewEncapsulation.None, host: {
295
316
  '[class.o-list]': 'true'
296
- }, template: "<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n class=\"spinner-container\">\n <o-list-skeleton></o-list-skeleton>\n </div>\n <o-data-toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n <ng-container o-data-toolbar-projection-start>\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n <button *ngIf=\"insertButton && !insertButtonFloatable\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'ADD' | oTranslate }}</span>\n </button>\n\n <button type=\"button\" mat-stroked-button class=\"o-list-button text\" [disabled]=\"!enabledRefreshButton\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n </ng-container>\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button type=\"button\" mat-icon-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n </ng-container>\n <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-container o-data-toolbar-projection-end>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n </o-search-input>\n </ng-container>\n </o-data-toolbar>\n <ng-container *ngIf=\"(loading | async) === false\">\n <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\" >\n <!--MAT-LIST-->\n <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\">\n\n <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n <h3 matListItemTitle fxLayout=\"row\" fxLayoutAlign=\"center center\">\n {{ 'TABLE.EMPTY' | oTranslate }}\n <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n </ng-container>\n </h3>\n </mat-list-item>\n <ng-content></ng-content>\n </mat-list>\n </div>\n <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"></mat-paginator>\n\n <!--INSERT BUTTON -->\n <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n</ng-container>\n</div>\n", styles: ["::-webkit-input-placeholder{color:#8e0c39}:-moz-placeholder{color:#8e0c39;opacity:1}::-moz-placeholder{color:#8e0c39;opacity:1}:-ms-input-placeholder{color:#8e0c39}:placeholder-shown{color:#8e0c39}.o-list-container{position:relative;flex-direction:column}.o-list-container .spinner-container{position:absolute;top:0;bottom:0;left:0;right:0;z-index:500}.o-list-container .spinner-container:not(.pageable-loading){top:0}.o-list-container .spinner-container path{stroke-width:5px!important}.o-list-container .mat-mdc-list{overflow:auto}.o-list-container .mat-mdc-list .mdc-list-item--with-three-lines .o-custom-list-item{position:relative}.o-list-container .mat-mdc-list .o-custom-list-item{max-width:100%;width:100%}.o-list-container .mat-mdc-list .o-custom-list-item .o-list-item-icon{cursor:pointer;padding-right:6px}.o-list-container .mat-mdc-list.o-list-item-has-buttons .o-list-item .mat-mdc-list-item{padding-right:72px}.o-list-container .mat-mdc-list .o-list-item.mat-mdc-card{margin:6px 0;padding-bottom:16px}.o-list-container .mat-mdc-list .o-list-item .mat-mdc-list-item .mat-mdc-list-item-unscoped-content{display:flex;align-items:center}.o-list-container .add-button{right:12px;position:absolute}.o-list-container .add-button.add-button-bottom{bottom:12px}.o-list-container .add-button.add-button-top{top:88px}.o-list-container .o-mat-paginator~.add-button.add-button-bottom{bottom:68px}\n"] }]
297
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i11.OFormComponent, decorators: [{
317
+ }, template: "<div class=\"o-list-container\" [style.display]=\"isVisible()? '' : 'none'\" fxFill>\n <div *ngIf=\"loading | async\" fxLayoutAlign=\"center center\" [class.pageable-loading]=\"pageable && state.queryRecordOffset > 0\"\n class=\"spinner-container\" [ngStyle]=\"{'top.px': toolBarHeight}\">\n <o-list-skeleton></o-list-skeleton>\n </div>\n <o-data-toolbar #toolbar *ngIf=\"hasControls()\" [title]=\"title\" [show-title]=\"hasTitle()\" class=\"o-list-toolbar\">\n <ng-container o-data-toolbar-projection-start>\n <ng-container *ngIf=\"showButtonsText;else showButtonsWithoutText\">\n <button *ngIf=\"insertButton && !insertButtonFloatable\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button text\" type=\"button\" mat-stroked-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n <span>{{ 'ADD' | oTranslate }}</span>\n </button>\n\n <button type=\"button\" mat-stroked-button class=\"o-list-button text\" [disabled]=\"!enabledRefreshButton\" aria-label=\"Refresh\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n <span>{{ 'REFRESH' | oTranslate }}</span>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button text\" mat-stroked-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n <span>{{ 'DELETE' | oTranslate }}</span>\n </button>\n </ng-container>\n <ng-template #showButtonsWithoutText>\n <button *ngIf=\"insertButton && !insertButtonFloatable\" type=\"button\" [disabled]=\"!enabledInsertButton\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Insert\" (click)=\"add($event)\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n <button type=\"button\" mat-icon-button aria-label=\"Refresh\" [disabled]=\"!enabledRefreshButton\" class=\"o-list-button no-text\" (click)=\"reloadData()\" *ngIf=\"refreshButton\">\n <mat-icon svgIcon=\"ontimize:autorenew\"></mat-icon>\n </button>\n\n <button *ngIf=\"deleteButton\" type=\"button\" class=\"o-list-button no-text\" mat-icon-button aria-label=\"Delete\" [disabled]=\"!enabledDeleteButton\"\n [class.disabled]=\"!enabledDeleteButton\" (click)=\"remove()\">\n <mat-icon svgIcon=\"ontimize:delete\"></mat-icon>\n </button>\n </ng-template>\n </ng-container>\n <ng-content select=\"[o-list-toolbar][position=start]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar][position=end]\" ngProjectAs=\"[o-data-toolbar-custom-projection-end]\">\n </ng-content>\n <ng-content select=\"[o-list-toolbar]\" ngProjectAs=\"[o-data-toolbar-custom-projection-start]\">\n </ng-content>\n <ng-container o-data-toolbar-projection-end>\n <o-search-input *ngIf=\"quickFilter\" [filter-case-sensitive]=\"filterCaseSensitive\" [show-case-sensitive-checkbox]=\"showCaseSensitiveCheckbox()\"\n [columns]=\"quickFilterColumns\" [placeholder]=\"quickFilterPlaceholder\" [appearance]=\"quickFilterAppearance\" float-label=\"never\">\n </o-search-input>\n </ng-container>\n </o-data-toolbar>\n <div fxLayout=\"column\" class=\"o-list-content\" fxFlex=\"1 1 100%\">\n <!--MAT-LIST-->\n <mat-list (scroll)=\"onScroll($event)\" [class.selectable]=\"selectable\"\n [class.o-list-item-has-buttons]=\"insertButton && (editButtonInRow || detailButtonInRow)\" [ngStyle]=\"{'visibility': (loading | async) === false ? 'visible':'hidden'}\">\n\n <mat-list-item *ngIf=\"!getDataArray().length\" fxLayout=\"row\" fxLayoutAlign=\"center center\" style=\"cursor: default;\">\n <h3 matListItemTitle fxLayout=\"row\" fxLayoutAlign=\"center center\">\n {{ 'TABLE.EMPTY' | oTranslate }}\n <ng-container *ngIf=\"getQuickFilterValue().length > 0\">\n {{ 'TABLE.EMPTY_USING_FILTER' | oTranslate : {values: [getQuickFilterValue()]} }}\n </ng-container>\n </h3>\n </mat-list-item>\n <ng-content></ng-content>\n </mat-list>\n </div>\n <mat-paginator fxFlex=\"0 1 auto\" class=\"o-mat-paginator\" #paginator *ngIf=\"paginationControls\" [length]=\"totalRecords\" [pageSize]=\"queryRows\"\n [pageSizeOptions]=\"pageSizeOptions\" [pageIndex]=\"currentPage\" [showFirstLastButtons]=\"true\" (page)=\"onChangePage($event)\"\n [ngStyle]=\"{'visibility': (loading | async) === false ? 'visible':'hidden'}\"></mat-paginator>\n\n <!--INSERT BUTTON -->\n <button type=\"button\" *ngIf=\"insertButton && insertButtonFloatable\" mat-fab (click)=\"add($event)\" class=\"add-button add-button-bottom\"\n [class.add-button-bottom]=\"insertButtonPosition ==='bottom'\" [class.add-button-top]=\"insertButtonPosition ==='top'\">\n <mat-icon svgIcon=\"ontimize:add\"></mat-icon>\n </button>\n\n</div>\n", styles: ["::-webkit-input-placeholder{color:#8e0c39}:-moz-placeholder{color:#8e0c39;opacity:1}::-moz-placeholder{color:#8e0c39;opacity:1}:-ms-input-placeholder{color:#8e0c39}:placeholder-shown{color:#8e0c39}.o-list-container{position:relative;flex-direction:column}.o-list-container .spinner-container{position:absolute;top:0;bottom:0;left:0;right:0;z-index:500}.o-list-container .spinner-container:not(.pageable-loading){top:0}.o-list-container .spinner-container path{stroke-width:5px!important}.o-list-container .mat-mdc-list{overflow:auto}.o-list-container .mat-mdc-list .mdc-list-item--with-three-lines .o-custom-list-item{position:relative}.o-list-container .mat-mdc-list .o-custom-list-item{max-width:100%;width:100%}.o-list-container .mat-mdc-list .o-custom-list-item .o-list-item-icon{cursor:pointer;padding-right:6px}.o-list-container .mat-mdc-list.o-list-item-has-buttons .o-list-item .mat-mdc-list-item{padding-right:72px}.o-list-container .mat-mdc-list .o-list-item.mat-mdc-card{margin:6px 0;padding-bottom:16px}.o-list-container .mat-mdc-list .o-list-item .mat-mdc-list-item .mat-mdc-list-item-unscoped-content{display:flex;align-items:center}.o-list-container .add-button{right:12px;position:absolute}.o-list-container .add-button.add-button-bottom{bottom:12px}.o-list-container .add-button.add-button-top{top:88px}.o-list-container .o-mat-paginator~.add-button.add-button-bottom{bottom:68px}\n"] }]
318
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }, { type: i12.OFormComponent, decorators: [{
298
319
  type: Optional
299
320
  }, {
300
321
  type: Inject,
@@ -302,5 +323,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
302
323
  }] }]; }, propDecorators: { listItemDirectives: [{
303
324
  type: ContentChildren,
304
325
  args: [OListItemDirective]
326
+ }], toolbarEl: [{
327
+ type: ViewChild,
328
+ args: ['toolbar', { read: ElementRef }]
305
329
  }], refreshButton: [], selectable: [], deleteButton: [], insertButtonFloatable: [], showButtonsText: [] } });
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUlSLFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBTWpHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFF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IEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGlzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvby1saXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgT0xpc3RDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1saXN0LWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBPTGlzdENvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tbGlzdC1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPTGlzdEluaXRpYWxpemF0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tbGlzdC1pbml0aWFsaXphdGlvbi1vcHRpb25zLnR5cGUnO1xuaW1wb3J0IHsgT0xpc3RQZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tbGlzdC1wZXJtaXNzaW9ucy50eXBlJztcbmltcG9ydCB7IE9QZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tcGVybWlzc2lvbnMudHlwZSc7XG5pbXBvcnQgeyBPUXVlcnlEYXRhQXJncyB9IGZyb20gJy4uLy4uL3R5cGVzL3F1ZXJ5LWRhdGEtYXJncy50eXBlJztcbmltcG9ydCB7IFNRTE9yZGVyIH0gZnJvbSAnLi4vLi4vdHlwZXMvc3FsLW9yZGVyLnR5cGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVdyYXBwZXIgfSBmcm9tICcuLi8uLi91dGlsL2FzeW5jJztcbmltcG9ydCB7IFNlcnZpY2VVdGlscyB9IGZyb20gJy4uLy4uL3V0aWwvc2VydmljZS51dGlscyc7XG5pbXBvcnQgeyBTUUxUeXBlcyB9IGZyb20gJy4uLy4uL3V0aWwvc3FsdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vby1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYnN0cmFjdE9TZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vby1zZXJ2aWNlLWNvbXBvbmVudC5jbGFzcyc7XG5pbXBvcnQgeyBPTWF0U29ydCB9IGZyb20gJy4uL3RhYmxlL2V4dGVuc2lvbnMvc29ydC9vLW1hdC1zb3J0JztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi9saXN0LWl0ZW0vby1saXN0LWl0ZW0nO1xuaW1wb3J0IHsgT0xpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9saXN0LWl0ZW0vby1saXN0LWl0ZW0uZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fTElTVCA9IFtcbiAgLy8gcXVpY2stZmlsdGVyLWNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGZpbHRlciwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdxdWlja0ZpbHRlckNvbHVtbnM6IHF1aWNrLWZpbHRlci1jb2x1bW5zJyxcblxuICAvLyByZWZyZXNoLWJ1dHRvbiBbbm98eWVzXTogc2hvdyByZWZyZXNoIGJ1dHRvbi4gRGVmYXVsdDogeWVzLlxuICAncmVmcmVzaEJ1dHRvbjogcmVmcmVzaC1idXR0b24nLFxuXG4gICdyb3V0ZScsXG5cbiAgJ3NlbGVjdGFibGUnLFxuXG4gIC8vIGRlbGV0ZS1idXR0b24gW25vfHllc106IHNob3cgZGVsZXRlIGJ1dHRvbiB3aGVuIHVzZXIgc2VsZWN0IGl0ZW1zLiBEZWZhdWx0OiB5ZXMuXG4gICdkZWxldGVCdXR0b246IGRlbGV0ZS1idXR0b24nLFxuXG4gIC8vIHNvcnQtY29sdW1ucyBbc3RyaW5nXTogaW5pdGlhbCBzb3J0aW5nLCB3aXRoIHRoZSBmb3JtYXQgY29sdW1uOltBU0N8REVTQ10sIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnc29ydENvbHVtbnM6IHNvcnQtY29sdW1ucycsXG5cbiAgLy8gaW5zZXJ0LWJ1dHRvbi1wb3NpdGlvbiBbIHRvcCB8IGJvdHRvbSBdOiBwb3NpdGlvbiBvZiB0aGUgaW5zZXJ0IGJ1dHRvbi4gRGVmYXVsdDogJ2JvdHRvbSdcbiAgJ2luc2VydEJ1dHRvblBvc2l0aW9uOmluc2VydC1idXR0b24tcG9zaXRpb24nLFxuXG4gIC8vIGluc2VydC1idXR0b24tZmxvYXRhYmxlIFtub3x5ZXNdOiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdG8gcG9zaXRpb24gb2YgdGhlIGluc2VydCBidXR0b24gaXMgZmxvYXRpbmcgLiBEZWZhdWx0OiAneWVzJ1xuICAnaW5zZXJ0QnV0dG9uRmxvYXRhYmxlOmluc2VydC1idXR0b24tZmxvYXRhYmxlJyxcblxuICAvLyBzaG93LWJ1dHRvbnMtdGV4dCBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHRleHQgb2YgYnV0dG9ucy4gRGVmYXVsdDogbm8uXG4gICdzaG93QnV0dG9uc1RleHQ6IHNob3ctYnV0dG9ucy10ZXh0JyxcbiAgLy8ga2V5cy1zcWwtdHlwZXMgW3N0cmluZ106IGVudGl0eSBrZXlzIHR5cGVzLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ2tleXNTcWxUeXBlczoga2V5cy1zcWwtdHlwZXMnLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0xJU1QgPSBbXG4gICdvbkluc2VydEJ1dHRvbkNsaWNrJyxcbiAgJ29uSXRlbURlbGV0ZWQnXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWxpc3QnLFxuICBwcm92aWRlcnM6IFtcbiAgICBPbnRpbWl6ZVNlcnZpY2VQcm92aWRlcixcbiAgICBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlcixcbiAgICB7IHByb3ZpZGU6IE9fQ09NUE9ORU5UX1NUQVRFX1NFUlZJQ0UsIHVzZUNsYXNzOiBPTGlzdENvbXBvbmVudFN0YXRlU2VydmljZSB9LFxuICBdLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fTElTVCxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fTElTVCxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWxpc3RdJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE9TZXJ2aWNlQ29tcG9uZW50PE9MaXN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlPiBpbXBsZW1lbnRzIElMaXN0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBAQ29udGVudENoaWxkcmVuKE9MaXN0SXRlbURpcmVjdGl2ZSlcbiAgcHVibGljIGxpc3RJdGVtRGlyZWN0aXZlczogUXVlcnlMaXN0PE9MaXN0SXRlbURpcmVjdGl2ZT47XG5cbiAgLyogSW5wdXRzICovXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgcmVmcmVzaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgc2VsZWN0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIGRlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgaW5zZXJ0QnV0dG9uRmxvYXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dCdXR0b25zVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHBhZ2luYXRpb25Db250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBxdWlja0ZpbHRlckNvbHVtbnM6IHN0cmluZztcbiAgcHVibGljIHJvdXRlOiBzdHJpbmc7XG4gIHB1YmxpYyBzb3J0Q29sdW1uczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcGVybWlzc2lvbnM6IE9MaXN0UGVybWlzc2lvbnM7XG4gIC8qIEVuZCBJbnB1dHMgKi9cblxuICBwdWJsaWMgc29ydENvbEFycmF5OiBTUUxPcmRlcltdID0gW107XG5cbiAgcHVibGljIG9uSW5zZXJ0QnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwdWJsaWMgb25JdGVtRGVsZXRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGVuYWJsZWREZWxldGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGluc2VydEJ1dHRvblBvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nID0gJ2JvdHRvbSc7XG4gIHB1YmxpYyBzdG9yZVBhZ2luYXRpb25TdGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByb3RlY3RlZCBfcXVpY2tGaWx0ZXJBcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ291dGxpbmUnO1xuICBwcm90ZWN0ZWQga2V5c1NxbFR5cGVzOiBzdHJpbmc7XG4gIGtleXNTcWxUeXBlc0FycmF5OiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgcHJvdGVjdGVkIG9NYXRTb3J0OiBPTWF0U29ydDtcbiAgcHJvdGVjdGVkIGFjdGlvbnNQZXJtaXNzaW9uczogT1Blcm1pc3Npb25zW107XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtQ29tcG9uZW50KSkgZm9ybTogT0Zvcm1Db21wb25lbnRcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGVsUmVmLCBmb3JtKTtcbiAgICB0aGlzLm9NYXRTb3J0ID0gbmV3IE9NYXRTb3J0KCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT0xpc3RDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldExpc3RQZXJtaXNzaW9ucyh0aGlzLm9hdHRyLCB0aGlzLmFjdFJvdXRlKTtcbiAgICB0aGlzLmFjdGlvbnNQZXJtaXNzaW9ucyA9IHRoaXMuZ2V0QWN0aW9uc1Blcm1pc3Npb25zKHRoaXMucGVybWlzc2lvbnMpO1xuICAgIHRoaXMuc2V0QnV0dG9uUGVybWlzc2lvbnModGhpcy5hY3Rpb25zUGVybWlzc2lvbnMpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5hZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5maWx0ZXJDYXNlU2Vuc2l0aXZlID0gVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS5maWx0ZXJDYXNlU2Vuc2l0aXZlKSA/XG4gICAgICB0aGlzLnN0YXRlLmZpbHRlckNhc2VTZW5zaXRpdmUgOlxuICAgICAgdGhpcy5maWx0ZXJDYXNlU2Vuc2l0aXZlO1xuICAgIHRoaXMucGFyc2VTb3J0Q29sdW1ucygpO1xuICAgIHRoaXMucmVnaXN0ZXJRdWlja0ZpbHRlcih0aGlzLnNlYXJjaElucHV0Q29tcG9uZW50KTtcbiAgICBpZiAodGhpcy5xdWVyeU9uSW5pdCkge1xuICAgICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgICB9XG4gICAgdGhpcy5tYW5hZ2VDdXN0b21QZXJtaXNzaW9ucyh0aGlzLmFjdGlvbnNQZXJtaXNzaW9ucywgJ1tvLWxpc3QtdG9vbGJhcl0nKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRMaXN0SXRlbURpcmVjdGl2ZXNEYXRhKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMubGlzdEl0ZW1EaXJlY3RpdmVzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2V0TGlzdEl0ZW1EaXJlY3RpdmVzRGF0YSgpKSk7XG5cblxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ09MaXN0Q29tcG9uZW50XycgKyB0aGlzLm9hdHRyO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMua2V5c1NxbFR5cGVzQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5rZXlzU3FsVHlwZXMpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5xdWlja0ZpbHRlckNvbHVtbnMpKSB7XG4gICAgICB0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICB9XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbEFycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zLCB0cnVlKTtcbiAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gMDtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIpKSB7XG4gICAgICB0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gMDtcbiAgICB9XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldExpc3RQZXJtaXNzaW9ucyh0aGlzLm9hdHRyLCB0aGlzLmFjdFJvdXRlKTtcbiAgfVxuXG4gIHB1YmxpYyByZWluaXRpYWxpemUob3B0aW9uczogT0xpc3RJbml0aWFsaXphdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdXBlci5yZWluaXRpYWxpemUob3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25MaXN0SXRlbUNsaWNrZWQob25OZXh0OiAoaXRlbTogT0xpc3RJdGVtRGlyZWN0aXZlKSA9PiB2b2lkKTogb2JqZWN0IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKHRoaXMub25DbGljaywgb25OZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1EZXRhaWxDbGljayhpdGVtOiBPTGlzdEl0ZW1EaXJlY3RpdmUgfCBMaXN0SXRlbSk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlSXRlbUNsaWNrKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIG9uSXRlbURldGFpbERvdWJsZUNsaWNrKGl0ZW06IE9MaXN0SXRlbURpcmVjdGl2ZSB8IExpc3RJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVJdGVtRGJsQ2xpY2soaXRlbSk7XG4gIH1cblxuICBnZXREYXRhVG9TdG9yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuZ2V0RGF0YVRvU3RvcmUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWREYXRhKGNsZWFyU2VsZWN0ZWRJdGVtczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5yZWZyZXNoU2VsZWN0aW9uKCk7XG4gICAgaWYgKGNsZWFyU2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG4gICAgbGV0IHF1ZXJ5QXJnczogT1F1ZXJ5RGF0YUFyZ3MgPSB7fTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCA9IDA7XG4gICAgICBxdWVyeUFyZ3MgPSB7XG4gICAgICAgIGxlbmd0aDogTWF0aC5tYXgodGhpcy5xdWVyeVJvd3MsIHRoaXMuZGF0YVJlc3BvbnNlQXJyYXkubGVuZ3RoKSxcbiAgICAgICAgcmVwbGFjZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5xdWVyeURhdGEodm9pZCAwLCBxdWVyeUFyZ3MpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZFBhZ2luYXRlZERhdGFGcm9tU3RhcnQoY2xlYXJTZWxlY3RlZEl0ZW1zOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICB0aGlzLmRhdGFSZXNwb25zZUFycmF5ID0gW107XG4gICAgICB0aGlzLnJlbG9hZERhdGEoY2xlYXJTZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0U29ydGVkRGF0YUZyb21BcnJheShkYXRhQXJyYXk6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLm9NYXRTb3J0LmdldFNvcnRlZERhdGFCeVNRTE9yZGVyKGRhdGFBcnJheSwgdGhpcy5zb3J0Q29sQXJyYXkpO1xuICB9XG5cbiAgcHVibGljIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNjcm9sbChlOiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hdHBhZ2luYXRvcikgcmV0dXJuO1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICBjb25zdCBwZW5kaW5nUmVnaXN0cmllcyA9IHRoaXMuZGF0YVJlc3BvbnNlQXJyYXkubGVuZ3RoIDwgdGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcjtcbiAgICAgIGlmICghdGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAmJiBwZW5kaW5nUmVnaXN0cmllcykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZS50YXJnZXQgYXMgYW55O1xuICAgICAgICBpZiAoZWxlbWVudC5vZmZzZXRIZWlnaHQgKyBlbGVtZW50LnNjcm9sbFRvcCArIDUgPj0gZWxlbWVudC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICBjb25zdCBxdWVyeUFyZ3M6IE9RdWVyeURhdGFBcmdzID0ge1xuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0LFxuICAgICAgICAgICAgbGVuZ3RoOiB0aGlzLnF1ZXJ5Um93c1xuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5kYXRhU2VydmljZT8uc2V0UGFnaW5hdGlvbkNvbnRleHQoeyBwYWdlTnVtYmVyOiB0aGlzLmRhdGFTZXJ2aWNlPy5nZXRQYWdpbmF0aW9uQ29udGV4dCgpLnBhZ2VOdW1iZXIgKyAxIH0pO1xuICAgICAgICAgIHRoaXMucXVlcnlEYXRhKHZvaWQgMCwgcXVlcnlBcmdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoY2xlYXJTZWxlY3RlZEl0ZW1zOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCk7XG4gICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ01FU1NBR0VTLkNPTkZJUk1fREVMRVRFJykudGhlbihyZXMgPT4ge1xuICAgICAgaWYgKHJlcyA9PT0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5kYXRhU2VydmljZSAmJiAodGhpcy5kZWxldGVNZXRob2QgaW4gdGhpcy5kYXRhU2VydmljZSkgJiYgdGhpcy5lbnRpdHkgJiYgKHRoaXMua2V5c0FycmF5Lmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVycyA9IFNlcnZpY2VVdGlscy5nZXRBcnJheVByb3BlcnRpZXMoc2VsZWN0ZWRJdGVtcywgdGhpcy5rZXlzQXJyYXkpO1xuICAgICAgICAgIGNvbnN0IHNxbFR5cGVzQXJnID0gdGhpcy5nZXRTcWxUeXBlc09mS2V5cygpO1xuICAgICAgICAgIG1lcmdlKGZpbHRlcnMubWFwKChrdiA9PiB0aGlzLmRhdGFTZXJ2aWNlW3RoaXMuZGVsZXRlTWV0aG9kXShrdiwgdGhpcy5lbnRpdHksIHNxbFR5cGVzQXJnKSkpKS5zdWJzY3JpYmUob2JzID0+IG9icy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5vbkl0ZW1EZWxldGVkLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWxlcnQoJ0VSUk9SJywgJ01FU1NBR0VTLkVSUk9SX0RFTEVURScpO1xuICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgIC8vIEVuc3VyaW5nIHRoYXQgdGhlIGRlbGV0ZWQgaXRlbXMgd2lsbCBub3QgbG9uZ2VyIGJlIHBhcnQgb2YgdGhlIHNlbGVjdGlvbk1vZGVsXG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZWxldGVMb2NhbEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2xlYXJTZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGQoZT86IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkluc2VydEJ1dHRvbkNsaWNrLmVtaXQoZSk7XG4gICAgc3VwZXIuaW5zZXJ0RGV0YWlsKCk7XG4gIH1cblxuICBwdWJsaWMgcGFyc2VTb3J0Q29sdW1ucygpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0Q29sdW1uc1BhcmFtID0gdGhpcy5zdGF0ZS5zb3J0Q29sdW1ucyB8fCB0aGlzLnNvcnRDb2x1bW5zO1xuICAgIHRoaXMuc29ydENvbEFycmF5ID0gU2VydmljZVV0aWxzLnBhcnNlU29ydENvbHVtbnMoc29ydENvbHVtbnNQYXJhbSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyOiBvYmplY3QsIG92cnJBcmdzPzogT1F1ZXJ5RGF0YUFyZ3MpOiBhbnlbXSB7XG4gICAgY29uc3QgcXVlcnlBcmd1bWVudHMgPSBzdXBlci5nZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXIsIG92cnJBcmdzKTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgcXVlcnlBcmd1bWVudHNbNl0gPSB0aGlzLnNvcnRDb2xBcnJheTtcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXJ5QXJndW1lbnRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldExpc3RJdGVtRGlyZWN0aXZlc0RhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0SXRlbURpcmVjdGl2ZXMuZm9yRWFjaCgoZWxlbWVudDogT0xpc3RJdGVtRGlyZWN0aXZlLCBpbmRleCkgPT4ge1xuICAgICAgZWxlbWVudC5zZXRJdGVtRGF0YSh0aGlzLmRhdGFBcnJheVtpbmRleF0pO1xuICAgICAgZWxlbWVudC5zZXRMaXN0Q29tcG9uZW50KHRoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVEYXRhTmF2aWdhdGlvbkluTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xuICAgIHN1cGVyLnNhdmVEYXRhTmF2aWdhdGlvbkluTG9jYWxTdG9yYWdlKCk7XG4gICAgdGhpcy5zdG9yZVBhZ2luYXRpb25TdGF0ZSA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZUFycmF5KGRhdGE6IGFueVtdLCByZXBsYWNlPzogYm9vbGVhbikge1xuICAgIGxldCByZXN1bHQgPSBkYXRhO1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlICYmICFyZXBsYWNlKSB7XG4gICAgICByZXN1bHQgPSAodGhpcy5kYXRhUmVzcG9uc2VBcnJheSB8fCBbXSkuY29uY2F0KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUXVpY2tGaWx0ZXIoYXJnOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5yZWdpc3RlclF1aWNrRmlsdGVyKGFyZyk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVpY2tGaWx0ZXJDb21wb25lbnQpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUucXVpY2tGaWx0ZXJBY3RpdmVDb2x1bW5zKSkge1xuICAgICAgY29uc3QgcGFyc2VkQXJyID0gVXRpbC5wYXJzZUFycmF5KHRoaXMuc3RhdGUucXVpY2tGaWx0ZXJBY3RpdmVDb2x1bW5zLCB0cnVlKTtcbiAgICAgIHRoaXMucXVpY2tGaWx0ZXJDb21wb25lbnQuc2V0QWN0aXZlQ29sdW1ucyhwYXJzZWRBcnIpO1xuICAgIH1cbiAgfVxuXG4gIHNldERhdGFBcnJheShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5zZXREYXRhQXJyYXkoZGF0YSk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2VsZWN0ZWQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuc2V0U2VsZWN0ZWQoaXRlbSk7XG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UucmVmcmVzaFNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGVkSXRlbXMoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGFibGUgfHwgIVV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUuc2VsZWN0aW9uKSB8fCB0aGlzLmdldFNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuc2VsZWN0aW9uLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1LZXlzID0gT2JqZWN0LmtleXMoc2VsZWN0ZWRJdGVtKTtcbiAgICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRoaXMuZGF0YUFycmF5LmZpbmQoZGF0YSA9PiBpdGVtS2V5cy5ldmVyeShrZXkgPT4gZGF0YVtrZXldID09PSBzZWxlY3RlZEl0ZW1ba2V5XSkpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGZvdW5kSXRlbSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KGZvdW5kSXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3FsVHlwZXMoKSB7XG4gICAgY29uc3Qgc3FsVHlwZXMgPSB0aGlzLnNxbFR5cGVzO1xuICAgIHRoaXMua2V5c1NxbFR5cGVzQXJyYXkuZm9yRWFjaCgoa3N0LCBpKSA9PiBzcWxUeXBlc1t0aGlzLmtleXNBcnJheVtpXV0gPSBTUUxUeXBlcy5nZXRTUUxUeXBlVmFsdWUoa3N0KSk7XG4gICAgcmV0dXJuIHNxbFR5cGVzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1saXN0LWNvbnRhaW5lclwiIFtzdHlsZS5kaXNwbGF5XT1cImlzVmlzaWJsZSgpPyAnJyA6ICdub25lJ1wiIGZ4RmlsbD5cbiAgPGRpdiAqbmdJZj1cImxvYWRpbmcgfCBhc3luY1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgW2NsYXNzLnBhZ2VhYmxlLWxvYWRpbmddPVwicGFnZWFibGUgJiYgc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQgPiAwXCJcbiAgICBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCI+XG4gICAgPG8tbGlzdC1za2VsZXRvbj48L28tbGlzdC1za2VsZXRvbj5cbiAgPC9kaXY+XG4gIDxvLWRhdGEtdG9vbGJhciAqbmdJZj1cImhhc0NvbnRyb2xzKClcIiBbdGl0bGVdPVwidGl0bGVcIiBbc2hvdy10aXRsZV09XCJoYXNUaXRsZSgpXCIgY2xhc3M9XCJvLWxpc3QtdG9vbGJhclwiPlxuICAgIDxuZy1jb250YWluZXIgby1kYXRhLXRvb2xiYXItcHJvamVjdGlvbi1zdGFydD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QnV0dG9uc1RleHQ7ZWxzZSBzaG93QnV0dG9uc1dpdGhvdXRUZXh0XCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJpbnNlcnRCdXR0b24gJiYgIWluc2VydEJ1dHRvbkZsb2F0YWJsZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZEluc2VydEJ1dHRvblwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiB0ZXh0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphZGRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdBREQnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwiby1saXN0LWJ1dHRvbiB0ZXh0XCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkUmVmcmVzaEJ1dHRvblwiIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiICpuZ0lmPVwicmVmcmVzaEJ1dHRvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyAnUkVGUkVTSCcgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVsZXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiB0ZXh0XCIgbWF0LXN0cm9rZWQtYnV0dG9uIGFyaWEtbGFiZWw9XCJEZWxldGVcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiIChjbGljayk9XCJyZW1vdmUoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6ZGVsZXRlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyAnREVMRVRFJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dCdXR0b25zV2l0aG91dFRleHQ+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJpbnNlcnRCdXR0b24gJiYgIWluc2VydEJ1dHRvbkZsb2F0YWJsZVwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRJbnNlcnRCdXR0b25cIiBjbGFzcz1cIm8tbGlzdC1idXR0b24gbm8tdGV4dFwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphZGRcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlJlZnJlc2hcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRSZWZyZXNoQnV0dG9uXCIgY2xhc3M9XCJvLWxpc3QtYnV0dG9uIG5vLXRleHRcIiAoY2xpY2spPVwicmVsb2FkRGF0YSgpXCIgKm5nSWY9XCJyZWZyZXNoQnV0dG9uXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphdXRvcmVuZXdcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVsZXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiBuby10ZXh0XCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJEZWxldGVcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiIChjbGljayk9XCJyZW1vdmUoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6ZGVsZXRlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvLWxpc3QtdG9vbGJhcl1bcG9zaXRpb249c3RhcnRdXCIgbmdQcm9qZWN0QXM9XCJbby1kYXRhLXRvb2xiYXItY3VzdG9tLXByb2plY3Rpb24tc3RhcnRdXCI+XG4gICAgPC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvLWxpc3QtdG9vbGJhcl1bcG9zaXRpb249ZW5kXVwiIG5nUHJvamVjdEFzPVwiW28tZGF0YS10b29sYmFyLWN1c3RvbS1wcm9qZWN0aW9uLWVuZF1cIj5cbiAgICA8L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW28tbGlzdC10b29sYmFyXVwiIG5nUHJvamVjdEFzPVwiW28tZGF0YS10b29sYmFyLWN1c3RvbS1wcm9qZWN0aW9uLXN0YXJ0XVwiPlxuICAgIDwvbmctY29udGVudD5cbiAgICA8bmctY29udGFpbmVyIG8tZGF0YS10b29sYmFyLXByb2plY3Rpb24tZW5kPlxuICAgICAgPG8tc2VhcmNoLWlucHV0ICpuZ0lmPVwicXVpY2tGaWx0ZXJcIiBbZmlsdGVyLWNhc2Utc2Vuc2l0aXZlXT1cImZpbHRlckNhc2VTZW5zaXRpdmVcIiBbc2hvdy1jYXNlLXNlbnNpdGl2ZS1jaGVja2JveF09XCJzaG93Q2FzZVNlbnNpdGl2ZUNoZWNrYm94KClcIlxuICAgICAgICBbY29sdW1uc109XCJxdWlja0ZpbHRlckNvbHVtbnNcIiBbcGxhY2Vob2xkZXJdPVwicXVpY2tGaWx0ZXJQbGFjZWhvbGRlclwiIFthcHBlYXJhbmNlXT1cInF1aWNrRmlsdGVyQXBwZWFyYW5jZVwiIGZsb2F0LWxhYmVsPVwibmV2ZXJcIj5cbiAgICAgIDwvby1zZWFyY2gtaW5wdXQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvby1kYXRhLXRvb2xiYXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIobG9hZGluZyB8IGFzeW5jKSA9PT0gZmFsc2VcIj5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiby1saXN0LWNvbnRlbnRcIiBmeEZsZXg9XCIxIDEgMTAwJVwiID5cbiAgICA8IS0tTUFULUxJU1QtLT5cbiAgICA8bWF0LWxpc3QgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCIgW2NsYXNzLnNlbGVjdGFibGVdPVwic2VsZWN0YWJsZVwiXG4gICAgICBbY2xhc3Muby1saXN0LWl0ZW0taGFzLWJ1dHRvbnNdPVwiaW5zZXJ0QnV0dG9uICYmIChlZGl0QnV0dG9uSW5Sb3cgfHwgZGV0YWlsQnV0dG9uSW5Sb3cpXCI+XG5cbiAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwiIWdldERhdGFBcnJheSgpLmxlbmd0aFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtcIj5cbiAgICAgICAgPGgzIG1hdExpc3RJdGVtVGl0bGUgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgIHt7ICdUQUJMRS5FTVBUWScgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFF1aWNrRmlsdGVyVmFsdWUoKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRU1QVFlfVVNJTkdfRklMVEVSJyB8IG9UcmFuc2xhdGUgOiB7dmFsdWVzOiBbZ2V0UXVpY2tGaWx0ZXJWYWx1ZSgpXX0gfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L21hdC1saXN0PlxuICA8L2Rpdj5cbiAgPG1hdC1wYWdpbmF0b3IgZnhGbGV4PVwiMCAxIGF1dG9cIiBjbGFzcz1cIm8tbWF0LXBhZ2luYXRvclwiICNwYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uQ29udHJvbHNcIiBbbGVuZ3RoXT1cInRvdGFsUmVjb3Jkc1wiIFtwYWdlU2l6ZV09XCJxdWVyeVJvd3NcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgW3BhZ2VJbmRleF09XCJjdXJyZW50UGFnZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCIgKHBhZ2UpPVwib25DaGFuZ2VQYWdlKCRldmVudClcIj48L21hdC1wYWdpbmF0b3I+XG5cbiAgPCEtLUlOU0VSVCBCVVRUT04gLS0+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiaW5zZXJ0QnV0dG9uICYmIGluc2VydEJ1dHRvbkZsb2F0YWJsZVwiIG1hdC1mYWIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCIgY2xhc3M9XCJhZGQtYnV0dG9uIGFkZC1idXR0b24tYm90dG9tXCJcbiAgICBbY2xhc3MuYWRkLWJ1dHRvbi1ib3R0b21dPVwiaW5zZXJ0QnV0dG9uUG9zaXRpb24gPT09J2JvdHRvbSdcIiBbY2xhc3MuYWRkLWJ1dHRvbi10b3BdPVwiaW5zZXJ0QnV0dG9uUG9zaXRpb24gPT09J3RvcCdcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmFkZFwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvby1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUlSLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQU1qRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDekUsT0FBTyxFQUFF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dUJBQXVCO1FBQ3ZCLDZCQUE2QjtRQUM3QixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUU7S0FDN0UsNkRBWWdCLGtCQUFrQiw4R0FFTCxVQUFVLG9EQ2xHMUMsMC9KQThFQTtBRHdCRTtJQUFDLHFCQUFxQixFQUFFOztxREFDYTtBQUNyQztJQUFDLHFCQUFxQixFQUFFOztrREFDVztBQUNuQztJQUFDLHFCQUFxQixFQUFFOztvREFDWTtBQUNwQztJQUFDLHFCQUFxQixFQUFFOzs2REFDcUI7QUFDN0M7SUFBQyxxQkFBcUIsRUFBRTs7dURBQ1M7NEZBakJ0QixjQUFjO2tCQWhCMUIsU0FBUzsrQkFDRSxRQUFRLGFBQ1A7d0JBQ1QsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7d0JBQzdCLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRTtxQkFDN0UsVUFDTyxxQkFBcUIsV0FDcEIsc0JBQXNCLGlCQUdoQixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLGdCQUFnQixFQUFFLE1BQU07cUJBQ3pCOzswQkFtREUsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDOzRDQTlDL0Msa0JBQWtCO3NCQUR4QixlQUFlO3VCQUFDLGtCQUFrQjtnQkFHbkMsU0FBUztzQkFEUixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS25DLGFBQWEsTUFFYixVQUFVLE1BRVYsWUFBWSxNQUVaLHFCQUFxQixNQUU1QixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUxpc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL28tbGlzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsIE9fQ09NUE9ORU5UX1NUQVRFX1NFUlZJQ0UsIE9udGltaXplU2VydmljZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IE9MaXN0Q29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tbGlzdC1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgT0xpc3RDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWxpc3QtY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0xpc3RJbml0aWFsaXphdGlvbk9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9vLWxpc3QtaW5pdGlhbGl6YXRpb24tb3B0aW9ucy50eXBlJztcbmltcG9ydCB7IE9MaXN0UGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9vLWxpc3QtcGVybWlzc2lvbnMudHlwZSc7XG5pbXBvcnQgeyBPUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9vLXBlcm1pc3Npb25zLnR5cGUnO1xuaW1wb3J0IHsgT1F1ZXJ5RGF0YUFyZ3MgfSBmcm9tICcuLi8uLi90eXBlcy9xdWVyeS1kYXRhLWFyZ3MudHlwZSc7XG5pbXBvcnQgeyBTUUxPcmRlciB9IGZyb20gJy4uLy4uL3R5cGVzL3NxbC1vcmRlci50eXBlJztcbmltcG9ydCB7IE9ic2VydmFibGVXcmFwcGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9hc3luYyc7XG5pbXBvcnQgeyBTZXJ2aWNlVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3NlcnZpY2UudXRpbHMnO1xuaW1wb3J0IHsgU1FMVHlwZXMgfSBmcm9tICcuLi8uLi91dGlsL3NxbHR5cGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RPU2VydmljZUNvbXBvbmVudCB9IGZyb20gJy4uL28tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgT01hdFNvcnQgfSBmcm9tICcuLi90YWJsZS9leHRlbnNpb25zL3NvcnQvby1tYXQtc29ydCc7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4vbGlzdC1pdGVtL28tbGlzdC1pdGVtJztcbmltcG9ydCB7IE9MaXN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vbGlzdC1pdGVtL28tbGlzdC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25DaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19MSVNUID0gW1xuICAvLyBxdWljay1maWx0ZXItY29sdW1ucyBbc3RyaW5nXTogY29sdW1ucyBvZiB0aGUgZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3F1aWNrRmlsdGVyQ29sdW1uczogcXVpY2stZmlsdGVyLWNvbHVtbnMnLFxuXG4gIC8vIHJlZnJlc2gtYnV0dG9uIFtub3x5ZXNdOiBzaG93IHJlZnJlc2ggYnV0dG9uLiBEZWZhdWx0OiB5ZXMuXG4gICdyZWZyZXNoQnV0dG9uOiByZWZyZXNoLWJ1dHRvbicsXG5cbiAgJ3JvdXRlJyxcblxuICAnc2VsZWN0YWJsZScsXG5cbiAgLy8gZGVsZXRlLWJ1dHRvbiBbbm98eWVzXTogc2hvdyBkZWxldGUgYnV0dG9uIHdoZW4gdXNlciBzZWxlY3QgaXRlbXMuIERlZmF1bHQ6IHllcy5cbiAgJ2RlbGV0ZUJ1dHRvbjogZGVsZXRlLWJ1dHRvbicsXG5cbiAgLy8gc29ydC1jb2x1bW5zIFtzdHJpbmddOiBpbml0aWFsIHNvcnRpbmcsIHdpdGggdGhlIGZvcm1hdCBjb2x1bW46W0FTQ3xERVNDXSwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdzb3J0Q29sdW1uczogc29ydC1jb2x1bW5zJyxcblxuICAvLyBpbnNlcnQtYnV0dG9uLXBvc2l0aW9uIFsgdG9wIHwgYm90dG9tIF06IHBvc2l0aW9uIG9mIHRoZSBpbnNlcnQgYnV0dG9uLiBEZWZhdWx0OiAnYm90dG9tJ1xuICAnaW5zZXJ0QnV0dG9uUG9zaXRpb246aW5zZXJ0LWJ1dHRvbi1wb3NpdGlvbicsXG5cbiAgLy8gaW5zZXJ0LWJ1dHRvbi1mbG9hdGFibGUgW25vfHllc106IEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byBwb3NpdGlvbiBvZiB0aGUgaW5zZXJ0IGJ1dHRvbiBpcyBmbG9hdGluZyAuIERlZmF1bHQ6ICd5ZXMnXG4gICdpbnNlcnRCdXR0b25GbG9hdGFibGU6aW5zZXJ0LWJ1dHRvbi1mbG9hdGFibGUnLFxuXG4gIC8vIHNob3ctYnV0dG9ucy10ZXh0IFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgdGV4dCBvZiBidXR0b25zLiBEZWZhdWx0OiBuby5cbiAgJ3Nob3dCdXR0b25zVGV4dDogc2hvdy1idXR0b25zLXRleHQnLFxuICAvLyBrZXlzLXNxbC10eXBlcyBbc3RyaW5nXTogZW50aXR5IGtleXMgdHlwZXMsIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAna2V5c1NxbFR5cGVzOiBrZXlzLXNxbC10eXBlcycsXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fTElTVCA9IFtcbiAgJ29uSW5zZXJ0QnV0dG9uQ2xpY2snLFxuICAnb25JdGVtRGVsZXRlZCcsXG4gICdvbkl0ZW1TZWxlY3RlZCcsXG4gICdvbkl0ZW1EZXNlbGVjdGVkJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1saXN0JyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIsXG4gICAgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsXG4gICAgeyBwcm92aWRlOiBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFLCB1c2VDbGFzczogT0xpc3RDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSxcbiAgXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0xJU1QsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0xJU1QsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1saXN0XSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9MaXN0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RPU2VydmljZUNvbXBvbmVudDxPTGlzdENvbXBvbmVudFN0YXRlU2VydmljZT4gaW1wbGVtZW50cyBJTGlzdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihPTGlzdEl0ZW1EaXJlY3RpdmUpXG4gIHB1YmxpYyBsaXN0SXRlbURpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxPTGlzdEl0ZW1EaXJlY3RpdmU+O1xuICBAVmlld0NoaWxkKCd0b29sYmFyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHRvb2xiYXJFbDogRWxlbWVudFJlZjtcblxuICAvKiBJbnB1dHMgKi9cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyByZWZyZXNoQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzZWxlY3RhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgZGVsZXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBpbnNlcnRCdXR0b25GbG9hdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd0J1dHRvbnNUZXh0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcGFnaW5hdGlvbkNvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHF1aWNrRmlsdGVyQ29sdW1uczogc3RyaW5nO1xuICBwdWJsaWMgcm91dGU6IHN0cmluZztcbiAgcHVibGljIHNvcnRDb2x1bW5zOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uczogT0xpc3RQZXJtaXNzaW9ucztcbiAgLyogRW5kIElucHV0cyAqL1xuXG4gIHB1YmxpYyBzb3J0Q29sQXJyYXk6IFNRTE9yZGVyW10gPSBbXTtcblxuICBwdWJsaWMgb25JbnNlcnRCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBvbkl0ZW1EZWxldGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZW5hYmxlZERlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaW5zZXJ0QnV0dG9uUG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgPSAnYm90dG9tJztcbiAgcHVibGljIHN0b3JlUGFnaW5hdGlvblN0YXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJvdGVjdGVkIF9xdWlja0ZpbHRlckFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSAnb3V0bGluZSc7XG4gIHByb3RlY3RlZCBrZXlzU3FsVHlwZXM6IHN0cmluZztcbiAga2V5c1NxbFR5cGVzQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICBwcm90ZWN0ZWQgb01hdFNvcnQ6IE9NYXRTb3J0O1xuICBwcm90ZWN0ZWQgYWN0aW9uc1Blcm1pc3Npb25zOiBPUGVybWlzc2lvbnNbXTtcblxuICBwdWJsaWMgb25JdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBvbkl0ZW1EZXNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1Db21wb25lbnQpKSBmb3JtOiBPRm9ybUNvbXBvbmVudFxuICApIHtcbiAgICBzdXBlcihpbmplY3RvciwgZWxSZWYsIGZvcm0pO1xuICAgIHRoaXMub01hdFNvcnQgPSBuZXcgT01hdFNvcnQoKTtcbiAgfVxuXG4gIGdldCB0b29sQmFySGVpZ2h0KCkge1xuICAgIGxldCBoZWlnaHQgPSAwO1xuXG4gICAgaWYgKHRoaXMudG9vbGJhckVsPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBoZWlnaHQgKz0gdGhpcy50b29sYmFyRWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiBoZWlnaHQ7XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT0xpc3RDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldExpc3RQZXJtaXNzaW9ucyh0aGlzLm9hdHRyLCB0aGlzLmFjdFJvdXRlKTtcbiAgICB0aGlzLmFjdGlvbnNQZXJtaXNzaW9ucyA9IHRoaXMuZ2V0QWN0aW9uc1Blcm1pc3Npb25zKHRoaXMucGVybWlzc2lvbnMpO1xuICAgIHRoaXMuc2V0QnV0dG9uUGVybWlzc2lvbnModGhpcy5hY3Rpb25zUGVybWlzc2lvbnMpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5hZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5maWx0ZXJDYXNlU2Vuc2l0aXZlID0gVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS5maWx0ZXJDYXNlU2Vuc2l0aXZlKSA/XG4gICAgICB0aGlzLnN0YXRlLmZpbHRlckNhc2VTZW5zaXRpdmUgOlxuICAgICAgdGhpcy5maWx0ZXJDYXNlU2Vuc2l0aXZlO1xuICAgIHRoaXMucGFyc2VTb3J0Q29sdW1ucygpO1xuICAgIHRoaXMucmVnaXN0ZXJRdWlja0ZpbHRlcih0aGlzLnNlYXJjaElucHV0Q29tcG9uZW50KTtcbiAgICBpZiAodGhpcy5xdWVyeU9uSW5pdCkge1xuICAgICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgICB9XG4gICAgdGhpcy5tYW5hZ2VDdXN0b21QZXJtaXNzaW9ucyh0aGlzLmFjdGlvbnNQZXJtaXNzaW9ucywgJ1tvLWxpc3QtdG9vbGJhcl0nKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRMaXN0SXRlbURpcmVjdGl2ZXNEYXRhKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMubGlzdEl0ZW1EaXJlY3RpdmVzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2V0TGlzdEl0ZW1EaXJlY3RpdmVzRGF0YSgpKSk7XG5cblxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ09MaXN0Q29tcG9uZW50XycgKyB0aGlzLm9hdHRyO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMua2V5c1NxbFR5cGVzQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5rZXlzU3FsVHlwZXMpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5xdWlja0ZpbHRlckNvbHVtbnMpKSB7XG4gICAgICB0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucyA9IHRoaXMuY29sdW1ucztcbiAgICB9XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbEFycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zLCB0cnVlKTtcbiAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gMDtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIpKSB7XG4gICAgICB0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gMDtcbiAgICB9XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldExpc3RQZXJtaXNzaW9ucyh0aGlzLm9hdHRyLCB0aGlzLmFjdFJvdXRlKTtcblxuICAgIGNvbnN0IHNlbGVjdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQuc3Vic2NyaWJlKCh7IGFkZGVkLCByZW1vdmVkIH06IFNlbGVjdGlvbkNoYW5nZTxhbnk+KSA9PiB7XG4gICAgICAgIGlmIChhZGRlZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5vbkl0ZW1TZWxlY3RlZCwgYWRkZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZW1vdmVkPy5sZW5ndGgpIHtcbiAgICAgICAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLm9uSXRlbURlc2VsZWN0ZWQsIHJlbW92ZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHNlbGVjdGlvblN1YnNjcmlwdGlvbilcbiAgfVxuXG4gIHB1YmxpYyByZWluaXRpYWxpemUob3B0aW9uczogT0xpc3RJbml0aWFsaXphdGlvbk9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdXBlci5yZWluaXRpYWxpemUob3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25MaXN0SXRlbUNsaWNrZWQob25OZXh0OiAoaXRlbTogT0xpc3RJdGVtRGlyZWN0aXZlKSA9PiB2b2lkKTogb2JqZWN0IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZVdyYXBwZXIuc3Vic2NyaWJlKHRoaXMub25DbGljaywgb25OZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1EZXRhaWxDbGljayhpdGVtOiBPTGlzdEl0ZW1EaXJlY3RpdmUgfCBMaXN0SXRlbSk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlSXRlbUNsaWNrKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIG9uSXRlbURldGFpbERvdWJsZUNsaWNrKGl0ZW06IE9MaXN0SXRlbURpcmVjdGl2ZSB8IExpc3RJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVJdGVtRGJsQ2xpY2soaXRlbSk7XG4gIH1cblxuICBnZXREYXRhVG9TdG9yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuZ2V0RGF0YVRvU3RvcmUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWREYXRhKGNsZWFyU2VsZWN0ZWRJdGVtczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5yZWZyZXNoU2VsZWN0aW9uKCk7XG4gICAgaWYgKGNsZWFyU2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG4gICAgbGV0IHF1ZXJ5QXJnczogT1F1ZXJ5RGF0YUFyZ3MgPSB7fTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCA9IDA7XG4gICAgICBxdWVyeUFyZ3MgPSB7XG4gICAgICAgIGxlbmd0aDogTWF0aC5tYXgodGhpcy5xdWVyeVJvd3MsIHRoaXMuZGF0YVJlc3BvbnNlQXJyYXkubGVuZ3RoKSxcbiAgICAgICAgcmVwbGFjZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5xdWVyeURhdGEodm9pZCAwLCBxdWVyeUFyZ3MpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZFBhZ2luYXRlZERhdGFGcm9tU3RhcnQoY2xlYXJTZWxlY3RlZEl0ZW1zOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICB0aGlzLmRhdGFSZXNwb25zZUFycmF5ID0gW107XG4gICAgICB0aGlzLnJlbG9hZERhdGEoY2xlYXJTZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0U29ydGVkRGF0YUZyb21BcnJheShkYXRhQXJyYXk6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLm9NYXRTb3J0LmdldFNvcnRlZERhdGFCeVNRTE9yZGVyKGRhdGFBcnJheSwgdGhpcy5zb3J0Q29sQXJyYXkpO1xuICB9XG5cbiAgcHVibGljIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNjcm9sbChlOiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hdHBhZ2luYXRvcikgcmV0dXJuO1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICBjb25zdCBwZW5kaW5nUmVnaXN0cmllcyA9IHRoaXMuZGF0YVJlc3BvbnNlQXJyYXkubGVuZ3RoIDwgdGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcjtcbiAgICAgIGlmICghdGhpcy5sb2FkaW5nU3ViamVjdC52YWx1ZSAmJiBwZW5kaW5nUmVnaXN0cmllcykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZS50YXJnZXQgYXMgYW55O1xuICAgICAgICBpZiAoZWxlbWVudC5vZmZzZXRIZWlnaHQgKyBlbGVtZW50LnNjcm9sbFRvcCArIDUgPj0gZWxlbWVudC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICBjb25zdCBxdWVyeUFyZ3M6IE9RdWVyeURhdGFBcmdzID0ge1xuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0LFxuICAgICAgICAgICAgbGVuZ3RoOiB0aGlzLnF1ZXJ5Um93c1xuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5kYXRhU2VydmljZT8uc2V0UGFnaW5hdGlvbkNvbnRleHQoeyBwYWdlTnVtYmVyOiB0aGlzLmRhdGFTZXJ2aWNlPy5nZXRQYWdpbmF0aW9uQ29udGV4dCgpLnBhZ2VOdW1iZXIgKyAxIH0pO1xuICAgICAgICAgIHRoaXMucXVlcnlEYXRhKHZvaWQgMCwgcXVlcnlBcmdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoY2xlYXJTZWxlY3RlZEl0ZW1zOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCk7XG4gICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ01FU1NBR0VTLkNPTkZJUk1fREVMRVRFJykudGhlbihyZXMgPT4ge1xuICAgICAgaWYgKHJlcyA9PT0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5kYXRhU2VydmljZSAmJiAodGhpcy5kZWxldGVNZXRob2QgaW4gdGhpcy5kYXRhU2VydmljZSkgJiYgdGhpcy5lbnRpdHkgJiYgKHRoaXMua2V5c0FycmF5Lmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVycyA9IFNlcnZpY2VVdGlscy5nZXRBcnJheVByb3BlcnRpZXMoc2VsZWN0ZWRJdGVtcywgdGhpcy5rZXlzQXJyYXkpO1xuICAgICAgICAgIGNvbnN0IHNxbFR5cGVzQXJnID0gdGhpcy5nZXRTcWxUeXBlc09mS2V5cygpO1xuICAgICAgICAgIG1lcmdlKGZpbHRlcnMubWFwKChrdiA9PiB0aGlzLmRhdGFTZXJ2aWNlW3RoaXMuZGVsZXRlTWV0aG9kXShrdiwgdGhpcy5lbnRpdHksIHNxbFR5cGVzQXJnKSkpKS5zdWJzY3JpYmUob2JzID0+IG9icy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5vbkl0ZW1EZWxldGVkLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWxlcnQoJ0VSUk9SJywgJ01FU1NBR0VTLkVSUk9SX0RFTEVURScpO1xuICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgIC8vIEVuc3VyaW5nIHRoYXQgdGhlIGRlbGV0ZWQgaXRlbXMgd2lsbCBub3QgbG9uZ2VyIGJlIHBhcnQgb2YgdGhlIHNlbGVjdGlvbk1vZGVsXG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZERhdGEoKTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZWxldGVMb2NhbEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2xlYXJTZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGQoZT86IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkluc2VydEJ1dHRvbkNsaWNrLmVtaXQoZSk7XG4gICAgc3VwZXIuaW5zZXJ0RGV0YWlsKCk7XG4gIH1cblxuICBwdWJsaWMgcGFyc2VTb3J0Q29sdW1ucygpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0Q29sdW1uc1BhcmFtID0gdGhpcy5zdGF0ZS5zb3J0Q29sdW1ucyB8fCB0aGlzLnNvcnRDb2x1bW5zO1xuICAgIHRoaXMuc29ydENvbEFycmF5ID0gU2VydmljZVV0aWxzLnBhcnNlU29ydENvbHVtbnMoc29ydENvbHVtbnNQYXJhbSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyOiBvYmplY3QsIG92cnJBcmdzPzogT1F1ZXJ5RGF0YUFyZ3MpOiBhbnlbXSB7XG4gICAgY29uc3QgcXVlcnlBcmd1bWVudHMgPSBzdXBlci5nZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXIsIG92cnJBcmdzKTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgcXVlcnlBcmd1bWVudHNbNl0gPSB0aGlzLnNvcnRDb2xBcnJheTtcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXJ5QXJndW1lbnRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldExpc3RJdGVtRGlyZWN0aXZlc0RhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0SXRlbURpcmVjdGl2ZXMuZm9yRWFjaCgoZWxlbWVudDogT0xpc3RJdGVtRGlyZWN0aXZlLCBpbmRleCkgPT4ge1xuICAgICAgZWxlbWVudC5zZXRJdGVtRGF0YSh0aGlzLmRhdGFBcnJheVtpbmRleF0pO1xuICAgICAgZWxlbWVudC5zZXRMaXN0Q29tcG9uZW50KHRoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVEYXRhTmF2aWdhdGlvbkluTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xuICAgIHN1cGVyLnNhdmVEYXRhTmF2aWdhdGlvbkluTG9jYWxTdG9yYWdlKCk7XG4gICAgdGhpcy5zdG9yZVBhZ2luYXRpb25TdGF0ZSA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZUFycmF5KGRhdGE6IGFueVtdLCByZXBsYWNlPzogYm9vbGVhbikge1xuICAgIGxldCByZXN1bHQgPSBkYXRhO1xuICAgIGlmICh0aGlzLnBhZ2VhYmxlICYmICFyZXBsYWNlKSB7XG4gICAgICByZXN1bHQgPSAodGhpcy5kYXRhUmVzcG9uc2VBcnJheSB8fCBbXSkuY29uY2F0KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUXVpY2tGaWx0ZXIoYXJnOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5yZWdpc3RlclF1aWNrRmlsdGVyKGFyZyk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVpY2tGaWx0ZXJDb21wb25lbnQpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUucXVpY2tGaWx0ZXJBY3RpdmVDb2x1bW5zKSkge1xuICAgICAgY29uc3QgcGFyc2VkQXJyID0gVXRpbC5wYXJzZUFycmF5KHRoaXMuc3RhdGUucXVpY2tGaWx0ZXJBY3RpdmVDb2x1bW5zLCB0cnVlKTtcbiAgICAgIHRoaXMucXVpY2tGaWx0ZXJDb21wb25lbnQuc2V0QWN0aXZlQ29sdW1ucyhwYXJzZWRBcnIpO1xuICAgIH1cbiAgfVxuXG4gIHNldERhdGFBcnJheShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5zZXREYXRhQXJyYXkoZGF0YSk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2VsZWN0ZWQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuc2V0U2VsZWN0ZWQoaXRlbSk7XG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UucmVmcmVzaFNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGVkSXRlbXMoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGFibGUgfHwgIVV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUuc2VsZWN0aW9uKSB8fCB0aGlzLmdldFNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuc2VsZWN0aW9uLmZvckVhY2goc2VsZWN0ZWRJdGVtID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1LZXlzID0gT2JqZWN0LmtleXMoc2VsZWN0ZWRJdGVtKTtcbiAgICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRoaXMuZGF0YUFycmF5LmZpbmQoZGF0YSA9PiBpdGVtS2V5cy5ldmVyeShrZXkgPT4gZGF0YVtrZXldID09PSBzZWxlY3RlZEl0ZW1ba2V5XSkpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGZvdW5kSXRlbSkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KGZvdW5kSXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3FsVHlwZXMoKSB7XG4gICAgY29uc3Qgc3FsVHlwZXMgPSB0aGlzLnNxbFR5cGVzO1xuICAgIHRoaXMua2V5c1NxbFR5cGVzQXJyYXkuZm9yRWFjaCgoa3N0LCBpKSA9PiBzcWxUeXBlc1t0aGlzLmtleXNBcnJheVtpXV0gPSBTUUxUeXBlcy5nZXRTUUxUeXBlVmFsdWUoa3N0KSk7XG4gICAgcmV0dXJuIHNxbFR5cGVzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1saXN0LWNvbnRhaW5lclwiIFtzdHlsZS5kaXNwbGF5XT1cImlzVmlzaWJsZSgpPyAnJyA6ICdub25lJ1wiIGZ4RmlsbD5cbiAgPGRpdiAqbmdJZj1cImxvYWRpbmcgfCBhc3luY1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgW2NsYXNzLnBhZ2VhYmxlLWxvYWRpbmddPVwicGFnZWFibGUgJiYgc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQgPiAwXCJcbiAgICBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieyd0b3AucHgnOiB0b29sQmFySGVpZ2h0fVwiPlxuICAgIDxvLWxpc3Qtc2tlbGV0b24+PC9vLWxpc3Qtc2tlbGV0b24+XG4gIDwvZGl2PlxuICA8by1kYXRhLXRvb2xiYXIgI3Rvb2xiYXIgKm5nSWY9XCJoYXNDb250cm9scygpXCIgW3RpdGxlXT1cInRpdGxlXCIgW3Nob3ctdGl0bGVdPVwiaGFzVGl0bGUoKVwiIGNsYXNzPVwiby1saXN0LXRvb2xiYXJcIj5cbiAgICA8bmctY29udGFpbmVyIG8tZGF0YS10b29sYmFyLXByb2plY3Rpb24tc3RhcnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0J1dHRvbnNUZXh0O2Vsc2Ugc2hvd0J1dHRvbnNXaXRob3V0VGV4dFwiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uICYmICFpbnNlcnRCdXR0b25GbG9hdGFibGVcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRJbnNlcnRCdXR0b25cIiBjbGFzcz1cIm8tbGlzdC1idXR0b24gdGV4dFwiIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gYXJpYS1sYWJlbD1cIkluc2VydFwiIChjbGljayk9XCJhZGQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YWRkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyAnQUREJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm8tbGlzdC1idXR0b24gdGV4dFwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFJlZnJlc2hCdXR0b25cIiBhcmlhLWxhYmVsPVwiUmVmcmVzaFwiIChjbGljayk9XCJyZWxvYWREYXRhKClcIiAqbmdJZj1cInJlZnJlc2hCdXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmF1dG9yZW5ld1wiPjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ1JFRlJFU0gnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRlbGV0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm8tbGlzdC1idXR0b24gdGV4dFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIiAoY2xpY2spPVwicmVtb3ZlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmRlbGV0ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgJ0RFTEVURScgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNzaG93QnV0dG9uc1dpdGhvdXRUZXh0PlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uICYmICFpbnNlcnRCdXR0b25GbG9hdGFibGVcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkSW5zZXJ0QnV0dG9uXCIgY2xhc3M9XCJvLWxpc3QtYnV0dG9uIG5vLXRleHRcIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkluc2VydFwiIChjbGljayk9XCJhZGQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YWRkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJSZWZyZXNoXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkUmVmcmVzaEJ1dHRvblwiIGNsYXNzPVwiby1saXN0LWJ1dHRvbiBuby10ZXh0XCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiICpuZ0lmPVwicmVmcmVzaEJ1dHRvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRlbGV0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm8tbGlzdC1idXR0b24gbm8tdGV4dFwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIiAoY2xpY2spPVwicmVtb3ZlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmRlbGV0ZVwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LXRvb2xiYXJdW3Bvc2l0aW9uPXN0YXJ0XVwiIG5nUHJvamVjdEFzPVwiW28tZGF0YS10b29sYmFyLWN1c3RvbS1wcm9qZWN0aW9uLXN0YXJ0XVwiPlxuICAgIDwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LXRvb2xiYXJdW3Bvc2l0aW9uPWVuZF1cIiBuZ1Byb2plY3RBcz1cIltvLWRhdGEtdG9vbGJhci1jdXN0b20tcHJvamVjdGlvbi1lbmRdXCI+XG4gICAgPC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvLWxpc3QtdG9vbGJhcl1cIiBuZ1Byb2plY3RBcz1cIltvLWRhdGEtdG9vbGJhci1jdXN0b20tcHJvamVjdGlvbi1zdGFydF1cIj5cbiAgICA8L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciBvLWRhdGEtdG9vbGJhci1wcm9qZWN0aW9uLWVuZD5cbiAgICAgIDxvLXNlYXJjaC1pbnB1dCAqbmdJZj1cInF1aWNrRmlsdGVyXCIgW2ZpbHRlci1jYXNlLXNlbnNpdGl2ZV09XCJmaWx0ZXJDYXNlU2Vuc2l0aXZlXCIgW3Nob3ctY2FzZS1zZW5zaXRpdmUtY2hlY2tib3hdPVwic2hvd0Nhc2VTZW5zaXRpdmVDaGVja2JveCgpXCJcbiAgICAgICAgW2NvbHVtbnNdPVwicXVpY2tGaWx0ZXJDb2x1bW5zXCIgW3BsYWNlaG9sZGVyXT1cInF1aWNrRmlsdGVyUGxhY2Vob2xkZXJcIiBbYXBwZWFyYW5jZV09XCJxdWlja0ZpbHRlckFwcGVhcmFuY2VcIiBmbG9hdC1sYWJlbD1cIm5ldmVyXCI+XG4gICAgICA8L28tc2VhcmNoLWlucHV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L28tZGF0YS10b29sYmFyPlxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJvLWxpc3QtY29udGVudFwiIGZ4RmxleD1cIjEgMSAxMDAlXCI+XG4gICAgPCEtLU1BVC1MSVNULS0+XG4gICAgPG1hdC1saXN0IChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiIFtjbGFzcy5zZWxlY3RhYmxlXT1cInNlbGVjdGFibGVcIlxuICAgICAgW2NsYXNzLm8tbGlzdC1pdGVtLWhhcy1idXR0b25zXT1cImluc2VydEJ1dHRvbiAmJiAoZWRpdEJ1dHRvbkluUm93IHx8IGRldGFpbEJ1dHRvbkluUm93KVwiICBbbmdTdHlsZV09XCJ7J3Zpc2liaWxpdHknOiAobG9hZGluZyB8IGFzeW5jKSA9PT0gZmFsc2UgPyAndmlzaWJsZSc6J2hpZGRlbid9XCI+XG5cbiAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwiIWdldERhdGFBcnJheSgpLmxlbmd0aFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtcIj5cbiAgICAgICAgPGgzIG1hdExpc3RJdGVtVGl0bGUgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICAgICAgICAgIHt7ICdUQUJMRS5FTVBUWScgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFF1aWNrRmlsdGVyVmFsdWUoKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRU1QVFlfVVNJTkdfRklMVEVSJyB8IG9UcmFuc2xhdGUgOiB7dmFsdWVzOiBbZ2V0UXVpY2tGaWx0ZXJWYWx1ZSgpXX0gfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L21hdC1saXN0PlxuICA8L2Rpdj5cbiAgPG1hdC1wYWdpbmF0b3IgZnhGbGV4PVwiMCAxIGF1dG9cIiBjbGFzcz1cIm8tbWF0LXBhZ2luYXRvclwiICNwYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uQ29udHJvbHNcIiBbbGVuZ3RoXT1cInRvdGFsUmVjb3Jkc1wiIFtwYWdlU2l6ZV09XCJxdWVyeVJvd3NcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgW3BhZ2VJbmRleF09XCJjdXJyZW50UGFnZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCIgKHBhZ2UpPVwib25DaGFuZ2VQYWdlKCRldmVudClcIlxuICAgICBbbmdTdHlsZV09XCJ7J3Zpc2liaWxpdHknOiAobG9hZGluZyB8IGFzeW5jKSA9PT0gZmFsc2UgPyAndmlzaWJsZSc6J2hpZGRlbid9XCI+PC9tYXQtcGFnaW5hdG9yPlxuXG4gIDwhLS1JTlNFUlQgQlVUVE9OIC0tPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImluc2VydEJ1dHRvbiAmJiBpbnNlcnRCdXR0b25GbG9hdGFibGVcIiBtYXQtZmFiIChjbGljayk9XCJhZGQoJGV2ZW50KVwiIGNsYXNzPVwiYWRkLWJ1dHRvbiBhZGQtYnV0dG9uLWJvdHRvbVwiXG4gICAgW2NsYXNzLmFkZC1idXR0b24tYm90dG9tXT1cImluc2VydEJ1dHRvblBvc2l0aW9uID09PSdib3R0b20nXCIgW2NsYXNzLmFkZC1idXR0b24tdG9wXT1cImluc2VydEJ1dHRvblBvc2l0aW9uID09PSd0b3AnXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphZGRcIj48L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuPC9kaXY+XG4iXX0=
@@ -1,26 +1,23 @@
1
- import { Component, ElementRef, Injector, ViewEncapsulation } from '@angular/core';
2
- import { OSkeletonComponent } from '../../o-skeleton.component';
1
+ import { Component, ViewEncapsulation } from '@angular/core';
2
+ import { ORepeatableSkeletonComponent } from '../../o-repeatable-skeleton.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/flex-layout/flex";
6
6
  import * as i3 from "ngx-skeleton-loader";
7
- export class OListSkeletonComponent extends OSkeletonComponent {
8
- constructor(elRef, injector) {
9
- super(injector);
10
- this.elRef = elRef;
11
- this.injector = injector;
7
+ export class OListSkeletonComponent extends ORepeatableSkeletonComponent {
8
+ getParentElement() {
9
+ return this.elRef.nativeElement.parentElement;
12
10
  }
13
- get count() {
14
- const parentElement = this.elRef.nativeElement.parentElement;
15
- return Array(Math.floor(parentElement.offsetHeight / 150));
11
+ getSkeletonItemElement(parentElement) {
12
+ return parentElement.querySelector('div.o-list-skeleton-item');
16
13
  }
17
14
  }
18
- OListSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListSkeletonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
19
- OListSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListSkeletonComponent, selector: "o-list-skeleton", host: { properties: { "class.o-list-skeleton": "true" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-list-skeleton-item\" *ngFor=\"let i of count\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill class=\"o-list-skeleton-item-first-section\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" appearance=\"circle\"\n [theme]=\"{ width: '50px', height: '50px' }\"></ngx-skeleton-loader>\n <div fxFlex fxLayout=\"column\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'30%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'70%' }\"></ngx-skeleton-loader>\n </div>\n </div>\n\n <div fxLayout=\"column\" class=\"o-list-skeleton-item-second-section\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\" [theme]=\"{ height:'10px',width:'70%'}\"></ngx-skeleton-loader>\n\n\n </div>\n</div>\n", styles: [".o-list-skeleton{height:100%;width:100%}.o-list-skeleton .o-list-skeleton-item{padding:20px;margin:10px}.o-list-skeleton .o-list-skeleton-item .o-list-skeleton-item-first-section{margin-bottom:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }], encapsulation: i0.ViewEncapsulation.None });
15
+ OListSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListSkeletonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
16
+ OListSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListSkeletonComponent, selector: "o-list-skeleton", host: { properties: { "class.o-list-skeleton": "true" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-list-skeleton-item\" *ngFor=\"let row of rows$ | async\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill class=\"o-list-skeleton-item-first-section\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" appearance=\"circle\"\n [theme]=\"{ width: '50px', height: '50px' }\"></ngx-skeleton-loader>\n <div fxFlex fxLayout=\"column\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'30%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'70%' }\"></ngx-skeleton-loader>\n </div>\n </div>\n\n <div fxLayout=\"column\" class=\"o-list-skeleton-item-second-section\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\" [theme]=\"{ height:'10px',width:'70%'}\"></ngx-skeleton-loader>\n\n </div>\n</div>\n", styles: [".o-list-skeleton{height:100%;width:100%;overflow:hidden}.o-list-skeleton .o-list-skeleton-item{padding:20px;margin:10px}.o-list-skeleton .o-list-skeleton-item .o-list-skeleton-item-first-section{margin-bottom:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
20
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListSkeletonComponent, decorators: [{
21
18
  type: Component,
22
19
  args: [{ selector: 'o-list-skeleton', encapsulation: ViewEncapsulation.None, host: {
23
20
  '[class.o-list-skeleton]': 'true'
24
- }, template: "<div class=\"o-list-skeleton-item\" *ngFor=\"let i of count\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill class=\"o-list-skeleton-item-first-section\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" appearance=\"circle\"\n [theme]=\"{ width: '50px', height: '50px' }\"></ngx-skeleton-loader>\n <div fxFlex fxLayout=\"column\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'30%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'70%' }\"></ngx-skeleton-loader>\n </div>\n </div>\n\n <div fxLayout=\"column\" class=\"o-list-skeleton-item-second-section\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\" [theme]=\"{ height:'10px',width:'70%'}\"></ngx-skeleton-loader>\n\n\n </div>\n</div>\n", styles: [".o-list-skeleton{height:100%;width:100%}.o-list-skeleton .o-list-skeleton-item{padding:20px;margin:10px}.o-list-skeleton .o-list-skeleton-item .o-list-skeleton-item-first-section{margin-bottom:20px}\n"] }]
25
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }]; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LXNrZWxldG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvc2tlbGV0b24vby1saXN0LXNrZWxldG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvc2tlbGV0b24vby1saXN0LXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFXaEUsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGtCQUFrQjtJQUU1RCxZQUFzQixLQUFpQixFQUFZLFFBQWtCO1FBQ25FLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQURLLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXJFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDN0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFN0QsQ0FBQzs7b0hBVlUsc0JBQXNCO3dHQUF0QixzQkFBc0IseUlDWm5DLHEwQ0FzQkE7NEZEVmEsc0JBQXNCO2tCQVRsQyxTQUFTOytCQUNFLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLHlCQUF5QixFQUFFLE1BQU07cUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9Ta2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL28tc2tlbGV0b24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1saXN0LXNrZWxldG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGlzdC1za2VsZXRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tbGlzdC1za2VsZXRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWxpc3Qtc2tlbGV0b25dJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RTa2VsZXRvbkNvbXBvbmVudCBleHRlbmRzIE9Ta2VsZXRvbkNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpXG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIHJldHVybiBBcnJheShNYXRoLmZsb29yKHBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMTUwKSk7XG5cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tbGlzdC1za2VsZXRvbi1pdGVtXCIgKm5nRm9yPVwibGV0IGkgb2YgY291bnRcIj5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZpbGwgY2xhc3M9XCJvLWxpc3Qtc2tlbGV0b24taXRlbS1maXJzdC1zZWN0aW9uXCI+XG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCJcbiAgICAgIFt0aGVtZV09XCJ7IHdpZHRoOiAnNTBweCcsIGhlaWdodDogJzUwcHgnIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgPGRpdiBmeEZsZXggZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCIgY291bnQ9XCIxXCJcbiAgICAgICAgW3RoZW1lXT1cInsgaGVpZ2h0OicxMHB4Jywgd2lkdGg6JzMwJScgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiIGNvdW50PVwiMVwiXG4gICAgICAgIFt0aGVtZV09XCJ7IGhlaWdodDonMTBweCcsIHdpZHRoOic3MCUnIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cIm8tbGlzdC1za2VsZXRvbi1pdGVtLXNlY29uZC1zZWN0aW9uXCI+XG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIiBjb3VudD1cIjFcIlxuICAgICAgW3RoZW1lXT1cInsgaGVpZ2h0OicxMHB4Jywgd2lkdGg6JzkwJScgfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiIGNvdW50PVwiMVwiXG4gICAgICBbdGhlbWVdPVwieyBoZWlnaHQ6JzEwcHgnLCB3aWR0aDonOTAlJyB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCIgY291bnQ9XCIxXCIgW3RoZW1lXT1cInsgaGVpZ2h0OicxMHB4Jyx3aWR0aDonNzAlJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG5cblxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
21
+ }, template: "<div class=\"o-list-skeleton-item\" *ngFor=\"let row of rows$ | async\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFill class=\"o-list-skeleton-item-first-section\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" appearance=\"circle\"\n [theme]=\"{ width: '50px', height: '50px' }\"></ngx-skeleton-loader>\n <div fxFlex fxLayout=\"column\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'30%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'70%' }\"></ngx-skeleton-loader>\n </div>\n </div>\n\n <div fxLayout=\"column\" class=\"o-list-skeleton-item-second-section\">\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\"\n [theme]=\"{ height:'10px', width:'90%' }\"></ngx-skeleton-loader>\n <ngx-skeleton-loader animation=\"{{isDarkMode?'progress-dark':'progress'}}\" count=\"1\" [theme]=\"{ height:'10px',width:'70%'}\"></ngx-skeleton-loader>\n\n </div>\n</div>\n", styles: [".o-list-skeleton{height:100%;width:100%;overflow:hidden}.o-list-skeleton .o-list-skeleton-item{padding:20px;margin:10px}.o-list-skeleton .o-list-skeleton-item .o-list-skeleton-item-first-section{margin-bottom:20px}\n"] }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LXNrZWxldG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvc2tlbGV0b24vby1saXN0LXNrZWxldG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2xpc3Qvc2tlbGV0b24vby1saXN0LXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7O0FBWXJGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSw0QkFBNEI7SUFDdEUsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7SUFDaEQsQ0FBQztJQUNELHNCQUFzQixDQUFDLGFBQTBCO1FBQy9DLE9BQU8sYUFBYSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7O29IQU5VLHNCQUFzQjt3R0FBdEIsc0JBQXNCLHlJQ2RuQyw2MENBcUJBOzRGRFBhLHNCQUFzQjtrQkFWbEMsU0FBUzsrQkFDRSxpQkFBaUIsaUJBR1osaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSix5QkFBeUIsRUFBRSxNQUFNO3FCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT1JlcGVhdGFibGVTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL28tcmVwZWF0YWJsZS1za2VsZXRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWxpc3Qtc2tlbGV0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vby1saXN0LXNrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1saXN0LXNrZWxldG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tbGlzdC1za2VsZXRvbl0nOiAndHJ1ZSdcbiAgfVxufSlcblxuZXhwb3J0IGNsYXNzIE9MaXN0U2tlbGV0b25Db21wb25lbnQgZXh0ZW5kcyBPUmVwZWF0YWJsZVNrZWxldG9uQ29tcG9uZW50IHtcbiAgZ2V0UGFyZW50RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIGdldFNrZWxldG9uSXRlbUVsZW1lbnQocGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm8tbGlzdC1za2VsZXRvbi1pdGVtJyk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm8tbGlzdC1za2VsZXRvbi1pdGVtXCIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzJCB8IGFzeW5jXCI+XG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhGaWxsIGNsYXNzPVwiby1saXN0LXNrZWxldG9uLWl0ZW0tZmlyc3Qtc2VjdGlvblwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiXG4gICAgICBbdGhlbWVdPVwieyB3aWR0aDogJzUwcHgnLCBoZWlnaHQ6ICc1MHB4JyB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwiY29sdW1uXCI+XG4gICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiIGNvdW50PVwiMVwiXG4gICAgICAgIFt0aGVtZV09XCJ7IGhlaWdodDonMTBweCcsIHdpZHRoOiczMCUnICB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIiBjb3VudD1cIjFcIlxuICAgICAgICBbdGhlbWVdPVwieyBoZWlnaHQ6JzEwcHgnLCB3aWR0aDonNzAlJyB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJvLWxpc3Qtc2tlbGV0b24taXRlbS1zZWNvbmQtc2VjdGlvblwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCIgY291bnQ9XCIxXCJcbiAgICAgIFt0aGVtZV09XCJ7IGhlaWdodDonMTBweCcsIHdpZHRoOic5MCUnIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIiBjb3VudD1cIjFcIlxuICAgICAgW3RoZW1lXT1cInsgaGVpZ2h0OicxMHB4Jywgd2lkdGg6JzkwJScgfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiIGNvdW50PVwiMVwiIFt0aGVtZV09XCJ7IGhlaWdodDonMTBweCcsd2lkdGg6JzcwJSd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuXG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=