ngx-edu-sharing-ui 9999.0.2 → 9999.0.4

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 (47) hide show
  1. package/esm2022/lib/actionbar/actionbar.component.mjs +31 -16
  2. package/esm2022/lib/directives/icon.directive.mjs +24 -7
  3. package/esm2022/lib/dropdown/dropdown.component.mjs +15 -8
  4. package/esm2022/lib/list-items/list-text/list-text.component.mjs +3 -3
  5. package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +3 -3
  6. package/esm2022/lib/node-entries/entries-model.mjs +1 -1
  7. package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +6 -4
  8. package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +16 -13
  9. package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +2 -2
  10. package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +5 -3
  11. package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +8 -3
  12. package/esm2022/lib/node-entries/option-button/option-button.component.mjs +7 -5
  13. package/esm2022/lib/pipes/file-size.pipe.mjs +6 -5
  14. package/esm2022/lib/pipes/node-title.pipe.mjs +7 -1
  15. package/esm2022/lib/pipes/option-tooltip.pipe.mjs +3 -3
  16. package/esm2022/lib/services/abstract/options-helper.service.mjs +1 -1
  17. package/esm2022/lib/services/node-entries.service.mjs +1 -1
  18. package/esm2022/lib/services/node-helper.service.mjs +5 -2
  19. package/esm2022/lib/services/options-helper-data.service.mjs +2 -2
  20. package/esm2022/lib/services/search-helper.service.mjs +52 -0
  21. package/esm2022/lib/services/ui.service.mjs +16 -1
  22. package/esm2022/lib/translations/translation-loader.mjs +7 -6
  23. package/esm2022/lib/translations/translations.service.mjs +14 -4
  24. package/esm2022/lib/types/option-item.mjs +6 -1
  25. package/esm2022/module.mjs +2 -1
  26. package/fesm2022/ngx-edu-sharing-ui.mjs +214 -74
  27. package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
  28. package/lib/actionbar/actionbar.component.d.ts +13 -3
  29. package/lib/directives/icon.directive.d.ts +5 -3
  30. package/lib/dropdown/dropdown.component.d.ts +6 -3
  31. package/lib/list-items/list-text/list-text.component.d.ts +3 -3
  32. package/lib/list-items/list-widget.d.ts +1 -1
  33. package/lib/node-entries/entries-model.d.ts +1 -1
  34. package/lib/node-entries/node-entries-card/node-entries-card.component.d.ts +1 -1
  35. package/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.d.ts +1 -1
  36. package/lib/node-entries/option-button/option-button.component.d.ts +2 -1
  37. package/lib/pipes/node-title.pipe.d.ts +2 -1
  38. package/lib/pipes/option-tooltip.pipe.d.ts +1 -1
  39. package/lib/services/abstract/options-helper.service.d.ts +1 -1
  40. package/lib/services/node-helper.service.d.ts +2 -2
  41. package/lib/services/options-helper-data.service.d.ts +3 -3
  42. package/lib/services/search-helper.service.d.ts +21 -0
  43. package/lib/services/ui.service.d.ts +7 -1
  44. package/lib/translations/translations.service.d.ts +5 -2
  45. package/lib/types/option-item.d.ts +7 -2
  46. package/module.d.ts +1 -0
  47. package/package.json +1 -1
@@ -3,6 +3,7 @@ import { Component, Input } from '@angular/core';
3
3
  import { UIAnimation } from '../util/ui-animation';
4
4
  import { UIConstants } from '../util/ui-constants';
5
5
  import { Helper } from '../util/helper';
6
+ import { BehaviorSubject } from 'rxjs';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../services/ui.service";
8
9
  import * as i2 from "@ngx-translate/core";
@@ -68,26 +69,36 @@ export class ActionbarComponent {
68
69
  * Should disabled ("greyed out") options be shown or hidden?
69
70
  */
70
71
  this.showDisabled = true;
72
+ /**
73
+ * the position of the mat tooltips
74
+ */
75
+ this.tooltipPosition = 'below';
76
+ /**
77
+ * breakpoint width at which point the mobile display count is used
78
+ */
79
+ this.mobileBreakpoint = UIConstants.MOBILE_WIDTH;
71
80
  this.optionsIn = [];
72
- this.optionsAlways = [];
73
- this.optionsMenu = [];
81
+ this.optionsAlways$ = new BehaviorSubject([]);
82
+ this.optionsMenu$ = new BehaviorSubject([]);
74
83
  this.optionsToggle = [];
75
84
  }
76
85
  prepareOptions(options) {
77
86
  options = this.uiService.filterValidOptions(Helper.deepCopyArray(options));
78
87
  if (options == null) {
79
- this.optionsAlways = [];
80
- this.optionsMenu = [];
88
+ this.optionsAlways$.next([]);
89
+ this.optionsMenu$.next([]);
81
90
  return;
82
91
  }
83
92
  this.optionsToggle = this.uiService.filterToggleOptions(options, true);
84
- this.optionsAlways = this.getActionOptions(this.uiService.filterToggleOptions(options, false)).slice(0, this.getNumberOptions());
85
- if (!this.optionsAlways.length) {
86
- this.optionsAlways = this.uiService
93
+ this.optionsAlways$.next(this.getActionOptions(this.uiService.filterToggleOptions(options, false)).slice(0, this.getNumberOptions()));
94
+ if (!this.optionsAlways$.value.length) {
95
+ this.optionsAlways$.next(this.uiService
87
96
  .filterToggleOptions(options, false)
88
- .slice(0, this.getNumberOptions());
97
+ .slice(0, this.getNumberOptions()));
89
98
  }
90
- this.optionsMenu = this.hideActionOptions(this.uiService.filterToggleOptions(options, false), this.optionsAlways);
99
+ this.optionsMenu$.next(this.hideActionOptions(this.uiService.filterToggleOptions(options, false), this.optionsAlways$.value));
100
+ this.uiService.updateOptionEnabledState(this.optionsAlways$);
101
+ this.uiService.updateOptionEnabledState(this.optionsMenu$);
91
102
  // may causes weird looking
92
103
  /*if(this.optionsMenu.length<2) {
93
104
  this.optionsAlways = this.optionsAlways.concat(this.optionsMenu);
@@ -95,7 +106,7 @@ export class ActionbarComponent {
95
106
  }*/
96
107
  }
97
108
  getNumberOptions() {
98
- if (window.innerWidth < UIConstants.MOBILE_WIDTH) {
109
+ if (window.innerWidth < this.mobileBreakpoint) {
99
110
  return this.numberOfAlwaysVisibleOptionsMobile;
100
111
  }
101
112
  return this.numberOfAlwaysVisibleOptions;
@@ -142,17 +153,17 @@ export class ActionbarComponent {
142
153
  return filtered;
143
154
  }
144
155
  canShowDropdown() {
145
- if (!this.optionsMenu.length) {
156
+ if (!this.optionsMenu$.value.length) {
146
157
  return false;
147
158
  }
148
- return this.optionsMenu.filter((o) => o.isEnabled).length > 0;
159
+ return this.optionsMenu$.value.filter((o) => o.isEnabled).length > 0;
149
160
  }
150
161
  shouldHighlight(optionIndex, option) {
151
162
  switch (this.highlight) {
152
163
  case 'first':
153
164
  return optionIndex === 0;
154
165
  case 'last':
155
- return optionIndex === this.optionsAlways.length - 1;
166
+ return optionIndex === this.optionsAlways$.value.length - 1;
156
167
  case 'manual':
157
168
  return option.isPrimary;
158
169
  }
@@ -161,11 +172,11 @@ export class ActionbarComponent {
161
172
  this.invalidate();
162
173
  }
163
174
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ActionbarComponent, deps: [{ token: i1.UIService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ActionbarComponent, selector: "es-actionbar", inputs: { numberOfAlwaysVisibleOptions: "numberOfAlwaysVisibleOptions", numberOfAlwaysVisibleOptionsMobile: "numberOfAlwaysVisibleOptionsMobile", appearance: "appearance", dropdownPosition: "dropdownPosition", backgroundType: "backgroundType", style: "style", highlight: "highlight", showDisabled: "showDisabled", options: "options" }, usesOnChanges: true, ngImport: i0, template: "<es-dropdown\n #dropdownRef\n [options]=\"optionsMenu\"\n [showDisabled]=\"showDisabled\"\n [position]=\"dropdownPosition\"\n></es-dropdown>\n<div\n class=\"actionbar\"\n [class.actionbar-all-flat]=\"style === 'flat'\"\n [class.actionbar-background-dark]=\"backgroundType === 'dark'\"\n [class.actionbar-background-primary]=\"backgroundType === 'primary'\"\n [class.actionbar-round]=\"appearance === 'round'\"\n [class.actionbar-icon-button]=\"appearance === 'icon-button'\"\n>\n <ng-container *ngFor=\"let option of optionsAlways; let i = index\">\n <button\n *ngIf=\"shouldHighlight(i, option)\"\n mat-flat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class.display-none]=\"!option.isEnabled && !showDisabled\"\n matTooltip=\"{{ option | optionTooltip }}\"\n [attr.aria-label]=\"option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n <button\n *ngIf=\"!shouldHighlight(i, option)\"\n mat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class.display-none]=\"!option.isEnabled && !showDisabled\"\n matTooltip=\"{{ option | optionTooltip }}\"\n [attr.aria-label]=\"option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n </ng-container>\n <button\n mat-button\n color=\"primary\"\n class=\"more\"\n [attr.aria-label]=\"'OPTIONS.SHOW_ALL_OPTIONS' | translate\"\n [matMenuTriggerFor]=\"dropdownRef.menu\"\n *ngIf=\"canShowDropdown()\"\n data-test=\"more-actions-button\"\n >\n <i esIcon=\"more_vert\" [aria]=\"false\"></i>\n </button>\n <div\n *ngIf=\"optionsToggle.length\"\n class=\"actionToggle\"\n [class.actionToggleDivider]=\"optionsAlways.length\"\n >\n <button\n *ngFor=\"let option of optionsToggle\"\n mat-icon-button\n matTooltip=\"{{ option.name | translate }}\"\n [attr.aria-label]=\"option.name | translate\"\n (click)=\"click(option)\"\n [class.disabled]=\"!option.isEnabled\"\n attr.data-test=\"toggle-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" [aria]=\"false\"></i>\n </button>\n </div>\n</div>\n", styles: [".actionbar{display:flex;align-items:center;gap:10px}.actionToggle>button{color:var(--textLight)}button{min-width:unset}.light{color:#fff;background:transparent}.disabled{pointer-events:all}.light a{color:#fff}.actionToggleDivider{padding-left:10px;border-left:1px solid #ddd}.more{color:var(--primary);background-color:transparent}.actionbar-background-dark .mat-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-dark .mat-button:disabled{color:rgba(var(--palette-foreground-text-dark),.75)}.actionbar-background-primary .mdc-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-primary .mat-mdc-unelevated-button{background-color:#fff;color:var(--primary)}.actionbar-background-primary .mat-mdc-unelevated-button:disabled{color:#00000080;background-color:#eee}.actionbar-round button{width:45px;height:45px;justify-content:center}.actionbar-round button{border-radius:50%;box-shadow:0 0 5px #0000004d}.actionbar-round.actionbar-background-primary .mat-button{background-color:#fff;color:var(--primary)}.actionbar-round.actionbar-all-flat button{background:#fff;color:var(--primary)!important}.actionbar-round.actionbar-all-flat button:disabled{color:var(--textLight)!important}.actionbar-round .more,.actionbar-round .actionAlways{background:#fff;color:var(--primary);display:flex;width:45px;height:45px;line-height:45px;text-align:center;align-items:center}.actionbar-round .more .edu-icons,.actionbar-round .more .material-icons,.actionbar-round .actionAlways .edu-icons,.actionbar-round .actionAlways .material-icons{position:relative;font-size:24px}.actionbar-round .more span,.actionbar-round .actionAlways span{display:none}.actionbar-round .action-always .edu-icons,.actionbar-round .action-always .material-icons{right:4px!important}@media screen and (max-width: calc(var(--mobileWidth) + var(--mobileStage) * 4)){.action-always{padding:0 1rem}.action-always-caption{display:none}.mat-flat-button{padding:5px}}.actionbar-icon-button .action-always{padding:0 1rem}.actionbar-icon-button .action-always-caption{display:none}.actionbar-icon-button .mat-flat-button{padding:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i7.DropdownComponent, selector: "es-dropdown", inputs: ["position", "options", "callbackObject", "showDisabled", "menuClass"] }, { kind: "directive", type: i8.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i9.OptionTooltipPipe, name: "optionTooltip" }], animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))] }); }
175
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ActionbarComponent, selector: "es-actionbar", inputs: { numberOfAlwaysVisibleOptions: "numberOfAlwaysVisibleOptions", numberOfAlwaysVisibleOptionsMobile: "numberOfAlwaysVisibleOptionsMobile", appearance: "appearance", dropdownPosition: "dropdownPosition", backgroundType: "backgroundType", style: "style", highlight: "highlight", showDisabled: "showDisabled", tooltipPosition: "tooltipPosition", options: "options", mobileBreakpoint: "mobileBreakpoint" }, usesOnChanges: true, ngImport: i0, template: "<es-dropdown\n #dropdownRef\n [options]=\"optionsMenu$ | async\"\n [showDisabled]=\"showDisabled\"\n [position]=\"dropdownPosition\"\n></es-dropdown>\n<div\n class=\"actionbar\"\n [class.actionbar-all-flat]=\"style === 'flat'\"\n [class.actionbar-background-dark]=\"backgroundType === 'dark'\"\n [class.actionbar-background-primary]=\"backgroundType === 'primary'\"\n [class.actionbar-round]=\"appearance === 'round'\"\n [class.actionbar-icon-button]=\"appearance === 'icon-button'\"\n>\n <ng-container *ngFor=\"let option of optionsAlways$ | async; let i = index\">\n <button\n *ngIf=\"shouldHighlight(i, option)\"\n mat-flat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class.display-none]=\"!option.isEnabled && !showDisabled\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n [matTooltipPosition]=\"tooltipPosition\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n <button\n *ngIf=\"!shouldHighlight(i, option)\"\n mat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class.display-none]=\"!option.isEnabled && !showDisabled\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n [matTooltipPosition]=\"tooltipPosition\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n </ng-container>\n <button\n mat-button\n color=\"primary\"\n class=\"more\"\n [attr.aria-label]=\"'OPTIONS.SHOW_ALL_OPTIONS' | translate\"\n [matMenuTriggerFor]=\"dropdownRef.menu\"\n *ngIf=\"canShowDropdown()\"\n data-test=\"more-actions-button\"\n >\n <i esIcon=\"more_vert\" [aria]=\"false\"></i>\n </button>\n <div\n *ngIf=\"optionsToggle.length\"\n class=\"actionToggle\"\n [class.actionToggleDivider]=\"(optionsAlways$ | async).length\"\n >\n <button\n *ngFor=\"let option of optionsToggle\"\n mat-icon-button\n matTooltip=\"{{ option.name | translate }}\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n [class.disabled]=\"!option.isEnabled\"\n attr.data-test=\"toggle-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" [aria]=\"false\"></i>\n </button>\n </div>\n</div>\n", styles: [".actionbar{display:flex;align-items:center;gap:10px}.actionToggle>button{color:var(--textLight)}button{min-width:unset}.light{color:#fff;background:transparent}.disabled{pointer-events:all}.light a{color:#fff}.actionToggleDivider{padding-left:10px;border-left:1px solid #ddd}.more{color:var(--primary);background-color:transparent}.actionbar-background-dark .mat-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-dark .mat-button:disabled{color:rgba(var(--palette-foreground-text-dark),.75)}.actionbar-background-primary .mdc-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-primary .mat-mdc-unelevated-button{background-color:#fff;color:var(--primary)}.actionbar-background-primary .mat-mdc-unelevated-button:disabled{color:#00000080;background-color:#eee}.actionbar-round button{width:45px;height:45px;justify-content:center}.actionbar-round button{border-radius:50%;box-shadow:0 0 5px #0000004d}.actionbar-round.actionbar-background-primary .mat-button{background-color:#fff;color:var(--primary)}.actionbar-round.actionbar-all-flat button{background:#fff;color:var(--primary)!important}.actionbar-round.actionbar-all-flat button:disabled{color:var(--textLight)!important}.actionbar-round .more,.actionbar-round .actionAlways{background:#fff;color:var(--primary);display:flex;width:45px;height:45px;line-height:45px;text-align:center;align-items:center}.actionbar-round .more .edu-icons,.actionbar-round .more .material-icons,.actionbar-round .actionAlways .edu-icons,.actionbar-round .actionAlways .material-icons{position:relative;font-size:24px}.actionbar-round .more span,.actionbar-round .actionAlways span{display:none}.actionbar-round .action-always .edu-icons,.actionbar-round .action-always .material-icons{right:4px!important}@media screen and (max-width: calc(var(--mobileWidth) + var(--mobileStage) * 4)){.action-always{padding:0 1rem}.action-always-caption{display:none}.mat-flat-button{padding:5px}}.actionbar-icon-button .action-always{padding:0 1rem}.actionbar-icon-button .action-always-caption{display:none}.actionbar-icon-button .mat-flat-button{padding:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i7.DropdownComponent, selector: "es-dropdown", inputs: ["position", "options", "callbackObject", "showDisabled", "menuClass"] }, { kind: "directive", type: i8.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i9.OptionTooltipPipe, name: "optionTooltip" }], animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))] }); }
165
176
  }
166
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ActionbarComponent, decorators: [{
167
178
  type: Component,
168
- args: [{ selector: 'es-actionbar', animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))], template: "<es-dropdown\n #dropdownRef\n [options]=\"optionsMenu\"\n [showDisabled]=\"showDisabled\"\n [position]=\"dropdownPosition\"\n></es-dropdown>\n<div\n class=\"actionbar\"\n [class.actionbar-all-flat]=\"style === 'flat'\"\n [class.actionbar-background-dark]=\"backgroundType === 'dark'\"\n [class.actionbar-background-primary]=\"backgroundType === 'primary'\"\n [class.actionbar-round]=\"appearance === 'round'\"\n [class.actionbar-icon-button]=\"appearance === 'icon-button'\"\n>\n <ng-container *ngFor=\"let option of optionsAlways; let i = index\">\n <button\n *ngIf=\"shouldHighlight(i, option)\"\n mat-flat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class.display-none]=\"!option.isEnabled && !showDisabled\"\n matTooltip=\"{{ option | optionTooltip }}\"\n [attr.aria-label]=\"option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n <button\n *ngIf=\"!shouldHighlight(i, option)\"\n mat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class.display-none]=\"!option.isEnabled && !showDisabled\"\n matTooltip=\"{{ option | optionTooltip }}\"\n [attr.aria-label]=\"option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n </ng-container>\n <button\n mat-button\n color=\"primary\"\n class=\"more\"\n [attr.aria-label]=\"'OPTIONS.SHOW_ALL_OPTIONS' | translate\"\n [matMenuTriggerFor]=\"dropdownRef.menu\"\n *ngIf=\"canShowDropdown()\"\n data-test=\"more-actions-button\"\n >\n <i esIcon=\"more_vert\" [aria]=\"false\"></i>\n </button>\n <div\n *ngIf=\"optionsToggle.length\"\n class=\"actionToggle\"\n [class.actionToggleDivider]=\"optionsAlways.length\"\n >\n <button\n *ngFor=\"let option of optionsToggle\"\n mat-icon-button\n matTooltip=\"{{ option.name | translate }}\"\n [attr.aria-label]=\"option.name | translate\"\n (click)=\"click(option)\"\n [class.disabled]=\"!option.isEnabled\"\n attr.data-test=\"toggle-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" [aria]=\"false\"></i>\n </button>\n </div>\n</div>\n", styles: [".actionbar{display:flex;align-items:center;gap:10px}.actionToggle>button{color:var(--textLight)}button{min-width:unset}.light{color:#fff;background:transparent}.disabled{pointer-events:all}.light a{color:#fff}.actionToggleDivider{padding-left:10px;border-left:1px solid #ddd}.more{color:var(--primary);background-color:transparent}.actionbar-background-dark .mat-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-dark .mat-button:disabled{color:rgba(var(--palette-foreground-text-dark),.75)}.actionbar-background-primary .mdc-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-primary .mat-mdc-unelevated-button{background-color:#fff;color:var(--primary)}.actionbar-background-primary .mat-mdc-unelevated-button:disabled{color:#00000080;background-color:#eee}.actionbar-round button{width:45px;height:45px;justify-content:center}.actionbar-round button{border-radius:50%;box-shadow:0 0 5px #0000004d}.actionbar-round.actionbar-background-primary .mat-button{background-color:#fff;color:var(--primary)}.actionbar-round.actionbar-all-flat button{background:#fff;color:var(--primary)!important}.actionbar-round.actionbar-all-flat button:disabled{color:var(--textLight)!important}.actionbar-round .more,.actionbar-round .actionAlways{background:#fff;color:var(--primary);display:flex;width:45px;height:45px;line-height:45px;text-align:center;align-items:center}.actionbar-round .more .edu-icons,.actionbar-round .more .material-icons,.actionbar-round .actionAlways .edu-icons,.actionbar-round .actionAlways .material-icons{position:relative;font-size:24px}.actionbar-round .more span,.actionbar-round .actionAlways span{display:none}.actionbar-round .action-always .edu-icons,.actionbar-round .action-always .material-icons{right:4px!important}@media screen and (max-width: calc(var(--mobileWidth) + var(--mobileStage) * 4)){.action-always{padding:0 1rem}.action-always-caption{display:none}.mat-flat-button{padding:5px}}.actionbar-icon-button .action-always{padding:0 1rem}.actionbar-icon-button .action-always-caption{display:none}.actionbar-icon-button .mat-flat-button{padding:5px}\n"] }]
179
+ args: [{ selector: 'es-actionbar', animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))], template: "<es-dropdown\n #dropdownRef\n [options]=\"optionsMenu$ | async\"\n [showDisabled]=\"showDisabled\"\n [position]=\"dropdownPosition\"\n></es-dropdown>\n<div\n class=\"actionbar\"\n [class.actionbar-all-flat]=\"style === 'flat'\"\n [class.actionbar-background-dark]=\"backgroundType === 'dark'\"\n [class.actionbar-background-primary]=\"backgroundType === 'primary'\"\n [class.actionbar-round]=\"appearance === 'round'\"\n [class.actionbar-icon-button]=\"appearance === 'icon-button'\"\n>\n <ng-container *ngFor=\"let option of optionsAlways$ | async; let i = index\">\n <button\n *ngIf=\"shouldHighlight(i, option)\"\n mat-flat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class.display-none]=\"!option.isEnabled && !showDisabled\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n [matTooltipPosition]=\"tooltipPosition\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n <button\n *ngIf=\"!shouldHighlight(i, option)\"\n mat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class.display-none]=\"!option.isEnabled && !showDisabled\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n [matTooltipPosition]=\"tooltipPosition\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n </ng-container>\n <button\n mat-button\n color=\"primary\"\n class=\"more\"\n [attr.aria-label]=\"'OPTIONS.SHOW_ALL_OPTIONS' | translate\"\n [matMenuTriggerFor]=\"dropdownRef.menu\"\n *ngIf=\"canShowDropdown()\"\n data-test=\"more-actions-button\"\n >\n <i esIcon=\"more_vert\" [aria]=\"false\"></i>\n </button>\n <div\n *ngIf=\"optionsToggle.length\"\n class=\"actionToggle\"\n [class.actionToggleDivider]=\"(optionsAlways$ | async).length\"\n >\n <button\n *ngFor=\"let option of optionsToggle\"\n mat-icon-button\n matTooltip=\"{{ option.name | translate }}\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n [class.disabled]=\"!option.isEnabled\"\n attr.data-test=\"toggle-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" [aria]=\"false\"></i>\n </button>\n </div>\n</div>\n", styles: [".actionbar{display:flex;align-items:center;gap:10px}.actionToggle>button{color:var(--textLight)}button{min-width:unset}.light{color:#fff;background:transparent}.disabled{pointer-events:all}.light a{color:#fff}.actionToggleDivider{padding-left:10px;border-left:1px solid #ddd}.more{color:var(--primary);background-color:transparent}.actionbar-background-dark .mat-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-dark .mat-button:disabled{color:rgba(var(--palette-foreground-text-dark),.75)}.actionbar-background-primary .mdc-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-primary .mat-mdc-unelevated-button{background-color:#fff;color:var(--primary)}.actionbar-background-primary .mat-mdc-unelevated-button:disabled{color:#00000080;background-color:#eee}.actionbar-round button{width:45px;height:45px;justify-content:center}.actionbar-round button{border-radius:50%;box-shadow:0 0 5px #0000004d}.actionbar-round.actionbar-background-primary .mat-button{background-color:#fff;color:var(--primary)}.actionbar-round.actionbar-all-flat button{background:#fff;color:var(--primary)!important}.actionbar-round.actionbar-all-flat button:disabled{color:var(--textLight)!important}.actionbar-round .more,.actionbar-round .actionAlways{background:#fff;color:var(--primary);display:flex;width:45px;height:45px;line-height:45px;text-align:center;align-items:center}.actionbar-round .more .edu-icons,.actionbar-round .more .material-icons,.actionbar-round .actionAlways .edu-icons,.actionbar-round .actionAlways .material-icons{position:relative;font-size:24px}.actionbar-round .more span,.actionbar-round .actionAlways span{display:none}.actionbar-round .action-always .edu-icons,.actionbar-round .action-always .material-icons{right:4px!important}@media screen and (max-width: calc(var(--mobileWidth) + var(--mobileStage) * 4)){.action-always{padding:0 1rem}.action-always-caption{display:none}.mat-flat-button{padding:5px}}.actionbar-icon-button .action-always{padding:0 1rem}.actionbar-icon-button .action-always-caption{display:none}.actionbar-icon-button .mat-flat-button{padding:5px}\n"] }]
169
180
  }], ctorParameters: () => [{ type: i1.UIService }, { type: i2.TranslateService }], propDecorators: { numberOfAlwaysVisibleOptions: [{
170
181
  type: Input
171
182
  }], numberOfAlwaysVisibleOptionsMobile: [{
@@ -182,7 +193,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
182
193
  type: Input
183
194
  }], showDisabled: [{
184
195
  type: Input
196
+ }], tooltipPosition: [{
197
+ type: Input
185
198
  }], options: [{
186
199
  type: Input
200
+ }], mobileBreakpoint: [{
201
+ type: Input
187
202
  }] } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvYWN0aW9uYmFyL2FjdGlvbmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2FjdGlvbmJhci9hY3Rpb25iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFReEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBMkMzQjs7T0FFRztJQUNILElBQWEsT0FBTyxDQUFDLE9BQXFCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQU9ELFlBQW9CLFNBQW9CLEVBQVUsU0FBMkI7UUFBekQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBdkQ3RTs7OztXQUlHO1FBQ00saUNBQTRCLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLHVDQUFrQyxHQUFHLENBQUMsQ0FBQztRQUNoRDs7Ozs7Ozs7V0FRRztRQUNNLGVBQVUsR0FBdUMsUUFBUSxDQUFDO1FBQ25FOzs7V0FHRztRQUNNLHFCQUFnQixHQUFxQixNQUFNLENBQUM7UUFFckQ7O1dB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UUFBUTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBMUpRLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHlaQ2xCL0Isa2hGQTJFQSw4bkhEOURnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDOzsyRkFLckYsa0JBQWtCO2tCQVQ5QixTQUFTOytCQUNJLGNBQWMsY0FHWixDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDOzZHQVdyRiw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBQ0csa0NBQWtDO3NCQUExQyxLQUFLO2dCQVVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBVSUFuaW1hdGlvbiB9IGZyb20gJy4uL3V0aWwvdWktYW5pbWF0aW9uJztcbmltcG9ydCB7IFVJQ29uc3RhbnRzIH0gZnJvbSAnLi4vdXRpbC91aS1jb25zdGFudHMnO1xuaW1wb3J0IHsgT3B0aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL29wdGlvbi1pdGVtJztcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VpLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vdXRpbC9oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLWFjdGlvbmJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICdhY3Rpb25iYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydhY3Rpb25iYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBhbmltYXRpb25zOiBbdHJpZ2dlcignb3Blbk92ZXJsYXknLCBVSUFuaW1hdGlvbi5vcGVuT3ZlcmxheShVSUFuaW1hdGlvbi5BTklNQVRJT05fVElNRV9GQVNUKSldLFxufSlcbi8qKlxuICogVGhlIGFjdGlvbiBiYXIgcHJvdmlkZXMgc2V2ZXJhbCBpY29ucywgdXN1YWxseSBhdCB0aGUgdG9wIHJpZ2h0LCB3aXRoIGFjdGlvbnMgZm9yIGEgY3VycmVudCBjb250ZXh0XG4gKi9cbmV4cG9ydCBjbGFzcyBBY3Rpb25iYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIFRoZSBhbW91bnQgb2Ygb3B0aW9ucyB3aGljaCBhcmUgbm90IGhpZGRlbiBpbnNpZGUgYW4gb3ZlcmZsb3cgbWVudVxuICAgICAqIChkZWZhdWx0OiBkZXBlbmRpbmcgb24gbW9iaWxlICgxKSBvciBub3QgKDIpKVxuICAgICAqIEFsc28gdXNlIG51bWJlck9mQWx3YXlzVmlzaWJsZU9wdGlvbnNNb2JpbGUgdG8gY29udHJvbCB0aGUgYW1vdW50IG9mIG1vYmlsZSBvcHRpb25zIHZpc2libGVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBudW1iZXJPZkFsd2F5c1Zpc2libGVPcHRpb25zID0gMjtcbiAgICBASW5wdXQoKSBudW1iZXJPZkFsd2F5c1Zpc2libGVPcHRpb25zTW9iaWxlID0gMTtcbiAgICAvKipcbiAgICAgKiBWaXN1YWwgc3R5bGUgb2YgdGhlIGFjdGlvbmJhclxuICAgICAqXG4gICAgICogVmFsdWVzOlxuICAgICAqICAtICdidXR0b24nOiBtYXRlcmlhbCBidXR0b25zIHdpdGggaWNvbnMgYW5kIHRleHQgb24gbWVkaXVtIHRvIGxhcmdlIHNjcmVlbnNcbiAgICAgKiAgLSAnaWNvbi1idXR0b24nOiBtYXRlcmlhbCBidXR0b25zIHdpdGhvdXQgdGV4dFxuICAgICAqICAtICdyb3VuZCc6IGNpcmN1bGFyIGJ1dHRvbnMgd2l0aG91dCB0ZXh0XG4gICAgICogQGRlZmF1bHQgJ2J1dHRvbidcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcHBlYXJhbmNlOiAncm91bmQnIHwgJ2J1dHRvbicgfCAnaWNvbi1idXR0b24nID0gJ2J1dHRvbic7XG4gICAgLyoqXG4gICAgICogZHJvcGRvd25Qb3NpdGlvbiBpcyBmb3IgcG9zaXRpb24gb2YgZHJvcGRvd24gKGRlZmF1bHQgPSBsZWZ0KVxuICAgICAqIFZhbHVlcyAnbGVmdCcgb3IgJ3JpZ2h0J1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGRyb3Bkb3duUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cbiAgICAvKipcbiAgICAgKiBiYWNrZ3JvdW5kVHlwZSBmb3IgY29sb3IgbWF0Y2hpbmcsIGVpdGhlciBicmlnaHQsIGRhcmsgb3IgcHJpbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpIGJhY2tncm91bmRUeXBlOiAnYnJpZ2h0JyB8ICdkYXJrJyB8ICdwcmltYXJ5JyA9ICdicmlnaHQnO1xuICAgIC8qKlxuICAgICAqIFN0eWxlLCBjdXJyZW50bHkgZGVmYXVsdCBvciAnZmxhdCcgaWYgYWxsIGFsd2F5cyB2aXNpYmxlIGljb25zIHNob3VsZCBnZXQgYSBmbGF0IGxvb2tcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogJ2RlZmF1bHQnIHwgJ2ZsYXQnID0gJ2RlZmF1bHQnO1xuICAgIC8qKlxuICAgICAqIEhpZ2hsaWdodCBvbmUgb3IgbW9yZSBvZiB0aGUgYWx3YXlzLXZpc2libGUgYnV0dG9ucyBhcyBwcmltYXJ5IGFjdGlvbi5cbiAgICAgKlxuICAgICAqIC0gYGZpcnN0YCwgYGxhc3RgOiBUaGUgZmlyc3QgLyBsYXN0IG9mIGBvcHRpb25zQWx3YXlzYCBieSBvcmRlci5cbiAgICAgKiAtIGBtYW51YWxgOiBIaWdobGlnaHQgYWxsIG9wdGlvbnMgdGhhdCBzZXQgYGlzUHJpbWFyeSA9IHRydWVgLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGhpZ2hsaWdodDogJ2ZpcnN0JyB8ICdsYXN0JyB8ICdtYW51YWwnID0gJ2ZpcnN0JztcbiAgICAvKipcbiAgICAgKiBTaG91bGQgZGlzYWJsZWQgKFwiZ3JleWVkIG91dFwiKSBvcHRpb25zIGJlIHNob3duIG9yIGhpZGRlbj9cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93RGlzYWJsZWQgPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFNldCB0aGUgb3B0aW9ucywgc2VlIEBPcHRpb25JdGVtXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IG9wdGlvbnMob3B0aW9uczogT3B0aW9uSXRlbVtdKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc0luID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5wcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICBvcHRpb25zSW46IE9wdGlvbkl0ZW1bXSA9IFtdO1xuICAgIG9wdGlvbnNBbHdheXM6IE9wdGlvbkl0ZW1bXSA9IFtdO1xuICAgIG9wdGlvbnNNZW51OiBPcHRpb25JdGVtW10gPSBbXTtcbiAgICBvcHRpb25zVG9nZ2xlOiBPcHRpb25JdGVtW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdWlTZXJ2aWNlOiBVSVNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gICAgcHJpdmF0ZSBwcmVwYXJlT3B0aW9ucyhvcHRpb25zOiBPcHRpb25JdGVtW10pIHtcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMudWlTZXJ2aWNlLmZpbHRlclZhbGlkT3B0aW9ucyhIZWxwZXIuZGVlcENvcHlBcnJheShvcHRpb25zKSk7XG4gICAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc0Fsd2F5cyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zTWVudSA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9uc1RvZ2dsZSA9IHRoaXMudWlTZXJ2aWNlLmZpbHRlclRvZ2dsZU9wdGlvbnMob3B0aW9ucywgdHJ1ZSk7XG4gICAgICAgIHRoaXMub3B0aW9uc0Fsd2F5cyA9IHRoaXMuZ2V0QWN0aW9uT3B0aW9ucyhcbiAgICAgICAgICAgIHRoaXMudWlTZXJ2aWNlLmZpbHRlclRvZ2dsZU9wdGlvbnMob3B0aW9ucywgZmFsc2UpLFxuICAgICAgICApLnNsaWNlKDAsIHRoaXMuZ2V0TnVtYmVyT3B0aW9ucygpKTtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnNBbHdheXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNBbHdheXMgPSB0aGlzLnVpU2VydmljZVxuICAgICAgICAgICAgICAgIC5maWx0ZXJUb2dnbGVPcHRpb25zKG9wdGlvbnMsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC5zbGljZSgwLCB0aGlzLmdldE51bWJlck9wdGlvbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zTWVudSA9IHRoaXMuaGlkZUFjdGlvbk9wdGlvbnMoXG4gICAgICAgICAgICB0aGlzLnVpU2VydmljZS5maWx0ZXJUb2dnbGVPcHRpb25zKG9wdGlvbnMsIGZhbHNlKSxcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc0Fsd2F5cyxcbiAgICAgICAgKTtcbiAgICAgICAgLy8gbWF5IGNhdXNlcyB3ZWlyZCBsb29raW5nXG4gICAgICAgIC8qaWYodGhpcy5vcHRpb25zTWVudS5sZW5ndGg8Mikge1xuICAgICAgdGhpcy5vcHRpb25zQWx3YXlzID0gdGhpcy5vcHRpb25zQWx3YXlzLmNvbmNhdCh0aGlzLm9wdGlvbnNNZW51KTtcbiAgICAgIHRoaXMub3B0aW9uc01lbnUgPSBbXTtcbiAgICB9Ki9cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TnVtYmVyT3B0aW9ucygpIHtcbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgVUlDb25zdGFudHMuTU9CSUxFX1dJRFRIKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW1iZXJPZkFsd2F5c1Zpc2libGVPcHRpb25zTW9iaWxlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm51bWJlck9mQWx3YXlzVmlzaWJsZU9wdGlvbnM7XG4gICAgfVxuXG4gICAgY2xpY2sob3B0aW9uOiBPcHRpb25JdGVtKSB7XG4gICAgICAgIGlmICghb3B0aW9uLmlzRW5hYmxlZCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZENhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uLmRpc2FibGVkQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBvcHRpb24uY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFjdGlvbk9wdGlvbnMob3B0aW9uczogT3B0aW9uSXRlbVtdKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogT3B0aW9uSXRlbVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb24uc2hvd0FzQWN0aW9uKSByZXN1bHQucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlQWN0aW9uT3B0aW9ucyhvcHRpb25zOiBPcHRpb25JdGVtW10sIG9wdGlvbnNBbHdheXM6IE9wdGlvbkl0ZW1bXSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IE9wdGlvbkl0ZW1bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uc0Fsd2F5cy5pbmRleE9mKG9wdGlvbikgPT09IC0xKSByZXN1bHQucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52YWxpZGF0ZSAvIHJlZnJlc2hlcyBhbGwgb3B0aW9ucyBiYXNlZCBvbiB0aGVpciBjdXJyZW50IGNhbGxiYWNrc1xuICAgICAqL1xuICAgIHB1YmxpYyBpbnZhbGlkYXRlKCkge1xuICAgICAgICB0aGlzLnByZXBhcmVPcHRpb25zKHRoaXMub3B0aW9uc0luKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlckRpc2FibGVkKG9wdGlvbnM6IE9wdGlvbkl0ZW1bXSkge1xuICAgICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5pc0VuYWJsZWQgfHwgdGhpcy5zaG93RGlzYWJsZWQpIGZpbHRlcmVkLnB1c2gob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgfVxuXG4gICAgY2FuU2hvd0Ryb3Bkb3duKCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9uc01lbnUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc01lbnUuZmlsdGVyKChvKSA9PiBvLmlzRW5hYmxlZCkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBzaG91bGRIaWdobGlnaHQob3B0aW9uSW5kZXg6IG51bWJlciwgb3B0aW9uOiBPcHRpb25JdGVtKTogYm9vbGVhbiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5oaWdobGlnaHQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ZpcnN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uSW5kZXggPT09IDA7XG4gICAgICAgICAgICBjYXNlICdsYXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uSW5kZXggPT09IHRoaXMub3B0aW9uc0Fsd2F5cy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY2FzZSAnbWFudWFsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLmlzUHJpbWFyeTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkYXRlKCk7XG4gICAgfVxufVxuIiwiPGVzLWRyb3Bkb3duXG4gICNkcm9wZG93blJlZlxuICBbb3B0aW9uc109XCJvcHRpb25zTWVudVwiXG4gIFtzaG93RGlzYWJsZWRdPVwic2hvd0Rpc2FibGVkXCJcbiAgW3Bvc2l0aW9uXT1cImRyb3Bkb3duUG9zaXRpb25cIlxuPjwvZXMtZHJvcGRvd24+XG48ZGl2XG4gIGNsYXNzPVwiYWN0aW9uYmFyXCJcbiAgW2NsYXNzLmFjdGlvbmJhci1hbGwtZmxhdF09XCJzdHlsZSA9PT0gJ2ZsYXQnXCJcbiAgW2NsYXNzLmFjdGlvbmJhci1iYWNrZ3JvdW5kLWRhcmtdPVwiYmFja2dyb3VuZFR5cGUgPT09ICdkYXJrJ1wiXG4gIFtjbGFzcy5hY3Rpb25iYXItYmFja2dyb3VuZC1wcmltYXJ5XT1cImJhY2tncm91bmRUeXBlID09PSAncHJpbWFyeSdcIlxuICBbY2xhc3MuYWN0aW9uYmFyLXJvdW5kXT1cImFwcGVhcmFuY2UgPT09ICdyb3VuZCdcIlxuICBbY2xhc3MuYWN0aW9uYmFyLWljb24tYnV0dG9uXT1cImFwcGVhcmFuY2UgPT09ICdpY29uLWJ1dHRvbidcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc0Fsd2F5czsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvdWxkSGlnaGxpZ2h0KGksIG9wdGlvbilcIlxuICAgICAgbWF0LWZsYXQtYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFvcHRpb24uaXNFbmFibGVkXCJcbiAgICAgIFtjbGFzcy5kaXNwbGF5LW5vbmVdPVwiIW9wdGlvbi5pc0VuYWJsZWQgJiYgIXNob3dEaXNhYmxlZFwiXG4gICAgICBtYXRUb29sdGlwPVwie3sgb3B0aW9uIHwgb3B0aW9uVG9vbHRpcCB9fVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJjbGljayhvcHRpb24pXCJcbiAgICA+XG4gICAgICA8aSBbZXNJY29uXT1cIm9wdGlvbi5pY29uXCI+PC9pPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhY3Rpb24tYWx3YXlzLWNhcHRpb25cIiAqbmdJZj1cIm9wdGlvbi5zaG93TmFtZSAmJiBhcHBlYXJhbmNlID09PSAnYnV0dG9uJ1wiPlxuICAgICAgICB7eyBvcHRpb24ubmFtZSB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIXNob3VsZEhpZ2hsaWdodChpLCBvcHRpb24pXCJcbiAgICAgIG1hdC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIW9wdGlvbi5pc0VuYWJsZWRcIlxuICAgICAgW2NsYXNzLmRpc3BsYXktbm9uZV09XCIhb3B0aW9uLmlzRW5hYmxlZCAmJiAhc2hvd0Rpc2FibGVkXCJcbiAgICAgIG1hdFRvb2x0aXA9XCJ7eyBvcHRpb24gfCBvcHRpb25Ub29sdGlwIH19XCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwib3B0aW9uLm5hbWUgfCB0cmFuc2xhdGVcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrKG9wdGlvbilcIlxuICAgID5cbiAgICAgIDxpIFtlc0ljb25dPVwib3B0aW9uLmljb25cIj48L2k+XG4gICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbi1hbHdheXMtY2FwdGlvblwiICpuZ0lmPVwib3B0aW9uLnNob3dOYW1lICYmIGFwcGVhcmFuY2UgPT09ICdidXR0b24nXCI+XG4gICAgICAgIHt7IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8YnV0dG9uXG4gICAgbWF0LWJ1dHRvblxuICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgY2xhc3M9XCJtb3JlXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidPUFRJT05TLlNIT1dfQUxMX09QVElPTlMnIHwgdHJhbnNsYXRlXCJcbiAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZHJvcGRvd25SZWYubWVudVwiXG4gICAgKm5nSWY9XCJjYW5TaG93RHJvcGRvd24oKVwiXG4gICAgZGF0YS10ZXN0PVwibW9yZS1hY3Rpb25zLWJ1dHRvblwiXG4gID5cbiAgICA8aSBlc0ljb249XCJtb3JlX3ZlcnRcIiBbYXJpYV09XCJmYWxzZVwiPjwvaT5cbiAgPC9idXR0b24+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm9wdGlvbnNUb2dnbGUubGVuZ3RoXCJcbiAgICBjbGFzcz1cImFjdGlvblRvZ2dsZVwiXG4gICAgW2NsYXNzLmFjdGlvblRvZ2dsZURpdmlkZXJdPVwib3B0aW9uc0Fsd2F5cy5sZW5ndGhcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zVG9nZ2xlXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgbWF0VG9vbHRpcD1cInt7IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwib3B0aW9uLm5hbWUgfCB0cmFuc2xhdGVcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrKG9wdGlvbilcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFvcHRpb24uaXNFbmFibGVkXCJcbiAgICAgIGF0dHIuZGF0YS10ZXN0PVwidG9nZ2xlLXt7IG9wdGlvbi5uYW1lIH19XCJcbiAgICA+XG4gICAgICA8aSBbZXNJY29uXT1cIm9wdGlvbi5pY29uXCIgW2FyaWFdPVwiZmFsc2VcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VkdS1zaGFyaW5nLXVpL3NyYy9saWIvYWN0aW9uYmFyL2FjdGlvbmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2FjdGlvbmJhci9hY3Rpb25iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFzQyxNQUFNLGVBQWUsQ0FBQztBQUVyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVF2Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFpRDNCOztPQUVHO0lBQ0gsSUFBYSxPQUFPLENBQUMsT0FBcUI7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBV0QsWUFBb0IsU0FBb0IsRUFBVSxTQUEyQjtRQUF6RCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFqRTdFOzs7O1dBSUc7UUFDTSxpQ0FBNEIsR0FBRyxDQUFDLENBQUM7UUFDakMsdUNBQWtDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hEOzs7Ozs7OztXQVFHO1FBQ00sZUFBVSxHQUF1QyxRQUFRLENBQUM7UUFDbkU7OztX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O3NCQUF0QixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFLTyxPQUFPO3NCQUFuQixLQUFLO2dCQVFHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT3B0aW9uYWwsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFVJQW5pbWF0aW9uIH0gZnJvbSAnLi4vdXRpbC91aS1hbmltYXRpb24nO1xuaW1wb3J0IHsgVUlDb25zdGFudHMgfSBmcm9tICcuLi91dGlsL3VpLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvb3B0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdWkuc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi91dGlsL2hlbHBlcic7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE9wdGlvbnNIZWxwZXJEYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29wdGlvbnMtaGVscGVyLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcy1hY3Rpb25iYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnYWN0aW9uYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnYWN0aW9uYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW3RyaWdnZXIoJ29wZW5PdmVybGF5JywgVUlBbmltYXRpb24ub3Blbk92ZXJsYXkoVUlBbmltYXRpb24uQU5JTUFUSU9OX1RJTUVfRkFTVCkpXSxcbn0pXG4vKipcbiAqIFRoZSBhY3Rpb24gYmFyIHByb3ZpZGVzIHNldmVyYWwgaWNvbnMsIHVzdWFsbHkgYXQgdGhlIHRvcCByaWdodCwgd2l0aCBhY3Rpb25zIGZvciBhIGN1cnJlbnQgY29udGV4dFxuICovXG5leHBvcnQgY2xhc3MgQWN0aW9uYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgYW1vdW50IG9mIG9wdGlvbnMgd2hpY2ggYXJlIG5vdCBoaWRkZW4gaW5zaWRlIGFuIG92ZXJmbG93IG1lbnVcbiAgICAgKiAoZGVmYXVsdDogZGVwZW5kaW5nIG9uIG1vYmlsZSAoMSkgb3Igbm90ICgyKSlcbiAgICAgKiBBbHNvIHVzZSBudW1iZXJPZkFsd2F5c1Zpc2libGVPcHRpb25zTW9iaWxlIHRvIGNvbnRyb2wgdGhlIGFtb3VudCBvZiBtb2JpbGUgb3B0aW9ucyB2aXNpYmxlXG4gICAgICovXG4gICAgQElucHV0KCkgbnVtYmVyT2ZBbHdheXNWaXNpYmxlT3B0aW9ucyA9IDI7XG4gICAgQElucHV0KCkgbnVtYmVyT2ZBbHdheXNWaXNpYmxlT3B0aW9uc01vYmlsZSA9IDE7XG4gICAgLyoqXG4gICAgICogVmlzdWFsIHN0eWxlIG9mIHRoZSBhY3Rpb25iYXJcbiAgICAgKlxuICAgICAqIFZhbHVlczpcbiAgICAgKiAgLSAnYnV0dG9uJzogbWF0ZXJpYWwgYnV0dG9ucyB3aXRoIGljb25zIGFuZCB0ZXh0IG9uIG1lZGl1bSB0byBsYXJnZSBzY3JlZW5zXG4gICAgICogIC0gJ2ljb24tYnV0dG9uJzogbWF0ZXJpYWwgYnV0dG9ucyB3aXRob3V0IHRleHRcbiAgICAgKiAgLSAncm91bmQnOiBjaXJjdWxhciBidXR0b25zIHdpdGhvdXQgdGV4dFxuICAgICAqIEBkZWZhdWx0ICdidXR0b24nXG4gICAgICovXG4gICAgQElucHV0KCkgYXBwZWFyYW5jZTogJ3JvdW5kJyB8ICdidXR0b24nIHwgJ2ljb24tYnV0dG9uJyA9ICdidXR0b24nO1xuICAgIC8qKlxuICAgICAqIGRyb3Bkb3duUG9zaXRpb24gaXMgZm9yIHBvc2l0aW9uIG9mIGRyb3Bkb3duIChkZWZhdWx0ID0gbGVmdClcbiAgICAgKiBWYWx1ZXMgJ2xlZnQnIG9yICdyaWdodCdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkcm9wZG93blBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuXG4gICAgLyoqXG4gICAgICogYmFja2dyb3VuZFR5cGUgZm9yIGNvbG9yIG1hdGNoaW5nLCBlaXRoZXIgYnJpZ2h0LCBkYXJrIG9yIHByaW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBiYWNrZ3JvdW5kVHlwZTogJ2JyaWdodCcgfCAnZGFyaycgfCAncHJpbWFyeScgPSAnYnJpZ2h0JztcbiAgICAvKipcbiAgICAgKiBTdHlsZSwgY3VycmVudGx5IGRlZmF1bHQgb3IgJ2ZsYXQnIGlmIGFsbCBhbHdheXMgdmlzaWJsZSBpY29ucyBzaG91bGQgZ2V0IGEgZmxhdCBsb29rXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6ICdkZWZhdWx0JyB8ICdmbGF0JyA9ICdkZWZhdWx0JztcbiAgICAvKipcbiAgICAgKiBIaWdobGlnaHQgb25lIG9yIG1vcmUgb2YgdGhlIGFsd2F5cy12aXNpYmxlIGJ1dHRvbnMgYXMgcHJpbWFyeSBhY3Rpb24uXG4gICAgICpcbiAgICAgKiAtIGBmaXJzdGAsIGBsYXN0YDogVGhlIGZpcnN0IC8gbGFzdCBvZiBgb3B0aW9uc0Fsd2F5c2AgYnkgb3JkZXIuXG4gICAgICogLSBgbWFudWFsYDogSGlnaGxpZ2h0IGFsbCBvcHRpb25zIHRoYXQgc2V0IGBpc1ByaW1hcnkgPSB0cnVlYC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBoaWdobGlnaHQ6ICdmaXJzdCcgfCAnbGFzdCcgfCAnbWFudWFsJyA9ICdmaXJzdCc7XG4gICAgLyoqXG4gICAgICogU2hvdWxkIGRpc2FibGVkIChcImdyZXllZCBvdXRcIikgb3B0aW9ucyBiZSBzaG93biBvciBoaWRkZW4/XG4gICAgICovXG4gICAgQElucHV0KCkgc2hvd0Rpc2FibGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWF0IHRvb2x0aXBzXG4gICAgICovXG4gICAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSAnYmVsb3cnO1xuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBvcHRpb25zLCBzZWUgQE9wdGlvbkl0ZW1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBPcHRpb25JdGVtW10pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zSW4gPSBvcHRpb25zO1xuICAgICAgICB0aGlzLnByZXBhcmVPcHRpb25zKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJyZWFrcG9pbnQgd2lkdGggYXQgd2hpY2ggcG9pbnQgdGhlIG1vYmlsZSBkaXNwbGF5IGNvdW50IGlzIHVzZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb2JpbGVCcmVha3BvaW50ID0gVUlDb25zdGFudHMuTU9CSUxFX1dJRFRIO1xuICAgIG9wdGlvbnNJbjogT3B0aW9uSXRlbVtdID0gW107XG4gICAgb3B0aW9uc0Fsd2F5cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9wdGlvbkl0ZW1bXT4oW10pO1xuICAgIG9wdGlvbnNNZW51JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3B0aW9uSXRlbVtdPihbXSk7XG4gICAgb3B0aW9uc1RvZ2dsZTogT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVpU2VydmljZTogVUlTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICAgIHByaXZhdGUgcHJlcGFyZU9wdGlvbnMob3B0aW9uczogT3B0aW9uSXRlbVtdKSB7XG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLnVpU2VydmljZS5maWx0ZXJWYWxpZE9wdGlvbnMoSGVscGVyLmRlZXBDb3B5QXJyYXkob3B0aW9ucykpO1xuICAgICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNBbHdheXMkLm5leHQoW10pO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zTWVudSQubmV4dChbXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zVG9nZ2xlID0gdGhpcy51aVNlcnZpY2UuZmlsdGVyVG9nZ2xlT3B0aW9ucyhvcHRpb25zLCB0cnVlKTtcbiAgICAgICAgdGhpcy5vcHRpb25zQWx3YXlzJC5uZXh0KFxuICAgICAgICAgICAgdGhpcy5nZXRBY3Rpb25PcHRpb25zKHRoaXMudWlTZXJ2aWNlLmZpbHRlclRvZ2dsZU9wdGlvbnMob3B0aW9ucywgZmFsc2UpKS5zbGljZShcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TnVtYmVyT3B0aW9ucygpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnNBbHdheXMkLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zQWx3YXlzJC5uZXh0KFxuICAgICAgICAgICAgICAgIHRoaXMudWlTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXJUb2dnbGVPcHRpb25zKG9wdGlvbnMsIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgdGhpcy5nZXROdW1iZXJPcHRpb25zKCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnNNZW51JC5uZXh0KFxuICAgICAgICAgICAgdGhpcy5oaWRlQWN0aW9uT3B0aW9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnVpU2VydmljZS5maWx0ZXJUb2dnbGVPcHRpb25zKG9wdGlvbnMsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNBbHdheXMkLnZhbHVlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51aVNlcnZpY2UudXBkYXRlT3B0aW9uRW5hYmxlZFN0YXRlKHRoaXMub3B0aW9uc0Fsd2F5cyQpO1xuICAgICAgICB0aGlzLnVpU2VydmljZS51cGRhdGVPcHRpb25FbmFibGVkU3RhdGUodGhpcy5vcHRpb25zTWVudSQpO1xuICAgICAgICAvLyBtYXkgY2F1c2VzIHdlaXJkIGxvb2tpbmdcbiAgICAgICAgLyppZih0aGlzLm9wdGlvbnNNZW51Lmxlbmd0aDwyKSB7XG4gICAgICB0aGlzLm9wdGlvbnNBbHdheXMgPSB0aGlzLm9wdGlvbnNBbHdheXMuY29uY2F0KHRoaXMub3B0aW9uc01lbnUpO1xuICAgICAgdGhpcy5vcHRpb25zTWVudSA9IFtdO1xuICAgIH0qL1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROdW1iZXJPcHRpb25zKCkge1xuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCB0aGlzLm1vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bWJlck9mQWx3YXlzVmlzaWJsZU9wdGlvbnNNb2JpbGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubnVtYmVyT2ZBbHdheXNWaXNpYmxlT3B0aW9ucztcbiAgICB9XG5cbiAgICBjbGljayhvcHRpb246IE9wdGlvbkl0ZW0pIHtcbiAgICAgICAgaWYgKCFvcHRpb24uaXNFbmFibGVkKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkQ2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBvcHRpb24uZGlzYWJsZWRDYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbi5jYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWN0aW9uT3B0aW9ucyhvcHRpb25zOiBPcHRpb25JdGVtW10pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBPcHRpb25JdGVtW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5zaG93QXNBY3Rpb24pIHJlc3VsdC5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVBY3Rpb25PcHRpb25zKG9wdGlvbnM6IE9wdGlvbkl0ZW1bXSwgb3B0aW9uc0Fsd2F5czogT3B0aW9uSXRlbVtdKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogT3B0aW9uSXRlbVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zQWx3YXlzLmluZGV4T2Yob3B0aW9uKSA9PT0gLTEpIHJlc3VsdC5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZhbGlkYXRlIC8gcmVmcmVzaGVzIGFsbCBvcHRpb25zIGJhc2VkIG9uIHRoZWlyIGN1cnJlbnQgY2FsbGJhY2tzXG4gICAgICovXG4gICAgcHVibGljIGludmFsaWRhdGUoKSB7XG4gICAgICAgIHRoaXMucHJlcGFyZU9wdGlvbnModGhpcy5vcHRpb25zSW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyRGlzYWJsZWQob3B0aW9uczogT3B0aW9uSXRlbVtdKSB7XG4gICAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uLmlzRW5hYmxlZCB8fCB0aGlzLnNob3dEaXNhYmxlZCkgZmlsdGVyZWQucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICB9XG5cbiAgICBjYW5TaG93RHJvcGRvd24oKSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zTWVudSQudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc01lbnUkLnZhbHVlLmZpbHRlcigobykgPT4gby5pc0VuYWJsZWQpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgc2hvdWxkSGlnaGxpZ2h0KG9wdGlvbkluZGV4OiBudW1iZXIsIG9wdGlvbjogT3B0aW9uSXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaGlnaGxpZ2h0KSB7XG4gICAgICAgICAgICBjYXNlICdmaXJzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbkluZGV4ID09PSAwO1xuICAgICAgICAgICAgY2FzZSAnbGFzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbkluZGV4ID09PSB0aGlzLm9wdGlvbnNBbHdheXMkLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjYXNlICdtYW51YWwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24uaXNQcmltYXJ5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG59XG4iLCI8ZXMtZHJvcGRvd25cbiAgI2Ryb3Bkb3duUmVmXG4gIFtvcHRpb25zXT1cIm9wdGlvbnNNZW51JCB8IGFzeW5jXCJcbiAgW3Nob3dEaXNhYmxlZF09XCJzaG93RGlzYWJsZWRcIlxuICBbcG9zaXRpb25dPVwiZHJvcGRvd25Qb3NpdGlvblwiXG4+PC9lcy1kcm9wZG93bj5cbjxkaXZcbiAgY2xhc3M9XCJhY3Rpb25iYXJcIlxuICBbY2xhc3MuYWN0aW9uYmFyLWFsbC1mbGF0XT1cInN0eWxlID09PSAnZmxhdCdcIlxuICBbY2xhc3MuYWN0aW9uYmFyLWJhY2tncm91bmQtZGFya109XCJiYWNrZ3JvdW5kVHlwZSA9PT0gJ2RhcmsnXCJcbiAgW2NsYXNzLmFjdGlvbmJhci1iYWNrZ3JvdW5kLXByaW1hcnldPVwiYmFja2dyb3VuZFR5cGUgPT09ICdwcmltYXJ5J1wiXG4gIFtjbGFzcy5hY3Rpb25iYXItcm91bmRdPVwiYXBwZWFyYW5jZSA9PT0gJ3JvdW5kJ1wiXG4gIFtjbGFzcy5hY3Rpb25iYXItaWNvbi1idXR0b25dPVwiYXBwZWFyYW5jZSA9PT0gJ2ljb24tYnV0dG9uJ1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zQWx3YXlzJCB8IGFzeW5jOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG91bGRIaWdobGlnaHQoaSwgb3B0aW9uKVwiXG4gICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIW9wdGlvbi5pc0VuYWJsZWRcIlxuICAgICAgW2NsYXNzLmRpc3BsYXktbm9uZV09XCIhb3B0aW9uLmlzRW5hYmxlZCAmJiAhc2hvd0Rpc2FibGVkXCJcbiAgICAgIG1hdFRvb2x0aXA9XCJ7eyBvcHRpb24gfCBvcHRpb25Ub29sdGlwIHwgYXN5bmMgfX1cIlxuICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24uYXJpYUxhYmVsIHx8IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJjbGljayhvcHRpb24pXCJcbiAgICA+XG4gICAgICA8aSBbZXNJY29uXT1cIm9wdGlvbi5pY29uXCI+PC9pPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhY3Rpb24tYWx3YXlzLWNhcHRpb25cIiAqbmdJZj1cIm9wdGlvbi5zaG93TmFtZSAmJiBhcHBlYXJhbmNlID09PSAnYnV0dG9uJ1wiPlxuICAgICAgICB7eyBvcHRpb24ubmFtZSB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIXNob3VsZEhpZ2hsaWdodChpLCBvcHRpb24pXCJcbiAgICAgIG1hdC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIW9wdGlvbi5pc0VuYWJsZWRcIlxuICAgICAgW2NsYXNzLmRpc3BsYXktbm9uZV09XCIhb3B0aW9uLmlzRW5hYmxlZCAmJiAhc2hvd0Rpc2FibGVkXCJcbiAgICAgIG1hdFRvb2x0aXA9XCJ7eyBvcHRpb24gfCBvcHRpb25Ub29sdGlwIHwgYXN5bmMgfX1cIlxuICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24uYXJpYUxhYmVsIHx8IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJjbGljayhvcHRpb24pXCJcbiAgICA+XG4gICAgICA8aSBbZXNJY29uXT1cIm9wdGlvbi5pY29uXCI+PC9pPlxuICAgICAgPHNwYW4gY2xhc3M9XCJhY3Rpb24tYWx3YXlzLWNhcHRpb25cIiAqbmdJZj1cIm9wdGlvbi5zaG93TmFtZSAmJiBhcHBlYXJhbmNlID09PSAnYnV0dG9uJ1wiPlxuICAgICAgICB7eyBvcHRpb24ubmFtZSB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGJ1dHRvblxuICAgIG1hdC1idXR0b25cbiAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgIGNsYXNzPVwibW9yZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT1BUSU9OUy5TSE9XX0FMTF9PUFRJT05TJyB8IHRyYW5zbGF0ZVwiXG4gICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImRyb3Bkb3duUmVmLm1lbnVcIlxuICAgICpuZ0lmPVwiY2FuU2hvd0Ryb3Bkb3duKClcIlxuICAgIGRhdGEtdGVzdD1cIm1vcmUtYWN0aW9ucy1idXR0b25cIlxuICA+XG4gICAgPGkgZXNJY29uPVwibW9yZV92ZXJ0XCIgW2FyaWFdPVwiZmFsc2VcIj48L2k+XG4gIDwvYnV0dG9uPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJvcHRpb25zVG9nZ2xlLmxlbmd0aFwiXG4gICAgY2xhc3M9XCJhY3Rpb25Ub2dnbGVcIlxuICAgIFtjbGFzcy5hY3Rpb25Ub2dnbGVEaXZpZGVyXT1cIihvcHRpb25zQWx3YXlzJCB8IGFzeW5jKS5sZW5ndGhcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zVG9nZ2xlXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgbWF0VG9vbHRpcD1cInt7IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwib3B0aW9uLmFyaWFMYWJlbCB8fCBvcHRpb24ubmFtZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2sob3B0aW9uKVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIW9wdGlvbi5pc0VuYWJsZWRcIlxuICAgICAgYXR0ci5kYXRhLXRlc3Q9XCJ0b2dnbGUte3sgb3B0aW9uLm5hbWUgfX1cIlxuICAgID5cbiAgICAgIDxpIFtlc0ljb25dPVwib3B0aW9uLmljb25cIiBbYXJpYV09XCJmYWxzZVwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -2,7 +2,7 @@
2
2
  * Created by Torsten on 13.01.2017.
3
3
  */
4
4
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
- import { Directive, Input, Optional } from '@angular/core';
5
+ import { Directive, Input, Optional, } from '@angular/core';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import { BehaviorSubject, combineLatest } from 'rxjs';
8
8
  import { filter } from 'rxjs/operators';
@@ -46,9 +46,10 @@ export class IconDirective {
46
46
  set esIcon(id) {
47
47
  this.originalId$.next(id);
48
48
  }
49
- constructor(element, translate, config) {
49
+ constructor(element, translate, renderer, config) {
50
50
  this.element = element;
51
51
  this.translate = translate;
52
+ this.renderer = renderer;
52
53
  this.config = config;
53
54
  this.originalId$ = new BehaviorSubject(null);
54
55
  this.isReady = false;
@@ -72,6 +73,19 @@ export class IconDirective {
72
73
  setIcon(id, iconsConfig) {
73
74
  if (this._id) {
74
75
  this.element.nativeElement.classList.remove('edu-icons', 'custom-icons', 'material-icons');
76
+ if (this.svg) {
77
+ this.renderer.removeChild(this.element.nativeElement, this.svg);
78
+ }
79
+ }
80
+ if (id.startsWith('svg-')) {
81
+ this.svg = document.createElement('img');
82
+ this.svg.classList.add('svg-icons');
83
+ this.svg.src = 'assets/images/icons/' + id.substring(4);
84
+ this.renderer.appendChild(this.element.nativeElement, this.svg);
85
+ if (this._aria) {
86
+ this.updateAria();
87
+ }
88
+ return;
75
89
  }
76
90
  let customClass = null;
77
91
  const mapping = iconsConfig?.filter((i) => i.original === id);
@@ -86,11 +100,11 @@ export class IconDirective {
86
100
  let cssClass;
87
101
  if (id?.startsWith('edu-') && !customClass) {
88
102
  cssClass = 'edu-icons';
89
- id = id.substr(4);
103
+ id = id.substring(4);
90
104
  }
91
105
  else if (id?.startsWith('custom-') || customClass) {
92
106
  cssClass = 'custom-icons';
93
- id = id.substr(7);
107
+ id = id.substring(7);
94
108
  }
95
109
  else {
96
110
  cssClass = 'material-icons';
@@ -114,6 +128,9 @@ export class IconDirective {
114
128
  }
115
129
  }
116
130
  setAltText(altText) {
131
+ if (this.svg) {
132
+ this.svg.alt = altText;
133
+ }
117
134
  if (altText && !this.altTextSpan) {
118
135
  this.insertAltTextSpan();
119
136
  }
@@ -126,7 +143,7 @@ export class IconDirective {
126
143
  this.altTextSpan.classList.add('cdk-visually-hidden');
127
144
  this.element.nativeElement.insertAdjacentElement('afterend', this.altTextSpan);
128
145
  }
129
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: IconDirective, deps: [{ token: i0.ElementRef }, { token: i1.TranslateService }, { token: i2.ConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: IconDirective, deps: [{ token: i0.ElementRef }, { token: i1.TranslateService }, { token: i0.Renderer2 }, { token: i2.ConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
130
147
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: { altText: "altText", aria: "aria", esIcon: "esIcon" }, ngImport: i0 }); }
131
148
  }
132
149
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: IconDirective, decorators: [{
@@ -134,7 +151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
134
151
  args: [{
135
152
  selector: 'i[esIcon], i.material-icons',
136
153
  }]
137
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TranslateService }, { type: i2.ConfigService, decorators: [{
154
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TranslateService }, { type: i0.Renderer2 }, { type: i2.ConfigService, decorators: [{
138
155
  type: Optional
139
156
  }] }], propDecorators: { altText: [{
140
157
  type: Input
@@ -143,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
143
160
  }], esIcon: [{
144
161
  type: Input
145
162
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFJNUM7Ozs7Ozs7Ozs7O0dBV0c7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQU90Qjs7Ozs7O09BTUc7SUFDSCxJQUFhLE9BQU8sQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxJQUFhLElBQUksQ0FBQyxJQUFhO1FBQzNCLElBQUksR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLEVBQVU7UUFDMUIsSUFB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TyxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkYsQ0FBQzs4R0F0SFEsYUFBYTtrR0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUh6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7aUJBQzFDOzswQkFxQ1EsUUFBUTt5Q0F0QkEsT0FBTztzQkFBbkIsS0FBSztnQkFLTyxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgVG9yc3RlbiBvbiAxMy4wMS4yMDE3LlxuICovXG5cbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgbm90TnVsbCB9IGZyb20gJy4uL3V0aWwvZnVuY3Rpb25zJztcblxudHlwZSBJY29uc0NvbmZpZyA9IEFycmF5PHsgb3JpZ2luYWw6IHN0cmluZzsgcmVwbGFjZT86IHN0cmluZzsgY3NzQ2xhc3M/OiBzdHJpbmcgfT47XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIGVsZW1lbnQncyBjb250ZW50IHdpdGggYW4gaWNvbi5cbiAqXG4gKiBFeGFtcGxlOiBgPGkgZXNJY29uPVwic2F2ZVwiPjwvaT5gXG4gKlxuICogT3B0aW9uYWxseSwgYSB0cmFuc2xhdGVkIGBhcmlhLWxhYmVsYCBjYW4gYmUgYXR0YWNoZWQgYnkgc2V0dGluZyBgYXJpYWAgdG8gYSB0cnV0aHkgdmFsdWU6IGA8aVxuICogZXNJY29uPVwic2F2ZVwiIGFyaWE9XCJ0cnVlXCI+PC9pPmAuIE90aGVyd2lzZSwgYGFyaWEtaGlkZGVuYCB3aWxsIGJlIHNldC5cbiAqXG4gKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBkaXJlY3RpdmUgaXMgYWxzbyBhY3RpdmF0ZWQgb24gZWxlbWVudHMgdGhhdCBzZXRcbiAqIGBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJgLiBUaGlzIGlzIG1haW5seSB0byBzZXQgdGhlIGBhcmlhLWhpZGRlbmAgYXR0cmlidXRlLiBPY2N1cnJlbmNlcyBzaG91bGRcbiAqIGJlIHVwZGF0ZWQgdG8gdGhlIHN5bnRheCBhYm92ZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpW2VzSWNvbl0sIGkubWF0ZXJpYWwtaWNvbnMnLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgb3JpZ2luYWxJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gICAgcHJpdmF0ZSBfaWQ6IHN0cmluZztcbiAgICBwcml2YXRlIF9hcmlhOiBib29sZWFuO1xuICAgIHByaXZhdGUgYWx0VGV4dFNwYW46IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgaXNSZWFkeSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWx0IHRleHQgdG8gc2hvdyB0byBzY3JlZW4gcmVhZGVycy5cbiAgICAgKlxuICAgICAqIElmIG9taXR0ZWQsIHRoZSBpY29uIHdpbGwgYmUgaW52aXNpYmxlIHRvIHNjcmVlbiByZWFkZXJzLlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vY29tcG9uZW50cy9pY29uL292ZXJ2aWV3I2luZGljYXRvci1pY29uc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCBhbHRUZXh0KGFsdFRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldEFsdFRleHQoYWx0VGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIElmIHRydWUsIGFuIGFsdCB0ZXh0IChzZWUgYWJvdmUpIHdpbGwgYmUgc2V0IGJhc2VkIG9uIHRoZSBpY29uLiAqL1xuICAgIEBJbnB1dCgpIHNldCBhcmlhKGFyaWE6IGJvb2xlYW4pIHtcbiAgICAgICAgYXJpYSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShhcmlhKTtcbiAgICAgICAgaWYgKGFyaWEgIT09IHRoaXMuX2FyaWEpIHtcbiAgICAgICAgICAgIHRoaXMuX2FyaWEgPSBhcmlhO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGVzSWNvbihpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJZCQubmV4dChpZCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5vcmlnaW5hbElkJC5waXBlKGZpbHRlcihub3ROdWxsKSksIHRoaXMuY29uZmlnLmdldCgnaWNvbnMnLCBudWxsKV0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtvcmlnaW5hbElkLCBpY29uc0NvbmZpZ10pID0+IHRoaXMuc2V0SWNvbihvcmlnaW5hbElkLCBpY29uc0NvbmZpZykpO1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgICAgLy8gTWF0ZXJpYWwgc3R5bGVzIGV4cGVjdCBpY29ucyB0byBoYXZlIHRoZSBjbGFzcyBgbWF0LWljb25gLCBlLmcuLFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvYWUwYjllMWMxYmFlNWU5MzdkMDM5ZWE1MzY1MmZlMTY1NmJjNDYyMy9zcmMvbWF0ZXJpYWwvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnNjc3MjTDE1NlxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXQtaWNvbicpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWx0VGV4dFNwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWx0VGV4dFNwYW4ucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEljb24oaWQ6IHN0cmluZywgaWNvbnNDb25maWc6IEljb25zQ29uZmlnKSB7XG4gICAgICAgIGlmICh0aGlzLl9pZCkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICAgICAgICAnZWR1LWljb25zJyxcbiAgICAgICAgICAgICAgICAnY3VzdG9tLWljb25zJyxcbiAgICAgICAgICAgICAgICAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3VzdG9tQ2xhc3M6IHN0cmluZyA9IG51bGw7XG4gICAgICAgIGNvbnN0IG1hcHBpbmcgPSBpY29uc0NvbmZpZz8uZmlsdGVyKChpKSA9PiBpLm9yaWdpbmFsID09PSBpZCk7XG4gICAgICAgIGlmIChtYXBwaW5nPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlkID0gbWFwcGluZ1swXS5yZXBsYWNlIHx8ICcnO1xuICAgICAgICAgICAgY3VzdG9tQ2xhc3MgPSBtYXBwaW5nWzBdLmNzc0NsYXNzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgICAgIGlmICh0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3NzQ2xhc3M6IHN0cmluZztcbiAgICAgICAgaWYgKGlkPy5zdGFydHNXaXRoKCdlZHUtJykgJiYgIWN1c3RvbUNsYXNzKSB7XG4gICAgICAgICAgICBjc3NDbGFzcyA9ICdlZHUtaWNvbnMnO1xuICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHIoNCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQ/LnN0YXJ0c1dpdGgoJ2N1c3RvbS0nKSB8fCBjdXN0b21DbGFzcykge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnY3VzdG9tLWljb25zJztcbiAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyKDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnbWF0ZXJpYWwtaWNvbnMnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3NzQ2xhc3MpO1xuICAgICAgICBpZiAoY3VzdG9tQ2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3VzdG9tQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9IGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQXJpYSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FyaWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FyaWEgJiYgdGhpcy5faWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0lDT05fTEFCRUxTLicgKyB0aGlzLl9pZCkuc3Vic2NyaWJlKChsYW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QWx0VGV4dChsYW5nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBbHRUZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBbHRUZXh0KGFsdFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoYWx0VGV4dCAmJiAhdGhpcy5hbHRUZXh0U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRBbHRUZXh0U3BhbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsdFRleHRTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLmFsdFRleHRTcGFuLmlubmVyVGV4dCA9IGFsdFRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydEFsdFRleHRTcGFuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFsdFRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLmFsdFRleHRTcGFuLmNsYXNzTGlzdC5hZGQoJ2Nkay12aXN1YWxseS1oaWRkZW4nKTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIHRoaXMuYWx0VGV4dFNwYW4pO1xuICAgIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2RpcmVjdGl2ZXMvaWNvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUk1Qzs7Ozs7Ozs7Ozs7R0FXRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBUXRCOzs7Ozs7T0FNRztJQUNILElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLElBQWEsSUFBSSxDQUFDLElBQWE7UUFDM0IsSUFBSSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsRUFBVTtRQUMxQixJQUFJ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SUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25GLENBQUM7OEdBeElRLGFBQWE7a0dBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFIekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNkJBQTZCO2lCQUMxQzs7MEJBdUNRLFFBQVE7eUNBdkJBLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sSUFBSTtzQkFBaEIsS0FBSztnQkFVTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVkIGJ5IFRvcnN0ZW4gb24gMTMuMDEuMjAxNy5cbiAqL1xuXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnbmd4LWVkdS1zaGFyaW5nLWFwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG5vdE51bGwgfSBmcm9tICcuLi91dGlsL2Z1bmN0aW9ucyc7XG5cbnR5cGUgSWNvbnNDb25maWcgPSBBcnJheTx7IG9yaWdpbmFsOiBzdHJpbmc7IHJlcGxhY2U/OiBzdHJpbmc7IGNzc0NsYXNzPzogc3RyaW5nIH0+O1xuXG4vKipcbiAqIFJlcGxhY2VzIHRoZSBlbGVtZW50J3MgY29udGVudCB3aXRoIGFuIGljb24uXG4gKlxuICogRXhhbXBsZTogYDxpIGVzSWNvbj1cInNhdmVcIj48L2k+YFxuICpcbiAqIE9wdGlvbmFsbHksIGEgdHJhbnNsYXRlZCBgYXJpYS1sYWJlbGAgY2FuIGJlIGF0dGFjaGVkIGJ5IHNldHRpbmcgYGFyaWFgIHRvIGEgdHJ1dGh5IHZhbHVlOiBgPGlcbiAqIGVzSWNvbj1cInNhdmVcIiBhcmlhPVwidHJ1ZVwiPjwvaT5gLiBPdGhlcndpc2UsIGBhcmlhLWhpZGRlbmAgd2lsbCBiZSBzZXQuXG4gKlxuICogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgZGlyZWN0aXZlIGlzIGFsc28gYWN0aXZhdGVkIG9uIGVsZW1lbnRzIHRoYXQgc2V0XG4gKiBgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiYC4gVGhpcyBpcyBtYWlubHkgdG8gc2V0IHRoZSBgYXJpYS1oaWRkZW5gIGF0dHJpYnV0ZS4gT2NjdXJyZW5jZXMgc2hvdWxkXG4gKiBiZSB1cGRhdGVkIHRvIHRoZSBzeW50YXggYWJvdmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaVtlc0ljb25dLCBpLm1hdGVyaWFsLWljb25zJyxcbn0pXG5leHBvcnQgY2xhc3MgSWNvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIG9yaWdpbmFsSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYXJpYTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGFsdFRleHRTcGFuOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGlzUmVhZHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIHN2ZzogSFRNTEltYWdlRWxlbWVudDtcblxuICAgIC8qKlxuICAgICAqIEFuIGFsdCB0ZXh0IHRvIHNob3cgdG8gc2NyZWVuIHJlYWRlcnMuXG4gICAgICpcbiAgICAgKiBJZiBvbWl0dGVkLCB0aGUgaWNvbiB3aWxsIGJlIGludmlzaWJsZSB0byBzY3JlZW4gcmVhZGVycy5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2NvbXBvbmVudHMvaWNvbi9vdmVydmlldyNpbmRpY2F0b3ItaWNvbnNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgYWx0VGV4dChhbHRUZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRBbHRUZXh0KGFsdFRleHQpO1xuICAgIH1cblxuICAgIC8qKiBJZiB0cnVlLCBhbiBhbHQgdGV4dCAoc2VlIGFib3ZlKSB3aWxsIGJlIHNldCBiYXNlZCBvbiB0aGUgaWNvbi4gKi9cbiAgICBASW5wdXQoKSBzZXQgYXJpYShhcmlhOiBib29sZWFuKSB7XG4gICAgICAgIGFyaWEgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoYXJpYSk7XG4gICAgICAgIGlmIChhcmlhICE9PSB0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLl9hcmlhID0gYXJpYTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBlc0ljb24oaWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9yaWdpbmFsSWQkLm5leHQoaWQpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5vcmlnaW5hbElkJC5waXBlKGZpbHRlcihub3ROdWxsKSksIHRoaXMuY29uZmlnLmdldCgnaWNvbnMnLCBudWxsKV0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtvcmlnaW5hbElkLCBpY29uc0NvbmZpZ10pID0+IHRoaXMuc2V0SWNvbihvcmlnaW5hbElkLCBpY29uc0NvbmZpZykpO1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmlzUmVhZHkgPSB0cnVlO1xuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgICAgLy8gTWF0ZXJpYWwgc3R5bGVzIGV4cGVjdCBpY29ucyB0byBoYXZlIHRoZSBjbGFzcyBgbWF0LWljb25gLCBlLmcuLFxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvYWUwYjllMWMxYmFlNWU5MzdkMDM5ZWE1MzY1MmZlMTY1NmJjNDYyMy9zcmMvbWF0ZXJpYWwvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnNjc3MjTDE1NlxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXQtaWNvbicpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWx0VGV4dFNwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWx0VGV4dFNwYW4ucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEljb24oaWQ6IHN0cmluZywgaWNvbnNDb25maWc6IEljb25zQ29uZmlnKSB7XG4gICAgICAgIGlmICh0aGlzLl9pZCkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICAgICAgICAnZWR1LWljb25zJyxcbiAgICAgICAgICAgICAgICAnY3VzdG9tLWljb25zJyxcbiAgICAgICAgICAgICAgICAnbWF0ZXJpYWwtaWNvbnMnLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN2Zykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuc3ZnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaWQuc3RhcnRzV2l0aCgnc3ZnLScpKSB7XG4gICAgICAgICAgICB0aGlzLnN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgICAgICAgICAgdGhpcy5zdmcuY2xhc3NMaXN0LmFkZCgnc3ZnLWljb25zJyk7XG4gICAgICAgICAgICB0aGlzLnN2Zy5zcmMgPSAnYXNzZXRzL2ltYWdlcy9pY29ucy8nICsgaWQuc3Vic3RyaW5nKDQpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgdGhpcy5zdmcpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FyaWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3VzdG9tQ2xhc3M6IHN0cmluZyA9IG51bGw7XG4gICAgICAgIGNvbnN0IG1hcHBpbmcgPSBpY29uc0NvbmZpZz8uZmlsdGVyKChpKSA9PiBpLm9yaWdpbmFsID09PSBpZCk7XG4gICAgICAgIGlmIChtYXBwaW5nPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlkID0gbWFwcGluZ1swXS5yZXBsYWNlIHx8ICcnO1xuICAgICAgICAgICAgY3VzdG9tQ2xhc3MgPSBtYXBwaW5nWzBdLmNzc0NsYXNzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgICAgIGlmICh0aGlzLl9hcmlhKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFyaWEoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3NzQ2xhc3M6IHN0cmluZztcbiAgICAgICAgaWYgKGlkPy5zdGFydHNXaXRoKCdlZHUtJykgJiYgIWN1c3RvbUNsYXNzKSB7XG4gICAgICAgICAgICBjc3NDbGFzcyA9ICdlZHUtaWNvbnMnO1xuICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHJpbmcoNCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQ/LnN0YXJ0c1dpdGgoJ2N1c3RvbS0nKSB8fCBjdXN0b21DbGFzcykge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnY3VzdG9tLWljb25zJztcbiAgICAgICAgICAgIGlkID0gaWQuc3Vic3RyaW5nKDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3NzQ2xhc3MgPSAnbWF0ZXJpYWwtaWNvbnMnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3NzQ2xhc3MpO1xuICAgICAgICBpZiAoY3VzdG9tQ2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY3VzdG9tQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9IGlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQXJpYSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FyaWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FyaWEgJiYgdGhpcy5faWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0lDT05fTEFCRUxTLicgKyB0aGlzLl9pZCkuc3Vic2NyaWJlKChsYW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QWx0VGV4dChsYW5nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBbHRUZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBbHRUZXh0KGFsdFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdmcpIHtcbiAgICAgICAgICAgIHRoaXMuc3ZnLmFsdCA9IGFsdFRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsdFRleHQgJiYgIXRoaXMuYWx0VGV4dFNwYW4pIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0QWx0VGV4dFNwYW4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hbHRUZXh0U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5hbHRUZXh0U3Bhbi5pbm5lclRleHQgPSBhbHRUZXh0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbnNlcnRBbHRUZXh0U3BhbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hbHRUZXh0U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgdGhpcy5hbHRUZXh0U3Bhbi5jbGFzc0xpc3QuYWRkKCdjZGstdmlzdWFsbHktaGlkZGVuJyk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50Lmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCB0aGlzLmFsdFRleHRTcGFuKTtcbiAgICB9XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { Component, Input, ViewChild } from '@angular/core';
2
2
  import { Helper } from '../util/helper';
3
+ import { BehaviorSubject } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "../services/ui.service";
5
6
  import * as i2 from "@angular/common";
@@ -14,17 +15,23 @@ import * as i8 from "../pipes/replace-chars.pipe";
14
15
  * but can also be used standalone.
15
16
  */
16
17
  export class DropdownComponent {
17
- set options(options) {
18
- this._options = this.ui.filterValidOptions(Helper.deepCopyArray(options));
19
- }
20
18
  constructor(ui) {
21
19
  this.ui = ui;
22
20
  this.position = 'left';
21
+ this.options$ = new BehaviorSubject([]);
23
22
  /**
24
23
  * Should disabled ("greyed out") options be shown or hidden?
25
24
  */
26
25
  this.showDisabled = true;
27
26
  }
27
+ ngOnChanges(changes) {
28
+ if (changes == null || changes?.options || changes?.callbackObject) {
29
+ this.options$.next(this.ui.filterValidOptions(Helper.deepCopyArray(this.options)));
30
+ if (this.callbackObject) {
31
+ this.ui.updateOptionEnabledState(this.options$, this.callbackObject);
32
+ }
33
+ }
34
+ }
28
35
  click(option) {
29
36
  if (!option.isEnabled) {
30
37
  return;
@@ -33,7 +40,7 @@ export class DropdownComponent {
33
40
  }
34
41
  isNewGroup(i) {
35
42
  if (i > 0) {
36
- return this._options[i].group !== this._options[i - 1].group;
43
+ return this.options$.value[i].group !== this.options$.value[i - 1].group;
37
44
  }
38
45
  return false;
39
46
  }
@@ -42,14 +49,14 @@ export class DropdownComponent {
42
49
  // We can only open the dropdown menu, when there is at least one enabled option. Even when
43
50
  // there are options with `showDisabled: true`, showing a menu with no selectable option
44
51
  // causes a11y issues.
45
- return this._options?.some((o) => o.isEnabled);
52
+ return this.options$.value?.some((o) => o.isEnabled);
46
53
  }
47
54
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DropdownComponent, deps: [{ token: i1.UIService }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: DropdownComponent, selector: "es-dropdown", inputs: { position: "position", options: "options", callbackObject: "callbackObject", showDisabled: "showDisabled", menuClass: "menuClass" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], ngImport: i0, template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of _options; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:var(--focusWidth) solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: calc(var(--mobileWidth) - var(--mobileStage) * 1)){::ng-deep .mat-dropdown-menu ul li.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu ul li.mat-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.OptionTooltipPipe, name: "optionTooltip" }, { kind: "pipe", type: i8.ReplaceCharsPipe, name: "replaceChars" }] }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: DropdownComponent, selector: "es-dropdown", inputs: { position: "position", options: "options", callbackObject: "callbackObject", showDisabled: "showDisabled", menuClass: "menuClass" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of options$ | async; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:var(--focusWidth) solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: calc(var(--mobileWidth) - var(--mobileStage) * 1)){::ng-deep .mat-dropdown-menu ul li.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu ul li.mat-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.OptionTooltipPipe, name: "optionTooltip" }, { kind: "pipe", type: i8.ReplaceCharsPipe, name: "replaceChars" }] }); }
49
56
  }
50
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DropdownComponent, decorators: [{
51
58
  type: Component,
52
- args: [{ selector: 'es-dropdown', template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of _options; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:var(--focusWidth) solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: calc(var(--mobileWidth) - var(--mobileStage) * 1)){::ng-deep .mat-dropdown-menu ul li.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu ul li.mat-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0}}\n"] }]
59
+ args: [{ selector: 'es-dropdown', template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of options$ | async; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:var(--focusWidth) solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: calc(var(--mobileWidth) - var(--mobileStage) * 1)){::ng-deep .mat-dropdown-menu ul li.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu ul li.mat-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0}}\n"] }]
53
60
  }], ctorParameters: () => [{ type: i1.UIService }], propDecorators: { menu: [{
54
61
  type: ViewChild,
55
62
  args: ['dropdown', { static: true }]
@@ -67,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
67
74
  }], menuClass: [{
68
75
  type: Input
69
76
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFHeEM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQU0xQixJQUFhLE9BQU8sQ0FBQyxPQUFxQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUF3QkQsWUFBb0IsRUFBYTtRQUFiLE9BQUUsR0FBRixFQUFFLENBQVc7UUE1QnhCLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBYTdDOztXQUVHO1FBQ00saUJBQVksR0FBRyxJQUFJLENBQUM7SUFZTyxDQUFDO0lBRXJDLEtBQUssQ0FBQyxNQUFrQjtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxDQUFTO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsZUFBZTtRQUNYLDJGQUEyRjtRQUMzRix3RkFBd0Y7UUFDeEYsc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxDQUFDOzhHQXREUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4WUNmOUIsb3lDQWdDQTs7MkZEakJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxhQUFhOzhFQUtrQixJQUFJO3NCQUE1QyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2IsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUVmLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRU8sT0FBTztzQkFBbkIsS0FBSztnQkFTRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudSwgTWF0TWVudUNvbnRlbnQsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvb3B0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vdXRpbC9oZWxwZXInO1xuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdWkuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGRyb3Bkb3duIGlzIG9uZSBiYXNlIGNvbXBvbmVudCBvZiB0aGUgYWN0aW9uIGJhciAoc2hvd2luZyBtb3JlIGFjdGlvbnMpLFxuICogYnV0IGNhbiBhbHNvIGJlIHVzZWQgc3RhbmRhbG9uZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcy1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICdkcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IHtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bicsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnU6IE1hdE1lbnU7XG4gICAgQFZpZXdDaGlsZCgnbWVudVRyaWdnZXInKSBtZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG5cbiAgICBASW5wdXQoKSBwb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcblxuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKG9wdGlvbnM6IE9wdGlvbkl0ZW1bXSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy51aS5maWx0ZXJWYWxpZE9wdGlvbnMoSGVscGVyLmRlZXBDb3B5QXJyYXkob3B0aW9ucykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvYmplY3QgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgdmlhIHRoZSBvcHRpb24ncyBjYWxsYmFjay5cbiAgICAgKlxuICAgICAqIENhbiBiZSBudWxsXG4gICAgICovXG4gICAgQElucHV0KCkgY2FsbGJhY2tPYmplY3Q6IGFueTtcblxuICAgIC8qKlxuICAgICAqIFNob3VsZCBkaXNhYmxlZCAoXCJncmV5ZWQgb3V0XCIpIG9wdGlvbnMgYmUgc2hvd24gb3IgaGlkZGVuP1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dEaXNhYmxlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhZGRpdGlvbmFsIGNsYXNzIHRvIGFkZCB0byB0aGUgYG1hdC1tZW51YCBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgbmVlZGVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVudSBzdHlsaW5nIHNpbmNlIHRoZSBtZW51IGNvbnRlbnRzIGFyZVxuICAgICAqIHRha2VuIG91dCBvZiB0aGUgaG9zdCBjb250YWluZXIgYnkgYW5ndWxhci5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtZW51Q2xhc3M6IHN0cmluZztcblxuICAgIF9vcHRpb25zOiBPcHRpb25JdGVtW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVpOiBVSVNlcnZpY2UpIHt9XG5cbiAgICBjbGljayhvcHRpb246IE9wdGlvbkl0ZW0pIHtcbiAgICAgICAgaWYgKCFvcHRpb24uaXNFbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBvcHRpb24uY2FsbGJhY2sodGhpcy5jYWxsYmFja09iamVjdCkpO1xuICAgIH1cblxuICAgIGlzTmV3R3JvdXAoaTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNbaV0uZ3JvdXAgIT09IHRoaXMuX29wdGlvbnNbaSAtIDFdLmdyb3VwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGVyZSBhcmUgYW55IGVuYWJsZWQgb3B0aW9ucyBzbyB3ZSBjYW4gb3BlbiB0aGUgbWVudS4gKi9cbiAgICBjYW5TaG93RHJvcGRvd24oKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFdlIGNhbiBvbmx5IG9wZW4gdGhlIGRyb3Bkb3duIG1lbnUsIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGVuYWJsZWQgb3B0aW9uLiBFdmVuIHdoZW5cbiAgICAgICAgLy8gdGhlcmUgYXJlIG9wdGlvbnMgd2l0aCBgc2hvd0Rpc2FibGVkOiB0cnVlYCwgc2hvd2luZyBhIG1lbnUgd2l0aCBubyBzZWxlY3RhYmxlIG9wdGlvblxuICAgICAgICAvLyBjYXVzZXMgYTExeSBpc3N1ZXMuXG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zPy5zb21lKChvKSA9PiBvLmlzRW5hYmxlZCk7XG4gICAgfVxufVxuIiwiPG1hdC1tZW51XG4gICNkcm9wZG93bj1cIm1hdE1lbnVcIlxuICBjbGFzcz1cIm1hdC1kcm9wZG93bi1tZW51XCJcbiAgW2NsYXNzXT1cIm1lbnVDbGFzc1wiXG4gIGJhY2tkcm9wQ2xhc3M9XCJtYXQtZHJvcGRvd24tbWVudVwiXG4gIFt4UG9zaXRpb25dPVwicG9zaXRpb24gPT09ICdyaWdodCcgPyAnYWZ0ZXInIDogJ2JlZm9yZSdcIlxuPlxuICA8IS0tIE1hdE1lbnUgaGFzIHJvbGU9XCJtZW51XCIsIHNvIHRoZSBvbmx5IG1lYW5pbmdmdWwgcm9sZSBvZiBkZXNjZW5kYW50cyBpcyBcIm1lbnVpdGVtXCIgLS0+XG4gIDx1bCByb2xlPVwibm9uZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBfb3B0aW9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPGxpICpuZ0lmPVwib3B0aW9uLmlzRW5hYmxlZCB8fCBzaG93RGlzYWJsZWRcIiByb2xlPVwibm9uZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgIGNsYXNzPVwibWF0LW1lbnUtaXRlbSBjb2xsZWN0aW9uLWl0ZW0te3tcbiAgICAgICAgICAgIG9wdGlvbi5uYW1lIHwgcmVwbGFjZUNoYXJzIDogeyBzZWFyY2g6ICcuJywgcmVwbGFjZTogJy0nIH1cbiAgICAgICAgICB9fVwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cInt7IG9wdGlvbiB8IG9wdGlvblRvb2x0aXAgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICBtYXRUb29sdGlwVG91Y2hHZXN0dXJlcz1cIm9mZlwiXG4gICAgICAgICAgW2NsYXNzLm1hdC1tZW51LWl0ZW0tc2VwYXJhdGVdPVwib3B0aW9uLmlzU2VwYXJhdGUgfHwgaXNOZXdHcm91cChpKVwiXG4gICAgICAgICAgW2NsYXNzLm1hdC1tZW51LWl0ZW0tc2VsZWN0ZWRdPVwib3B0aW9uLmlzU2VsZWN0ZWRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhb3B0aW9uLmlzRW5hYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsaWNrKG9wdGlvbilcIlxuICAgICAgICAgIGF0dHIuZGF0YS10ZXN0PVwibWVudS1pdGVtLXt7IG9wdGlvbi5uYW1lIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIFtlc0ljb25dPVwib3B0aW9uLmljb25cIj48L2k+IHt7IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cbjwvbWF0LW1lbnU+XG48ZGl2ICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImRpc3BsYXktbm9uZVwiPjwvZGl2PlxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFFdkM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQTRCMUIsWUFBb0IsRUFBYTtRQUFiLE9BQUUsR0FBRixFQUFFLENBQVc7UUF4QnhCLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBRTdDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBZSxFQUFFLENBQUMsQ0FBQztRQVNqRDs7V0FFRztRQUNNLGlCQUFZLEdBQUcsSUFBSSxDQUFDO0lBVU8sQ0FBQztJQUVyQyxXQUFXLENBQUMsT0FBdUI7UUFDL0IsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sRUFBRSxPQUFPLElBQUksT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFrQjtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxDQUFTO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxlQUFlO1FBQ1gsMkZBQTJGO1FBQzNGLHdGQUF3RjtRQUN4RixzQkFBc0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQTNEUSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtYUNoQjlCLGk0Q0FpQ0E7OzJGRGpCYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0ksYUFBYTs4RUFLa0IsSUFBSTtzQkFBNUMsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNiLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFFZixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51LCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgT3B0aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL29wdGlvbi1pdGVtJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL3V0aWwvaGVscGVyJztcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3VpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogVGhlIGRyb3Bkb3duIGlzIG9uZSBiYXNlIGNvbXBvbmVudCBvZiB0aGUgYWN0aW9uIGJhciAoc2hvd2luZyBtb3JlIGFjdGlvbnMpLFxuICogYnV0IGNhbiBhbHNvIGJlIHVzZWQgc3RhbmRhbG9uZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcy1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICdkcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bicsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnU6IE1hdE1lbnU7XG4gICAgQFZpZXdDaGlsZCgnbWVudVRyaWdnZXInKSBtZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XG5cbiAgICBASW5wdXQoKSBwb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgICBASW5wdXQoKSBvcHRpb25zOiBPcHRpb25JdGVtW107XG4gICAgb3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9wdGlvbkl0ZW1bXT4oW10pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9iamVjdCB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB2aWEgdGhlIG9wdGlvbidzIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogQ2FuIGJlIG51bGxcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjYWxsYmFja09iamVjdDogYW55O1xuXG4gICAgLyoqXG4gICAgICogU2hvdWxkIGRpc2FibGVkIChcImdyZXllZCBvdXRcIikgb3B0aW9ucyBiZSBzaG93biBvciBoaWRkZW4/XG4gICAgICovXG4gICAgQElucHV0KCkgc2hvd0Rpc2FibGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEFuIGFkZGl0aW9uYWwgY2xhc3MgdG8gYWRkIHRvIHRoZSBgbWF0LW1lbnVgIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyBuZWVkZWQgdG8gY3VzdG9taXplIHRoZSBtZW51IHN0eWxpbmcgc2luY2UgdGhlIG1lbnUgY29udGVudHMgYXJlXG4gICAgICogdGFrZW4gb3V0IG9mIHRoZSBob3N0IGNvbnRhaW5lciBieSBhbmd1bGFyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lbnVDbGFzczogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1aTogVUlTZXJ2aWNlKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlcz86IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMgPT0gbnVsbCB8fCBjaGFuZ2VzPy5vcHRpb25zIHx8IGNoYW5nZXM/LmNhbGxiYWNrT2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMkLm5leHQodGhpcy51aS5maWx0ZXJWYWxpZE9wdGlvbnMoSGVscGVyLmRlZXBDb3B5QXJyYXkodGhpcy5vcHRpb25zKSkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FsbGJhY2tPYmplY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVpLnVwZGF0ZU9wdGlvbkVuYWJsZWRTdGF0ZSh0aGlzLm9wdGlvbnMkLCB0aGlzLmNhbGxiYWNrT2JqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsaWNrKG9wdGlvbjogT3B0aW9uSXRlbSkge1xuICAgICAgICBpZiAoIW9wdGlvbi5pc0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IG9wdGlvbi5jYWxsYmFjayh0aGlzLmNhbGxiYWNrT2JqZWN0KSk7XG4gICAgfVxuXG4gICAgaXNOZXdHcm91cChpOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zJC52YWx1ZVtpXS5ncm91cCAhPT0gdGhpcy5vcHRpb25zJC52YWx1ZVtpIC0gMV0uZ3JvdXA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZXJlIGFyZSBhbnkgZW5hYmxlZCBvcHRpb25zIHNvIHdlIGNhbiBvcGVuIHRoZSBtZW51LiAqL1xuICAgIGNhblNob3dEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgLy8gV2UgY2FuIG9ubHkgb3BlbiB0aGUgZHJvcGRvd24gbWVudSwgd2hlbiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZW5hYmxlZCBvcHRpb24uIEV2ZW4gd2hlblxuICAgICAgICAvLyB0aGVyZSBhcmUgb3B0aW9ucyB3aXRoIGBzaG93RGlzYWJsZWQ6IHRydWVgLCBzaG93aW5nIGEgbWVudSB3aXRoIG5vIHNlbGVjdGFibGUgb3B0aW9uXG4gICAgICAgIC8vIGNhdXNlcyBhMTF5IGlzc3Vlcy5cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucyQudmFsdWU/LnNvbWUoKG8pID0+IG8uaXNFbmFibGVkKTtcbiAgICB9XG59XG4iLCI8bWF0LW1lbnVcbiAgI2Ryb3Bkb3duPVwibWF0TWVudVwiXG4gIGNsYXNzPVwibWF0LWRyb3Bkb3duLW1lbnVcIlxuICBbY2xhc3NdPVwibWVudUNsYXNzXCJcbiAgYmFja2Ryb3BDbGFzcz1cIm1hdC1kcm9wZG93bi1tZW51XCJcbiAgW3hQb3NpdGlvbl09XCJwb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/ICdhZnRlcicgOiAnYmVmb3JlJ1wiXG4+XG4gIDwhLS0gTWF0TWVudSBoYXMgcm9sZT1cIm1lbnVcIiwgc28gdGhlIG9ubHkgbWVhbmluZ2Z1bCByb2xlIG9mIGRlc2NlbmRhbnRzIGlzIFwibWVudWl0ZW1cIiAtLT5cbiAgPHVsIHJvbGU9XCJub25lXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnMkIHwgYXN5bmM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxsaSAqbmdJZj1cIm9wdGlvbi5pc0VuYWJsZWQgfHwgc2hvd0Rpc2FibGVkXCIgcm9sZT1cIm5vbmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICBjbGFzcz1cIm1hdC1tZW51LWl0ZW0gY29sbGVjdGlvbi1pdGVtLXt7XG4gICAgICAgICAgICBvcHRpb24ubmFtZSB8IHJlcGxhY2VDaGFycyA6IHsgc2VhcmNoOiAnLicsIHJlcGxhY2U6ICctJyB9XG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBvcHRpb24gfCBvcHRpb25Ub29sdGlwIHwgYXN5bmMgfX1cIlxuICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICBtYXRUb29sdGlwVG91Y2hHZXN0dXJlcz1cIm9mZlwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24uYXJpYUxhYmVsIHx8IG9wdGlvbi5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbY2xhc3MubWF0LW1lbnUtaXRlbS1zZXBhcmF0ZV09XCJvcHRpb24uaXNTZXBhcmF0ZSB8fCBpc05ld0dyb3VwKGkpXCJcbiAgICAgICAgICBbY2xhc3MubWF0LW1lbnUtaXRlbS1zZWxlY3RlZF09XCJvcHRpb24uaXNTZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFvcHRpb24uaXNFbmFibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xpY2sob3B0aW9uKVwiXG4gICAgICAgICAgYXR0ci5kYXRhLXRlc3Q9XCJtZW51LWl0ZW0te3sgb3B0aW9uLm5hbWUgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgW2VzSWNvbl09XCJvcHRpb24uaWNvblwiPjwvaT4ge3sgb3B0aW9uLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9tYXQtbWVudT5cbjxkaXYgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiZGlzcGxheS1ub25lXCI+PC9kaXY+XG4iXX0=