@fundamental-ngx/platform 0.48.1-rc.2 → 0.48.1-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/esm2022/dynamic-page/dynamic-page.component.mjs +2 -2
  2. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +6 -2
  3. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +11 -5
  4. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +25 -8
  5. package/esm2022/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.mjs +29 -0
  6. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +8 -4
  7. package/esm2022/icon-tab-bar/index.mjs +2 -1
  8. package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +1 -1
  9. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +1 -1
  10. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +72 -17
  12. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +1 -1
  14. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  15. package/fundamental-ngx-platform-v0.48.1-rc.3.tgz +0 -0
  16. package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +2 -1
  17. package/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.d.ts +3 -1
  18. package/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.d.ts +12 -1
  19. package/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.d.ts +23 -0
  20. package/icon-tab-bar/icon-tab-bar.component.d.ts +3 -1
  21. package/icon-tab-bar/index.d.ts +1 -0
  22. package/package.json +10 -10
  23. package/fundamental-ngx-platform-v0.48.1-rc.2.tgz +0 -0
@@ -11,6 +11,7 @@ import { IconBarDndListDirective } from '../../directives/dnd/icon-bar-dnd-list.
11
11
  import { ClosableIconTabBar } from '../closable-icon-tab-bar.class';
12
12
  import { IconTabBarBase } from '../icon-tab-bar-base.class';
13
13
  import { TextTypePopoverComponent } from '../popovers/text-type-popover/text-type-popover.component';
14
+ import { IconTabBarTextTypeTabItemComponent } from '../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';
14
15
  import * as i0 from "@angular/core";
15
16
  export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
16
17
  constructor() {
@@ -19,6 +20,8 @@ export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
19
20
  * @description Disable or enable reordering(drag and drop) feature.
20
21
  */
21
22
  this.enableTabReordering = false;
23
+ /** Whether to render icon tab item as multi-click variant. */
24
+ this.multiClick = false;
22
25
  /**
23
26
  * @description Emits when user drops the tab.
24
27
  */
@@ -124,12 +127,12 @@ export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
124
127
  return tabUIElement._dropdownTrigger.nativeElement;
125
128
  }
126
129
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarTextTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
127
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: IconTabBarTextTypeComponent, isStandalone: true, selector: "fdp-icon-tab-bar-text-type", inputs: { enableTabReordering: "enableTabReordering", layoutMode: "layoutMode" }, outputs: { reordered: "reordered" }, providers: [
130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: IconTabBarTextTypeComponent, isStandalone: true, selector: "fdp-icon-tab-bar-text-type", inputs: { enableTabReordering: "enableTabReordering", layoutMode: "layoutMode", multiClick: "multiClick" }, outputs: { reordered: "reordered" }, providers: [
128
131
  {
129
132
  provide: IconTabBarBase,
130
133
  useExisting: IconTabBarTextTypeComponent
131
134
  }
132
- ], viewQueries: [{ propertyName: "_tabBarPopover", first: true, predicate: ["extraItemsPopover"], descendants: true }, { propertyName: "_tabUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length) {\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n >\n @if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item.label | fdkAsyncOrSync }}\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n } @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label | fdkAsyncOrSync }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n } @else {\n <fdp-text-type-popover\n #tabItem\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconBarDndContainerDirective, selector: "[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]", inputs: ["draggable"], outputs: ["dropped"] }, { kind: "directive", type: OverflowListDirective, selector: "[fdkOverflowList]", inputs: ["overflowOffset", "isRtl", "itemCssBlockValue"], outputs: ["overflowChanged"] }, { kind: "directive", type: IconBarDndListDirective, selector: "[fdpIconBarDndList], [fdp-icon-bar-dnd-list]", inputs: ["dndOrientation", "dndAutoScroll"] }, { kind: "directive", type: OverflowListItemDirective, selector: "[fdkOverflowListItem]" }, { kind: "directive", type: IconBarDndItemDirective, selector: "[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]", inputs: ["dndItemData", "previewClass", "dndHoveredClass", "dndSeparatorClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TextTypePopoverComponent, selector: "fdp-text-type-popover", inputs: ["isExtraItemsMode", "parentTab", "selectedSubItemUid", "tabindex"], outputs: ["selectedSubItem"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "pipe", type: AsyncOrSyncPipe, name: "fdkAsyncOrSync" }] }); }
135
+ ], viewQueries: [{ propertyName: "_tabBarPopover", first: true, predicate: ["extraItemsPopover"], descendants: true }, { propertyName: "_tabUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--multi-click]=\"multiClick && item.subItems?.length\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length && !multiClick) {\n <a\n #tabItem\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"item\"\n [layoutMode]=\"layoutMode\"\n [colorAssociations]=\"colorAssociations\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n </a>\n }\n @if (item.subItems?.length || multiClick) {\n <fdp-text-type-popover\n #tabItem\n #itemPopover\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [layoutMode]=\"layoutMode\"\n [multiClick]=\"multiClick\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx, itemPopover)\"\n (closeTab)=\"_closeTab($event)\"\n (selectedItem)=\"_selectItem(item)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconBarDndContainerDirective, selector: "[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]", inputs: ["draggable"], outputs: ["dropped"] }, { kind: "directive", type: OverflowListDirective, selector: "[fdkOverflowList]", inputs: ["overflowOffset", "isRtl", "itemCssBlockValue"], outputs: ["overflowChanged"] }, { kind: "directive", type: IconBarDndListDirective, selector: "[fdpIconBarDndList], [fdp-icon-bar-dnd-list]", inputs: ["dndOrientation", "dndAutoScroll"] }, { kind: "directive", type: OverflowListItemDirective, selector: "[fdkOverflowListItem]" }, { kind: "directive", type: IconBarDndItemDirective, selector: "[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]", inputs: ["dndItemData", "previewClass", "dndHoveredClass", "dndSeparatorClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TextTypePopoverComponent, selector: "fdp-text-type-popover", inputs: ["multiClick", "layoutMode", "isExtraItemsMode", "parentTab", "selectedSubItemUid", "tabindex"], outputs: ["selectedSubItem", "selectedItem"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: IconTabBarTextTypeTabItemComponent, selector: "[fdp-icon-tab-bar-text-type-tab-item]", inputs: ["item", "layoutMode", "colorAssociations"] }] }); }
133
136
  }
134
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarTextTypeComponent, decorators: [{
135
138
  type: Component,
@@ -148,8 +151,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
148
151
  TextTypePopoverComponent,
149
152
  ButtonComponent,
150
153
  IconComponent,
151
- AsyncOrSyncPipe
152
- ], template: "<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length) {\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n >\n @if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item.label | fdkAsyncOrSync }}\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n } @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label | fdkAsyncOrSync }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n } @else {\n <fdp-text-type-popover\n #tabItem\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n" }]
154
+ AsyncOrSyncPipe,
155
+ IconTabBarTextTypeTabItemComponent
156
+ ], template: "<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--multi-click]=\"multiClick && item.subItems?.length\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length && !multiClick) {\n <a\n #tabItem\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"item\"\n [layoutMode]=\"layoutMode\"\n [colorAssociations]=\"colorAssociations\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n </a>\n }\n @if (item.subItems?.length || multiClick) {\n <fdp-text-type-popover\n #tabItem\n #itemPopover\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [layoutMode]=\"layoutMode\"\n [multiClick]=\"multiClick\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx, itemPopover)\"\n (closeTab)=\"_closeTab($event)\"\n (selectedItem)=\"_selectItem(item)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n" }]
153
157
  }], propDecorators: { _tabUIElements: [{
154
158
  type: ViewChildren,
155
159
  args: ['tabItem']
@@ -160,7 +164,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
160
164
  type: Input
161
165
  }], layoutMode: [{
162
166
  type: Input
167
+ }], multiClick: [{
168
+ type: Input
163
169
  }], reordered: [{
164
170
  type: Output
165
171
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci10ZXh0LXR5cGUvaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci10ZXh0LXR5cGUvaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxlQUFlLEVBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQWMsNEJBQTRCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0Ms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QUF1QixzSUFDdkIseUJBQXlCLGtFQUN6Qix1QkFBdUIsMEtBQ3ZCLE9BQU8sb0ZBQ1Asd0JBQXdCLDZLQUN4QixlQUFlLHdIQUNmLGFBQWEscUlBQ2IsZUFBZTs7MkZBR1YsMkJBQTJCO2tCQXZCdkMsU0FBUzsrQkFDSSw0QkFBNEIsY0FFMUIsSUFBSSxhQUNMO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixXQUFXLDZCQUE2Qjt5QkFDM0M7cUJBQ0osV0FDUTt3QkFDTCw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsT0FBTzt3QkFDUCx3QkFBd0I7d0JBQ3hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3FCQUNsQjs4QkFJd0IsY0FBYztzQkFBdEMsWUFBWTt1QkFBQyxTQUFTO2dCQUdTLGNBQWM7c0JBQTdDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQU05QixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQU9OLFNBQVM7c0JBRFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY09yU3luY1BpcGUsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE92ZXJmbG93TGlzdERpcmVjdGl2ZSwgT3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pY29uJztcbmltcG9ydCB7IFVOSVFVRV9LRVlfU0VQQVJBVE9SIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEZkRG5ERXZlbnQsIEljb25CYXJEbmRDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RuZC9pY29uLWJhci1kbmQtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uVGFiQmFySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaWNvbi10YWItYmFyLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IENsb3NhYmxlSWNvblRhYkJhciB9IGZyb20gJy4uL2Nsb3NhYmxlLWljb24tdGFiLWJhci5jbGFzcyc7XG5pbXBvcnQgeyBJY29uVGFiQmFyQmFzZSB9IGZyb20gJy4uL2ljb24tdGFiLWJhci1iYXNlLmNsYXNzJztcbmltcG9ydCB7IFRleHRUeXBlUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXJzL3RleHQtdHlwZS1wb3BvdmVyL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudCc7XG5cbi8qKiBAaGlkZGVuICovXG5pbnRlcmZhY2UgRGF0YUZvclJlb3JkZXJpbmcge1xuICAgIGFycjogSWNvblRhYkJhckl0ZW1bXTtcbiAgICBpdGVtOiBJY29uVGFiQmFySXRlbTtcbiAgICBwYXJlbnRVaWQ6IHN0cmluZztcbn1cblxuLyoqIEBoaWRkZW4gKi9cbnR5cGUgVGFiSXRlbSA9IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1pY29uLXRhYi1iYXItdGV4dC10eXBlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogSWNvblRhYkJhckJhc2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWNvblRhYkJhclRleHRUeXBlQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgSWNvbkJhckRuZENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMaXN0RGlyZWN0aXZlLFxuICAgICAgICBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZSxcbiAgICAgICAgSWNvbkJhckRuZEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIFRleHRUeXBlUG9wb3ZlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBBc3luY09yU3luY1BpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEljb25UYWJCYXJUZXh0VHlwZUNvbXBvbmVudCBleHRlbmRzIENsb3NhYmxlSWNvblRhYkJhciB7XG4gICAgLyoqIEBoaWRkZW4gbGlzdCBvZiB0YWIgaHRtbCBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cyAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RhYkl0ZW0nKSBfdGFiVUlFbGVtZW50czogUXVlcnlMaXN0PFRhYkl0ZW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdleHRyYUl0ZW1zUG9wb3ZlcicpIF90YWJCYXJQb3BvdmVyOiBUZXh0VHlwZVBvcG92ZXJDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGlzYWJsZSBvciBlbmFibGUgcmVvcmRlcmluZyhkcmFnIGFuZCBkcm9wKSBmZWF0dXJlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW5hYmxlVGFiUmVvcmRlcmluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExheW91dCB0eXBlIGZvciB0YWIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYXlvdXRNb2RlOiAncm93JyB8ICdjb2x1bW4nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gdXNlciBkcm9wcyB0aGUgdGFiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlb3JkZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SWNvblRhYkJhckl0ZW1bXT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtXG4gICAgICovXG4gICAgX3NlbGVjdEV4dHJhSXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBzZWxlY3RlZCBpdGVtIGlzIHN1Ykl0ZW1cbiAgICAgICAgLy8gVGhlbiB0byBmaW5kIHJvb3QgdGFiLCBhbmQgcGFzcyBpdCB0byB0aGUgcGFyZW50IG1ldGhvZC5cbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbT8udUlkLmluY2x1ZGVzKFVOSVFVRV9LRVlfU0VQQVJBVE9SKSkge1xuICAgICAgICAgICAgY29uc3Qgcm9vdFRhYlVpZCA9IHNlbGVjdGVkSXRlbS51SWQuc3BsaXQoVU5JUVVFX0tFWV9TRVBBUkFUT1IpWzBdO1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID0gdGhpcy50YWJzLmZpbmQoKHRhYikgPT4gdGFiLnVJZCA9PT0gcm9vdFRhYlVpZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5fc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBkcmFnZ2FibGVJdGVtXG4gICAgICogQHBhcmFtIHRhcmdldEl0ZW1cbiAgICAgKiBAcGFyYW0gYWN0aW9uXG4gICAgICovXG4gICAgX29uRHJvcHBlZChldmVudDogRmREbkRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NhbkRyb3AoZXZlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBsYWNlZFBhcnNlZFVpZEFyciA9IGV2ZW50LnRhcmdldEl0ZW0udUlkLnNwbGl0KFVOSVFVRV9LRVlfU0VQQVJBVE9SKTtcbiAgICAgICAgcmVwbGFjZWRQYXJzZWRVaWRBcnIubGVuZ3RoID0gcmVwbGFjZWRQYXJzZWRVaWRBcnIubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgZHJhZ2dhYmxlUGFyc2VkVWlkQXJyID0gZXZlbnQuZHJhZ2dhYmxlSXRlbS51SWQuc3BsaXQoVU5JUVVFX0tFWV9TRVBBUkFUT1IpO1xuICAgICAgICBkcmFnZ2FibGVQYXJzZWRVaWRBcnIubGVuZ3RoID0gZHJhZ2dhYmxlUGFyc2VkVWlkQXJyLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgY29uc3QgdGFiSW5mb0Zvck5ld0xpc3QgPSB0aGlzLl9nZXRUYWJJbmZvRnJvbU1haW5MaXN0KGV2ZW50LnRhcmdldEl0ZW0udUlkKTtcbiAgICAgICAgY29uc3QgdGFiSW5mb0ZvclByZXZMaXN0ID0gdGhpcy5fZ2V0VGFiSW5mb0Zyb21NYWluTGlzdChldmVudC5kcmFnZ2FibGVJdGVtLnVJZCk7XG5cbiAgICAgICAgaWYgKCF0YWJJbmZvRm9yTmV3TGlzdCB8fCAhdGFiSW5mb0ZvclByZXZMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhRm9yQWN0aW9uID0ge1xuICAgICAgICAgICAgcmVwbGFjZWRJdGVtSW5mbzoge1xuICAgICAgICAgICAgICAgIGFycjogdGFiSW5mb0Zvck5ld0xpc3QucGFyZW50LFxuICAgICAgICAgICAgICAgIGl0ZW06IHRhYkluZm9Gb3JOZXdMaXN0LnRhYixcbiAgICAgICAgICAgICAgICBwYXJlbnRVaWQ6IHJlcGxhY2VkUGFyc2VkVWlkQXJyLmxlbmd0aCA/IHJlcGxhY2VkUGFyc2VkVWlkQXJyLmpvaW4oVU5JUVVFX0tFWV9TRVBBUkFUT1IpIDogJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkcmFnZ2FibGVJdGVtSW5mbzoge1xuICAgICAgICAgICAgICAgIGFycjogdGFiSW5mb0ZvclByZXZMaXN0LnBhcmVudCxcbiAgICAgICAgICAgICAgICBpdGVtOiB0YWJJbmZvRm9yUHJldkxpc3QudGFiLFxuICAgICAgICAgICAgICAgIHBhcmVudFVpZDogZHJhZ2dhYmxlUGFyc2VkVWlkQXJyLmxlbmd0aCA/IGRyYWdnYWJsZVBhcnNlZFVpZEFyci5qb2luKFVOSVFVRV9LRVlfU0VQQVJBVE9SKSA6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZXZlbnQuYWN0aW9uID09PSAncmVwbGFjZScgPyB0aGlzLl9yZXBsYWNlQXNTaWJsaW5nKGRhdGFGb3JBY3Rpb24pIDogdGhpcy5faW5zZXJ0SXRlbUFzQ2hpbGQoZGF0YUZvckFjdGlvbik7XG5cbiAgICAgICAgdGhpcy5yZW9yZGVyZWQuZW1pdCh0aGlzLnRhYnMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FuRHJvcChldmVudDogRmREbkRFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcGFyZW50VUlkOiBOdWxsYWJsZTxzdHJpbmc+ID1cbiAgICAgICAgICAgIGV2ZW50LmFjdGlvbiA9PT0gJ3JlcGxhY2UnID8gZXZlbnQudGFyZ2V0SXRlbS5wYXJlbnRVSWQgOiBldmVudC50YXJnZXRJdGVtLnVJZDtcbiAgICAgICAgd2hpbGUgKHBhcmVudFVJZCkge1xuICAgICAgICAgICAgaWYgKHBhcmVudFVJZCA9PT0gZXZlbnQuZHJhZ2dhYmxlSXRlbS51SWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXh0U2VwYXJhdG9ySWR4ID0gcGFyZW50VUlkLmxhc3RJbmRleE9mKFVOSVFVRV9LRVlfU0VQQVJBVE9SKTtcblxuICAgICAgICAgICAgcGFyZW50VUlkID0gbmV4dFNlcGFyYXRvcklkeCA+IDAgPyBwYXJlbnRVSWQuc2xpY2UoMCwgbmV4dFNlcGFyYXRvcklkeCkgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnNlcnQgdGFiIGludG8gYW5vdGhlciB0YWIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5zZXJ0SXRlbUFzQ2hpbGQoZGF0YToge1xuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvOiBEYXRhRm9yUmVvcmRlcmluZztcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm86IERhdGFGb3JSZW9yZGVyaW5nO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyByZXBsYWNlZEl0ZW1JbmZvLCBkcmFnZ2FibGVJdGVtSW5mbyB9ID0gZGF0YTtcbiAgICAgICAgLy8gUmVtb3ZlIGRyYWdnYWJsZSB0YWIgZnJvbSBwcmV2aW91cyBsaXN0XG4gICAgICAgIGRyYWdnYWJsZUl0ZW1JbmZvLmFyci5zcGxpY2UoZHJhZ2dhYmxlSXRlbUluZm8uaXRlbS5pbmRleCwgMSk7XG4gICAgICAgIGlmICghcmVwbGFjZWRJdGVtSW5mby5pdGVtLnN1Ykl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcGxhY2VkSXRlbUluZm8uaXRlbS5zdWJJdGVtcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCB0YWIgdG8gc3ViaXRlbSBvZiB0aGUgdGFyZ2V0IHRhYlxuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvLml0ZW0uc3ViSXRlbXMucHVzaChkcmFnZ2FibGVJdGVtSW5mby5pdGVtKTtcbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy5fdXBkYXRlVGFicyh0aGlzLnRhYnMpO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnNlcnQgdGFiIGJldHdlZW4gdGFic1xuICAgICAqL1xuICAgIHByaXZhdGUgX3JlcGxhY2VBc1NpYmxpbmcoZGF0YToge1xuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvOiBEYXRhRm9yUmVvcmRlcmluZztcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm86IERhdGFGb3JSZW9yZGVyaW5nO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyByZXBsYWNlZEl0ZW1JbmZvLCBkcmFnZ2FibGVJdGVtSW5mbyB9ID0gZGF0YTtcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm8uYXJyLnNwbGljZShkcmFnZ2FibGVJdGVtSW5mby5pdGVtLmluZGV4LCAxKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSByZXBsYWNlZEl0ZW1JbmZvPy5pdGVtPy5pbmRleCB8fCAwO1xuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvLmFyci5zcGxpY2UobmV3SW5kZXgsIDAsIGRyYWdnYWJsZUl0ZW1JbmZvLml0ZW0pO1xuICAgICAgICB0aGlzLnRhYnMgPSB0aGlzLl91cGRhdGVUYWJzKHRoaXMudGFicyk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2dldFRhYlVJRWxlbWVudEZvY3VzYWJsZSh0YWJVSUVsZW1lbnQ6IFRhYkl0ZW0pOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGlmICh0eXBlb2YgdGFiVUlFbGVtZW50ID09PSAnb2JqZWN0JyAmJiAnbmF0aXZlRWxlbWVudCcgaW4gdGFiVUlFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGFiVUlFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhYlVJRWxlbWVudC5fZHJvcGRvd25UcmlnZ2VyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBmZHBJY29uQmFyRG5kQ29udGFpbmVyIFtkcmFnZ2FibGVdPVwiZW5hYmxlVGFiUmVvcmRlcmluZ1wiIChkcm9wcGVkKT1cIl9vbkRyb3BwZWQoJGV2ZW50KVwiPlxuICAgIDx1bFxuICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faGVhZGVyXCJcbiAgICAgICAgW2NsYXNzLmZkLWR5bmFtaWMtcGFnZV9fdGFic109XCJfaW5EeW5hbWljUGFnZVwiXG4gICAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICAgICAgI3RhYmxpc3RcbiAgICAgICAgZmRrT3ZlcmZsb3dMaXN0XG4gICAgICAgIFtpc1J0bF09XCJpc1J0bFwiXG4gICAgICAgIFtvdmVyZmxvd09mZnNldF09XCIxMDBcIlxuICAgICAgICBmZHBJY29uQmFyRG5kTGlzdFxuICAgICAgICBkbmRPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAob3ZlcmZsb3dDaGFuZ2VkKT1cIl9yZWNhbGN1bGF0ZVZpc2libGVJdGVtcygkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgdGFiczsgdHJhY2sgaXRlbS51SWQ7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY3NzQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgZmRrT3ZlcmZsb3dMaXN0SXRlbVxuICAgICAgICAgICAgICAgIGZkcEljb25CYXJEbmRJdGVtXG4gICAgICAgICAgICAgICAgW2RuZFNlcGFyYXRvckNsYXNzXT1cIlsnZmQtaWNvbi10YWItYmFyX19pdGVtLS1kbmQtc2VwYXJhdG9yJ11cIlxuICAgICAgICAgICAgICAgIFtkbmRJdGVtRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faXRlbVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZkLWljb24tdGFiLWJhcl9faXRlbS0tY2xvc2FibGVdPVwiaXRlbS5jbG9zYWJsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoIWl0ZW0uc3ViSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpZHggPT09IDAgPyAwIDogLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zZWxlY3RJdGVtKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX2tleURvd25IYW5kbGVyKCRldmVudCwgaXRlbSwgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIml0ZW0udUlkID09PSBzZWxlY3RlZFVpZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGF5b3V0TW9kZSA9PT0gJ3JvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBmZGtBc3luY09yU3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY291bnRlciB8IGZka0FzeW5jT3JTeW5jOyBhcyBpdGVtQ291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGl0ZW1Db3VudGVyIH19KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2NvdW50ZXJcIj57eyBpdGVtLmNvdW50ZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhZ1wiPnt7IGl0ZW0ubGFiZWwgfCBmZGtBc3luY09yU3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jb2xvciB8IGZka0FzeW5jT3JTeW5jOyBhcyBpdGVtQ29sb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NyZWVucmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKGNvbG9yQXNzb2NpYXRpb25zICYmIGNvbG9yQXNzb2NpYXRpb25zW2l0ZW1Db2xvcl0pIHx8IGl0ZW1Db2xvciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGV4dC10eXBlLXBvcG92ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICN0YWJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaWR4ID09PSAwID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRUYWJdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRTdWJJdGVtVWlkXT1cInNlbGVjdGVkVWlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvckFzc29jaWF0aW9uc109XCJjb2xvckFzc29jaWF0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRTdWJJdGVtKT1cIl9zZWxlY3RJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX2tleURvd25IYW5kbGVyKCRldmVudCwgaXRlbSwgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VUYWIpPVwiX2Nsb3NlVGFiKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZmRwLXRleHQtdHlwZS1wb3BvdmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY2xvc2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2Nsb3NlVGFiKGl0ZW0udUlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJkZWNsaW5lXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfZXh0cmFJdGVtcyQoKSkge1xuICAgICAgICAgICAgPGxpIHJvbGU9XCJwcmVzZW50YXRpb25cIiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faXRlbSBmZC1pY29uLXRhYi1iYXJfX2l0ZW0tLW92ZXJmbG93XCI+XG4gICAgICAgICAgICAgICAgPGZkcC10ZXh0LXR5cGUtcG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAjZXh0cmFJdGVtc1BvcG92ZXJcbiAgICAgICAgICAgICAgICAgICAgW2lzUnRsXT1cImlzUnRsXCJcbiAgICAgICAgICAgICAgICAgICAgW2V4dHJhVGFic109XCJfZXh0cmFUYWJzJCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzRXh0cmFJdGVtc01vZGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvckFzc29jaWF0aW9uc109XCJjb2xvckFzc29jaWF0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZEV4dHJhSXRlbSk9XCJfc2VsZWN0RXh0cmFJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXNGaXJzdFZpc2libGVJdGVtKT1cIl9mb2N1c0l0ZW0oMClcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXNMYXN0VmlzaWJsZUl0ZW0pPVwiX2ZvY3VzSXRlbShfbGFzdFZpc2libGVUYWJJbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xvc2VUYWIpPVwiX2Nsb3NlVGFiKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkcC10ZXh0LXR5cGUtcG9wb3Zlcj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICA8L3VsPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci10ZXh0LXR5cGUvaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci10ZXh0LXR5cGUvaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxlQUFlLEVBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQWMsNEJBQTRCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0Ms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Q3ZCLFdBQVcsRUFBRSwyQkFBMkI7YUFDM0M7U0FDSixxUENwQ0wsMitIQXlGQSw0Q0RuRFEsNEJBQTRCLGdKQUM1QixxQkFBcUIsc0pBQ3JCLHVCQUF1QixzSUFDdkIseUJBQXlCLGtFQUN6Qix1QkFBdUIsMEtBQ3ZCLE9BQU8sb0ZBQ1Asd0JBQXdCLHlOQUN4QixlQUFlLHdIQUNmLGFBQWEsMElBRWIsa0NBQWtDOzsyRkFHN0IsMkJBQTJCO2tCQXhCdkMsU0FBUzsrQkFDSSw0QkFBNEIsY0FFMUIsSUFBSSxhQUNMO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixXQUFXLDZCQUE2Qjt5QkFDM0M7cUJBQ0osV0FDUTt3QkFDTCw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsT0FBTzt3QkFDUCx3QkFBd0I7d0JBQ3hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGtDQUFrQztxQkFDckM7OEJBSXdCLGNBQWM7c0JBQXRDLFlBQVk7dUJBQUMsU0FBUztnQkFHUyxjQUFjO3NCQUE3QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFNOUIsbUJBQW1CO3NCQURsQixLQUFLO2dCQU9OLFVBQVU7c0JBRFQsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBT04sU0FBUztzQkFEUixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jT3JTeW5jUGlwZSwgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT3ZlcmZsb3dMaXN0RGlyZWN0aXZlLCBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgVU5JUVVFX0tFWV9TRVBBUkFUT1IgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRmREbkRFdmVudCwgSWNvbkJhckRuZENvbnRhaW5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1jb250YWluZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEljb25CYXJEbmRJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9kbmQvaWNvbi1iYXItZG5kLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEljb25CYXJEbmRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9kbmQvaWNvbi1iYXItZG5kLWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEljb25UYWJCYXJJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pY29uLXRhYi1iYXItaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xvc2FibGVJY29uVGFiQmFyIH0gZnJvbSAnLi4vY2xvc2FibGUtaWNvbi10YWItYmFyLmNsYXNzJztcbmltcG9ydCB7IEljb25UYWJCYXJCYXNlIH0gZnJvbSAnLi4vaWNvbi10YWItYmFyLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wb3ZlcnMvdGV4dC10eXBlLXBvcG92ZXIvdGV4dC10eXBlLXBvcG92ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25UYWJCYXJUZXh0VHlwZVRhYkl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi90ZXh0LXR5cGUtdGFiLWl0ZW0vaWNvbi10YWItYmFyLXRleHQtdHlwZS10YWItaXRlbS5jb21wb25lbnQnO1xuXG4vKiogQGhpZGRlbiAqL1xuaW50ZXJmYWNlIERhdGFGb3JSZW9yZGVyaW5nIHtcbiAgICBhcnI6IEljb25UYWJCYXJJdGVtW107XG4gICAgaXRlbTogSWNvblRhYkJhckl0ZW07XG4gICAgcGFyZW50VWlkOiBzdHJpbmc7XG59XG5cbi8qKiBAaGlkZGVuICovXG50eXBlIFRhYkl0ZW0gPSBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IFRleHRUeXBlUG9wb3ZlckNvbXBvbmVudDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtaWNvbi10YWItYmFyLXRleHQtdHlwZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ljb24tdGFiLWJhci10ZXh0LXR5cGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEljb25UYWJCYXJCYXNlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEljb25UYWJCYXJUZXh0VHlwZUNvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEljb25CYXJEbmRDb250YWluZXJEaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93TGlzdERpcmVjdGl2ZSxcbiAgICAgICAgSWNvbkJhckRuZExpc3REaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93TGlzdEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIEljb25CYXJEbmRJdGVtRGlyZWN0aXZlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBUZXh0VHlwZVBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgICAgQXN5bmNPclN5bmNQaXBlLFxuICAgICAgICBJY29uVGFiQmFyVGV4dFR5cGVUYWJJdGVtQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJY29uVGFiQmFyVGV4dFR5cGVDb21wb25lbnQgZXh0ZW5kcyBDbG9zYWJsZUljb25UYWJCYXIge1xuICAgIC8qKiBAaGlkZGVuIGxpc3Qgb2YgdGFiIGh0bWwgZWxlbWVudHMsIHRoYXQgY2FuIHJlY2VpdmUgZm9jdXMgKi9cbiAgICBAVmlld0NoaWxkcmVuKCd0YWJJdGVtJykgX3RhYlVJRWxlbWVudHM6IFF1ZXJ5TGlzdDxUYWJJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZXh0cmFJdGVtc1BvcG92ZXInKSBfdGFiQmFyUG9wb3ZlcjogVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERpc2FibGUgb3IgZW5hYmxlIHJlb3JkZXJpbmcoZHJhZyBhbmQgZHJvcCkgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVuYWJsZVRhYlJlb3JkZXJpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMYXlvdXQgdHlwZSBmb3IgdGFiLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGF5b3V0TW9kZTogJ3JvdycgfCAnY29sdW1uJztcblxuICAgIC8qKiBXaGV0aGVyIHRvIHJlbmRlciBpY29uIHRhYiBpdGVtIGFzIG11bHRpLWNsaWNrIHZhcmlhbnQuICovXG4gICAgQElucHV0KClcbiAgICBtdWx0aUNsaWNrID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2hlbiB1c2VyIGRyb3BzIHRoZSB0YWIuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVvcmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxJY29uVGFiQmFySXRlbVtdPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKi9cbiAgICBfc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkSXRlbTogSWNvblRhYkJhckl0ZW0gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgc3ViSXRlbVxuICAgICAgICAvLyBUaGVuIHRvIGZpbmQgcm9vdCB0YWIsIGFuZCBwYXNzIGl0IHRvIHRoZSBwYXJlbnQgbWV0aG9kLlxuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtPy51SWQuaW5jbHVkZXMoVU5JUVVFX0tFWV9TRVBBUkFUT1IpKSB7XG4gICAgICAgICAgICBjb25zdCByb290VGFiVWlkID0gc2VsZWN0ZWRJdGVtLnVJZC5zcGxpdChVTklRVUVfS0VZX1NFUEFSQVRPUilbMF07XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSB0aGlzLnRhYnMuZmluZCgodGFiKSA9PiB0YWIudUlkID09PSByb290VGFiVWlkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLl9zZWxlY3RFeHRyYUl0ZW0oc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGRyYWdnYWJsZUl0ZW1cbiAgICAgKiBAcGFyYW0gdGFyZ2V0SXRlbVxuICAgICAqIEBwYXJhbSBhY3Rpb25cbiAgICAgKi9cbiAgICBfb25Ecm9wcGVkKGV2ZW50OiBGZERuREV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY2FuRHJvcChldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkUGFyc2VkVWlkQXJyID0gZXZlbnQudGFyZ2V0SXRlbS51SWQuc3BsaXQoVU5JUVVFX0tFWV9TRVBBUkFUT1IpO1xuICAgICAgICByZXBsYWNlZFBhcnNlZFVpZEFyci5sZW5ndGggPSByZXBsYWNlZFBhcnNlZFVpZEFyci5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBkcmFnZ2FibGVQYXJzZWRVaWRBcnIgPSBldmVudC5kcmFnZ2FibGVJdGVtLnVJZC5zcGxpdChVTklRVUVfS0VZX1NFUEFSQVRPUik7XG4gICAgICAgIGRyYWdnYWJsZVBhcnNlZFVpZEFyci5sZW5ndGggPSBkcmFnZ2FibGVQYXJzZWRVaWRBcnIubGVuZ3RoIC0gMTtcblxuICAgICAgICBjb25zdCB0YWJJbmZvRm9yTmV3TGlzdCA9IHRoaXMuX2dldFRhYkluZm9Gcm9tTWFpbkxpc3QoZXZlbnQudGFyZ2V0SXRlbS51SWQpO1xuICAgICAgICBjb25zdCB0YWJJbmZvRm9yUHJldkxpc3QgPSB0aGlzLl9nZXRUYWJJbmZvRnJvbU1haW5MaXN0KGV2ZW50LmRyYWdnYWJsZUl0ZW0udUlkKTtcblxuICAgICAgICBpZiAoIXRhYkluZm9Gb3JOZXdMaXN0IHx8ICF0YWJJbmZvRm9yUHJldkxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGFGb3JBY3Rpb24gPSB7XG4gICAgICAgICAgICByZXBsYWNlZEl0ZW1JbmZvOiB7XG4gICAgICAgICAgICAgICAgYXJyOiB0YWJJbmZvRm9yTmV3TGlzdC5wYXJlbnQsXG4gICAgICAgICAgICAgICAgaXRlbTogdGFiSW5mb0Zvck5ld0xpc3QudGFiLFxuICAgICAgICAgICAgICAgIHBhcmVudFVpZDogcmVwbGFjZWRQYXJzZWRVaWRBcnIubGVuZ3RoID8gcmVwbGFjZWRQYXJzZWRVaWRBcnIuam9pbihVTklRVUVfS0VZX1NFUEFSQVRPUikgOiAnJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyYWdnYWJsZUl0ZW1JbmZvOiB7XG4gICAgICAgICAgICAgICAgYXJyOiB0YWJJbmZvRm9yUHJldkxpc3QucGFyZW50LFxuICAgICAgICAgICAgICAgIGl0ZW06IHRhYkluZm9Gb3JQcmV2TGlzdC50YWIsXG4gICAgICAgICAgICAgICAgcGFyZW50VWlkOiBkcmFnZ2FibGVQYXJzZWRVaWRBcnIubGVuZ3RoID8gZHJhZ2dhYmxlUGFyc2VkVWlkQXJyLmpvaW4oVU5JUVVFX0tFWV9TRVBBUkFUT1IpIDogJydcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBldmVudC5hY3Rpb24gPT09ICdyZXBsYWNlJyA/IHRoaXMuX3JlcGxhY2VBc1NpYmxpbmcoZGF0YUZvckFjdGlvbikgOiB0aGlzLl9pbnNlcnRJdGVtQXNDaGlsZChkYXRhRm9yQWN0aW9uKTtcblxuICAgICAgICB0aGlzLnJlb3JkZXJlZC5lbWl0KHRoaXMudGFicyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYW5Ecm9wKGV2ZW50OiBGZERuREV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBwYXJlbnRVSWQ6IE51bGxhYmxlPHN0cmluZz4gPVxuICAgICAgICAgICAgZXZlbnQuYWN0aW9uID09PSAncmVwbGFjZScgPyBldmVudC50YXJnZXRJdGVtLnBhcmVudFVJZCA6IGV2ZW50LnRhcmdldEl0ZW0udUlkO1xuICAgICAgICB3aGlsZSAocGFyZW50VUlkKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50VUlkID09PSBldmVudC5kcmFnZ2FibGVJdGVtLnVJZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5leHRTZXBhcmF0b3JJZHggPSBwYXJlbnRVSWQubGFzdEluZGV4T2YoVU5JUVVFX0tFWV9TRVBBUkFUT1IpO1xuXG4gICAgICAgICAgICBwYXJlbnRVSWQgPSBuZXh0U2VwYXJhdG9ySWR4ID4gMCA/IHBhcmVudFVJZC5zbGljZSgwLCBuZXh0U2VwYXJhdG9ySWR4KSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICogQGRlc2NyaXB0aW9uIEluc2VydCB0YWIgaW50byBhbm90aGVyIHRhYi5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbnNlcnRJdGVtQXNDaGlsZChkYXRhOiB7XG4gICAgICAgIHJlcGxhY2VkSXRlbUluZm86IERhdGFGb3JSZW9yZGVyaW5nO1xuICAgICAgICBkcmFnZ2FibGVJdGVtSW5mbzogRGF0YUZvclJlb3JkZXJpbmc7XG4gICAgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHJlcGxhY2VkSXRlbUluZm8sIGRyYWdnYWJsZUl0ZW1JbmZvIH0gPSBkYXRhO1xuICAgICAgICAvLyBSZW1vdmUgZHJhZ2dhYmxlIHRhYiBmcm9tIHByZXZpb3VzIGxpc3RcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm8uYXJyLnNwbGljZShkcmFnZ2FibGVJdGVtSW5mby5pdGVtLmluZGV4LCAxKTtcbiAgICAgICAgaWYgKCFyZXBsYWNlZEl0ZW1JbmZvLml0ZW0uc3ViSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmVwbGFjZWRJdGVtSW5mby5pdGVtLnN1Ykl0ZW1zID0gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIHRhYiB0byBzdWJpdGVtIG9mIHRoZSB0YXJnZXQgdGFiXG4gICAgICAgIHJlcGxhY2VkSXRlbUluZm8uaXRlbS5zdWJJdGVtcy5wdXNoKGRyYWdnYWJsZUl0ZW1JbmZvLml0ZW0pO1xuICAgICAgICB0aGlzLnRhYnMgPSB0aGlzLl91cGRhdGVUYWJzKHRoaXMudGFicyk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICogQGRlc2NyaXB0aW9uIEluc2VydCB0YWIgYmV0d2VlbiB0YWJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVwbGFjZUFzU2libGluZyhkYXRhOiB7XG4gICAgICAgIHJlcGxhY2VkSXRlbUluZm86IERhdGFGb3JSZW9yZGVyaW5nO1xuICAgICAgICBkcmFnZ2FibGVJdGVtSW5mbzogRGF0YUZvclJlb3JkZXJpbmc7XG4gICAgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHJlcGxhY2VkSXRlbUluZm8sIGRyYWdnYWJsZUl0ZW1JbmZvIH0gPSBkYXRhO1xuICAgICAgICBkcmFnZ2FibGVJdGVtSW5mby5hcnIuc3BsaWNlKGRyYWdnYWJsZUl0ZW1JbmZvLml0ZW0uaW5kZXgsIDEpO1xuICAgICAgICBjb25zdCBuZXdJbmRleCA9IHJlcGxhY2VkSXRlbUluZm8/Lml0ZW0/LmluZGV4IHx8IDA7XG4gICAgICAgIHJlcGxhY2VkSXRlbUluZm8uYXJyLnNwbGljZShuZXdJbmRleCwgMCwgZHJhZ2dhYmxlSXRlbUluZm8uaXRlbSk7XG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMuX3VwZGF0ZVRhYnModGhpcy50YWJzKTtcbiAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlKHRhYlVJRWxlbWVudDogVGFiSXRlbSk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0YWJVSUVsZW1lbnQgPT09ICdvYmplY3QnICYmICduYXRpdmVFbGVtZW50JyBpbiB0YWJVSUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWJVSUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFiVUlFbGVtZW50Ll9kcm9wZG93blRyaWdnZXIubmF0aXZlRWxlbWVudDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyIGZkcEljb25CYXJEbmRDb250YWluZXIgW2RyYWdnYWJsZV09XCJlbmFibGVUYWJSZW9yZGVyaW5nXCIgKGRyb3BwZWQpPVwiX29uRHJvcHBlZCgkZXZlbnQpXCI+XG4gICAgPHVsXG4gICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19oZWFkZXJcIlxuICAgICAgICBbY2xhc3MuZmQtZHluYW1pYy1wYWdlX190YWJzXT1cIl9pbkR5bmFtaWNQYWdlXCJcbiAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICAjdGFibGlzdFxuICAgICAgICBmZGtPdmVyZmxvd0xpc3RcbiAgICAgICAgW2lzUnRsXT1cImlzUnRsXCJcbiAgICAgICAgW292ZXJmbG93T2Zmc2V0XT1cIjEwMFwiXG4gICAgICAgIGZkcEljb25CYXJEbmRMaXN0XG4gICAgICAgIGRuZE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgIChvdmVyZmxvd0NoYW5nZWQpPVwiX3JlY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCRldmVudClcIlxuICAgID5cbiAgICAgICAgQGZvciAoaXRlbSBvZiB0YWJzOyB0cmFjayBpdGVtLnVJZDsgbGV0IGlkeCA9ICRpbmRleCkge1xuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jc3NDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmQtaWNvbi10YWItYmFyX19pdGVtLS1tdWx0aS1jbGlja109XCJtdWx0aUNsaWNrICYmIGl0ZW0uc3ViSXRlbXM/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgZmRrT3ZlcmZsb3dMaXN0SXRlbVxuICAgICAgICAgICAgICAgIGZkcEljb25CYXJEbmRJdGVtXG4gICAgICAgICAgICAgICAgW2RuZFNlcGFyYXRvckNsYXNzXT1cIlsnZmQtaWNvbi10YWItYmFyX19pdGVtLS1kbmQtc2VwYXJhdG9yJ11cIlxuICAgICAgICAgICAgICAgIFtkbmRJdGVtRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faXRlbVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZkLWljb24tdGFiLWJhcl9faXRlbS0tY2xvc2FibGVdPVwiaXRlbS5jbG9zYWJsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoIWl0ZW0uc3ViSXRlbXM/Lmxlbmd0aCAmJiAhbXVsdGlDbGljaykge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgI3RhYkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkcC1pY29uLXRhYi1iYXItdGV4dC10eXBlLXRhYi1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRNb2RlXT1cImxheW91dE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yQXNzb2NpYXRpb25zXT1cImNvbG9yQXNzb2NpYXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlkeCA9PT0gMCA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIml0ZW0udUlkID09PSBzZWxlY3RlZFVpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbGVjdEl0ZW0oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfa2V5RG93bkhhbmRsZXIoJGV2ZW50LCBpdGVtLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zdWJJdGVtcz8ubGVuZ3RoIHx8IG11bHRpQ2xpY2spIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkcC10ZXh0LXR5cGUtcG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgI3RhYkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICNpdGVtUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImlkeCA9PT0gMCA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50VGFiXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dE1vZGVdPVwibGF5b3V0TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlDbGlja109XCJtdWx0aUNsaWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFN1Ykl0ZW1VaWRdPVwic2VsZWN0ZWRVaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yQXNzb2NpYXRpb25zXT1cImNvbG9yQXNzb2NpYXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFN1Ykl0ZW0pPVwiX3NlbGVjdEl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfa2V5RG93bkhhbmRsZXIoJGV2ZW50LCBpdGVtLCBpZHgsIGl0ZW1Qb3BvdmVyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VUYWIpPVwiX2Nsb3NlVGFiKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkSXRlbSk9XCJfc2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9mZHAtdGV4dC10eXBlLXBvcG92ZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jbG9zYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2J1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY2xvc2VUYWIoaXRlbS51SWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cImRlY2xpbmVcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKF9leHRyYUl0ZW1zJCgpKSB7XG4gICAgICAgICAgICA8bGkgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19pdGVtIGZkLWljb24tdGFiLWJhcl9faXRlbS0tb3ZlcmZsb3dcIj5cbiAgICAgICAgICAgICAgICA8ZmRwLXRleHQtdHlwZS1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICNleHRyYUl0ZW1zUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICBbaXNSdGxdPVwiaXNSdGxcIlxuICAgICAgICAgICAgICAgICAgICBbZXh0cmFUYWJzXT1cIl9leHRyYVRhYnMkKClcIlxuICAgICAgICAgICAgICAgICAgICBbaXNFeHRyYUl0ZW1zTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yQXNzb2NpYXRpb25zXT1cImNvbG9yQXNzb2NpYXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkRXh0cmFJdGVtKT1cIl9zZWxlY3RFeHRyYUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1c0ZpcnN0VmlzaWJsZUl0ZW0pPVwiX2ZvY3VzSXRlbSgwKVwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1c0xhc3RWaXNpYmxlSXRlbSk9XCJfZm9jdXNJdGVtKF9sYXN0VmlzaWJsZVRhYkluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgIChjbG9zZVRhYik9XCJfY2xvc2VUYWIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZmRwLXRleHQtdHlwZS1wb3BvdmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgIDwvdWw+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -5,11 +5,14 @@ import { IconComponent } from '@fundamental-ngx/core/icon';
5
5
  import { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';
6
6
  import { IconBarDndItemDirective } from '../../../directives/dnd/icon-bar-dnd-item.directive';
7
7
  import { IconBarDndListDirective } from '../../../directives/dnd/icon-bar-dnd-list.directive';
8
+ import { IconTabBarTextTypeTabItemComponent } from '../../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';
8
9
  import { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';
9
10
  import * as i0 from "@angular/core";
10
11
  export class TextTypePopoverComponent extends IconTabBarPopoverBase {
11
12
  constructor() {
12
13
  super(...arguments);
14
+ /** Whether to render item as a multi-click variant. */
15
+ this.multiClick = false;
13
16
  /**
14
17
  * @description Is extra items mode or subitems mode
15
18
  */
@@ -22,8 +25,14 @@ export class TextTypePopoverComponent extends IconTabBarPopoverBase {
22
25
  * @description Emits when some subTab is selected and isExtraItemsMode is disabled
23
26
  */
24
27
  this.selectedSubItem = new EventEmitter();
28
+ /** Emits when root item is being selected. Applicable for multi-click variant only. */
29
+ this.selectedItem = new EventEmitter();
25
30
  /** @hidden */
26
31
  this._containsSelected = false;
32
+ /** @hidden */
33
+ this._popoverTriggers = [
34
+ { trigger: 'click', openAction: true, closeAction: true, stopPropagation: true }
35
+ ];
27
36
  }
28
37
  /** @hidden */
29
38
  ngOnChanges(changes) {
@@ -53,8 +62,9 @@ export class TextTypePopoverComponent extends IconTabBarPopoverBase {
53
62
  /** @hidden */
54
63
  _calculateIfContainsSelected() {
55
64
  this._containsSelected =
56
- !!this.parentTab.subItems &&
57
- this._getChildren(this.parentTab.subItems).some(({ uId }) => uId === this.selectedSubItemUid);
65
+ (this.multiClick && this.parentTab.uId === this.selectedSubItemUid) ||
66
+ (!!this.parentTab.subItems &&
67
+ this._getChildren(this.parentTab.subItems).some(({ uId }) => uId === this.selectedSubItemUid));
58
68
  }
59
69
  /** @hidden */
60
70
  _getChildren(items) {
@@ -67,7 +77,7 @@ export class TextTypePopoverComponent extends IconTabBarPopoverBase {
67
77
  }, []);
68
78
  }
69
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TextTypePopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: TextTypePopoverComponent, isStandalone: true, selector: "fdp-text-type-popover", inputs: { isExtraItemsMode: "isExtraItemsMode", parentTab: "parentTab", selectedSubItemUid: "selectedSubItemUid", tabindex: "tabindex" }, outputs: { selectedSubItem: "selectedSubItem" }, viewQueries: [{ propertyName: "_dropdownTrigger", first: true, predicate: ["dropdownTrigger"], descendants: true }, { propertyName: "_tabExtraUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (!isExtraItemsMode && parentTab) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: IconBarDndListDirective, selector: "[fdpIconBarDndList], [fdp-icon-bar-dnd-list]", inputs: ["dndOrientation", "dndAutoScroll"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconBarDndItemDirective, selector: "[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]", inputs: ["dndItemData", "previewClass", "dndHoveredClass", "dndSeparatorClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: TextTypePopoverComponent, isStandalone: true, selector: "fdp-text-type-popover", inputs: { multiClick: "multiClick", layoutMode: "layoutMode", isExtraItemsMode: "isExtraItemsMode", parentTab: "parentTab", selectedSubItemUid: "selectedSubItemUid", tabindex: "tabindex" }, outputs: { selectedSubItem: "selectedSubItem", selectedItem: "selectedItem" }, viewQueries: [{ propertyName: "_dropdownTrigger", first: true, predicate: ["dropdownTrigger"], descendants: true, read: ElementRef }, { propertyName: "_tabExtraUIElements", predicate: ["tabItem"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (multiClick) {\n <a\n #dropdownTrigger\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"parentTab\"\n [attr.aria-selected]=\"_containsSelected\"\n [colorAssociations]=\"colorAssociations\"\n [layoutMode]=\"layoutMode\"\n [attr.tabindex]=\"tabindex\"\n (click)=\"selectedItem.emit()\"\n >\n </a>\n}\n@if (!isExtraItemsMode && parentTab && parentTab.subItems?.length) {\n <fd-popover\n [class.fd-icon-tab-bar__popover]=\"multiClick\"\n placement=\"bottom-end\"\n [focusAutoCapture]=\"true\"\n [triggers]=\"_popoverTriggers\"\n [focusTrapped]=\"true\"\n #popover\n >\n <fd-popover-control>\n @if (multiClick) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button fd-button fdType=\"transparent\" tabindex=\"-1\" class=\"fd-icon-tab-bar__button\">\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </button>\n </div>\n } @else {\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n }\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: IconBarDndListDirective, selector: "[fdpIconBarDndList], [fdp-icon-bar-dnd-list]", inputs: ["dndOrientation", "dndAutoScroll"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconBarDndItemDirective, selector: "[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]", inputs: ["dndItemData", "previewClass", "dndHoveredClass", "dndSeparatorClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: IconTabBarTextTypeTabItemComponent, selector: "[fdp-icon-tab-bar-text-type-tab-item]", inputs: ["item", "layoutMode", "colorAssociations"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
71
81
  }
72
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TextTypePopoverComponent, decorators: [{
73
83
  type: Component,
@@ -80,14 +90,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
80
90
  IconBarDndItemDirective,
81
91
  NgClass,
82
92
  ButtonComponent,
83
- IconComponent
84
- ], template: "@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (!isExtraItemsMode && parentTab) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n" }]
93
+ IconComponent,
94
+ IconTabBarTextTypeTabItemComponent
95
+ ], template: "@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (multiClick) {\n <a\n #dropdownTrigger\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"parentTab\"\n [attr.aria-selected]=\"_containsSelected\"\n [colorAssociations]=\"colorAssociations\"\n [layoutMode]=\"layoutMode\"\n [attr.tabindex]=\"tabindex\"\n (click)=\"selectedItem.emit()\"\n >\n </a>\n}\n@if (!isExtraItemsMode && parentTab && parentTab.subItems?.length) {\n <fd-popover\n [class.fd-icon-tab-bar__popover]=\"multiClick\"\n placement=\"bottom-end\"\n [focusAutoCapture]=\"true\"\n [triggers]=\"_popoverTriggers\"\n [focusTrapped]=\"true\"\n #popover\n >\n <fd-popover-control>\n @if (multiClick) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button fd-button fdType=\"transparent\" tabindex=\"-1\" class=\"fd-icon-tab-bar__button\">\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </button>\n </div>\n } @else {\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n }\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n" }]
85
96
  }], propDecorators: { _dropdownTrigger: [{
86
97
  type: ViewChild,
87
- args: ['dropdownTrigger']
98
+ args: ['dropdownTrigger', { read: ElementRef }]
88
99
  }], _tabExtraUIElements: [{
89
100
  type: ViewChildren,
90
- args: ['tabItem']
101
+ args: ['tabItem', { read: ElementRef }]
102
+ }], multiClick: [{
103
+ type: Input
104
+ }], layoutMode: [{
105
+ type: Input
91
106
  }], isExtraItemsMode: [{
92
107
  type: Input
93
108
  }], parentTab: [{
@@ -98,5 +113,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
98
113
  type: Input
99
114
  }], selectedSubItem: [{
100
115
  type: Output
116
+ }], selectedItem: [{
117
+ type: Output
101
118
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10eXBlLXBvcG92ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9pY29uLXRhYi1iYXIvY29tcG9uZW50cy9wb3BvdmVycy90ZXh0LXR5cGUtcG9wb3Zlci90ZXh0LXR5cGUtcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL3BvcG92ZXJzL3RleHQtdHlwZS1wb3BvdmVyL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFtQjNFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFqQm5FOztRQXVCSTs7V0FFRztRQUVILHFCQUFnQixHQUFHLEtBQUssQ0FB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QUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixhQUFhO3FCQUNoQjs4QkFJNkIsZ0JBQWdCO3NCQUE3QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFFSCxtQkFBbUI7c0JBQTNDLFlBQVk7dUJBQUMsU0FBUztnQkFNdkIsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQU9OLGtCQUFrQjtzQkFEakIsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sZUFBZTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWNvbic7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCwgUG9wb3ZlckNvbXBvbmVudCwgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBJY29uQmFyRG5kSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uVGFiQmFySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvaWNvbi10YWItYmFyLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEljb25UYWJCYXJQb3BvdmVyQmFzZSB9IGZyb20gJy4uL2ljb24tdGFiLWJhci1wb3BvdmVyLWJhc2UuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC10ZXh0LXR5cGUtcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgICAgICBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgSWNvbkJhckRuZEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgSWNvbkNvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50IGV4dGVuZHMgSWNvblRhYkJhclBvcG92ZXJCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKiogQGhpZGRlbiByZWZlcmVuY2UgZm9yIGh0bWwgZWxlbWVudCwgdGhhdCBvcGVucyBkcm9wZG93biBhbmQgY2FuIHJlY2VpdmUgZm9jdXMgKi9cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRyaWdnZXInKSBfZHJvcGRvd25UcmlnZ2VyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICAvKiogQGhpZGRlbiBsaXN0IG9mIHRhYiBodG1sIGVsZW1lbnRzLCB0aGF0IGNhbiByZWNlaXZlIGZvY3VzICovXG4gICAgQFZpZXdDaGlsZHJlbigndGFiSXRlbScpIF90YWJFeHRyYVVJRWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXMgZXh0cmEgaXRlbXMgbW9kZSBvciBzdWJpdGVtcyBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc0V4dHJhSXRlbXNNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyZW50IHRhYiBuZWVkIGZvciBzdWJJdGVtcyBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwYXJlbnRUYWI6IEljb25UYWJCYXJJdGVtO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIHVJZCBvZiBzZWxlY3RlZCBzdWJJdGVtXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZFN1Ykl0ZW1VaWQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gdGFiSW5kZXggb2YgdGhlIHBhcnRpY3VsYXIgaXRlbS4gQXBsaWNhYmxlIG9ubHkgZm9yIHN1Yml0ZW1zIG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmluZGV4ID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIHNvbWUgc3ViVGFiIGlzIHNlbGVjdGVkIGFuZCBpc0V4dHJhSXRlbXNNb2RlIGlzIGRpc2FibGVkXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRTdWJJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29udGFpbnNTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXRoaXMuaXNFeHRyYUl0ZW1zTW9kZSAmJiBjaGFuZ2VzLnBhcmVudFRhYiAmJiB0aGlzLnBhcmVudFRhYi5zdWJJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U3R5bGVzKHRoaXMucGFyZW50VGFiLnN1Ykl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZFN1Ykl0ZW1VaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUlmQ29udGFpbnNTZWxlY3RlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKi9cbiAgICBfc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFeHRyYUl0ZW1zTW9kZSA/IHRoaXMuc2VsZWN0ZWRFeHRyYUl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pIDogdGhpcy5zZWxlY3RlZFN1Ykl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLnBvcG92ZXIuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZXh0UG9wb3ZlcktleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWI6IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIC8vIHVzaW5nIHJlbGF0aXZlIGluZGV4IHdpdGhpbiBwb3BvdmVyIChmaXJzdCBwb3BvdmVyIHRhYiBzaG91bGQgc3RhcnQgZnJvbSAwKVxuICAgICAgICBjb25zdCBiYXNlSW5kZXggPSB0aGlzLnBhcmVudFRhYiA/IHRoaXMucGFyZW50VGFiLmZsYXRJbmRleCArIDEgOiB0aGlzLmV4dHJhVGFic1swXS5mbGF0SW5kZXg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRhYi5mbGF0SW5kZXggLSBiYXNlSW5kZXg7XG4gICAgICAgIHN1cGVyLl9rZXlEb3duSGFuZGxlcihldmVudCwgdGFiLCBjdXJyZW50SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlSWZDb250YWluc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb250YWluc1NlbGVjdGVkID1cbiAgICAgICAgICAgICEhdGhpcy5wYXJlbnRUYWIuc3ViSXRlbXMgJiZcbiAgICAgICAgICAgIHRoaXMuX2dldENoaWxkcmVuKHRoaXMucGFyZW50VGFiLnN1Ykl0ZW1zKS5zb21lKCh7IHVJZCB9KSA9PiB1SWQgPT09IHRoaXMuc2VsZWN0ZWRTdWJJdGVtVWlkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENoaWxkcmVuKGl0ZW1zOiBJY29uVGFiQmFySXRlbVtdKTogSWNvblRhYkJhckl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYzogSWNvblRhYkJhckl0ZW1bXSwgaXRlbTogSWNvblRhYkJhckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5zdWJJdGVtcykge1xuICAgICAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQodGhpcy5fZ2V0Q2hpbGRyZW4oaXRlbS5zdWJJdGVtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgIH1cbn1cbiIsIkBpZiAoaXNFeHRyYUl0ZW1zTW9kZSkge1xuICAgIDxmZC1wb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCIgI3BvcG92ZXI+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19vdmVyZmxvd1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19vdmVyZmxvdy10ZXh0XCI+TW9yZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2ZkLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJcIj5cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIGZkcEljb25CYXJEbmRMaXN0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0IGZkLWxpc3QtLW5hdmlnYXRpb24gZmQtbGlzdC0tbm8tYm9yZGVyIGZkLWljb24tdGFiLWJhcl9fbGlzdFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImxpc3RcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBsZXZlbDogMSwgaXRlbXM6IGV4dHJhVGFicyB9XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViSXRlbVwiPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG59XG5AaWYgKCFpc0V4dHJhSXRlbXNNb2RlICYmIHBhcmVudFRhYikge1xuICAgIDxmZC1wb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCIgI3BvcG92ZXI+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiX2NvbnRhaW5zU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX190YWJcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAjZHJvcGRvd25UcmlnZ2VyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFiLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFnXCI+e3sgcGFyZW50VGFiLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYXJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwic2xpbS1hcnJvdy1kb3duXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHBhcmVudFRhYi5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2JhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IGNsYXNzPVwiZmQtaWNvbi10YWItYmFyXCI+XG4gICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICBmZHBJY29uQmFyRG5kTGlzdFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbGlzdCBmZC1saXN0LS1uYXZpZ2F0aW9uIGZkLWxpc3QtLW5vLWJvcmRlciBmZC1pY29uLXRhYi1iYXJfX2xpc3RcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGxldmVsOiAxLCBpdGVtczogcGFyZW50VGFiLnN1Ykl0ZW1zIH1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWJJdGVtXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG59XG48bmctdGVtcGxhdGUgI3N1Ykl0ZW0gbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrIGl0ZW0udUlkKSB7XG4gICAgICAgIDxsaVxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sZXZlbF09XCJsZXZlbFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLWxpc3RfX2l0ZW0gZmQtbGlzdF9faXRlbS0tbGluayBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW0tLWNsb3NhYmxlXT1cIml0ZW0uY2xvc2FibGVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jc3NDbGFzc2VzXCJcbiAgICAgICAgICAgIGZkcEljb25CYXJEbmRJdGVtXG4gICAgICAgICAgICBbZG5kSXRlbURhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0X19saW5rIGZkLWljb24tdGFiLWJhcl9fbGlzdC1saW5rXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICN0YWJJdGVtXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mbGF0SW5kZXhdPVwiaXRlbS5mbGF0SW5kZXhcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS51SWQgPT09IHNlbGVjdGVkU3ViSXRlbVVpZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zZWxlY3RJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfdGV4dFBvcG92ZXJLZXlEb3duSGFuZGxlcigkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWxpc3RfX3RpdGxlIGZkLWljb24tdGFiLWJhcl9fbGlzdC1pdGVtLXRpdGxlXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2JhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWxpc3RfX2NvdW50ZXIgZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW0tY291bnRlclwiPih7eyBpdGVtLmNvdW50ZXIgfX0pIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JlZW5yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgKGNvbG9yQXNzb2NpYXRpb25zICYmIGNvbG9yQXNzb2NpYXRpb25zW2l0ZW0uY29sb3JdKSB8fCBpdGVtLmNvbG9yIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5jbG9zYWJsZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2J1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVRhYi5lbWl0KGl0ZW0udUlkKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiZGVjbGluZVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbGk+XG4gICAgICAgIEBpZiAoaXRlbS5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGV2ZWw6IGxldmVsICsgMSwgaXRlbXM6IGl0ZW0uc3ViSXRlbXMgfVwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViSXRlbVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10eXBlLXBvcG92ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9pY29uLXRhYi1iYXIvY29tcG9uZW50cy9wb3BvdmVycy90ZXh0LXR5cGUtcG9wb3Zlci90ZXh0LXR5cGUtcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL3BvcG92ZXJzL3RleHQtdHlwZS1wb3BvdmVyL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFMUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFvQjNFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFB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aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHtcbiAgICBQb3BvdmVyQm9keUNvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgIFRyaWdnZXJDb25maWdcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgSWNvbkJhckRuZEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2RuZC9pY29uLWJhci1kbmQtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWNvbkJhckRuZExpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2RuZC9pY29uLWJhci1kbmQtbGlzdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWNvblRhYkJhckl0ZW0gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24tdGFiLWJhci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJY29uVGFiQmFyVGV4dFR5cGVUYWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGV4dC10eXBlLXRhYi1pdGVtL2ljb24tdGFiLWJhci10ZXh0LXR5cGUtdGFiLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25UYWJCYXJQb3BvdmVyQmFzZSB9IGZyb20gJy4uL2ljb24tdGFiLWJhci1wb3BvdmVyLWJhc2UuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC10ZXh0LXR5cGUtcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgICAgICBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgSWNvbkJhckRuZEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgICAgSWNvblRhYkJhclRleHRUeXBlVGFiSXRlbUNvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50IGV4dGVuZHMgSWNvblRhYkJhclBvcG92ZXJCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKiogQGhpZGRlbiByZWZlcmVuY2UgZm9yIGh0bWwgZWxlbWVudCwgdGhhdCBvcGVucyBkcm9wZG93biBhbmQgY2FuIHJlY2VpdmUgZm9jdXMgKi9cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgX2Ryb3Bkb3duVHJpZ2dlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgLyoqIEBoaWRkZW4gbGlzdCBvZiB0YWIgaHRtbCBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cyAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RhYkl0ZW0nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgX3RhYkV4dHJhVUlFbGVtZW50czogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICAgIC8qKiBXaGV0aGVyIHRvIHJlbmRlciBpdGVtIGFzIGEgbXVsdGktY2xpY2sgdmFyaWFudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG11bHRpQ2xpY2sgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMYXlvdXQgdHlwZSBmb3IgdGFiLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGF5b3V0TW9kZTogJ3JvdycgfCAnY29sdW1uJztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJcyBleHRyYSBpdGVtcyBtb2RlIG9yIHN1Yml0ZW1zIG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzRXh0cmFJdGVtc01vZGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQYXJlbnQgdGFiIG5lZWQgZm9yIHN1Ykl0ZW1zIG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhcmVudFRhYjogSWNvblRhYkJhckl0ZW07XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gdUlkIG9mIHNlbGVjdGVkIHN1Ykl0ZW1cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkU3ViSXRlbVVpZDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiB0YWJJbmRleCBvZiB0aGUgcGFydGljdWxhciBpdGVtLiBBcGxpY2FibGUgb25seSBmb3Igc3ViaXRlbXMgbW9kZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiaW5kZXggPSAwO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gc29tZSBzdWJUYWIgaXMgc2VsZWN0ZWQgYW5kIGlzRXh0cmFJdGVtc01vZGUgaXMgZGlzYWJsZWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZFN1Ykl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiByb290IGl0ZW0gaXMgYmVpbmcgc2VsZWN0ZWQuIEFwcGxpY2FibGUgZm9yIG11bHRpLWNsaWNrIHZhcmlhbnQgb25seS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZEl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb250YWluc1NlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVyVHJpZ2dlcnM6IFRyaWdnZXJDb25maWdbXSA9IFtcbiAgICAgICAgeyB0cmlnZ2VyOiAnY2xpY2snLCBvcGVuQWN0aW9uOiB0cnVlLCBjbG9zZUFjdGlvbjogdHJ1ZSwgc3RvcFByb3BhZ2F0aW9uOiB0cnVlIH1cbiAgICBdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXRoaXMuaXNFeHRyYUl0ZW1zTW9kZSAmJiBjaGFuZ2VzLnBhcmVudFRhYiAmJiB0aGlzLnBhcmVudFRhYi5zdWJJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U3R5bGVzKHRoaXMucGFyZW50VGFiLnN1Ykl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZFN1Ykl0ZW1VaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUlmQ29udGFpbnNTZWxlY3RlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKi9cbiAgICBfc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFeHRyYUl0ZW1zTW9kZSA/IHRoaXMuc2VsZWN0ZWRFeHRyYUl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pIDogdGhpcy5zZWxlY3RlZFN1Ykl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLnBvcG92ZXIuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZXh0UG9wb3ZlcktleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWI6IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIC8vIHVzaW5nIHJlbGF0aXZlIGluZGV4IHdpdGhpbiBwb3BvdmVyIChmaXJzdCBwb3BvdmVyIHRhYiBzaG91bGQgc3RhcnQgZnJvbSAwKVxuICAgICAgICBjb25zdCBiYXNlSW5kZXggPSB0aGlzLnBhcmVudFRhYiA/IHRoaXMucGFyZW50VGFiLmZsYXRJbmRleCArIDEgOiB0aGlzLmV4dHJhVGFic1swXS5mbGF0SW5kZXg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRhYi5mbGF0SW5kZXggLSBiYXNlSW5kZXg7XG4gICAgICAgIHN1cGVyLl9rZXlEb3duSGFuZGxlcihldmVudCwgdGFiLCBjdXJyZW50SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlSWZDb250YWluc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb250YWluc1NlbGVjdGVkID1cbiAgICAgICAgICAgICh0aGlzLm11bHRpQ2xpY2sgJiYgdGhpcy5wYXJlbnRUYWIudUlkID09PSB0aGlzLnNlbGVjdGVkU3ViSXRlbVVpZCkgfHxcbiAgICAgICAgICAgICghIXRoaXMucGFyZW50VGFiLnN1Ykl0ZW1zICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fZ2V0Q2hpbGRyZW4odGhpcy5wYXJlbnRUYWIuc3ViSXRlbXMpLnNvbWUoKHsgdUlkIH0pID0+IHVJZCA9PT0gdGhpcy5zZWxlY3RlZFN1Ykl0ZW1VaWQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENoaWxkcmVuKGl0ZW1zOiBJY29uVGFiQmFySXRlbVtdKTogSWNvblRhYkJhckl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYzogSWNvblRhYkJhckl0ZW1bXSwgaXRlbTogSWNvblRhYkJhckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5zdWJJdGVtcykge1xuICAgICAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQodGhpcy5fZ2V0Q2hpbGRyZW4oaXRlbS5zdWJJdGVtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgIH1cbn1cbiIsIkBpZiAoaXNFeHRyYUl0ZW1zTW9kZSkge1xuICAgIDxmZC1wb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCIgI3BvcG92ZXI+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19vdmVyZmxvd1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19vdmVyZmxvdy10ZXh0XCI+TW9yZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2ZkLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJcIj5cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIGZkcEljb25CYXJEbmRMaXN0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0IGZkLWxpc3QtLW5hdmlnYXRpb24gZmQtbGlzdC0tbm8tYm9yZGVyIGZkLWljb24tdGFiLWJhcl9fbGlzdFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImxpc3RcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBsZXZlbDogMSwgaXRlbXM6IGV4dHJhVGFicyB9XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViSXRlbVwiPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG59XG5AaWYgKG11bHRpQ2xpY2spIHtcbiAgICA8YVxuICAgICAgICAjZHJvcGRvd25UcmlnZ2VyXG4gICAgICAgIGZkcC1pY29uLXRhYi1iYXItdGV4dC10eXBlLXRhYi1pdGVtXG4gICAgICAgIFtpdGVtXT1cInBhcmVudFRhYlwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiX2NvbnRhaW5zU2VsZWN0ZWRcIlxuICAgICAgICBbY29sb3JBc3NvY2lhdGlvbnNdPVwiY29sb3JBc3NvY2lhdGlvbnNcIlxuICAgICAgICBbbGF5b3V0TW9kZV09XCJsYXlvdXRNb2RlXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRJdGVtLmVtaXQoKVwiXG4gICAgPlxuICAgIDwvYT5cbn1cbkBpZiAoIWlzRXh0cmFJdGVtc01vZGUgJiYgcGFyZW50VGFiICYmIHBhcmVudFRhYi5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgW2NsYXNzLmZkLWljb24tdGFiLWJhcl9fcG9wb3Zlcl09XCJtdWx0aUNsaWNrXCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwiX3BvcG92ZXJUcmlnZ2Vyc1wiXG4gICAgICAgIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiXG4gICAgICAgICNwb3BvdmVyXG4gICAgPlxuICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgQGlmIChtdWx0aUNsaWNrKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIHRhYmluZGV4PVwiLTFcIiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIl9jb250YWluc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhYlwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICNkcm9wZG93blRyaWdnZXJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhYi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX190YWdcIj57eyBwYXJlbnRUYWIubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYXJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBhcmVudFRhYi5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgPGZkLXBvcG92ZXItYm9keSBjbGFzcz1cImZkLWljb24tdGFiLWJhclwiPlxuICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgZmRwSWNvbkJhckRuZExpc3RcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWxpc3QgZmQtbGlzdC0tbmF2aWdhdGlvbiBmZC1saXN0LS1uby1ib3JkZXIgZmQtaWNvbi10YWItYmFyX19saXN0XCJcbiAgICAgICAgICAgICAgICByb2xlPVwibGlzdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBsZXZlbDogMSwgaXRlbXM6IHBhcmVudFRhYi5zdWJJdGVtcyB9XCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViSXRlbVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgPC9mZC1wb3BvdmVyPlxufVxuPG5nLXRlbXBsYXRlICNzdWJJdGVtIGxldC1pdGVtcz1cIml0ZW1zXCIgbGV0LWxldmVsPVwibGV2ZWxcIj5cbiAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtLnVJZCkge1xuICAgICAgICA8bGlcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGV2ZWxdPVwibGV2ZWxcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0X19pdGVtIGZkLWxpc3RfX2l0ZW0tLWxpbmsgZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLmZkLWljb24tdGFiLWJhcl9fbGlzdC1pdGVtLS1jbG9zYWJsZV09XCJpdGVtLmNsb3NhYmxlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY3NzQ2xhc3Nlc1wiXG4gICAgICAgICAgICBmZHBJY29uQmFyRG5kSXRlbVxuICAgICAgICAgICAgW2RuZEl0ZW1EYXRhXT1cIml0ZW1cIlxuICAgICAgICAgICAgcm9sZT1cImxpc3RpdGVtXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbGlzdF9fbGluayBmZC1pY29uLXRhYi1iYXJfX2xpc3QtbGlua1wiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmxhdEluZGV4XT1cIml0ZW0uZmxhdEluZGV4XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIml0ZW0udUlkID09PSBzZWxlY3RlZFN1Ykl0ZW1VaWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX3RleHRQb3BvdmVyS2V5RG93bkhhbmRsZXIoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1saXN0X190aXRsZSBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS10aXRsZVwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmJhZGdlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmNvdW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1saXN0X19jb3VudGVyIGZkLWljb24tdGFiLWJhcl9fbGlzdC1pdGVtLWNvdW50ZXJcIj4oe3sgaXRlbS5jb3VudGVyIH19KSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jb2xvcikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NyZWVucmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IChjb2xvckFzc29jaWF0aW9ucyAmJiBjb2xvckFzc29jaWF0aW9uc1tpdGVtLmNvbG9yXSkgfHwgaXRlbS5jb2xvciB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICBAaWYgKGl0ZW0uY2xvc2FibGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2J1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VUYWIuZW1pdChpdGVtLnVJZClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cImRlY2xpbmVcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2xpPlxuICAgICAgICBAaWYgKGl0ZW0uc3ViSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGxldmVsOiBsZXZlbCArIDEsIGl0ZW1zOiBpdGVtLnN1Ykl0ZW1zIH1cIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN1Ykl0ZW1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewEncapsulation, inject } from '@angular/core';
2
+ import { AsyncOrSyncPipe } from '@fundamental-ngx/cdk/utils';
3
+ import * as i0 from "@angular/core";
4
+ export class IconTabBarTextTypeTabItemComponent {
5
+ constructor() {
6
+ /** @hiddem */
7
+ this._elementRef = inject(ElementRef);
8
+ }
9
+ /** @hidden */
10
+ get nativeElement() {
11
+ return this._elementRef.nativeElement;
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarTextTypeTabItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: IconTabBarTextTypeTabItemComponent, isStandalone: true, selector: "[fdp-icon-tab-bar-text-type-tab-item]", inputs: { item: "item", layoutMode: "layoutMode", colorAssociations: "colorAssociations" }, host: { attributes: { "role": "tab" }, classAttribute: "fd-icon-tab-bar__tab" }, ngImport: i0, template: "@if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item?.label | fdkAsyncOrSync }}\n @if (item?.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n} @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item?.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item?.label | fdkAsyncOrSync }}</span>\n}\n@if (item?.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n}\n@if (item?.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n}\n", dependencies: [{ kind: "pipe", type: AsyncOrSyncPipe, name: "fdkAsyncOrSync" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarTextTypeTabItemComponent, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: '[fdp-icon-tab-bar-text-type-tab-item]', standalone: true, imports: [AsyncOrSyncPipe], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
19
+ class: 'fd-icon-tab-bar__tab',
20
+ role: 'tab'
21
+ }, template: "@if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item?.label | fdkAsyncOrSync }}\n @if (item?.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n} @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item?.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item?.label | fdkAsyncOrSync }}</span>\n}\n@if (item?.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n}\n@if (item?.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n}\n" }]
22
+ }], propDecorators: { item: [{
23
+ type: Input
24
+ }], layoutMode: [{
25
+ type: Input
26
+ }], colorAssociations: [{
27
+ type: Input
28
+ }] } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLXRleHQtdHlwZS10YWItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL3RleHQtdHlwZS10YWItaXRlbS9pY29uLXRhYi1iYXItdGV4dC10eXBlLXRhYi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vaWNvbi10YWItYmFyL2NvbXBvbmVudHMvdGV4dC10eXBlLXRhYi1pdGVtL2ljb24tdGFiLWJhci10ZXh0LXR5cGUtdGFiLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZUFBZSxFQUFZLE1BQU0sNEJBQTRCLENBQUM7O0FBaUJ2RSxNQUFNLE9BQU8sa0NBQWtDO0lBYi9DO1FBb0NJLGNBQWM7UUFDRyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNyRDtJQVBHLGNBQWM7SUFDZCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7OEdBckJRLGtDQUFrQztrR0FBbEMsa0NBQWtDLDhRQ2xCL0MsaXFCQW1CQSx1Q0RWYyxlQUFlOzsyRkFTaEIsa0NBQWtDO2tCQWI5QyxTQUFTOytCQUVJLHVDQUF1QyxjQUNyQyxJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsaUJBRVgsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsc0JBQXNCO3dCQUM3QixJQUFJLEVBQUUsS0FBSztxQkFDZDs4QkFLRCxJQUFJO3NCQURILEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQVFOLGlCQUFpQjtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY09yU3luY1BpcGUsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgSWNvblRhYkJhckl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ljb24tdGFiLWJhci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJDb2xvckFzc29jaWF0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGFiLWNvbG9yLWFzc29jaWF0aW9ucy5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkcC1pY29uLXRhYi1iYXItdGV4dC10eXBlLXRhYi1pdGVtXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQXN5bmNPclN5bmNQaXBlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaWNvbi10YWItYmFyLXRleHQtdHlwZS10YWItaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtaWNvbi10YWItYmFyX190YWInLFxuICAgICAgICByb2xlOiAndGFiJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgSWNvblRhYkJhclRleHRUeXBlVGFiSXRlbUNvbXBvbmVudCB7XG4gICAgLyoqIFRhYiBpdGVtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXRlbTogTnVsbGFibGU8SWNvblRhYkJhckl0ZW0+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExheW91dCB0eXBlIGZvciB0YWIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYXlvdXRNb2RlOiAncm93JyB8ICdjb2x1bW4nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFzc29jaWF0aW9ucyBmb3IgY29sb3JzIG9mIHRoZSB0YWJzLlxuICAgICAqIElmIGFueSBvZiB0aGUgY29sb3IgYXNzb2NpYXRpb25zIHByb3ZpZGVkLCB0aGV5J2xsIGJlIHJlYWQgYnkgc2NyZWVucmVhZGVyIGluc3RlYWQgb2YgdGhlIGFjdHVhbCBjb2xvclxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sb3JBc3NvY2lhdGlvbnM6IFRhYkNvbG9yQXNzb2NpYXRpb25zO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW0gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xufVxuIiwiQGlmIChsYXlvdXRNb2RlID09PSAncm93Jykge1xuICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX190YWdcIj5cbiAgICAgICAge3sgaXRlbT8ubGFiZWwgfCBmZGtBc3luY09yU3luYyB9fVxuICAgICAgICBAaWYgKGl0ZW0/LmNvdW50ZXIgfCBmZGtBc3luY09yU3luYzsgYXMgaXRlbUNvdW50ZXIpIHtcbiAgICAgICAgICAgICh7eyBpdGVtQ291bnRlciB9fSlcbiAgICAgICAgfVxuICAgIDwvc3Bhbj5cbn0gQGVsc2Uge1xuICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19jb3VudGVyXCI+e3sgaXRlbT8uY291bnRlciB9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFnXCI+e3sgaXRlbT8ubGFiZWwgfCBmZGtBc3luY09yU3luYyB9fTwvc3Bhbj5cbn1cbkBpZiAoaXRlbT8uYmFkZ2UpIHtcbiAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYmFkZ2VcIj48L3NwYW4+XG59XG5AaWYgKGl0ZW0/LmNvbG9yIHwgZmRrQXN5bmNPclN5bmM7IGFzIGl0ZW1Db2xvcikge1xuICAgIDxkaXYgY2xhc3M9XCJzY3JlZW5yZWFkZXItb25seVwiPlxuICAgICAgICB7eyAoY29sb3JBc3NvY2lhdGlvbnMgJiYgY29sb3JBc3NvY2lhdGlvbnNbaXRlbUNvbG9yXSkgfHwgaXRlbUNvbG9yIH19XG4gICAgPC9kaXY+XG59XG4iXX0=