@fundamental-ngx/core 0.36.0-rc.10 → 0.36.0-rc.13

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 (188) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/esm2020/breadcrumb.component.mjs +1 -1
  8. package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs +1 -1
  9. package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  10. package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs +1 -1
  11. package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  12. package/breadcrumb/package.json +1 -1
  13. package/busy-indicator/package.json +1 -1
  14. package/button/package.json +1 -1
  15. package/calendar/package.json +1 -1
  16. package/card/package.json +1 -1
  17. package/carousel/package.json +1 -1
  18. package/checkbox/package.json +1 -1
  19. package/combobox/package.json +1 -1
  20. package/content-density/package.json +2 -2
  21. package/date-picker/package.json +1 -1
  22. package/datetime/package.json +1 -1
  23. package/datetime-picker/package.json +1 -1
  24. package/dialog/package.json +1 -1
  25. package/dynamic-page/esm2020/dynamic-page.component.mjs +3 -3
  26. package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs +2 -2
  27. package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  28. package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs +2 -2
  29. package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  30. package/dynamic-page/package.json +1 -1
  31. package/dynamic-side-content/package.json +1 -1
  32. package/esm2020/breadcrumb/breadcrumb.component.mjs +1 -1
  33. package/esm2020/dynamic-page/dynamic-page.component.mjs +3 -3
  34. package/esm2020/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +75 -0
  35. package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +4 -34
  36. package/esm2020/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +31 -12
  37. package/esm2020/overflow-layout/index.mjs +3 -1
  38. package/esm2020/overflow-layout/interfaces/overflow-focusable-item.interface.mjs +2 -0
  39. package/esm2020/overflow-layout/interfaces/overflow-item.interface.mjs +1 -1
  40. package/esm2020/overflow-layout/overflow-layout.component.mjs +49 -45
  41. package/esm2020/overflow-layout/overflow-layout.module.mjs +12 -5
  42. package/esm2020/overflow-layout/overflow-layout.service.mjs +12 -7
  43. package/esm2020/overflow-layout/tokens/overflow-focusable-item.token.mjs +3 -0
  44. package/esm2020/tabs/public_api.mjs +1 -2
  45. package/esm2020/tabs/tab-item-expand/tab-item-expand.component.mjs +1 -1
  46. package/esm2020/tabs/tab-link/tab-link.directive.mjs +25 -7
  47. package/esm2020/tabs/tab-list.component.mjs +51 -148
  48. package/esm2020/tabs/tab-nav/tab-nav.component.mjs +52 -37
  49. package/esm2020/tabs/tab-panel/tab-panel.component.mjs +9 -10
  50. package/esm2020/tabs/tab-utils/tab-directives.mjs +22 -33
  51. package/esm2020/tabs/tab-utils/tab-info.class.mjs +5 -1
  52. package/esm2020/tabs/tabs.module.mjs +8 -4
  53. package/facets/package.json +1 -1
  54. package/feed-input/package.json +1 -1
  55. package/feed-list-item/package.json +1 -1
  56. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +1 -1
  57. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  58. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +2 -2
  59. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  60. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +165 -91
  61. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  62. package/fesm2015/fundamental-ngx-core-tabs.mjs +255 -382
  63. package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  64. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +1 -1
  65. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  66. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +2 -2
  67. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  68. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +161 -87
  69. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  70. package/fesm2020/fundamental-ngx-core-tabs.mjs +248 -378
  71. package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  72. package/file-uploader/package.json +1 -1
  73. package/fixed-card-layout/package.json +1 -1
  74. package/flexible-column-layout/package.json +1 -1
  75. package/form/package.json +1 -1
  76. package/formatted-text/package.json +1 -1
  77. package/grid-list/package.json +1 -1
  78. package/icon/package.json +1 -1
  79. package/illustrated-message/package.json +1 -1
  80. package/infinite-scroll/package.json +1 -1
  81. package/info-label/package.json +1 -1
  82. package/inline-help/package.json +1 -1
  83. package/input-group/package.json +1 -1
  84. package/layout-grid/package.json +1 -1
  85. package/layout-panel/package.json +1 -1
  86. package/link/package.json +1 -1
  87. package/list/package.json +1 -1
  88. package/menu/package.json +1 -1
  89. package/message-box/package.json +1 -1
  90. package/message-strip/package.json +1 -1
  91. package/message-toast/package.json +1 -1
  92. package/micro-process-flow/package.json +1 -1
  93. package/mobile-mode/package.json +1 -1
  94. package/multi-input/package.json +1 -1
  95. package/nested-list/package.json +1 -1
  96. package/notification/package.json +1 -1
  97. package/object-identifier/package.json +1 -1
  98. package/object-marker/package.json +1 -1
  99. package/object-number/package.json +1 -1
  100. package/object-status/package.json +1 -1
  101. package/overflow-layout/directives/overflow-layout-focusable-item.directive.d.ts +28 -0
  102. package/overflow-layout/directives/overflow-layout-item.directive.d.ts +6 -11
  103. package/overflow-layout/directives/overflow-layout-popover-content.directive.d.ts +6 -2
  104. package/overflow-layout/esm2020/directives/overflow-layout-focusable-item.directive.mjs +75 -0
  105. package/overflow-layout/esm2020/directives/overflow-layout-item.directive.mjs +4 -34
  106. package/overflow-layout/esm2020/directives/overflow-layout-popover-content.directive.mjs +31 -12
  107. package/overflow-layout/esm2020/index.mjs +3 -1
  108. package/overflow-layout/esm2020/interfaces/overflow-focusable-item.interface.mjs +2 -0
  109. package/overflow-layout/esm2020/interfaces/overflow-item.interface.mjs +1 -1
  110. package/overflow-layout/esm2020/overflow-layout.component.mjs +49 -45
  111. package/overflow-layout/esm2020/overflow-layout.module.mjs +12 -5
  112. package/overflow-layout/esm2020/overflow-layout.service.mjs +12 -7
  113. package/overflow-layout/esm2020/tokens/overflow-focusable-item.token.mjs +3 -0
  114. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs +165 -91
  115. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  116. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs +161 -87
  117. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  118. package/overflow-layout/index.d.ts +2 -0
  119. package/overflow-layout/interfaces/overflow-focusable-item.interface.d.ts +9 -0
  120. package/overflow-layout/interfaces/overflow-item.interface.d.ts +6 -6
  121. package/overflow-layout/overflow-layout.component.d.ts +16 -14
  122. package/overflow-layout/overflow-layout.module.d.ts +6 -5
  123. package/overflow-layout/overflow-layout.service.d.ts +6 -4
  124. package/overflow-layout/package.json +4 -4
  125. package/overflow-layout/tokens/overflow-focusable-item.token.d.ts +3 -0
  126. package/package.json +2 -2
  127. package/pagination/package.json +1 -1
  128. package/panel/package.json +1 -1
  129. package/popover/package.json +1 -1
  130. package/product-switch/package.json +1 -1
  131. package/progress-indicator/package.json +1 -1
  132. package/quick-view/package.json +1 -1
  133. package/radio/package.json +1 -1
  134. package/rating-indicator/package.json +1 -1
  135. package/resizable-card-layout/package.json +1 -1
  136. package/scroll-spy/package.json +1 -1
  137. package/scrollbar/package.json +1 -1
  138. package/segmented-button/package.json +1 -1
  139. package/select/package.json +1 -1
  140. package/shared/package.json +1 -1
  141. package/shellbar/package.json +1 -1
  142. package/side-navigation/package.json +1 -1
  143. package/slider/package.json +1 -1
  144. package/split-button/package.json +1 -1
  145. package/splitter/package.json +1 -1
  146. package/status-indicator/package.json +1 -1
  147. package/step-input/package.json +1 -1
  148. package/switch/package.json +1 -1
  149. package/table/package.json +1 -1
  150. package/tabs/esm2020/public_api.mjs +1 -2
  151. package/tabs/esm2020/tab-item-expand/tab-item-expand.component.mjs +1 -1
  152. package/tabs/esm2020/tab-link/tab-link.directive.mjs +25 -7
  153. package/tabs/esm2020/tab-list.component.mjs +51 -148
  154. package/tabs/esm2020/tab-nav/tab-nav.component.mjs +52 -37
  155. package/tabs/esm2020/tab-panel/tab-panel.component.mjs +9 -10
  156. package/tabs/esm2020/tab-utils/tab-directives.mjs +22 -33
  157. package/tabs/esm2020/tab-utils/tab-info.class.mjs +5 -1
  158. package/tabs/esm2020/tabs.module.mjs +8 -4
  159. package/tabs/fesm2015/fundamental-ngx-core-tabs.mjs +255 -382
  160. package/tabs/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  161. package/tabs/fesm2020/fundamental-ngx-core-tabs.mjs +248 -378
  162. package/tabs/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  163. package/tabs/package.json +1 -1
  164. package/tabs/public_api.d.ts +0 -1
  165. package/tabs/tab-link/tab-link.directive.d.ts +10 -3
  166. package/tabs/tab-list.component.d.ts +18 -42
  167. package/tabs/tab-nav/tab-nav.component.d.ts +15 -10
  168. package/tabs/tab-panel/tab-panel.component.d.ts +5 -3
  169. package/tabs/tab-utils/tab-directives.d.ts +12 -12
  170. package/tabs/tab-utils/tab-info.class.d.ts +2 -0
  171. package/tabs/tabs.module.d.ts +2 -1
  172. package/text/package.json +1 -1
  173. package/theming/package.json +1 -1
  174. package/tile/package.json +1 -1
  175. package/time/package.json +1 -1
  176. package/time-picker/package.json +1 -1
  177. package/timeline/package.json +1 -1
  178. package/title/package.json +1 -1
  179. package/token/package.json +1 -1
  180. package/toolbar/package.json +1 -1
  181. package/tree/package.json +1 -1
  182. package/upload-collection/package.json +1 -1
  183. package/utils/package.json +1 -1
  184. package/vertical-navigation/package.json +1 -1
  185. package/wizard/package.json +1 -1
  186. package/esm2020/tabs/tabs.service.mjs +0 -69
  187. package/tabs/esm2020/tabs.service.mjs +0 -69
  188. package/tabs/tabs.service.d.ts +0 -22
@@ -1,41 +1,43 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, forwardRef, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
2
+ import { OverflowLayoutComponent } from '@fundamental-ngx/core/overflow-layout';
2
3
  import { fromEvent, merge, Subject, Subscription } from 'rxjs';
3
4
  import { debounceTime, delay, filter, first, map, startWith, switchMap, takeUntil } from 'rxjs/operators';
4
- import { getElementCapacity, getElementWidth, KeyUtil, resizeObservable, scrollTop } from '@fundamental-ngx/core/utils';
5
+ import { DestroyedService, KeyUtil, scrollTop } from '@fundamental-ngx/core/utils';
5
6
  import { TabItemExpandComponent } from './tab-item-expand/tab-item-expand.component';
6
7
  import { TabLinkDirective } from './tab-link/tab-link.directive';
7
8
  import { TabItemDirective } from './tab-item/tab-item.directive';
8
9
  import { TabPanelComponent } from './tab-panel/tab-panel.component';
9
10
  import { TabInfo } from './tab-utils/tab-info.class';
10
- import { TabsService } from './tabs.service';
11
11
  import { ENTER, SPACE } from '@angular/cdk/keycodes';
12
12
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
13
13
  import * as i0 from "@angular/core";
14
- import * as i1 from "./tabs.service";
15
- import * as i2 from "@fundamental-ngx/core/content-density";
14
+ import * as i1 from "@fundamental-ngx/core/content-density";
15
+ import * as i2 from "@fundamental-ngx/core/utils";
16
16
  import * as i3 from "@angular/common";
17
17
  import * as i4 from "@fundamental-ngx/core/menu";
18
18
  import * as i5 from "@fundamental-ngx/core/scroll-spy";
19
- import * as i6 from "./tab-link/tab-link.directive";
20
- import * as i7 from "./tab-item/tab-item.directive";
21
- import * as i8 from "./tab-utils/tab-directives";
22
- import * as i9 from "./tab-item-expand/tab-item-expand.component";
19
+ import * as i6 from "@fundamental-ngx/core/overflow-layout";
20
+ import * as i7 from "./tab-link/tab-link.directive";
21
+ import * as i8 from "./tab-item/tab-item.directive";
22
+ import * as i9 from "./tab-utils/tab-directives";
23
+ import * as i10 from "./tab-item-expand/tab-item-expand.component";
23
24
  /**
24
25
  * Represents a list of tab-panels.
25
26
  */
26
27
  export class TabListComponent {
27
- constructor(_tabsService, _changeDetectorRef, _elRef, _contentDensityObserver) {
28
- this._tabsService = _tabsService;
28
+ /** @hidden */
29
+ constructor(_changeDetectorRef, _elRef, _contentDensityObserver, _onDestroy$) {
29
30
  this._changeDetectorRef = _changeDetectorRef;
30
31
  this._elRef = _elRef;
31
32
  this._contentDensityObserver = _contentDensityObserver;
33
+ this._onDestroy$ = _onDestroy$;
32
34
  /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */
33
35
  this.size = 'm';
34
36
  /** Whether to move tabs overflowing in the tab bar to the dropdown */
35
37
  this.collapseOverflow = true;
36
38
  /** Limits the maximum number of tabs visible in the tab bar in collapseOverflow mode.
37
39
  * Other tabs will be moved to the collapsed tabs dropdown */
38
- this.maxVisibleTabs = null;
40
+ this.maxVisibleTabs = Infinity;
39
41
  /** Whether to open tab content one under another without collapsing */
40
42
  this.stackContent = false;
41
43
  /** Maximum height of the content */
@@ -44,55 +46,54 @@ export class TabListComponent {
44
46
  this.collapsibleTabs = false;
45
47
  /** Event emitted when the selected panel changes. */
46
48
  this.selectedTabChange = new EventEmitter();
47
- /** @hidden Tabs divided into tabs visible in the tab-bar and collapsed */
48
- this._visualOrder = { visible: [], overflowing: [] };
49
- /** @hidden Whether the tabs header is collapsed */
50
- this._isCollapsed = true;
49
+ /** Event emitted when visible items count has been changed. */
50
+ this.visibleItemsCount = new EventEmitter();
51
+ /** Event emitted when hidden items count has been changed. */
52
+ this.hiddenItemsCount = new EventEmitter();
51
53
  /** @hidden Whether to disable scroll spy */
52
54
  this._disableScrollSpy = false;
53
55
  /** @hidden */
54
56
  this._init = true;
57
+ /** Event is thrown always when tab is selected by keyboard actions */
58
+ this.tabSelected = new Subject();
59
+ /** Event is thrown always, when some property is changed */
60
+ this.tabPanelPropertyChanged = new Subject();
55
61
  /** @hidden */
56
62
  this._subscriptions = new Subscription();
57
- /** @hidden */
58
- this._onDestroy$ = new Subject();
59
63
  }
60
64
  /** @hidden */
61
65
  ngAfterContentInit() {
62
66
  this._setupTabPanelsChangeListeners();
63
67
  }
64
68
  ngAfterViewInit() {
65
- this._setupCollapsingOverflowedTabs();
66
- this._listenOnKeyboardTabSelect();
67
69
  this._listenOnPropertiesChange();
68
70
  }
69
71
  /** @hidden */
70
72
  ngOnDestroy() {
71
73
  this._subscriptions.unsubscribe();
72
- this._onDestroy$.next();
73
- this._onDestroy$.complete();
74
- }
75
- /** Fits tabs in the tab bar and moves overflowing elements into a dropdown */
76
- refreshOverflow() {
77
- this._hideOverflowingItems();
78
- this._keepActiveTabVisible();
79
74
  }
80
75
  /** @hidden */
81
76
  _tabHeaderClickHandler(tabPanel) {
82
77
  this._expandTab(tabPanel, !tabPanel.expanded);
83
78
  }
84
79
  /** @hidden */
80
+ _tabHeaderKeydownHandler(event, tabPanel) {
81
+ if (!KeyUtil.isKeyCode(event, [ENTER, SPACE])) {
82
+ return;
83
+ }
84
+ event.preventDefault();
85
+ this._tabHeaderClickHandler(tabPanel);
86
+ }
87
+ /** @hidden */
85
88
  _overflowingTabHeaderClickHandler(tabPanel) {
89
+ this._tabArray.forEach((tab) => {
90
+ tab.panel._forcedVisibility = tab.panel === tabPanel;
91
+ });
86
92
  this._expandTab(tabPanel, true, false);
87
- this._resetVisualOrder();
88
- this._keepActiveTabVisible();
93
+ this._overflowLayout.triggerRecalculation();
89
94
  this._detectChanges();
90
95
  }
91
96
  /** @hidden */
92
- _tabHeaderKeyHandler(index, event) {
93
- this._tabsService.tabHeaderKeyHandler(index, event, this.tabHeaderLinks.map((tab) => tab.elementRef.nativeElement));
94
- }
95
- /** @hidden */
96
97
  _highlightActiveTab({ id }) {
97
98
  const tab = this._tabArray.find((_tab) => _tab.id === id);
98
99
  if (tab) {
@@ -124,18 +125,6 @@ export class TabListComponent {
124
125
  this._listenOnTabPanelsExpandedChange();
125
126
  this._listenOnTabPanelsAndInitiallyExpandTabPanel();
126
127
  }
127
- /** @hidden Setup mechanisms required for handling the overflowing tabs behavior */
128
- _setupCollapsingOverflowedTabs() {
129
- if (this.collapseOverflow) {
130
- this._cacheTabsDimensions(this.tabHeaders.toArray());
131
- this._listenOnTabPanelsChangeAndCollapse();
132
- this._listenOnResizeAndHideItems();
133
- this.refreshOverflow();
134
- }
135
- else {
136
- this._isCollapsed = false;
137
- }
138
- }
139
128
  /** @hidden Setup mechanisms required for handling the stacked content behavior */
140
129
  _listenOnTabPanelsAndSetupStackedContent() {
141
130
  if (this.stackContent) {
@@ -150,8 +139,6 @@ export class TabListComponent {
150
139
  .pipe(map((tabPanels) => tabPanels.map((el) => new TabInfo(el))), takeUntil(this._onDestroy$))
151
140
  .subscribe((tabs) => {
152
141
  this._tabArray = tabs;
153
- this._numbOfVisibleTabs = tabs.length;
154
- this._resetVisualOrder();
155
142
  });
156
143
  }
157
144
  /** @hidden */
@@ -168,42 +155,18 @@ export class TabListComponent {
168
155
  }
169
156
  /** @hidden */
170
157
  _listenOnPropertiesChange() {
171
- merge(this._tabsService.tabPanelPropertyChanged, this.tabPanels.changes)
158
+ merge(this.tabPanelPropertyChanged, this.tabPanels.changes)
172
159
  .pipe(takeUntil(this._onDestroy$))
173
160
  .subscribe(() => this._detectChanges());
174
161
  }
175
162
  /** @hidden */
176
- _listenOnKeyboardTabSelect() {
177
- this._tabsService.tabSelected
178
- .pipe(map((index) => this._visualOrder.visible[index].panel), takeUntil(this._onDestroy$))
179
- .subscribe((tabPanel) => this._expandTab(tabPanel, !tabPanel.expanded));
180
- }
181
- /** @hidden */
182
- _listenOnResizeAndHideItems() {
183
- resizeObservable(this._elRef.nativeElement)
184
- .pipe(debounceTime(20), takeUntil(this._onDestroy$))
185
- .subscribe(() => {
186
- this.refreshOverflow();
187
- this._detectChanges();
188
- });
189
- }
190
- /** @hidden */
191
- _listenOnTabPanelsChangeAndCollapse() {
192
- const $tabHeadersSource = this.tabHeaders.changes.pipe(map((tabHeaders) => tabHeaders.toArray()), first(), takeUntil(this._onDestroy$));
193
- this.tabPanels.changes
194
- .pipe(switchMap(() => $tabHeadersSource), takeUntil(this._onDestroy$))
195
- .subscribe((tabHeaders) => {
196
- this._cacheTabsWidth(tabHeaders);
197
- this.refreshOverflow();
198
- this._detectChanges();
199
- });
200
- }
201
- /** @hidden */
202
163
  _activateStackedTab(tabPanel, scroll = true) {
203
164
  if (scroll) {
204
165
  this._scrollToPanel(tabPanel);
205
166
  }
206
- this._tabArray.forEach((tab) => (tab.active = tab.panel === tabPanel));
167
+ this._tabArray.forEach((tab) => {
168
+ tab.active = tab.panel === tabPanel;
169
+ });
207
170
  }
208
171
  /** @hidden */
209
172
  _activateExpandableTab(tabPanel, expand) {
@@ -230,73 +193,6 @@ export class TabListComponent {
230
193
  }
231
194
  this.selectedTabChange.emit(tabPanel);
232
195
  }
233
- /** @hidden Divides tabs into tabs visible in the header and moved tabs to the dropdown */
234
- _hideOverflowingItems() {
235
- const extraFreeSpace = 1;
236
- const capacity = getElementCapacity(this.headerContainer);
237
- const tabsLimit = this.maxVisibleTabs || Number.MAX_SAFE_INTEGER;
238
- const totalRequiredWidth = this._tabArray.reduce((total, tab) => total + tab.headerWidth, 0);
239
- this._isCollapsed = totalRequiredWidth > capacity - extraFreeSpace || tabsLimit < this._tabArray.length;
240
- const requiredFreeSpace = this._isCollapsed ? this._overflowTriggerWidth : 0;
241
- this._numbOfVisibleTabs = 0;
242
- let capacityLeft = capacity;
243
- for (let i = 0; capacityLeft > requiredFreeSpace && this._tabArray.length > i && tabsLimit > i; i++) {
244
- const width = this._tabArray[i].headerWidth;
245
- if (capacityLeft - width >= requiredFreeSpace + extraFreeSpace) {
246
- this._numbOfVisibleTabs++;
247
- }
248
- capacityLeft -= width;
249
- }
250
- this._resetVisualOrder();
251
- }
252
- /** @hidden Check whether the active tab is visible */
253
- _keepActiveTabVisible() {
254
- const activeTab = this._visualOrder.overflowing.find((tab) => tab.active);
255
- if (activeTab) {
256
- this._moveToVisible(activeTab);
257
- }
258
- }
259
- /** @hidden Make given tab visible in the tab bar*/
260
- _moveToVisible(tabToMove) {
261
- const activeTabWidth = tabToMove.headerWidth;
262
- const numOfVisibleTabs = this._numbOfVisibleTabs;
263
- const capacity = getElementCapacity(this.headerContainer);
264
- const tabsLimit = this.maxVisibleTabs || Number.MAX_SAFE_INTEGER;
265
- const visibleTabsWidth = this._visualOrder.visible.reduce((total, tab) => total + tab.headerWidth, 0);
266
- let widthRequired = activeTabWidth - (capacity - visibleTabsWidth - this._overflowTriggerWidth);
267
- let numOfTabsToMove = 0;
268
- /** As long as:
269
- * - There is not enough space for tab to move
270
- * - There are other tabs to move from visible to overflow
271
- * - Number of visible tabs is larger than the limit */
272
- for (let i = numOfVisibleTabs - 1; (widthRequired > 0 && i >= 0) || tabsLimit < numOfVisibleTabs + 1 - numOfTabsToMove; i--) {
273
- widthRequired -= this._tabArray[i].headerWidth;
274
- numOfTabsToMove++;
275
- }
276
- const tabToMoveIndex = this._visualOrder.overflowing.indexOf(tabToMove);
277
- const [selectedTab] = this._visualOrder.overflowing.splice(tabToMoveIndex, 1);
278
- const tabsToMove = this._visualOrder.visible.splice(-numOfTabsToMove, numOfTabsToMove, selectedTab);
279
- this._visualOrder.overflowing.unshift(...tabsToMove);
280
- this._numbOfVisibleTabs = this._visualOrder.visible.length;
281
- }
282
- /** @hidden Caches width dimension of the elements in the tabs header */
283
- _cacheTabsDimensions(tabHeaders) {
284
- this._overflowTriggerWidth = Math.ceil(getElementWidth(this.overflowTrigger));
285
- this._cacheTabsWidth(tabHeaders);
286
- }
287
- /** @hidden Caches the width of the tabs */
288
- _cacheTabsWidth(tabHeaders) {
289
- tabHeaders.forEach((item, i) => {
290
- this._tabArray[i].headerWidth = Math.ceil(getElementWidth(item.elementRef(), true));
291
- });
292
- }
293
- /** @hidden */
294
- _resetVisualOrder() {
295
- this._visualOrder = {
296
- visible: this._tabArray.slice(0, this._numbOfVisibleTabs),
297
- overflowing: this._tabArray.slice(this._numbOfVisibleTabs)
298
- };
299
- }
300
196
  /** @hidden */
301
197
  _scrollToPanel(tabPanel) {
302
198
  const panelElement = tabPanel.elementRef.nativeElement;
@@ -317,14 +213,14 @@ export class TabListComponent {
317
213
  return !tabPanel.disabled && expand !== tabPanel.expanded && expand === false ? this.collapsibleTabs : true;
318
214
  }
319
215
  }
320
- TabListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TabListComponent, deps: [{ token: i1.TabsService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component });
321
- TabListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TabListComponent, selector: "fd-tab-list", inputs: { size: "size", mode: "mode", collapseOverflow: "collapseOverflow", maxVisibleTabs: "maxVisibleTabs", stackContent: "stackContent", maxContentHeight: "maxContentHeight", collapsibleTabs: "collapsibleTabs", expandOverflowText: "expandOverflowText" }, outputs: { selectedTabChange: "selectedTabChange" }, host: { classAttribute: "fd-tabs-custom" }, providers: [TabsService, contentDensityObserverProviders()], queries: [{ propertyName: "tabPanels", predicate: TabPanelComponent }], viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: TabItemExpandComponent, descendants: true, read: ElementRef }, { propertyName: "headerContainer", first: true, predicate: ["headerContainer"], descendants: true, read: ElementRef }, { propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabHeaderLinks", predicate: TabLinkDirective, descendants: true }, { propertyName: "tabHeaders", predicate: TabItemDirective, descendants: true }], ngImport: i0, template: "<div\n #headerContainer\n role=\"tablist\"\n class=\"fd-tabs\"\n [class]=\"(mode ? 'fd-tabs--' + mode : '') + (' fd-tabs--' + size)\"\n [class.fd-tabs--compact]=\"_contentDensityObserver.isCompact\"\n>\n <div class=\"fd-tabs__wrapper\" [class.fd-tabs__wrapper--collapsible]=\"_isCollapsed\">\n <ng-container *ngFor=\"let tab of _visualOrder.visible; let i = index; let last = last\">\n <div fd-tab-item [header]=\"tab.isHeader\" [tabItemState]=\"tab.tabState\" [attr.aria-selected]=\"tab.active\">\n <a\n fd-tab-link\n [attr.tabindex]=\"tab.active ? '0' : '-1'\"\n [attr.aria-controls]=\"tab.id\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledBy ? tab.ariaLabelledBy : null\"\n [active]=\"tab.active\"\n [disabled]=\"tab.disabled\"\n (keydown)=\"_tabHeaderKeyHandler(i, $event)\"\n (click)=\"_tabHeaderClickHandler(tab.panel)\"\n >\n <ng-container *ngTemplateOutlet=\"tab.titleTemplate || null\"></ng-container>\n\n <ng-container *ngIf=\"!tab.titleTemplate\" [ngSwitch]=\"mode\">\n <ng-container *ngSwitchCase=\"'filter'\">\n <span fd-tab-header *ngIf=\"tab.isHeader\">\n <span fd-tab-counter-header *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </span>\n <ng-container *ngIf=\"!tab.isHeader\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n <span fd-tab-label>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'icon-only'\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'process'\">\n <span fd-tab-icon *ngIf=\"tab.glyph\" [icon]=\"tab.glyph\"></span>\n <div fd-tab-process>\n <span fd-tab-label *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <p fd-tab-count *ngIf=\"tab.count\">{{ tab.count }}</p>\n <span fd-tab-tag>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n </a>\n <div fd-tab-process-icon *ngIf=\"mode === 'process' && !last\"></div>\n </div>\n\n <div *ngIf=\"tab.isHeader\" fd-tab-separator></div>\n </ng-container>\n </div>\n\n <fd-item-expand\n *ngIf=\"_isCollapsed\"\n [fdMenuTrigger]=\"menu\"\n [label]=\"expandOverflowText\"\n (keydown)=\"_onTriggerKeydown($event, menu)\"\n >\n </fd-item-expand>\n</div>\n\n<div\n #contentContainer\n class=\"fd-tabs__content\"\n [style.maxHeight]=\"maxContentHeight\"\n fdScrollSpy\n [trackedTags]=\"['fd-tab']\"\n [scrollSpyDisabled]=\"_disableScrollSpy\"\n (spyChange)=\"_highlightActiveTab($event)\"\n>\n <ng-content></ng-content>\n</div>\n\n<fd-menu #menu>\n <li\n fd-menu-item\n *ngFor=\"let tab of _visualOrder.overflowing\"\n (onSelect)=\"_overflowingTabHeaderClickHandler(tab.panel)\"\n >\n <div fd-menu-interactive>\n <ng-container\n *ngTemplateOutlet=\"\n !tab.titleTemplate && mode === 'icon-only' ? iconOnlyTemplate : tab.titleTemplate || textTitle;\n context: { $implicit: tab }\n \"\n ></ng-container>\n </div>\n </li>\n</fd-menu>\n\n<ng-template #textTitle let-tab>\n <span fd-menu-title>{{ tab.title }}</span>\n</ng-template>\n\n<ng-template #iconOnlyTemplate let-tab>\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-tabs+()\n .fd-tabs__item?+(([aria-selected=true]),)\n .fd-tabs__link+((.is-selected,)\n.fd-tabs__panel+([aria-expanded]|.is-expanded)\n*/.fd-tabs{--fdTabs_Icon_Size:1.125rem;--fdTabs_Icon_Selection_Height:2.625rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;-webkit-box-shadow:var(--sapContent_HeaderShadow);align-items:center;background-color:var(--sapObjectHeader_Background);border:0;border-color:var(--sapObjectHeader_BorderColor);box-shadow:var(--sapContent_HeaderShadow);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-tabs:after,.fd-tabs:before{box-sizing:inherit;font-size:inherit}.fd-tabs__count{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0 0 .125rem}.fd-tabs__count:after,.fd-tabs__count:before{box-sizing:inherit;font-size:inherit}.fd-tabs__link{-webkit-box-sizing:border-box;-webkit-transition:0s;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);cursor:pointer;display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:.875rem .75rem;position:relative;text-decoration:none;transition:0s}.fd-tabs__link:after,.fd-tabs__link:before{box-sizing:inherit;font-size:inherit}.fd-tabs__link.is-selected .fd-tabs__icon,.fd-tabs__link[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__link.is-selected .fd-tabs__icon:after,.fd-tabs__link.is-selected .fd-tabs__tag:after,.fd-tabs__link[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__link[aria-selected=true] .fd-tabs__tag:after{background-color:var(--fdIcon_Tab_Bar_Selection_Bar_Color)}.fd-tabs__link.is-focus,.fd-tabs__link:focus{box-shadow:none;outline:none;z-index:5}.fd-tabs__link.is-focus .fd-tabs__icon:before,.fd-tabs__link.is-focus .fd-tabs__tag:before,.fd-tabs__link:focus .fd-tabs__icon:before,.fd-tabs__link:focus .fd-tabs__tag:before{bottom:0;content:\"\";left:0;outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--sapContent_FocusWidth);position:absolute;right:0;top:0}.fd-tabs__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0 .25rem;padding:0;position:relative}.fd-tabs__item:after,.fd-tabs__item:before{box-sizing:inherit;font-size:inherit}.fd-tabs__item.is-selected .fd-tabs__tag,.fd-tabs__item[aria-selected=true] .fd-tabs__tag{color:var(--fdIcon_Tab_Bar_Selection_Color)}.fd-tabs__item.is-selected .fd-tabs__icon,.fd-tabs__item[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item.is-selected .fd-tabs__icon:after,.fd-tabs__item.is-selected .fd-tabs__link:after,.fd-tabs__item.is-selected .fd-tabs__tag:after,.fd-tabs__item[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item[aria-selected=true] .fd-tabs__tag:after{background-color:var(--fdIcon_Tab_Bar_Selection_Bar_Color)}.fd-tabs__item--error .fd-tabs__icon{border-color:var(--sapErrorColor);color:var(--sapErrorColor)}.fd-tabs__item--error .fd-tabs__link .fd-tabs__tag{color:var(--sapErrorColor)}.fd-tabs__item--error.is-selected .fd-tabs__icon,.fd-tabs__item--error[aria-selected=true] .fd-tabs__icon{background-color:var(--sapErrorColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--error.is-selected .fd-tabs__icon:after,.fd-tabs__item--error.is-selected .fd-tabs__link:after,.fd-tabs__item--error.is-selected .fd-tabs__tag:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapErrorColor)}.fd-tabs__item--warning .fd-tabs__icon{border-color:var(--sapWarningColor);color:var(--sapWarningColor)}.fd-tabs__item--warning .fd-tabs__link .fd-tabs__tag{color:var(--sapWarningColor)}.fd-tabs__item--warning.is-selected .fd-tabs__icon,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__icon{background-color:var(--sapWarningColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--warning.is-selected .fd-tabs__icon:after,.fd-tabs__item--warning.is-selected .fd-tabs__link:after,.fd-tabs__item--warning.is-selected .fd-tabs__tag:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapWarningColor)}.fd-tabs__item--success .fd-tabs__icon{border-color:var(--sapSuccessColor);color:var(--sapSuccessColor)}.fd-tabs__item--success .fd-tabs__link .fd-tabs__tag{color:var(--sapSuccessColor)}.fd-tabs__item--success.is-selected .fd-tabs__icon,.fd-tabs__item--success[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSuccessColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--success.is-selected .fd-tabs__icon:after,.fd-tabs__item--success.is-selected .fd-tabs__link:after,.fd-tabs__item--success.is-selected .fd-tabs__tag:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapSuccessColor)}.fd-tabs__item--information .fd-tabs__icon{border-color:var(--sapInformationColor);color:var(--sapInformationColor)}.fd-tabs__item--information .fd-tabs__link .fd-tabs__tag{color:var(--sapInformationColor)}.fd-tabs__item--information.is-selected .fd-tabs__icon,.fd-tabs__item--information[aria-selected=true] .fd-tabs__icon{background-color:var(--sapInformationColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--information.is-selected .fd-tabs__icon:after,.fd-tabs__item--information.is-selected .fd-tabs__link:after,.fd-tabs__item--information.is-selected .fd-tabs__tag:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapInformationColor)}.fd-tabs__item--neutral .fd-tabs__icon{border-color:var(--sapNeutralColor);color:var(--sapNeutralColor)}.fd-tabs__item--neutral .fd-tabs__link .fd-tabs__tag{color:var(--sapNeutralColor)}.fd-tabs__item--neutral.is-selected .fd-tabs__icon,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__icon{background-color:var(--sapNeutralColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--neutral.is-selected .fd-tabs__icon:after,.fd-tabs__item--neutral.is-selected .fd-tabs__link:after,.fd-tabs__item--neutral.is-selected .fd-tabs__tag:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapNeutralColor)}.fd-tabs__item:first-child{margin-left:0}.fd-tabs__item:first-child .fd-tabs__link{margin-left:.1875rem;padding-left:0}.fd-tabs__item:first-child .fd-tabs__link[dir=rtl],[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link{margin-left:0;margin-right:.1875rem}.fd-tabs__item[dir=rtl]:first-child,[dir=rtl] .fd-tabs__item:first-child{margin-left:.25rem;margin-right:0}.fd-tabs__item[dir=rtl]:first-child .fd-tabs__link,[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link{padding-left:.875rem;padding-right:0}.fd-tabs__icon{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:transparent;border:0;border:var(--fdIcon_Tab_Bar_Icon_Border_Weight) solid var(--fdIcon_Tab_Bar_Icon_Border_Color);border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);color:var(--fdIcon_Tab_Bar_Inactive_Tab_Icon_Color);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdTabs_Icon_Selection_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 .188rem;padding:0;position:relative;width:var(--fdTabs_Icon_Selection_Height)}.fd-tabs__icon:after,.fd-tabs__icon:before{box-sizing:inherit;font-size:inherit}.fd-tabs__icon [class*=sap-icon],.fd-tabs__icon[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;font-size:var(--fdTabs_Icon_Size);line-height:1}.fd-tabs__icon:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs__tag{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0;position:relative}.fd-tabs__tag:after,.fd-tabs__tag:before{box-sizing:inherit;font-size:inherit}.fd-tabs__tag:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs__panel{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__panel:after,.fd-tabs__panel:before{box-sizing:inherit;font-size:inherit}.fd-tabs__panel[aria-expanded=false]{display:none}.fd-tabs__panel.is-expanded,.fd-tabs__panel[aria-expanded=true]{display:block}.fd-tabs__counter-header{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:1.5rem;font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1.5rem;margin:0;padding:0 .5rem 0 0}.fd-tabs__counter-header:after,.fd-tabs__counter-header:before{box-sizing:inherit;font-size:inherit}.fd-tabs__overflow{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 0 0 auto;padding:0}.fd-tabs__overflow:after,.fd-tabs__overflow:before{box-sizing:inherit;font-size:inherit}.fd-tabs__overflow [class*=sap-icon],.fd-tabs__overflow[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-tabs__process-icon{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:1rem;font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1;margin:0;padding:0 .5rem}.fd-tabs__process-icon:after,.fd-tabs__process-icon:before{box-sizing:inherit;font-size:inherit}.fd-tabs__process-icon:before{text-rendering:optimizeLegibility;content:\"\\e0c7\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-transform:none}.fd-tabs__label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;padding:0 0 0 .125rem}.fd-tabs__label:after,.fd-tabs__label:before{box-sizing:inherit;font-size:inherit}.fd-tabs__label:first-child{padding-bottom:.375rem}.fd-tabs__separator{-webkit-box-sizing:border-box;border:0;border-right:solid var(--sapGroup_TitleBorderColor);border-right-width:.0625rem;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2rem;line-height:var(--sapContent_LineHeight);line-height:2rem;margin:0 .25rem;padding:0}.fd-tabs__separator:after,.fd-tabs__separator:before{box-sizing:inherit;font-size:inherit}.fd-tabs__header{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__header:after,.fd-tabs__header:before{box-sizing:inherit;font-size:inherit}.fd-tabs__header .fd-tabs__label{max-width:4rem}.fd-tabs--filter .fd-tabs__count,.fd-tabs--icon-only .fd-tabs__count,.fd-tabs--process .fd-tabs__count{font-size:var(--sapFontSmallSize)}.fd-tabs--filter .fd-tabs__item:first-child .fd-tabs__link,.fd-tabs--icon-only .fd-tabs__item:first-child .fd-tabs__link,.fd-tabs--process .fd-tabs__item:first-child .fd-tabs__link{margin:0}.fd-tabs--icon-only .fd-tabs__link,.fd-tabs--process .fd-tabs__link{padding-bottom:1rem;padding-top:1rem}.fd-tabs--icon-only .fd-tabs__icon:after,.fd-tabs--process .fd-tabs__icon:after{bottom:-1.0625rem}.fd-tabs--filter .fd-tabs__count,.fd-tabs--icon-only .fd-tabs__count{left:calc(100% + .1875rem);position:absolute;top:0}.fd-tabs--filter[dir=rtl] .fd-tabs__count,.fd-tabs--icon-only[dir=rtl] .fd-tabs__count,[dir=rtl] .fd-tabs--filter .fd-tabs__count,[dir=rtl] .fd-tabs--icon-only .fd-tabs__count{left:auto;right:calc(100% + .1875rem)}.fd-tabs--process .fd-tabs__item{margin:0 .25rem 0 0}.fd-tabs--process .fd-tabs__item,.fd-tabs--process .fd-tabs__link{align-items:center;display:flex}.fd-tabs--process .fd-tabs__link{padding-left:0;padding-right:0}.fd-tabs--process .fd-tabs__icon{margin:0 .1875rem}.fd-tabs--process .fd-tabs__label{line-height:.875rem;max-width:7.5rem;overflow:hidden;white-space:nowrap}.fd-tabs--process[dir=rtl] .fd-tabs__item,[dir=rtl] .fd-tabs--process .fd-tabs__item{margin:0 0 0 .25rem}.fd-tabs--process[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link,[dir=rtl] .fd-tabs--process .fd-tabs__item:first-child .fd-tabs__link{padding-left:0;padding-right:0}.fd-tabs--filter{align-items:center;display:flex}.fd-tabs--filter .fd-tabs__item{margin:0;padding:0 .25rem;width:5.375rem}.fd-tabs--filter .fd-tabs__item[dir=rtl],[dir=rtl] .fd-tabs--filter .fd-tabs__item{margin:0}.fd-tabs--filter .fd-tabs__item--header{width:auto}.fd-tabs--filter .fd-tabs__icon{margin-bottom:.375rem}.fd-tabs--filter .fd-tabs__icon:after{content:none}.fd-tabs--filter .fd-tabs__label{line-height:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-tabs--filter .fd-tabs__link{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:flex;flex-direction:column;height:5.5rem;justify-content:center;padding:.875rem .188rem .625rem;position:relative;text-align:center}.fd-tabs--filter .fd-tabs__link:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;bottom:0;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs--filter .fd-tabs__link.is-focus,.fd-tabs--filter .fd-tabs__link:focus{box-shadow:none;outline:none;z-index:5}.fd-tabs--filter[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link,[dir=rtl] .fd-tabs--filter .fd-tabs__item:first-child .fd-tabs__link{padding-left:.188rem;padding-right:.188rem}.fd-tabs--compact{--fdTabs_Icon_Size:1.125rem;--fdTabs_Icon_Selection_Height:1.875rem}.fd-tabs--compact .fd-tabs__label:first-child{padding-bottom:.25rem}.fd-tabs--compact.fd-tabs--filter .fd-tabs__link{height:4.75rem}.fd-tabs--s{padding:0 1rem}.fd-tabs--l,.fd-tabs--m{padding:0 2rem}.fd-tabs--xl,.fd-tabs--xxl{padding:0 3rem}.fd-tabs[dir=rtl] .fd-tabs__process-icon,[dir=rtl] .fd-tabs .fd-tabs__process-icon{transform:rotate(180deg)}.fd-tabs[dir=rtl] .fd-tabs__counter-header,[dir=rtl] .fd-tabs .fd-tabs__counter-header{padding-left:.5rem;padding-right:0}.fd-tabs[dir=rtl] .fd-tabs__overflow,[dir=rtl] .fd-tabs .fd-tabs__overflow{margin-left:0;margin-right:auto}.fd-tabs__process{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__process:after,.fd-tabs__process:before{box-sizing:inherit;font-size:inherit}.fd-tabs-custom{display:flex;flex-direction:column}.is-disabled{pointer-events:none;opacity:.4}.fd-tabs{flex-grow:0;flex-wrap:nowrap}.fd-tabs__content{overflow-y:auto;flex-grow:1}.fd-tabs__item{flex-shrink:0}.fd-tabs__wrapper{flex-grow:1;display:flex;flex-wrap:wrap;align-items:center}.fd-tabs__wrapper--collapsible{overflow:hidden;flex-wrap:nowrap}.fd-tabs__item--success .fd-tabs__link .fd-tabs__tag{color:#107e3e;color:var(--sapSuccessColor, #107e3e)}.fd-tabs__item--error .fd-tabs__link .fd-tabs__tag{color:#b00;color:var(--sapErrorColor, #b00)}.fd-tabs__item--warning .fd-tabs__link .fd-tabs__tag{color:#e9730c;color:var(--sapWarningColor, #e9730c)}.fd-tabs__item--information .fd-tabs__link .fd-tabs__tag{color:#0a6ed1;color:var(--sapInformationColor, #0a6ed1)}.fd-tabs__item--neutral .fd-tabs__link .fd-tabs__tag{border-right-color:#6a6d70;border-right-color:var(--sapNeutralBorderColor, #6a6d70)}.fd-tabs--filter .fd-tabs__link.is-selected:after{background-color:#0854a0;background-color:var(--fdTabs_Selected_Color, var(--sapSelectedColor, #0854a0))}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i4.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i4.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i4.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "directive", type: i5.ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: ["trackedTags", "fireEmpty", "targetPercent", "targetOffset", "scrollSpyDisabled"], outputs: ["spyChange"] }, { kind: "directive", type: i6.TabLinkDirective, selector: "[fd-tab-link]", inputs: ["active", "disabled"], outputs: ["keyDown"] }, { kind: "directive", type: i7.TabItemDirective, selector: "[fd-tab-item]", inputs: ["class", "tabItemState", "header", "disabled", "fdTabItemClass"] }, { kind: "directive", type: i8.TabTagDirective, selector: "[fd-tab-tag]" }, { kind: "component", type: i8.TabIconComponent, selector: "[fd-tab-icon]", inputs: ["class", "icon"] }, { kind: "directive", type: i8.TabCountDirective, selector: "[fd-tab-count]" }, { kind: "directive", type: i8.TabLabelDirective, selector: "[fd-tab-label]" }, { kind: "directive", type: i8.TabProcessDirective, selector: "[fd-tab-process]" }, { kind: "directive", type: i8.TabHeaderDirective, selector: "[fd-tab-header]" }, { kind: "component", type: i9.TabItemExpandComponent, selector: "fd-item-expand", inputs: ["label"] }, { kind: "directive", type: i8.TabCounterHeaderDirective, selector: "[fd-tab-counter-header]" }, { kind: "directive", type: i8.TabProcessIconDirective, selector: "[fd-tab-process-icon]" }, { kind: "directive", type: i8.TabSeparatorDirective, selector: "[fd-tab-separator]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
216
+ TabListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TabListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.ContentDensityObserver }, { token: i2.DestroyedService }], target: i0.ɵɵFactoryTarget.Component });
217
+ TabListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TabListComponent, selector: "fd-tab-list", inputs: { size: "size", mode: "mode", collapseOverflow: "collapseOverflow", maxVisibleTabs: "maxVisibleTabs", stackContent: "stackContent", maxContentHeight: "maxContentHeight", collapsibleTabs: "collapsibleTabs", expandOverflowText: "expandOverflowText" }, outputs: { selectedTabChange: "selectedTabChange", visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount" }, host: { classAttribute: "fd-tabs-custom" }, providers: [contentDensityObserverProviders(), DestroyedService], queries: [{ propertyName: "tabPanels", predicate: i0.forwardRef(function () { return TabPanelComponent; }) }], viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: TabItemExpandComponent, descendants: true, read: ElementRef }, { propertyName: "headerContainer", first: true, predicate: ["headerContainer"], descendants: true, read: ElementRef }, { propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }, { propertyName: "_overflowLayout", first: true, predicate: OverflowLayoutComponent, descendants: true }, { propertyName: "tabHeaderLinks", predicate: TabLinkDirective, descendants: true }, { propertyName: "tabHeaders", predicate: TabItemDirective, descendants: true }], ngImport: i0, template: "<div\n #headerContainer\n role=\"tablist\"\n class=\"fd-tabs\"\n [class]=\"(mode ? 'fd-tabs--' + mode : '') + (' fd-tabs--' + size)\"\n [class.fd-tabs--compact]=\"_contentDensityObserver.isCompact\"\n>\n <fd-overflow-layout\n [maxVisibleItems]=\"maxVisibleTabs\"\n [enableKeyboardNavigation]=\"true\"\n navigationTrigger=\"keydown\"\n (hiddenItemsCount)=\"hiddenItemsCount.emit($event)\"\n (visibleItemsCount)=\"visibleItemsCount.emit($event)\"\n >\n <ng-container *ngFor=\"let tab of _tabArray; let i = index; let last = last\">\n <div\n fd-tab-item\n *fdOverflowItemRef=\"tab\"\n fdOverflowLayoutItem\n [forceVisibility]=\"tab.panel._forcedVisibility\"\n [header]=\"tab.isHeader\"\n [tabItemState]=\"tab.tabState\"\n [attr.aria-selected]=\"tab.active\"\n >\n <a\n fd-tab-link\n [attr.aria-controls]=\"tab.id\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n fdOverflowLayoutFocusableItem\n [focusable]=\"tab.active\"\n [navigable]=\"!tab.disabled\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledBy ? tab.ariaLabelledBy : null\"\n [active]=\"tab.active\"\n [disabled]=\"tab.disabled\"\n (keydown)=\"_tabHeaderKeydownHandler($event, tab.panel)\"\n (click)=\"_tabHeaderClickHandler(tab.panel)\"\n >\n <ng-container *ngTemplateOutlet=\"tab.titleTemplate || null\"></ng-container>\n\n <ng-container *ngIf=\"!tab.titleTemplate\" [ngSwitch]=\"mode\">\n <ng-container *ngSwitchCase=\"'filter'\">\n <span fd-tab-header *ngIf=\"tab.isHeader\">\n <span fd-tab-counter-header *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </span>\n <ng-container *ngIf=\"!tab.isHeader\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n <span fd-tab-label>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'icon-only'\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'process'\">\n <span fd-tab-icon *ngIf=\"tab.glyph\" [icon]=\"tab.glyph\"></span>\n <div fd-tab-process>\n <span fd-tab-label *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <p fd-tab-count *ngIf=\"tab.count\">{{ tab.count }}</p>\n <span fd-tab-tag>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n </a>\n <div fd-tab-process-icon *ngIf=\"mode === 'process' && !last\"></div>\n </div>\n\n <div *ngIf=\"tab.isHeader\" fd-tab-separator></div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let tabs; items: _tabArray\">\n <fd-item-expand\n [fdMenuTrigger]=\"menu\"\n [label]=\"expandOverflowText\"\n *ngIf=\"tabs.length > 0\"\n (keydown)=\"_onTriggerKeydown($event, menu)\"\n >\n </fd-item-expand>\n <fd-menu #menu>\n <li\n fd-menu-item\n *ngFor=\"let tab of tabs\"\n (onSelect)=\"_overflowingTabHeaderClickHandler(tab.item.panel)\"\n >\n <div fd-menu-interactive>\n <ng-container\n *ngTemplateOutlet=\"\n !tab.item.titleTemplate && mode === 'icon-only'\n ? iconOnlyTemplate\n : tab.item.titleTemplate || textTitle;\n context: { $implicit: tab.item }\n \"\n ></ng-container>\n </div>\n </li>\n </fd-menu>\n </ng-container>\n </fd-overflow-layout>\n</div>\n\n<div\n #contentContainer\n class=\"fd-tabs__content\"\n [style.maxHeight]=\"maxContentHeight\"\n fdScrollSpy\n [trackedTags]=\"['fd-tab']\"\n [scrollSpyDisabled]=\"_disableScrollSpy\"\n (spyChange)=\"_highlightActiveTab($event)\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #textTitle let-tab>\n <span fd-menu-title>{{ tab.title }}</span>\n</ng-template>\n\n<ng-template #iconOnlyTemplate let-tab>\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-tabs+()\n .fd-tabs__item?+(([aria-selected=true]),)\n .fd-tabs__link+((.is-selected,)\n.fd-tabs__panel+([aria-expanded]|.is-expanded)\n*/.fd-tabs{--fdTabs_Icon_Size:1.125rem;--fdTabs_Icon_Selection_Height:2.625rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;-webkit-box-shadow:var(--sapContent_HeaderShadow);align-items:center;background-color:var(--sapObjectHeader_Background);border:0;border-color:var(--sapObjectHeader_BorderColor);box-shadow:var(--sapContent_HeaderShadow);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-tabs:after,.fd-tabs:before{box-sizing:inherit;font-size:inherit}.fd-tabs__count{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0 0 .125rem}.fd-tabs__count:after,.fd-tabs__count:before{box-sizing:inherit;font-size:inherit}.fd-tabs__link{-webkit-box-sizing:border-box;-webkit-transition:0s;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);cursor:pointer;display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:.875rem .75rem;position:relative;text-decoration:none;transition:0s}.fd-tabs__link:after,.fd-tabs__link:before{box-sizing:inherit;font-size:inherit}.fd-tabs__link.is-selected .fd-tabs__icon,.fd-tabs__link[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__link.is-selected .fd-tabs__icon:after,.fd-tabs__link.is-selected .fd-tabs__tag:after,.fd-tabs__link[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__link[aria-selected=true] .fd-tabs__tag:after{background-color:var(--fdIcon_Tab_Bar_Selection_Bar_Color)}.fd-tabs__link.is-focus,.fd-tabs__link:focus{box-shadow:none;outline:none;z-index:5}.fd-tabs__link.is-focus .fd-tabs__icon:before,.fd-tabs__link.is-focus .fd-tabs__tag:before,.fd-tabs__link:focus .fd-tabs__icon:before,.fd-tabs__link:focus .fd-tabs__tag:before{bottom:0;content:\"\";left:0;outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--sapContent_FocusWidth);position:absolute;right:0;top:0}.fd-tabs__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0 .25rem;padding:0;position:relative}.fd-tabs__item:after,.fd-tabs__item:before{box-sizing:inherit;font-size:inherit}.fd-tabs__item.is-selected .fd-tabs__tag,.fd-tabs__item[aria-selected=true] .fd-tabs__tag{color:var(--fdIcon_Tab_Bar_Selection_Color)}.fd-tabs__item.is-selected .fd-tabs__icon,.fd-tabs__item[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item.is-selected .fd-tabs__icon:after,.fd-tabs__item.is-selected .fd-tabs__link:after,.fd-tabs__item.is-selected .fd-tabs__tag:after,.fd-tabs__item[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item[aria-selected=true] .fd-tabs__tag:after{background-color:var(--fdIcon_Tab_Bar_Selection_Bar_Color)}.fd-tabs__item--error .fd-tabs__icon{border-color:var(--sapErrorColor);color:var(--sapErrorColor)}.fd-tabs__item--error .fd-tabs__link .fd-tabs__tag{color:var(--sapErrorColor)}.fd-tabs__item--error.is-selected .fd-tabs__icon,.fd-tabs__item--error[aria-selected=true] .fd-tabs__icon{background-color:var(--sapErrorColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--error.is-selected .fd-tabs__icon:after,.fd-tabs__item--error.is-selected .fd-tabs__link:after,.fd-tabs__item--error.is-selected .fd-tabs__tag:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapErrorColor)}.fd-tabs__item--warning .fd-tabs__icon{border-color:var(--sapWarningColor);color:var(--sapWarningColor)}.fd-tabs__item--warning .fd-tabs__link .fd-tabs__tag{color:var(--sapWarningColor)}.fd-tabs__item--warning.is-selected .fd-tabs__icon,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__icon{background-color:var(--sapWarningColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--warning.is-selected .fd-tabs__icon:after,.fd-tabs__item--warning.is-selected .fd-tabs__link:after,.fd-tabs__item--warning.is-selected .fd-tabs__tag:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapWarningColor)}.fd-tabs__item--success .fd-tabs__icon{border-color:var(--sapSuccessColor);color:var(--sapSuccessColor)}.fd-tabs__item--success .fd-tabs__link .fd-tabs__tag{color:var(--sapSuccessColor)}.fd-tabs__item--success.is-selected .fd-tabs__icon,.fd-tabs__item--success[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSuccessColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--success.is-selected .fd-tabs__icon:after,.fd-tabs__item--success.is-selected .fd-tabs__link:after,.fd-tabs__item--success.is-selected .fd-tabs__tag:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapSuccessColor)}.fd-tabs__item--information .fd-tabs__icon{border-color:var(--sapInformationColor);color:var(--sapInformationColor)}.fd-tabs__item--information .fd-tabs__link .fd-tabs__tag{color:var(--sapInformationColor)}.fd-tabs__item--information.is-selected .fd-tabs__icon,.fd-tabs__item--information[aria-selected=true] .fd-tabs__icon{background-color:var(--sapInformationColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--information.is-selected .fd-tabs__icon:after,.fd-tabs__item--information.is-selected .fd-tabs__link:after,.fd-tabs__item--information.is-selected .fd-tabs__tag:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapInformationColor)}.fd-tabs__item--neutral .fd-tabs__icon{border-color:var(--sapNeutralColor);color:var(--sapNeutralColor)}.fd-tabs__item--neutral .fd-tabs__link .fd-tabs__tag{color:var(--sapNeutralColor)}.fd-tabs__item--neutral.is-selected .fd-tabs__icon,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__icon{background-color:var(--sapNeutralColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--neutral.is-selected .fd-tabs__icon:after,.fd-tabs__item--neutral.is-selected .fd-tabs__link:after,.fd-tabs__item--neutral.is-selected .fd-tabs__tag:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapNeutralColor)}.fd-tabs__item:first-child{margin-left:0}.fd-tabs__item:first-child .fd-tabs__link{margin-left:.1875rem;padding-left:0}.fd-tabs__item:first-child .fd-tabs__link[dir=rtl],[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link{margin-left:0;margin-right:.1875rem}.fd-tabs__item[dir=rtl]:first-child,[dir=rtl] .fd-tabs__item:first-child{margin-left:.25rem;margin-right:0}.fd-tabs__item[dir=rtl]:first-child .fd-tabs__link,[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link{padding-left:.875rem;padding-right:0}.fd-tabs__icon{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:transparent;border:0;border:var(--fdIcon_Tab_Bar_Icon_Border_Weight) solid var(--fdIcon_Tab_Bar_Icon_Border_Color);border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);color:var(--fdIcon_Tab_Bar_Inactive_Tab_Icon_Color);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdTabs_Icon_Selection_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 .188rem;padding:0;position:relative;width:var(--fdTabs_Icon_Selection_Height)}.fd-tabs__icon:after,.fd-tabs__icon:before{box-sizing:inherit;font-size:inherit}.fd-tabs__icon [class*=sap-icon],.fd-tabs__icon[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;font-size:var(--fdTabs_Icon_Size);line-height:1}.fd-tabs__icon:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs__tag{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0;position:relative}.fd-tabs__tag:after,.fd-tabs__tag:before{box-sizing:inherit;font-size:inherit}.fd-tabs__tag:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs__panel{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__panel:after,.fd-tabs__panel:before{box-sizing:inherit;font-size:inherit}.fd-tabs__panel[aria-expanded=false]{display:none}.fd-tabs__panel.is-expanded,.fd-tabs__panel[aria-expanded=true]{display:block}.fd-tabs__counter-header{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:1.5rem;font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1.5rem;margin:0;padding:0 .5rem 0 0}.fd-tabs__counter-header:after,.fd-tabs__counter-header:before{box-sizing:inherit;font-size:inherit}.fd-tabs__overflow{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 0 0 auto;padding:0}.fd-tabs__overflow:after,.fd-tabs__overflow:before{box-sizing:inherit;font-size:inherit}.fd-tabs__overflow [class*=sap-icon],.fd-tabs__overflow[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-tabs__process-icon{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:1rem;font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1;margin:0;padding:0 .5rem}.fd-tabs__process-icon:after,.fd-tabs__process-icon:before{box-sizing:inherit;font-size:inherit}.fd-tabs__process-icon:before{text-rendering:optimizeLegibility;content:\"\\e0c7\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-transform:none}.fd-tabs__label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;padding:0 0 0 .125rem}.fd-tabs__label:after,.fd-tabs__label:before{box-sizing:inherit;font-size:inherit}.fd-tabs__label:first-child{padding-bottom:.375rem}.fd-tabs__separator{-webkit-box-sizing:border-box;border:0;border-right:solid var(--sapGroup_TitleBorderColor);border-right-width:.0625rem;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2rem;line-height:var(--sapContent_LineHeight);line-height:2rem;margin:0 .25rem;padding:0}.fd-tabs__separator:after,.fd-tabs__separator:before{box-sizing:inherit;font-size:inherit}.fd-tabs__header{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__header:after,.fd-tabs__header:before{box-sizing:inherit;font-size:inherit}.fd-tabs__header .fd-tabs__label{max-width:4rem}.fd-tabs--filter .fd-tabs__count,.fd-tabs--icon-only .fd-tabs__count,.fd-tabs--process .fd-tabs__count{font-size:var(--sapFontSmallSize)}.fd-tabs--filter .fd-tabs__item:first-child .fd-tabs__link,.fd-tabs--icon-only .fd-tabs__item:first-child .fd-tabs__link,.fd-tabs--process .fd-tabs__item:first-child .fd-tabs__link{margin:0}.fd-tabs--icon-only .fd-tabs__link,.fd-tabs--process .fd-tabs__link{padding-bottom:1rem;padding-top:1rem}.fd-tabs--icon-only .fd-tabs__icon:after,.fd-tabs--process .fd-tabs__icon:after{bottom:-1.0625rem}.fd-tabs--filter .fd-tabs__count,.fd-tabs--icon-only .fd-tabs__count{left:calc(100% + .1875rem);position:absolute;top:0}.fd-tabs--filter[dir=rtl] .fd-tabs__count,.fd-tabs--icon-only[dir=rtl] .fd-tabs__count,[dir=rtl] .fd-tabs--filter .fd-tabs__count,[dir=rtl] .fd-tabs--icon-only .fd-tabs__count{left:auto;right:calc(100% + .1875rem)}.fd-tabs--process .fd-tabs__item{margin:0 .25rem 0 0}.fd-tabs--process .fd-tabs__item,.fd-tabs--process .fd-tabs__link{align-items:center;display:flex}.fd-tabs--process .fd-tabs__link{padding-left:0;padding-right:0}.fd-tabs--process .fd-tabs__icon{margin:0 .1875rem}.fd-tabs--process .fd-tabs__label{line-height:.875rem;max-width:7.5rem;overflow:hidden;white-space:nowrap}.fd-tabs--process[dir=rtl] .fd-tabs__item,[dir=rtl] .fd-tabs--process .fd-tabs__item{margin:0 0 0 .25rem}.fd-tabs--process[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link,[dir=rtl] .fd-tabs--process .fd-tabs__item:first-child .fd-tabs__link{padding-left:0;padding-right:0}.fd-tabs--filter{align-items:center;display:flex}.fd-tabs--filter .fd-tabs__item{margin:0;padding:0 .25rem;width:5.375rem}.fd-tabs--filter .fd-tabs__item[dir=rtl],[dir=rtl] .fd-tabs--filter .fd-tabs__item{margin:0}.fd-tabs--filter .fd-tabs__item--header{width:auto}.fd-tabs--filter .fd-tabs__icon{margin-bottom:.375rem}.fd-tabs--filter .fd-tabs__icon:after{content:none}.fd-tabs--filter .fd-tabs__label{line-height:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-tabs--filter .fd-tabs__link{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:flex;flex-direction:column;height:5.5rem;justify-content:center;padding:.875rem .188rem .625rem;position:relative;text-align:center}.fd-tabs--filter .fd-tabs__link:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;bottom:0;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs--filter .fd-tabs__link.is-focus,.fd-tabs--filter .fd-tabs__link:focus{box-shadow:none;outline:none;z-index:5}.fd-tabs--filter[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link,[dir=rtl] .fd-tabs--filter .fd-tabs__item:first-child .fd-tabs__link{padding-left:.188rem;padding-right:.188rem}.fd-tabs--compact{--fdTabs_Icon_Size:1.125rem;--fdTabs_Icon_Selection_Height:1.875rem}.fd-tabs--compact .fd-tabs__label:first-child{padding-bottom:.25rem}.fd-tabs--compact.fd-tabs--filter .fd-tabs__link{height:4.75rem}.fd-tabs--s{padding:0 1rem}.fd-tabs--l,.fd-tabs--m{padding:0 2rem}.fd-tabs--xl,.fd-tabs--xxl{padding:0 3rem}.fd-tabs[dir=rtl] .fd-tabs__process-icon,[dir=rtl] .fd-tabs .fd-tabs__process-icon{transform:rotate(180deg)}.fd-tabs[dir=rtl] .fd-tabs__counter-header,[dir=rtl] .fd-tabs .fd-tabs__counter-header{padding-left:.5rem;padding-right:0}.fd-tabs[dir=rtl] .fd-tabs__overflow,[dir=rtl] .fd-tabs .fd-tabs__overflow{margin-left:0;margin-right:auto}.fd-tabs__process{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__process:after,.fd-tabs__process:before{box-sizing:inherit;font-size:inherit}.fd-tabs-custom{display:flex;flex-direction:column}.is-disabled{pointer-events:none;opacity:.4}.fd-tabs{flex-grow:0;flex-wrap:nowrap}.fd-tabs__content{overflow-y:auto;flex-grow:1}.fd-tabs__item{flex-shrink:0}.fd-tabs__tag{white-space:nowrap}.fd-tabs__wrapper{flex-grow:1;display:flex;flex-wrap:wrap;align-items:center}.fd-tabs__wrapper--collapsible{overflow:hidden;flex-wrap:nowrap}.fd-tabs .fd-overflow-layout__items-container .fd-tabs__item:first-child{margin-left:.25rem}.fd-tabs .fd-overflow-layout__items-container .fd-tabs__item:first-child .fd-tabs__link{margin:0;padding:.875rem .75rem}.fd-tabs .fd-overflow-layout__items-container .fd-overflow-layout__item--first .fd-tabs__item{margin-left:0}.fd-tabs .fd-overflow-layout__items-container .fd-overflow-layout__item--first .fd-tabs__item .fd-tabs__link{margin-left:.1875rem;padding-left:0}.fd-tabs__item--success .fd-tabs__link .fd-tabs__tag{color:#107e3e;color:var(--sapSuccessColor, #107e3e)}.fd-tabs__item--error .fd-tabs__link .fd-tabs__tag{color:#b00;color:var(--sapErrorColor, #b00)}.fd-tabs__item--warning .fd-tabs__link .fd-tabs__tag{color:#e9730c;color:var(--sapWarningColor, #e9730c)}.fd-tabs__item--information .fd-tabs__link .fd-tabs__tag{color:#0a6ed1;color:var(--sapInformationColor, #0a6ed1)}.fd-tabs__item--neutral .fd-tabs__link .fd-tabs__tag{border-right-color:#6a6d70;border-right-color:var(--sapNeutralBorderColor, #6a6d70)}.fd-tabs--filter .fd-tabs__link.is-selected:after{background-color:#0854a0;background-color:var(--fdTabs_Selected_Color, var(--sapSelectedColor, #0854a0))}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i4.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i4.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i4.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "directive", type: i5.ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: ["trackedTags", "fireEmpty", "targetPercent", "targetOffset", "scrollSpyDisabled"], outputs: ["spyChange"] }, { kind: "component", type: i6.OverflowLayoutComponent, selector: "fd-overflow-layout", inputs: ["maxVisibleItems", "navigationTrigger", "showMorePosition", "reverseHiddenItems", "enableKeyboardNavigation", "moreItemsButtonText"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "directive", type: i6.OverflowItemRefDirective, selector: "[fdOverflowItemRef]", inputs: ["fdOverflowItemRef"] }, { kind: "directive", type: i6.OverflowExpandDirective, selector: "[fdOverflowExpand]", inputs: ["fdOverflowExpandItems"] }, { kind: "directive", type: i6.OverflowLayoutItemDirective, selector: "[fdOverflowLayoutItem]", inputs: ["forceVisibility"], outputs: ["hiddenChange"] }, { kind: "directive", type: i6.OverflowLayoutFocusableItemDirective, selector: "[fdOverflowLayoutFocusableItem], [fdOverflowLayoutItem][focusable]", inputs: ["focusable", "navigable"] }, { kind: "directive", type: i7.TabLinkDirective, selector: "[fd-tab-link]", inputs: ["active", "disabled"], outputs: ["keyDown", "focused"] }, { kind: "directive", type: i8.TabItemDirective, selector: "[fd-tab-item]", inputs: ["class", "tabItemState", "header", "disabled", "fdTabItemClass"] }, { kind: "directive", type: i9.TabTagDirective, selector: "[fdTabTag], [fd-tab-tag]" }, { kind: "component", type: i9.TabIconComponent, selector: "[fd-tab-icon]", inputs: ["class", "icon"] }, { kind: "directive", type: i9.TabCountDirective, selector: "[fdTabCount], [fd-tab-count]" }, { kind: "directive", type: i9.TabLabelDirective, selector: "[fdTabLabel], [fd-tab-label]" }, { kind: "directive", type: i9.TabProcessDirective, selector: "[fdTabProcess], [fd-tab-process]" }, { kind: "directive", type: i9.TabHeaderDirective, selector: "[fdTabHeader], [fd-tab-header]" }, { kind: "component", type: i10.TabItemExpandComponent, selector: "fd-item-expand", inputs: ["label"] }, { kind: "directive", type: i9.TabCounterHeaderDirective, selector: "[fdTabCounterHeader], [fd-tab-counter-header]" }, { kind: "directive", type: i9.TabProcessIconDirective, selector: "[fdTabProcessIcon], [fd-tab-process-icon]" }, { kind: "directive", type: i9.TabSeparatorDirective, selector: "[fdTabSeparator], [fd-tab-separator]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
322
218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TabListComponent, decorators: [{
323
219
  type: Component,
324
220
  args: [{ selector: 'fd-tab-list', host: {
325
221
  class: 'fd-tabs-custom'
326
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [TabsService, contentDensityObserverProviders()], template: "<div\n #headerContainer\n role=\"tablist\"\n class=\"fd-tabs\"\n [class]=\"(mode ? 'fd-tabs--' + mode : '') + (' fd-tabs--' + size)\"\n [class.fd-tabs--compact]=\"_contentDensityObserver.isCompact\"\n>\n <div class=\"fd-tabs__wrapper\" [class.fd-tabs__wrapper--collapsible]=\"_isCollapsed\">\n <ng-container *ngFor=\"let tab of _visualOrder.visible; let i = index; let last = last\">\n <div fd-tab-item [header]=\"tab.isHeader\" [tabItemState]=\"tab.tabState\" [attr.aria-selected]=\"tab.active\">\n <a\n fd-tab-link\n [attr.tabindex]=\"tab.active ? '0' : '-1'\"\n [attr.aria-controls]=\"tab.id\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledBy ? tab.ariaLabelledBy : null\"\n [active]=\"tab.active\"\n [disabled]=\"tab.disabled\"\n (keydown)=\"_tabHeaderKeyHandler(i, $event)\"\n (click)=\"_tabHeaderClickHandler(tab.panel)\"\n >\n <ng-container *ngTemplateOutlet=\"tab.titleTemplate || null\"></ng-container>\n\n <ng-container *ngIf=\"!tab.titleTemplate\" [ngSwitch]=\"mode\">\n <ng-container *ngSwitchCase=\"'filter'\">\n <span fd-tab-header *ngIf=\"tab.isHeader\">\n <span fd-tab-counter-header *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </span>\n <ng-container *ngIf=\"!tab.isHeader\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n <span fd-tab-label>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'icon-only'\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'process'\">\n <span fd-tab-icon *ngIf=\"tab.glyph\" [icon]=\"tab.glyph\"></span>\n <div fd-tab-process>\n <span fd-tab-label *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <p fd-tab-count *ngIf=\"tab.count\">{{ tab.count }}</p>\n <span fd-tab-tag>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n </a>\n <div fd-tab-process-icon *ngIf=\"mode === 'process' && !last\"></div>\n </div>\n\n <div *ngIf=\"tab.isHeader\" fd-tab-separator></div>\n </ng-container>\n </div>\n\n <fd-item-expand\n *ngIf=\"_isCollapsed\"\n [fdMenuTrigger]=\"menu\"\n [label]=\"expandOverflowText\"\n (keydown)=\"_onTriggerKeydown($event, menu)\"\n >\n </fd-item-expand>\n</div>\n\n<div\n #contentContainer\n class=\"fd-tabs__content\"\n [style.maxHeight]=\"maxContentHeight\"\n fdScrollSpy\n [trackedTags]=\"['fd-tab']\"\n [scrollSpyDisabled]=\"_disableScrollSpy\"\n (spyChange)=\"_highlightActiveTab($event)\"\n>\n <ng-content></ng-content>\n</div>\n\n<fd-menu #menu>\n <li\n fd-menu-item\n *ngFor=\"let tab of _visualOrder.overflowing\"\n (onSelect)=\"_overflowingTabHeaderClickHandler(tab.panel)\"\n >\n <div fd-menu-interactive>\n <ng-container\n *ngTemplateOutlet=\"\n !tab.titleTemplate && mode === 'icon-only' ? iconOnlyTemplate : tab.titleTemplate || textTitle;\n context: { $implicit: tab }\n \"\n ></ng-container>\n </div>\n </li>\n</fd-menu>\n\n<ng-template #textTitle let-tab>\n <span fd-menu-title>{{ tab.title }}</span>\n</ng-template>\n\n<ng-template #iconOnlyTemplate let-tab>\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-tabs+()\n .fd-tabs__item?+(([aria-selected=true]),)\n .fd-tabs__link+((.is-selected,)\n.fd-tabs__panel+([aria-expanded]|.is-expanded)\n*/.fd-tabs{--fdTabs_Icon_Size:1.125rem;--fdTabs_Icon_Selection_Height:2.625rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;-webkit-box-shadow:var(--sapContent_HeaderShadow);align-items:center;background-color:var(--sapObjectHeader_Background);border:0;border-color:var(--sapObjectHeader_BorderColor);box-shadow:var(--sapContent_HeaderShadow);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-tabs:after,.fd-tabs:before{box-sizing:inherit;font-size:inherit}.fd-tabs__count{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0 0 .125rem}.fd-tabs__count:after,.fd-tabs__count:before{box-sizing:inherit;font-size:inherit}.fd-tabs__link{-webkit-box-sizing:border-box;-webkit-transition:0s;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);cursor:pointer;display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:.875rem .75rem;position:relative;text-decoration:none;transition:0s}.fd-tabs__link:after,.fd-tabs__link:before{box-sizing:inherit;font-size:inherit}.fd-tabs__link.is-selected .fd-tabs__icon,.fd-tabs__link[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__link.is-selected .fd-tabs__icon:after,.fd-tabs__link.is-selected .fd-tabs__tag:after,.fd-tabs__link[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__link[aria-selected=true] .fd-tabs__tag:after{background-color:var(--fdIcon_Tab_Bar_Selection_Bar_Color)}.fd-tabs__link.is-focus,.fd-tabs__link:focus{box-shadow:none;outline:none;z-index:5}.fd-tabs__link.is-focus .fd-tabs__icon:before,.fd-tabs__link.is-focus .fd-tabs__tag:before,.fd-tabs__link:focus .fd-tabs__icon:before,.fd-tabs__link:focus .fd-tabs__tag:before{bottom:0;content:\"\";left:0;outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--sapContent_FocusWidth);position:absolute;right:0;top:0}.fd-tabs__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0 .25rem;padding:0;position:relative}.fd-tabs__item:after,.fd-tabs__item:before{box-sizing:inherit;font-size:inherit}.fd-tabs__item.is-selected .fd-tabs__tag,.fd-tabs__item[aria-selected=true] .fd-tabs__tag{color:var(--fdIcon_Tab_Bar_Selection_Color)}.fd-tabs__item.is-selected .fd-tabs__icon,.fd-tabs__item[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item.is-selected .fd-tabs__icon:after,.fd-tabs__item.is-selected .fd-tabs__link:after,.fd-tabs__item.is-selected .fd-tabs__tag:after,.fd-tabs__item[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item[aria-selected=true] .fd-tabs__tag:after{background-color:var(--fdIcon_Tab_Bar_Selection_Bar_Color)}.fd-tabs__item--error .fd-tabs__icon{border-color:var(--sapErrorColor);color:var(--sapErrorColor)}.fd-tabs__item--error .fd-tabs__link .fd-tabs__tag{color:var(--sapErrorColor)}.fd-tabs__item--error.is-selected .fd-tabs__icon,.fd-tabs__item--error[aria-selected=true] .fd-tabs__icon{background-color:var(--sapErrorColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--error.is-selected .fd-tabs__icon:after,.fd-tabs__item--error.is-selected .fd-tabs__link:after,.fd-tabs__item--error.is-selected .fd-tabs__tag:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapErrorColor)}.fd-tabs__item--warning .fd-tabs__icon{border-color:var(--sapWarningColor);color:var(--sapWarningColor)}.fd-tabs__item--warning .fd-tabs__link .fd-tabs__tag{color:var(--sapWarningColor)}.fd-tabs__item--warning.is-selected .fd-tabs__icon,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__icon{background-color:var(--sapWarningColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--warning.is-selected .fd-tabs__icon:after,.fd-tabs__item--warning.is-selected .fd-tabs__link:after,.fd-tabs__item--warning.is-selected .fd-tabs__tag:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapWarningColor)}.fd-tabs__item--success .fd-tabs__icon{border-color:var(--sapSuccessColor);color:var(--sapSuccessColor)}.fd-tabs__item--success .fd-tabs__link .fd-tabs__tag{color:var(--sapSuccessColor)}.fd-tabs__item--success.is-selected .fd-tabs__icon,.fd-tabs__item--success[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSuccessColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--success.is-selected .fd-tabs__icon:after,.fd-tabs__item--success.is-selected .fd-tabs__link:after,.fd-tabs__item--success.is-selected .fd-tabs__tag:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapSuccessColor)}.fd-tabs__item--information .fd-tabs__icon{border-color:var(--sapInformationColor);color:var(--sapInformationColor)}.fd-tabs__item--information .fd-tabs__link .fd-tabs__tag{color:var(--sapInformationColor)}.fd-tabs__item--information.is-selected .fd-tabs__icon,.fd-tabs__item--information[aria-selected=true] .fd-tabs__icon{background-color:var(--sapInformationColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--information.is-selected .fd-tabs__icon:after,.fd-tabs__item--information.is-selected .fd-tabs__link:after,.fd-tabs__item--information.is-selected .fd-tabs__tag:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapInformationColor)}.fd-tabs__item--neutral .fd-tabs__icon{border-color:var(--sapNeutralColor);color:var(--sapNeutralColor)}.fd-tabs__item--neutral .fd-tabs__link .fd-tabs__tag{color:var(--sapNeutralColor)}.fd-tabs__item--neutral.is-selected .fd-tabs__icon,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__icon{background-color:var(--sapNeutralColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--neutral.is-selected .fd-tabs__icon:after,.fd-tabs__item--neutral.is-selected .fd-tabs__link:after,.fd-tabs__item--neutral.is-selected .fd-tabs__tag:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapNeutralColor)}.fd-tabs__item:first-child{margin-left:0}.fd-tabs__item:first-child .fd-tabs__link{margin-left:.1875rem;padding-left:0}.fd-tabs__item:first-child .fd-tabs__link[dir=rtl],[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link{margin-left:0;margin-right:.1875rem}.fd-tabs__item[dir=rtl]:first-child,[dir=rtl] .fd-tabs__item:first-child{margin-left:.25rem;margin-right:0}.fd-tabs__item[dir=rtl]:first-child .fd-tabs__link,[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link{padding-left:.875rem;padding-right:0}.fd-tabs__icon{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:transparent;border:0;border:var(--fdIcon_Tab_Bar_Icon_Border_Weight) solid var(--fdIcon_Tab_Bar_Icon_Border_Color);border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);color:var(--fdIcon_Tab_Bar_Inactive_Tab_Icon_Color);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdTabs_Icon_Selection_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 .188rem;padding:0;position:relative;width:var(--fdTabs_Icon_Selection_Height)}.fd-tabs__icon:after,.fd-tabs__icon:before{box-sizing:inherit;font-size:inherit}.fd-tabs__icon [class*=sap-icon],.fd-tabs__icon[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;font-size:var(--fdTabs_Icon_Size);line-height:1}.fd-tabs__icon:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs__tag{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0;position:relative}.fd-tabs__tag:after,.fd-tabs__tag:before{box-sizing:inherit;font-size:inherit}.fd-tabs__tag:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs__panel{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__panel:after,.fd-tabs__panel:before{box-sizing:inherit;font-size:inherit}.fd-tabs__panel[aria-expanded=false]{display:none}.fd-tabs__panel.is-expanded,.fd-tabs__panel[aria-expanded=true]{display:block}.fd-tabs__counter-header{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:1.5rem;font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1.5rem;margin:0;padding:0 .5rem 0 0}.fd-tabs__counter-header:after,.fd-tabs__counter-header:before{box-sizing:inherit;font-size:inherit}.fd-tabs__overflow{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 0 0 auto;padding:0}.fd-tabs__overflow:after,.fd-tabs__overflow:before{box-sizing:inherit;font-size:inherit}.fd-tabs__overflow [class*=sap-icon],.fd-tabs__overflow[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-tabs__process-icon{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:1rem;font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1;margin:0;padding:0 .5rem}.fd-tabs__process-icon:after,.fd-tabs__process-icon:before{box-sizing:inherit;font-size:inherit}.fd-tabs__process-icon:before{text-rendering:optimizeLegibility;content:\"\\e0c7\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-transform:none}.fd-tabs__label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;padding:0 0 0 .125rem}.fd-tabs__label:after,.fd-tabs__label:before{box-sizing:inherit;font-size:inherit}.fd-tabs__label:first-child{padding-bottom:.375rem}.fd-tabs__separator{-webkit-box-sizing:border-box;border:0;border-right:solid var(--sapGroup_TitleBorderColor);border-right-width:.0625rem;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2rem;line-height:var(--sapContent_LineHeight);line-height:2rem;margin:0 .25rem;padding:0}.fd-tabs__separator:after,.fd-tabs__separator:before{box-sizing:inherit;font-size:inherit}.fd-tabs__header{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__header:after,.fd-tabs__header:before{box-sizing:inherit;font-size:inherit}.fd-tabs__header .fd-tabs__label{max-width:4rem}.fd-tabs--filter .fd-tabs__count,.fd-tabs--icon-only .fd-tabs__count,.fd-tabs--process .fd-tabs__count{font-size:var(--sapFontSmallSize)}.fd-tabs--filter .fd-tabs__item:first-child .fd-tabs__link,.fd-tabs--icon-only .fd-tabs__item:first-child .fd-tabs__link,.fd-tabs--process .fd-tabs__item:first-child .fd-tabs__link{margin:0}.fd-tabs--icon-only .fd-tabs__link,.fd-tabs--process .fd-tabs__link{padding-bottom:1rem;padding-top:1rem}.fd-tabs--icon-only .fd-tabs__icon:after,.fd-tabs--process .fd-tabs__icon:after{bottom:-1.0625rem}.fd-tabs--filter .fd-tabs__count,.fd-tabs--icon-only .fd-tabs__count{left:calc(100% + .1875rem);position:absolute;top:0}.fd-tabs--filter[dir=rtl] .fd-tabs__count,.fd-tabs--icon-only[dir=rtl] .fd-tabs__count,[dir=rtl] .fd-tabs--filter .fd-tabs__count,[dir=rtl] .fd-tabs--icon-only .fd-tabs__count{left:auto;right:calc(100% + .1875rem)}.fd-tabs--process .fd-tabs__item{margin:0 .25rem 0 0}.fd-tabs--process .fd-tabs__item,.fd-tabs--process .fd-tabs__link{align-items:center;display:flex}.fd-tabs--process .fd-tabs__link{padding-left:0;padding-right:0}.fd-tabs--process .fd-tabs__icon{margin:0 .1875rem}.fd-tabs--process .fd-tabs__label{line-height:.875rem;max-width:7.5rem;overflow:hidden;white-space:nowrap}.fd-tabs--process[dir=rtl] .fd-tabs__item,[dir=rtl] .fd-tabs--process .fd-tabs__item{margin:0 0 0 .25rem}.fd-tabs--process[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link,[dir=rtl] .fd-tabs--process .fd-tabs__item:first-child .fd-tabs__link{padding-left:0;padding-right:0}.fd-tabs--filter{align-items:center;display:flex}.fd-tabs--filter .fd-tabs__item{margin:0;padding:0 .25rem;width:5.375rem}.fd-tabs--filter .fd-tabs__item[dir=rtl],[dir=rtl] .fd-tabs--filter .fd-tabs__item{margin:0}.fd-tabs--filter .fd-tabs__item--header{width:auto}.fd-tabs--filter .fd-tabs__icon{margin-bottom:.375rem}.fd-tabs--filter .fd-tabs__icon:after{content:none}.fd-tabs--filter .fd-tabs__label{line-height:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-tabs--filter .fd-tabs__link{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:flex;flex-direction:column;height:5.5rem;justify-content:center;padding:.875rem .188rem .625rem;position:relative;text-align:center}.fd-tabs--filter .fd-tabs__link:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;bottom:0;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs--filter .fd-tabs__link.is-focus,.fd-tabs--filter .fd-tabs__link:focus{box-shadow:none;outline:none;z-index:5}.fd-tabs--filter[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link,[dir=rtl] .fd-tabs--filter .fd-tabs__item:first-child .fd-tabs__link{padding-left:.188rem;padding-right:.188rem}.fd-tabs--compact{--fdTabs_Icon_Size:1.125rem;--fdTabs_Icon_Selection_Height:1.875rem}.fd-tabs--compact .fd-tabs__label:first-child{padding-bottom:.25rem}.fd-tabs--compact.fd-tabs--filter .fd-tabs__link{height:4.75rem}.fd-tabs--s{padding:0 1rem}.fd-tabs--l,.fd-tabs--m{padding:0 2rem}.fd-tabs--xl,.fd-tabs--xxl{padding:0 3rem}.fd-tabs[dir=rtl] .fd-tabs__process-icon,[dir=rtl] .fd-tabs .fd-tabs__process-icon{transform:rotate(180deg)}.fd-tabs[dir=rtl] .fd-tabs__counter-header,[dir=rtl] .fd-tabs .fd-tabs__counter-header{padding-left:.5rem;padding-right:0}.fd-tabs[dir=rtl] .fd-tabs__overflow,[dir=rtl] .fd-tabs .fd-tabs__overflow{margin-left:0;margin-right:auto}.fd-tabs__process{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__process:after,.fd-tabs__process:before{box-sizing:inherit;font-size:inherit}.fd-tabs-custom{display:flex;flex-direction:column}.is-disabled{pointer-events:none;opacity:.4}.fd-tabs{flex-grow:0;flex-wrap:nowrap}.fd-tabs__content{overflow-y:auto;flex-grow:1}.fd-tabs__item{flex-shrink:0}.fd-tabs__wrapper{flex-grow:1;display:flex;flex-wrap:wrap;align-items:center}.fd-tabs__wrapper--collapsible{overflow:hidden;flex-wrap:nowrap}.fd-tabs__item--success .fd-tabs__link .fd-tabs__tag{color:#107e3e;color:var(--sapSuccessColor, #107e3e)}.fd-tabs__item--error .fd-tabs__link .fd-tabs__tag{color:#b00;color:var(--sapErrorColor, #b00)}.fd-tabs__item--warning .fd-tabs__link .fd-tabs__tag{color:#e9730c;color:var(--sapWarningColor, #e9730c)}.fd-tabs__item--information .fd-tabs__link .fd-tabs__tag{color:#0a6ed1;color:var(--sapInformationColor, #0a6ed1)}.fd-tabs__item--neutral .fd-tabs__link .fd-tabs__tag{border-right-color:#6a6d70;border-right-color:var(--sapNeutralBorderColor, #6a6d70)}.fd-tabs--filter .fd-tabs__link.is-selected:after{background-color:#0854a0;background-color:var(--fdTabs_Selected_Color, var(--sapSelectedColor, #0854a0))}\n"] }]
327
- }], ctorParameters: function () { return [{ type: i1.TabsService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.ContentDensityObserver }]; }, propDecorators: { size: [{
222
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [contentDensityObserverProviders(), DestroyedService], template: "<div\n #headerContainer\n role=\"tablist\"\n class=\"fd-tabs\"\n [class]=\"(mode ? 'fd-tabs--' + mode : '') + (' fd-tabs--' + size)\"\n [class.fd-tabs--compact]=\"_contentDensityObserver.isCompact\"\n>\n <fd-overflow-layout\n [maxVisibleItems]=\"maxVisibleTabs\"\n [enableKeyboardNavigation]=\"true\"\n navigationTrigger=\"keydown\"\n (hiddenItemsCount)=\"hiddenItemsCount.emit($event)\"\n (visibleItemsCount)=\"visibleItemsCount.emit($event)\"\n >\n <ng-container *ngFor=\"let tab of _tabArray; let i = index; let last = last\">\n <div\n fd-tab-item\n *fdOverflowItemRef=\"tab\"\n fdOverflowLayoutItem\n [forceVisibility]=\"tab.panel._forcedVisibility\"\n [header]=\"tab.isHeader\"\n [tabItemState]=\"tab.tabState\"\n [attr.aria-selected]=\"tab.active\"\n >\n <a\n fd-tab-link\n [attr.aria-controls]=\"tab.id\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n fdOverflowLayoutFocusableItem\n [focusable]=\"tab.active\"\n [navigable]=\"!tab.disabled\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledBy ? tab.ariaLabelledBy : null\"\n [active]=\"tab.active\"\n [disabled]=\"tab.disabled\"\n (keydown)=\"_tabHeaderKeydownHandler($event, tab.panel)\"\n (click)=\"_tabHeaderClickHandler(tab.panel)\"\n >\n <ng-container *ngTemplateOutlet=\"tab.titleTemplate || null\"></ng-container>\n\n <ng-container *ngIf=\"!tab.titleTemplate\" [ngSwitch]=\"mode\">\n <ng-container *ngSwitchCase=\"'filter'\">\n <span fd-tab-header *ngIf=\"tab.isHeader\">\n <span fd-tab-counter-header *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </span>\n <ng-container *ngIf=\"!tab.isHeader\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n <span fd-tab-label>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'icon-only'\">\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'process'\">\n <span fd-tab-icon *ngIf=\"tab.glyph\" [icon]=\"tab.glyph\"></span>\n <div fd-tab-process>\n <span fd-tab-label *ngIf=\"tab.count\">{{ tab.count }}</span>\n <span fd-tab-label *ngIf=\"tab.title\">{{ tab.title }}</span>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <p fd-tab-count *ngIf=\"tab.count\">{{ tab.count }}</p>\n <span fd-tab-tag>{{ tab.title }}</span>\n </ng-container>\n </ng-container>\n </a>\n <div fd-tab-process-icon *ngIf=\"mode === 'process' && !last\"></div>\n </div>\n\n <div *ngIf=\"tab.isHeader\" fd-tab-separator></div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let tabs; items: _tabArray\">\n <fd-item-expand\n [fdMenuTrigger]=\"menu\"\n [label]=\"expandOverflowText\"\n *ngIf=\"tabs.length > 0\"\n (keydown)=\"_onTriggerKeydown($event, menu)\"\n >\n </fd-item-expand>\n <fd-menu #menu>\n <li\n fd-menu-item\n *ngFor=\"let tab of tabs\"\n (onSelect)=\"_overflowingTabHeaderClickHandler(tab.item.panel)\"\n >\n <div fd-menu-interactive>\n <ng-container\n *ngTemplateOutlet=\"\n !tab.item.titleTemplate && mode === 'icon-only'\n ? iconOnlyTemplate\n : tab.item.titleTemplate || textTitle;\n context: { $implicit: tab.item }\n \"\n ></ng-container>\n </div>\n </li>\n </fd-menu>\n </ng-container>\n </fd-overflow-layout>\n</div>\n\n<div\n #contentContainer\n class=\"fd-tabs__content\"\n [style.maxHeight]=\"maxContentHeight\"\n fdScrollSpy\n [trackedTags]=\"['fd-tab']\"\n [scrollSpyDisabled]=\"_disableScrollSpy\"\n (spyChange)=\"_highlightActiveTab($event)\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #textTitle let-tab>\n <span fd-menu-title>{{ tab.title }}</span>\n</ng-template>\n\n<ng-template #iconOnlyTemplate let-tab>\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-tabs+()\n .fd-tabs__item?+(([aria-selected=true]),)\n .fd-tabs__link+((.is-selected,)\n.fd-tabs__panel+([aria-expanded]|.is-expanded)\n*/.fd-tabs{--fdTabs_Icon_Size:1.125rem;--fdTabs_Icon_Selection_Height:2.625rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-ms-flex-wrap:wrap;-webkit-box-shadow:var(--sapContent_HeaderShadow);align-items:center;background-color:var(--sapObjectHeader_Background);border:0;border-color:var(--sapObjectHeader_BorderColor);box-shadow:var(--sapContent_HeaderShadow);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-tabs:after,.fd-tabs:before{box-sizing:inherit;font-size:inherit}.fd-tabs__count{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0 0 .125rem}.fd-tabs__count:after,.fd-tabs__count:before{box-sizing:inherit;font-size:inherit}.fd-tabs__link{-webkit-box-sizing:border-box;-webkit-transition:0s;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);cursor:pointer;display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:.875rem .75rem;position:relative;text-decoration:none;transition:0s}.fd-tabs__link:after,.fd-tabs__link:before{box-sizing:inherit;font-size:inherit}.fd-tabs__link.is-selected .fd-tabs__icon,.fd-tabs__link[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__link.is-selected .fd-tabs__icon:after,.fd-tabs__link.is-selected .fd-tabs__tag:after,.fd-tabs__link[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__link[aria-selected=true] .fd-tabs__tag:after{background-color:var(--fdIcon_Tab_Bar_Selection_Bar_Color)}.fd-tabs__link.is-focus,.fd-tabs__link:focus{box-shadow:none;outline:none;z-index:5}.fd-tabs__link.is-focus .fd-tabs__icon:before,.fd-tabs__link.is-focus .fd-tabs__tag:before,.fd-tabs__link:focus .fd-tabs__icon:before,.fd-tabs__link:focus .fd-tabs__tag:before{bottom:0;content:\"\";left:0;outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--sapContent_FocusWidth);position:absolute;right:0;top:0}.fd-tabs__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0 .25rem;padding:0;position:relative}.fd-tabs__item:after,.fd-tabs__item:before{box-sizing:inherit;font-size:inherit}.fd-tabs__item.is-selected .fd-tabs__tag,.fd-tabs__item[aria-selected=true] .fd-tabs__tag{color:var(--fdIcon_Tab_Bar_Selection_Color)}.fd-tabs__item.is-selected .fd-tabs__icon,.fd-tabs__item[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item.is-selected .fd-tabs__icon:after,.fd-tabs__item.is-selected .fd-tabs__link:after,.fd-tabs__item.is-selected .fd-tabs__tag:after,.fd-tabs__item[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item[aria-selected=true] .fd-tabs__tag:after{background-color:var(--fdIcon_Tab_Bar_Selection_Bar_Color)}.fd-tabs__item--error .fd-tabs__icon{border-color:var(--sapErrorColor);color:var(--sapErrorColor)}.fd-tabs__item--error .fd-tabs__link .fd-tabs__tag{color:var(--sapErrorColor)}.fd-tabs__item--error.is-selected .fd-tabs__icon,.fd-tabs__item--error[aria-selected=true] .fd-tabs__icon{background-color:var(--sapErrorColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--error.is-selected .fd-tabs__icon:after,.fd-tabs__item--error.is-selected .fd-tabs__link:after,.fd-tabs__item--error.is-selected .fd-tabs__tag:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--error[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapErrorColor)}.fd-tabs__item--warning .fd-tabs__icon{border-color:var(--sapWarningColor);color:var(--sapWarningColor)}.fd-tabs__item--warning .fd-tabs__link .fd-tabs__tag{color:var(--sapWarningColor)}.fd-tabs__item--warning.is-selected .fd-tabs__icon,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__icon{background-color:var(--sapWarningColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--warning.is-selected .fd-tabs__icon:after,.fd-tabs__item--warning.is-selected .fd-tabs__link:after,.fd-tabs__item--warning.is-selected .fd-tabs__tag:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--warning[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapWarningColor)}.fd-tabs__item--success .fd-tabs__icon{border-color:var(--sapSuccessColor);color:var(--sapSuccessColor)}.fd-tabs__item--success .fd-tabs__link .fd-tabs__tag{color:var(--sapSuccessColor)}.fd-tabs__item--success.is-selected .fd-tabs__icon,.fd-tabs__item--success[aria-selected=true] .fd-tabs__icon{background-color:var(--sapSuccessColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--success.is-selected .fd-tabs__icon:after,.fd-tabs__item--success.is-selected .fd-tabs__link:after,.fd-tabs__item--success.is-selected .fd-tabs__tag:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--success[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapSuccessColor)}.fd-tabs__item--information .fd-tabs__icon{border-color:var(--sapInformationColor);color:var(--sapInformationColor)}.fd-tabs__item--information .fd-tabs__link .fd-tabs__tag{color:var(--sapInformationColor)}.fd-tabs__item--information.is-selected .fd-tabs__icon,.fd-tabs__item--information[aria-selected=true] .fd-tabs__icon{background-color:var(--sapInformationColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--information.is-selected .fd-tabs__icon:after,.fd-tabs__item--information.is-selected .fd-tabs__link:after,.fd-tabs__item--information.is-selected .fd-tabs__tag:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--information[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapInformationColor)}.fd-tabs__item--neutral .fd-tabs__icon{border-color:var(--sapNeutralColor);color:var(--sapNeutralColor)}.fd-tabs__item--neutral .fd-tabs__link .fd-tabs__tag{color:var(--sapNeutralColor)}.fd-tabs__item--neutral.is-selected .fd-tabs__icon,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__icon{background-color:var(--sapNeutralColor);color:var(--sapContent_ContrastIconColor)}.fd-tabs__item--neutral.is-selected .fd-tabs__icon:after,.fd-tabs__item--neutral.is-selected .fd-tabs__link:after,.fd-tabs__item--neutral.is-selected .fd-tabs__tag:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__icon:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__link:after,.fd-tabs__item--neutral[aria-selected=true] .fd-tabs__tag:after{background-color:var(--sapNeutralColor)}.fd-tabs__item:first-child{margin-left:0}.fd-tabs__item:first-child .fd-tabs__link{margin-left:.1875rem;padding-left:0}.fd-tabs__item:first-child .fd-tabs__link[dir=rtl],[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link{margin-left:0;margin-right:.1875rem}.fd-tabs__item[dir=rtl]:first-child,[dir=rtl] .fd-tabs__item:first-child{margin-left:.25rem;margin-right:0}.fd-tabs__item[dir=rtl]:first-child .fd-tabs__link,[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link{padding-left:.875rem;padding-right:0}.fd-tabs__icon{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:transparent;border:0;border:var(--fdIcon_Tab_Bar_Icon_Border_Weight) solid var(--fdIcon_Tab_Bar_Icon_Border_Color);border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);color:var(--fdIcon_Tab_Bar_Inactive_Tab_Icon_Color);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdTabs_Icon_Selection_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 .188rem;padding:0;position:relative;width:var(--fdTabs_Icon_Selection_Height)}.fd-tabs__icon:after,.fd-tabs__icon:before{box-sizing:inherit;font-size:inherit}.fd-tabs__icon [class*=sap-icon],.fd-tabs__icon[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;font-size:var(--fdTabs_Icon_Size);line-height:1}.fd-tabs__icon:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs__tag{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0;position:relative}.fd-tabs__tag:after,.fd-tabs__tag:before{box-sizing:inherit;font-size:inherit}.fd-tabs__tag:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs__panel{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__panel:after,.fd-tabs__panel:before{box-sizing:inherit;font-size:inherit}.fd-tabs__panel[aria-expanded=false]{display:none}.fd-tabs__panel.is-expanded,.fd-tabs__panel[aria-expanded=true]{display:block}.fd-tabs__counter-header{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:1.5rem;font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1.5rem;margin:0;padding:0 .5rem 0 0}.fd-tabs__counter-header:after,.fd-tabs__counter-header:before{box-sizing:inherit;font-size:inherit}.fd-tabs__overflow{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 0 0 auto;padding:0}.fd-tabs__overflow:after,.fd-tabs__overflow:before{box-sizing:inherit;font-size:inherit}.fd-tabs__overflow [class*=sap-icon],.fd-tabs__overflow[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-tabs__process-icon{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:1rem;font-weight:400;line-height:var(--sapContent_LineHeight);line-height:1;margin:0;padding:0 .5rem}.fd-tabs__process-icon:after,.fd-tabs__process-icon:before{box-sizing:inherit;font-size:inherit}.fd-tabs__process-icon:before{text-rendering:optimizeLegibility;content:\"\\e0c7\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-transform:none}.fd-tabs__label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;padding:0 0 0 .125rem}.fd-tabs__label:after,.fd-tabs__label:before{box-sizing:inherit;font-size:inherit}.fd-tabs__label:first-child{padding-bottom:.375rem}.fd-tabs__separator{-webkit-box-sizing:border-box;border:0;border-right:solid var(--sapGroup_TitleBorderColor);border-right-width:.0625rem;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2rem;line-height:var(--sapContent_LineHeight);line-height:2rem;margin:0 .25rem;padding:0}.fd-tabs__separator:after,.fd-tabs__separator:before{box-sizing:inherit;font-size:inherit}.fd-tabs__header{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__header:after,.fd-tabs__header:before{box-sizing:inherit;font-size:inherit}.fd-tabs__header .fd-tabs__label{max-width:4rem}.fd-tabs--filter .fd-tabs__count,.fd-tabs--icon-only .fd-tabs__count,.fd-tabs--process .fd-tabs__count{font-size:var(--sapFontSmallSize)}.fd-tabs--filter .fd-tabs__item:first-child .fd-tabs__link,.fd-tabs--icon-only .fd-tabs__item:first-child .fd-tabs__link,.fd-tabs--process .fd-tabs__item:first-child .fd-tabs__link{margin:0}.fd-tabs--icon-only .fd-tabs__link,.fd-tabs--process .fd-tabs__link{padding-bottom:1rem;padding-top:1rem}.fd-tabs--icon-only .fd-tabs__icon:after,.fd-tabs--process .fd-tabs__icon:after{bottom:-1.0625rem}.fd-tabs--filter .fd-tabs__count,.fd-tabs--icon-only .fd-tabs__count{left:calc(100% + .1875rem);position:absolute;top:0}.fd-tabs--filter[dir=rtl] .fd-tabs__count,.fd-tabs--icon-only[dir=rtl] .fd-tabs__count,[dir=rtl] .fd-tabs--filter .fd-tabs__count,[dir=rtl] .fd-tabs--icon-only .fd-tabs__count{left:auto;right:calc(100% + .1875rem)}.fd-tabs--process .fd-tabs__item{margin:0 .25rem 0 0}.fd-tabs--process .fd-tabs__item,.fd-tabs--process .fd-tabs__link{align-items:center;display:flex}.fd-tabs--process .fd-tabs__link{padding-left:0;padding-right:0}.fd-tabs--process .fd-tabs__icon{margin:0 .1875rem}.fd-tabs--process .fd-tabs__label{line-height:.875rem;max-width:7.5rem;overflow:hidden;white-space:nowrap}.fd-tabs--process[dir=rtl] .fd-tabs__item,[dir=rtl] .fd-tabs--process .fd-tabs__item{margin:0 0 0 .25rem}.fd-tabs--process[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link,[dir=rtl] .fd-tabs--process .fd-tabs__item:first-child .fd-tabs__link{padding-left:0;padding-right:0}.fd-tabs--filter{align-items:center;display:flex}.fd-tabs--filter .fd-tabs__item{margin:0;padding:0 .25rem;width:5.375rem}.fd-tabs--filter .fd-tabs__item[dir=rtl],[dir=rtl] .fd-tabs--filter .fd-tabs__item{margin:0}.fd-tabs--filter .fd-tabs__item--header{width:auto}.fd-tabs--filter .fd-tabs__icon{margin-bottom:.375rem}.fd-tabs--filter .fd-tabs__icon:after{content:none}.fd-tabs--filter .fd-tabs__label{line-height:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-tabs--filter .fd-tabs__link{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:flex;flex-direction:column;height:5.5rem;justify-content:center;padding:.875rem .188rem .625rem;position:relative;text-align:center}.fd-tabs--filter .fd-tabs__link:after{-webkit-transition:all .125s ease-in;border-radius:.125rem .125rem 0 0;bottom:-.875rem;bottom:0;content:\"\";display:inline-block;height:var(--fdIcon_Tab_Bar_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-tabs--filter .fd-tabs__link.is-focus,.fd-tabs--filter .fd-tabs__link:focus{box-shadow:none;outline:none;z-index:5}.fd-tabs--filter[dir=rtl] .fd-tabs__item:first-child .fd-tabs__link,[dir=rtl] .fd-tabs--filter .fd-tabs__item:first-child .fd-tabs__link{padding-left:.188rem;padding-right:.188rem}.fd-tabs--compact{--fdTabs_Icon_Size:1.125rem;--fdTabs_Icon_Selection_Height:1.875rem}.fd-tabs--compact .fd-tabs__label:first-child{padding-bottom:.25rem}.fd-tabs--compact.fd-tabs--filter .fd-tabs__link{height:4.75rem}.fd-tabs--s{padding:0 1rem}.fd-tabs--l,.fd-tabs--m{padding:0 2rem}.fd-tabs--xl,.fd-tabs--xxl{padding:0 3rem}.fd-tabs[dir=rtl] .fd-tabs__process-icon,[dir=rtl] .fd-tabs .fd-tabs__process-icon{transform:rotate(180deg)}.fd-tabs[dir=rtl] .fd-tabs__counter-header,[dir=rtl] .fd-tabs .fd-tabs__counter-header{padding-left:.5rem;padding-right:0}.fd-tabs[dir=rtl] .fd-tabs__overflow,[dir=rtl] .fd-tabs .fd-tabs__overflow{margin-left:0;margin-right:auto}.fd-tabs__process{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-tabs__process:after,.fd-tabs__process:before{box-sizing:inherit;font-size:inherit}.fd-tabs-custom{display:flex;flex-direction:column}.is-disabled{pointer-events:none;opacity:.4}.fd-tabs{flex-grow:0;flex-wrap:nowrap}.fd-tabs__content{overflow-y:auto;flex-grow:1}.fd-tabs__item{flex-shrink:0}.fd-tabs__tag{white-space:nowrap}.fd-tabs__wrapper{flex-grow:1;display:flex;flex-wrap:wrap;align-items:center}.fd-tabs__wrapper--collapsible{overflow:hidden;flex-wrap:nowrap}.fd-tabs .fd-overflow-layout__items-container .fd-tabs__item:first-child{margin-left:.25rem}.fd-tabs .fd-overflow-layout__items-container .fd-tabs__item:first-child .fd-tabs__link{margin:0;padding:.875rem .75rem}.fd-tabs .fd-overflow-layout__items-container .fd-overflow-layout__item--first .fd-tabs__item{margin-left:0}.fd-tabs .fd-overflow-layout__items-container .fd-overflow-layout__item--first .fd-tabs__item .fd-tabs__link{margin-left:.1875rem;padding-left:0}.fd-tabs__item--success .fd-tabs__link .fd-tabs__tag{color:#107e3e;color:var(--sapSuccessColor, #107e3e)}.fd-tabs__item--error .fd-tabs__link .fd-tabs__tag{color:#b00;color:var(--sapErrorColor, #b00)}.fd-tabs__item--warning .fd-tabs__link .fd-tabs__tag{color:#e9730c;color:var(--sapWarningColor, #e9730c)}.fd-tabs__item--information .fd-tabs__link .fd-tabs__tag{color:#0a6ed1;color:var(--sapInformationColor, #0a6ed1)}.fd-tabs__item--neutral .fd-tabs__link .fd-tabs__tag{border-right-color:#6a6d70;border-right-color:var(--sapNeutralBorderColor, #6a6d70)}.fd-tabs--filter .fd-tabs__link.is-selected:after{background-color:#0854a0;background-color:var(--fdTabs_Selected_Color, var(--sapSelectedColor, #0854a0))}\n"] }]
223
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.ContentDensityObserver }, { type: i2.DestroyedService }]; }, propDecorators: { size: [{
328
224
  type: Input
329
225
  }], mode: [{
330
226
  type: Input
@@ -342,9 +238,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
342
238
  type: Input
343
239
  }], selectedTabChange: [{
344
240
  type: Output
241
+ }], visibleItemsCount: [{
242
+ type: Output
243
+ }], hiddenItemsCount: [{
244
+ type: Output
345
245
  }], tabPanels: [{
346
246
  type: ContentChildren,
347
- args: [TabPanelComponent]
247
+ args: [forwardRef(() => TabPanelComponent)]
348
248
  }], tabHeaderLinks: [{
349
249
  type: ViewChildren,
350
250
  args: [TabLinkDirective]
@@ -360,5 +260,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
360
260
  }], contentContainer: [{
361
261
  type: ViewChild,
362
262
  args: ['contentContainer', { read: ElementRef, static: true }]
263
+ }], _overflowLayout: [{
264
+ type: ViewChild,
265
+ args: [OverflowLayoutComponent]
363
266
  }] } });
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGFicy90YWItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7OztBQU1oSDs7R0FFRztBQVlILE1BQU0sT0FBTyxnQkFBZ0I7SUErRnpCLFlBQ1ksWUFBeUIsRUFDekIsa0JBQXFDLEVBQ3JDLE1BQWtCLEVBQ2pCLHVCQUErQztRQUhoRCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDakIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQWxHNUQscUhBQXFIO1FBRXJILFNBQUksR0FBYSxHQUFHLENBQUM7UUFTckIsc0VBQXNFO1FBRXRFLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUV4QjtxRUFDNkQ7UUFFN0QsbUJBQWMsR0FBcUIsSUFBSSxDQUFDO1FBRXhDLHVFQUF1RTtRQUV2RSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixvQ0FBb0M7UUFFcEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDO1FBRTFCLHNFQUFzRTtRQUV0RSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQVN4QixxREFBcUQ7UUFFckQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUEwQjFELDBFQUEwRTtRQUMxRSxpQkFBWSxHQUFzRCxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBS25HLG1EQUFtRDtRQUNuRCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUtwQiw0Q0FBNEM7UUFDNUMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGNBQWM7UUFDZCxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBS2IsY0FBYztRQUNOLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1QyxjQUFjO1FBQ0csZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU8vRCxDQUFDO0lBRUosY0FBYztJQUNkLGtCQUFrQjtRQUNkLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxlQUFlO1FBQ1gsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7SUFDZCxzQkFBc0IsQ0FBQyxRQUEyQjtRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYztJQUNkLGlDQUFpQyxDQUFDLFFBQTJCO1FBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7SUFDZCxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsS0FBVTtRQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUNqQyxLQUFLLEVBQ0wsS0FBSyxFQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUNqRSxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDZCxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBZTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxLQUFvQixFQUFFLE9BQXNCO1FBQzFELElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMxQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFZLGlCQUFpQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDekIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDTixjQUFjO1FBQ2xCLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sOEJBQThCO1FBQ2xDLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxtRkFBbUY7SUFDM0UsOEJBQThCO1FBQ2xDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNMLENBQUM7SUFFRCxrRkFBa0Y7SUFDMUUsd0NBQXdDO1FBQzVDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsaUJBQWlCO2lCQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDaEcsQ0FBQztTQUNUO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTiw0Q0FBNEM7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQjthQUNqQixJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzFELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzlCO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsY0FBYztJQUNOLGdDQUFnQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCO2FBQ2pCLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQ2pGLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsRUFDN0MsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDOUI7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsY0FBYztJQUNOLDRDQUE0QztRQUNoRCxJQUFJLENBQUMsaUJBQWlCO2FBQ2pCLElBQUksQ0FDRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3ZELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDdEQsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQ3RCLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUM5QjthQUNBLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxjQUFjO0lBQ04seUJBQXlCO1FBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2FBQ25FLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsY0FBYztJQUNOLDBCQUEwQjtRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVc7YUFDeEIsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQ3RELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzlCO2FBQ0EsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxjQUFjO0lBQ04sMkJBQTJCO1FBQy9CLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNuRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxjQUFjO0lBQ04sbUNBQW1DO1FBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUN6QyxLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO2FBQ2pCLElBQUksQ0FDRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDOUI7YUFDQSxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsY0FBYztJQUNOLG1CQUFtQixDQUFDLFFBQTJCLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDbEUsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGNBQWM7SUFDTixzQkFBc0IsQ0FBQyxRQUEyQixFQUFFLE1BQWU7UUFDdkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3JELEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTixVQUFVLENBQUMsUUFBMkIsRUFBRSxNQUFlLEVBQUUsYUFBYSxHQUFHLElBQUk7UUFDakYsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN0QzthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQy9DLE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDakQ7UUFFRCxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELDBGQUEwRjtJQUNsRixxQkFBcUI7UUFDekIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFN0YsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsR0FBRyxRQUFRLEdBQUcsY0FBYyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUV4RyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBRTVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksR0FBRyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUU1QyxJQUFJLFlBQVksR0FBRyxLQUFLLElBQUksaUJBQWlCLEdBQUcsY0FBYyxFQUFFO2dCQUM1RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUM3QjtZQUNELFlBQVksSUFBSSxLQUFLLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0RBQXNEO0lBQzlDLHFCQUFxQjtRQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxRSxJQUFJLFNBQVMsRUFBRTtZQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsbURBQW1EO0lBQzNDLGNBQWMsQ0FBQyxTQUFrQjtRQUNyQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzdDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRHLElBQUksYUFBYSxHQUFHLGNBQWMsR0FBRyxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRyxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFFeEI7OzsrREFHdUQ7UUFDdkQsS0FDSSxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLEVBQzVCLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksU0FBUyxHQUFHLGdCQUFnQixHQUFHLENBQUMsR0FBRyxlQUFlLEVBQ25GLENBQUMsRUFBRSxFQUNMO1lBQ0UsYUFBYSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQy9DLGVBQWUsRUFBRSxDQUFDO1NBQ3JCO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUMvRCxDQUFDO0lBRUQsd0VBQXdFO0lBQ2hFLG9CQUFvQixDQUFDLFVBQThCO1FBQ3ZELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCwyQ0FBMkM7SUFDbkMsZUFBZSxDQUFDLFVBQThCO1FBQ2xELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3pELFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7U0FDN0QsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ04sY0FBYyxDQUFDLFFBQTJCO1FBQzlDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztRQUM3RCxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1FBQzdFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUN2RixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLENBQUMscUJBQXFCLEtBQUssZ0JBQWdCLElBQUksZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsRUFBRTtZQUN0RixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDckUsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztpQkFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUM3RCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2RCxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRDtJQUNMLENBQUM7SUFFRCxvREFBb0Q7SUFDNUMscUJBQXFCLENBQUMsUUFBMkIsRUFBRSxNQUFlO1FBQ3RFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLE1BQU0sS0FBSyxRQUFRLENBQUMsUUFBUSxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoSCxDQUFDOzs2R0FyYlEsZ0JBQWdCO2lHQUFoQixnQkFBZ0IseVlBRmQsQ0FBQyxXQUFXLEVBQUUsK0JBQStCLEVBQUUsQ0FBQyxvREErQzFDLGlCQUFpQiw4RUFZdkIsc0JBQXNCLDJCQUFVLFVBQVUsNkdBSWYsVUFBVSwrR0FJVCxVQUFVLCtEQWhCbkMsZ0JBQWdCLGdFQUloQixnQkFBZ0IsZ0RDdEdsQyxtbkpBK0dBOzJGRDlEYSxnQkFBZ0I7a0JBWDVCLFNBQVM7K0JBQ0ksYUFBYSxRQUdqQjt3QkFDRixLQUFLLEVBQUUsZ0JBQWdCO3FCQUMxQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsV0FBVyxFQUFFLCtCQUErQixFQUFFLENBQUM7Z01BSzNELElBQUk7c0JBREgsS0FBSztnQkFRTixJQUFJO3NCQURILEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBTU4sY0FBYztzQkFEYixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBUU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxTQUFTO3NCQURSLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUtsQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUs5QixVQUFVO3NCQURULFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUs5QixlQUFlO3NCQURkLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUt2RCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUtsRCxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkZWxheSwgZmlsdGVyLCBmaXJzdCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudENhcGFjaXR5LCBnZXRFbGVtZW50V2lkdGgsIEtleVV0aWwsIHJlc2l6ZU9ic2VydmFibGUsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBUYWJJdGVtRXhwYW5kQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaXRlbS1leHBhbmQvdGFiLWl0ZW0tZXhwYW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi90YWItbGluay90YWItbGluay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGFiSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vdGFiLWl0ZW0vdGFiLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJJbmZvIH0gZnJvbSAnLi90YWItdXRpbHMvdGFiLWluZm8uY2xhc3MnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuL3RhYnMuc2VydmljZSc7XG5pbXBvcnQgeyBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZW51JztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5cbmV4cG9ydCB0eXBlIFRhYk1vZGVzID0gJ2ljb24tb25seScgfCAncHJvY2VzcycgfCAnZmlsdGVyJztcblxuZXhwb3J0IHR5cGUgVGFiU2l6ZXMgPSAncycgfCAnbScgfCAnbCcgfCAneGwnIHwgJ3h4bCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGxpc3Qgb2YgdGFiLXBhbmVscy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10YWItbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYi1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWItbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC10YWJzLWN1c3RvbSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVGFic1NlcnZpY2UsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKV1cbn0pXG5leHBvcnQgY2xhc3MgVGFiTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFNpemUgb2YgdGFiLCBpdCdzIG1vc3RseSBhYm91dCBhZGRpbmcgc3BhY2luZyBvbiB0YWIgY29udGFpbmVyLCBhdmFpbGFibGUgc2l6ZXMgJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBUYWJTaXplcyA9ICdtJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byB1c2UgdGFiIGNvbXBvbmVudCBpbiBjZXJ0YWluIG1vZGUuIE1vZGVzIGF2YWlsYWJsZTpcbiAgICAgKiAnaWNvbi1vbmx5JyB8ICdwcm9jZXNzJyB8ICdmaWx0ZXInXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiBUYWJNb2RlcztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG1vdmUgdGFicyBvdmVyZmxvd2luZyBpbiB0aGUgdGFiIGJhciB0byB0aGUgZHJvcGRvd24gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbGxhcHNlT3ZlcmZsb3cgPSB0cnVlO1xuXG4gICAgLyoqIExpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFicyB2aXNpYmxlIGluIHRoZSB0YWIgYmFyIGluIGNvbGxhcHNlT3ZlcmZsb3cgbW9kZS5cbiAgICAgKiBPdGhlciB0YWJzIHdpbGwgYmUgbW92ZWQgdG8gdGhlIGNvbGxhcHNlZCB0YWJzIGRyb3Bkb3duICovXG4gICAgQElucHV0KClcbiAgICBtYXhWaXNpYmxlVGFiczogTnVsbGFibGU8bnVtYmVyPiA9IG51bGw7XG5cbiAgICAvKiogV2hldGhlciB0byBvcGVuIHRhYiBjb250ZW50IG9uZSB1bmRlciBhbm90aGVyIHdpdGhvdXQgY29sbGFwc2luZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhY2tDb250ZW50ID0gZmFsc2U7XG5cbiAgICAvKiogTWF4aW11bSBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIG1heENvbnRlbnRIZWlnaHQgPSAnMTAwJSc7XG5cbiAgICAvKiogV2hldGhlciB0byBlbmFibGUgY29sbGFwc2luZyBleHBhbmRlZCB0YWIgb24gZXhwYW5kZWQgdGFiIGNsaWNrICovXG4gICAgQElucHV0KClcbiAgICBjb2xsYXBzaWJsZVRhYnMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogVGV4dCB2aXNpYmxlIGluIGV4cGFuZCBvdmVyZmxvdyB0cmlnZ2VyXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBleHBhbmRPdmVyZmxvd1RleHQ6IHN0cmluZztcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIHBhbmVsIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRUYWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYlBhbmVsQ29tcG9uZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRhYlBhbmVsQ29tcG9uZW50KVxuICAgIHRhYlBhbmVsczogUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihUYWJMaW5rRGlyZWN0aXZlKVxuICAgIHRhYkhlYWRlckxpbmtzOiBRdWVyeUxpc3Q8VGFiTGlua0RpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGFiSXRlbURpcmVjdGl2ZSlcbiAgICB0YWJIZWFkZXJzOiBRdWVyeUxpc3Q8VGFiSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVGFiSXRlbUV4cGFuZENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgb3ZlcmZsb3dUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdoZWFkZXJDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBoZWFkZXJDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIGNvbnRlbnRDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiBUYWJzIGRpdmlkZWQgaW50byB0YWJzIHZpc2libGUgaW4gdGhlIHRhYi1iYXIgYW5kIGNvbGxhcHNlZCAqL1xuICAgIF92aXN1YWxPcmRlcjogeyBba2V5IGluICd2aXNpYmxlJyB8ICdvdmVyZmxvd2luZyddOiBUYWJJbmZvW10gfSA9IHsgdmlzaWJsZTogW10sIG92ZXJmbG93aW5nOiBbXSB9O1xuXG4gICAgLyoqIEBoaWRkZW4gV2lkdGggb2YgdGhlIGV4cGFuZCBvdmVyZmxvd2luZyB0YWJzIHRyaWdnZXIgKi9cbiAgICBfb3ZlcmZsb3dUcmlnZ2VyV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIFdoZXRoZXIgdGhlIHRhYnMgaGVhZGVyIGlzIGNvbGxhcHNlZCAqL1xuICAgIF9pc0NvbGxhcHNlZCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiBDb2xsZWN0aW9uIG9mIHRhYnMgaW4gb3JpZ2luYWwgb3JkZXIgKi9cbiAgICBfdGFiQXJyYXk6IFRhYkluZm9bXTtcblxuICAgIC8qKiBAaGlkZGVuIFdoZXRoZXIgdG8gZGlzYWJsZSBzY3JvbGwgc3B5ICovXG4gICAgX2Rpc2FibGVTY3JvbGxTcHkgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9udW1iT2ZWaXNpYmxlVGFiczogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF90YWJzU2VydmljZTogVGFic1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldHVwVGFiUGFuZWxzQ2hhbmdlTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXR1cENvbGxhcHNpbmdPdmVyZmxvd2VkVGFicygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PbktleWJvYXJkVGFiU2VsZWN0KCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUHJvcGVydGllc0NoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogRml0cyB0YWJzIGluIHRoZSB0YWIgYmFyIGFuZCBtb3ZlcyBvdmVyZmxvd2luZyBlbGVtZW50cyBpbnRvIGEgZHJvcGRvd24gKi9cbiAgICByZWZyZXNoT3ZlcmZsb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hpZGVPdmVyZmxvd2luZ0l0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2tlZXBBY3RpdmVUYWJWaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9leHBhbmRUYWIodGFiUGFuZWwsICF0YWJQYW5lbC5leHBhbmRlZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3ZlcmZsb3dpbmdUYWJIZWFkZXJDbGlja0hhbmRsZXIodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWJQYW5lbCwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLl9yZXNldFZpc3VhbE9yZGVyKCk7XG4gICAgICAgIHRoaXMuX2tlZXBBY3RpdmVUYWJWaXNpYmxlKCk7XG4gICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90YWJIZWFkZXJLZXlIYW5kbGVyKGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFic1NlcnZpY2UudGFiSGVhZGVyS2V5SGFuZGxlcihcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICB0aGlzLnRhYkhlYWRlckxpbmtzLm1hcCgodGFiKSA9PiB0YWIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZ2hsaWdodEFjdGl2ZVRhYih7IGlkIH06IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+IF90YWIuaWQgPT09IGlkKTtcbiAgICAgICAgaWYgKHRhYikge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVTdGFja2VkVGFiKHRhYi5wYW5lbCwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRhYi5wYW5lbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblRyaWdnZXJLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBtZW51UmVmOiBNZW51Q29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbWVudVJlZi50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3RhYlBhbmVsc0NoYW5nZSQoKTogT2JzZXJ2YWJsZTxUYWJQYW5lbENvbXBvbmVudFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYlBhbmVscy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy50YWJQYW5lbHMpLFxuICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+IHRhYlBhbmVscy50b0FycmF5KCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZiAmJiAhdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZbJ2Rlc3Ryb3llZCddKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwVGFiUGFuZWxzQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0FuZFVwZGF0ZVN0b3JhZ2VTdHJ1Y3R1cmVzKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzQW5kU2V0dXBTdGFja2VkQ29udGVudCgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0V4cGFuZGVkQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzQW5kSW5pdGlhbGx5RXhwYW5kVGFiUGFuZWwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZXR1cCBtZWNoYW5pc21zIHJlcXVpcmVkIGZvciBoYW5kbGluZyB0aGUgb3ZlcmZsb3dpbmcgdGFicyBiZWhhdmlvciAqL1xuICAgIHByaXZhdGUgX3NldHVwQ29sbGFwc2luZ092ZXJmbG93ZWRUYWJzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZU92ZXJmbG93KSB7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZVRhYnNEaW1lbnNpb25zKHRoaXMudGFiSGVhZGVycy50b0FycmF5KCkpO1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuT25UYWJQYW5lbHNDaGFuZ2VBbmRDb2xsYXBzZSgpO1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuT25SZXNpemVBbmRIaWRlSXRlbXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE92ZXJmbG93KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU2V0dXAgbWVjaGFuaXNtcyByZXF1aXJlZCBmb3IgaGFuZGxpbmcgdGhlIHN0YWNrZWQgY29udGVudCBiZWhhdmlvciAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzQW5kU2V0dXBTdGFja2VkQ29udGVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVsYXkoMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYkFycmF5LmZpbHRlcigodGFiKSA9PiAhdGFiLnBhbmVsLmRpc2FibGVkKS5mb3JFYWNoKCh0YWIpID0+IHRhYi5wYW5lbC5fZXhwYW5kKHRydWUpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzQW5kVXBkYXRlU3RvcmFnZVN0cnVjdHVyZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodGFiUGFuZWxzKSA9PiB0YWJQYW5lbHMubWFwKChlbCkgPT4gbmV3IFRhYkluZm8oZWwpKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh0YWJzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFiQXJyYXkgPSB0YWJzO1xuICAgICAgICAgICAgICAgIHRoaXMuX251bWJPZlZpc2libGVUYWJzID0gdGFicy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRWaXN1YWxPcmRlcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRhYlBhbmVsc0V4cGFuZGVkQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRhYlBhbmVscykgPT4gdGFiUGFuZWxzLm1hcCgoZWwpID0+IGVsLl9leHBhbmRlZFN0YXRlQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpKSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh0YWJQYW5lbHMpID0+IG1lcmdlKC4uLnRhYlBhbmVscykpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuX2V4cGFuZFRhYihldmVudC50YXJnZXQsIGV2ZW50LnN0YXRlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRhYlBhbmVsc0FuZEluaXRpYWxseUV4cGFuZFRhYlBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJQYW5lbHNDaGFuZ2UkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuX3RhYkFycmF5LnNvbWUoKHRhYikgPT4gdGFiLmFjdGl2ZSkpLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLl90YWJBcnJheS5maW5kKCh0YWIpID0+ICF0YWIuZGlzYWJsZWQpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHRhYikgPT4gISF0YWIpLFxuICAgICAgICAgICAgICAgIGRlbGF5KDApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodGFiKSA9PiB0YWIgJiYgdGhpcy5fZXhwYW5kVGFiKHRhYi5wYW5lbCwgdHJ1ZSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25Qcm9wZXJ0aWVzQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBtZXJnZSh0aGlzLl90YWJzU2VydmljZS50YWJQYW5lbFByb3BlcnR5Q2hhbmdlZCwgdGhpcy50YWJQYW5lbHMuY2hhbmdlcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZGV0ZWN0Q2hhbmdlcygpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uS2V5Ym9hcmRUYWJTZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYnNTZXJ2aWNlLnRhYlNlbGVjdGVkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGluZGV4KSA9PiB0aGlzLl92aXN1YWxPcmRlci52aXNpYmxlW2luZGV4XS5wYW5lbCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh0YWJQYW5lbCkgPT4gdGhpcy5fZXhwYW5kVGFiKHRhYlBhbmVsLCAhdGFiUGFuZWwuZXhwYW5kZWQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUmVzaXplQW5kSGlkZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hPdmVyZmxvdygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNDaGFuZ2VBbmRDb2xsYXBzZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHRhYkhlYWRlcnNTb3VyY2UgPSB0aGlzLnRhYkhlYWRlcnMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgbWFwKCh0YWJIZWFkZXJzKSA9PiB0YWJIZWFkZXJzLnRvQXJyYXkoKSksXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy50YWJQYW5lbHMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+ICR0YWJIZWFkZXJzU291cmNlKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhYkhlYWRlcnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZVRhYnNXaWR0aCh0YWJIZWFkZXJzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hPdmVyZmxvdygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZhdGVTdGFja2VkVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgc2Nyb2xsID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUb1BhbmVsKHRhYlBhbmVsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90YWJBcnJheS5mb3JFYWNoKCh0YWIpID0+ICh0YWIuYWN0aXZlID0gdGFiLnBhbmVsID09PSB0YWJQYW5lbCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZhdGVFeHBhbmRhYmxlVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgZXhwYW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlID0gdGhpcy5jb2xsYXBzaWJsZVRhYnMgJiYgIWV4cGFuZDtcbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWwgJiYgIWNvbGxhcHNlO1xuICAgICAgICAgICAgdGFiLnBhbmVsLl9leHBhbmQoaXNBY3RpdmUpO1xuICAgICAgICAgICAgdGFiLmFjdGl2ZSA9IGlzQWN0aXZlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZFRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbiwgZGV0ZWN0Q2hhbmdlcyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiUGFuZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jYW5DaGFuZ2VFeHBhbmRTdGF0ZSh0YWJQYW5lbCwgZXhwYW5kKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVFeHBhbmRhYmxlVGFiKHRhYlBhbmVsLCBleHBhbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGFiUGFuZWwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIERpdmlkZXMgdGFicyBpbnRvIHRhYnMgdmlzaWJsZSBpbiB0aGUgaGVhZGVyIGFuZCBtb3ZlZCB0YWJzIHRvIHRoZSBkcm9wZG93biAqL1xuICAgIHByaXZhdGUgX2hpZGVPdmVyZmxvd2luZ0l0ZW1zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBleHRyYUZyZWVTcGFjZSA9IDE7XG4gICAgICAgIGNvbnN0IGNhcGFjaXR5ID0gZ2V0RWxlbWVudENhcGFjaXR5KHRoaXMuaGVhZGVyQ29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgdGFic0xpbWl0ID0gdGhpcy5tYXhWaXNpYmxlVGFicyB8fCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICAgICAgY29uc3QgdG90YWxSZXF1aXJlZFdpZHRoID0gdGhpcy5fdGFiQXJyYXkucmVkdWNlKCh0b3RhbCwgdGFiKSA9PiB0b3RhbCArIHRhYi5oZWFkZXJXaWR0aCwgMCk7XG5cbiAgICAgICAgdGhpcy5faXNDb2xsYXBzZWQgPSB0b3RhbFJlcXVpcmVkV2lkdGggPiBjYXBhY2l0eSAtIGV4dHJhRnJlZVNwYWNlIHx8IHRhYnNMaW1pdCA8IHRoaXMuX3RhYkFycmF5Lmxlbmd0aDtcblxuICAgICAgICBjb25zdCByZXF1aXJlZEZyZWVTcGFjZSA9IHRoaXMuX2lzQ29sbGFwc2VkID8gdGhpcy5fb3ZlcmZsb3dUcmlnZ2VyV2lkdGggOiAwO1xuICAgICAgICB0aGlzLl9udW1iT2ZWaXNpYmxlVGFicyA9IDA7XG4gICAgICAgIGxldCBjYXBhY2l0eUxlZnQgPSBjYXBhY2l0eTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgY2FwYWNpdHlMZWZ0ID4gcmVxdWlyZWRGcmVlU3BhY2UgJiYgdGhpcy5fdGFiQXJyYXkubGVuZ3RoID4gaSAmJiB0YWJzTGltaXQgPiBpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5fdGFiQXJyYXlbaV0uaGVhZGVyV2lkdGg7XG5cbiAgICAgICAgICAgIGlmIChjYXBhY2l0eUxlZnQgLSB3aWR0aCA+PSByZXF1aXJlZEZyZWVTcGFjZSArIGV4dHJhRnJlZVNwYWNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbnVtYk9mVmlzaWJsZVRhYnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhcGFjaXR5TGVmdCAtPSB3aWR0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXNldFZpc3VhbE9yZGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQ2hlY2sgd2hldGhlciB0aGUgYWN0aXZlIHRhYiBpcyB2aXNpYmxlICovXG4gICAgcHJpdmF0ZSBfa2VlcEFjdGl2ZVRhYlZpc2libGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMuX3Zpc3VhbE9yZGVyLm92ZXJmbG93aW5nLmZpbmQoKHRhYikgPT4gdGFiLmFjdGl2ZSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVRhYikge1xuICAgICAgICAgICAgdGhpcy5fbW92ZVRvVmlzaWJsZShhY3RpdmVUYWIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWFrZSBnaXZlbiB0YWIgdmlzaWJsZSBpbiB0aGUgdGFiIGJhciovXG4gICAgcHJpdmF0ZSBfbW92ZVRvVmlzaWJsZSh0YWJUb01vdmU6IFRhYkluZm8pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aXZlVGFiV2lkdGggPSB0YWJUb01vdmUuaGVhZGVyV2lkdGg7XG4gICAgICAgIGNvbnN0IG51bU9mVmlzaWJsZVRhYnMgPSB0aGlzLl9udW1iT2ZWaXNpYmxlVGFicztcbiAgICAgICAgY29uc3QgY2FwYWNpdHkgPSBnZXRFbGVtZW50Q2FwYWNpdHkodGhpcy5oZWFkZXJDb250YWluZXIpO1xuICAgICAgICBjb25zdCB0YWJzTGltaXQgPSB0aGlzLm1heFZpc2libGVUYWJzIHx8IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgICAgICBjb25zdCB2aXNpYmxlVGFic1dpZHRoID0gdGhpcy5fdmlzdWFsT3JkZXIudmlzaWJsZS5yZWR1Y2UoKHRvdGFsLCB0YWIpID0+IHRvdGFsICsgdGFiLmhlYWRlcldpZHRoLCAwKTtcblxuICAgICAgICBsZXQgd2lkdGhSZXF1aXJlZCA9IGFjdGl2ZVRhYldpZHRoIC0gKGNhcGFjaXR5IC0gdmlzaWJsZVRhYnNXaWR0aCAtIHRoaXMuX292ZXJmbG93VHJpZ2dlcldpZHRoKTtcbiAgICAgICAgbGV0IG51bU9mVGFic1RvTW92ZSA9IDA7XG5cbiAgICAgICAgLyoqIEFzIGxvbmcgYXM6XG4gICAgICAgICAqIC0gVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBmb3IgdGFiIHRvIG1vdmVcbiAgICAgICAgICogLSBUaGVyZSBhcmUgb3RoZXIgdGFicyB0byBtb3ZlIGZyb20gdmlzaWJsZSB0byBvdmVyZmxvd1xuICAgICAgICAgKiAtIE51bWJlciBvZiB2aXNpYmxlIHRhYnMgaXMgbGFyZ2VyIHRoYW4gdGhlIGxpbWl0ICovXG4gICAgICAgIGZvciAoXG4gICAgICAgICAgICBsZXQgaSA9IG51bU9mVmlzaWJsZVRhYnMgLSAxO1xuICAgICAgICAgICAgKHdpZHRoUmVxdWlyZWQgPiAwICYmIGkgPj0gMCkgfHwgdGFic0xpbWl0IDwgbnVtT2ZWaXNpYmxlVGFicyArIDEgLSBudW1PZlRhYnNUb01vdmU7XG4gICAgICAgICAgICBpLS1cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB3aWR0aFJlcXVpcmVkIC09IHRoaXMuX3RhYkFycmF5W2ldLmhlYWRlcldpZHRoO1xuICAgICAgICAgICAgbnVtT2ZUYWJzVG9Nb3ZlKys7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWJUb01vdmVJbmRleCA9IHRoaXMuX3Zpc3VhbE9yZGVyLm92ZXJmbG93aW5nLmluZGV4T2YodGFiVG9Nb3ZlKTtcbiAgICAgICAgY29uc3QgW3NlbGVjdGVkVGFiXSA9IHRoaXMuX3Zpc3VhbE9yZGVyLm92ZXJmbG93aW5nLnNwbGljZSh0YWJUb01vdmVJbmRleCwgMSk7XG4gICAgICAgIGNvbnN0IHRhYnNUb01vdmUgPSB0aGlzLl92aXN1YWxPcmRlci52aXNpYmxlLnNwbGljZSgtbnVtT2ZUYWJzVG9Nb3ZlLCBudW1PZlRhYnNUb01vdmUsIHNlbGVjdGVkVGFiKTtcbiAgICAgICAgdGhpcy5fdmlzdWFsT3JkZXIub3ZlcmZsb3dpbmcudW5zaGlmdCguLi50YWJzVG9Nb3ZlKTtcbiAgICAgICAgdGhpcy5fbnVtYk9mVmlzaWJsZVRhYnMgPSB0aGlzLl92aXN1YWxPcmRlci52aXNpYmxlLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBDYWNoZXMgd2lkdGggZGltZW5zaW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgdGFicyBoZWFkZXIgKi9cbiAgICBwcml2YXRlIF9jYWNoZVRhYnNEaW1lbnNpb25zKHRhYkhlYWRlcnM6IFRhYkl0ZW1EaXJlY3RpdmVbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd1RyaWdnZXJXaWR0aCA9IE1hdGguY2VpbChnZXRFbGVtZW50V2lkdGgodGhpcy5vdmVyZmxvd1RyaWdnZXIpKTtcbiAgICAgICAgdGhpcy5fY2FjaGVUYWJzV2lkdGgodGFiSGVhZGVycyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQ2FjaGVzIHRoZSB3aWR0aCBvZiB0aGUgdGFicyAqL1xuICAgIHByaXZhdGUgX2NhY2hlVGFic1dpZHRoKHRhYkhlYWRlcnM6IFRhYkl0ZW1EaXJlY3RpdmVbXSk6IHZvaWQge1xuICAgICAgICB0YWJIZWFkZXJzLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RhYkFycmF5W2ldLmhlYWRlcldpZHRoID0gTWF0aC5jZWlsKGdldEVsZW1lbnRXaWR0aChpdGVtLmVsZW1lbnRSZWYoKSwgdHJ1ZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0VmlzdWFsT3JkZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Zpc3VhbE9yZGVyID0ge1xuICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5fdGFiQXJyYXkuc2xpY2UoMCwgdGhpcy5fbnVtYk9mVmlzaWJsZVRhYnMpLFxuICAgICAgICAgICAgb3ZlcmZsb3dpbmc6IHRoaXMuX3RhYkFycmF5LnNsaWNlKHRoaXMuX251bWJPZlZpc2libGVUYWJzKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9QYW5lbCh0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFuZWxFbGVtZW50ID0gdGFiUGFuZWwuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlVG9TY3JvbGwgPSBwYW5lbEVsZW1lbnQub2Zmc2V0VG9wIC0gY29udGFpbmVyRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIGNvbnN0IG1heGltdW1TY3JvbGxUb3AgPSBjb250YWluZXJFbGVtZW50LnNjcm9sbEhlaWdodCAtIGNvbnRhaW5lckVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsUG9zaXRpb24gPSBNYXRoLmNlaWwoY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3ApO1xuXG4gICAgICAgIGlmICghKGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9PT0gbWF4aW11bVNjcm9sbFRvcCAmJiBkaXN0YW5jZVRvU2Nyb2xsID4gbWF4aW11bVNjcm9sbFRvcCkpIHtcbiAgICAgICAgICAgICF0aGlzLl9pbml0ID8gKHRoaXMuX2Rpc2FibGVTY3JvbGxTcHkgPSB0cnVlKSA6ICh0aGlzLl9pbml0ID0gZmFsc2UpO1xuICAgICAgICAgICAgZnJvbUV2ZW50KGNvbnRhaW5lckVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApLCBmaXJzdCgpLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiAodGhpcy5fZGlzYWJsZVNjcm9sbFNweSA9IGZhbHNlKSk7XG4gICAgICAgICAgICBzY3JvbGxUb3AoY29udGFpbmVyRWxlbWVudCwgZGlzdGFuY2VUb1Njcm9sbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBXaGV0aGVyIHRhYiBjYW4gYmUgZXhwYW5kZWQvY29sbGFwc2VkICovXG4gICAgcHJpdmF0ZSBfY2FuQ2hhbmdlRXhwYW5kU3RhdGUodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50LCBleHBhbmQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0YWJQYW5lbC5kaXNhYmxlZCAmJiBleHBhbmQgIT09IHRhYlBhbmVsLmV4cGFuZGVkICYmIGV4cGFuZCA9PT0gZmFsc2UgPyB0aGlzLmNvbGxhcHNpYmxlVGFicyA6IHRydWU7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICNoZWFkZXJDb250YWluZXJcbiAgICByb2xlPVwidGFibGlzdFwiXG4gICAgY2xhc3M9XCJmZC10YWJzXCJcbiAgICBbY2xhc3NdPVwiKG1vZGUgPyAnZmQtdGFicy0tJyArIG1vZGUgOiAnJykgKyAoJyBmZC10YWJzLS0nICsgc2l6ZSlcIlxuICAgIFtjbGFzcy5mZC10YWJzLS1jb21wYWN0XT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ29tcGFjdFwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImZkLXRhYnNfX3dyYXBwZXJcIiBbY2xhc3MuZmQtdGFic19fd3JhcHBlci0tY29sbGFwc2libGVdPVwiX2lzQ29sbGFwc2VkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiBfdmlzdWFsT3JkZXIudmlzaWJsZTsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICA8ZGl2IGZkLXRhYi1pdGVtIFtoZWFkZXJdPVwidGFiLmlzSGVhZGVyXCIgW3RhYkl0ZW1TdGF0ZV09XCJ0YWIudGFiU3RhdGVcIiBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInRhYi5hY3RpdmVcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBmZC10YWItbGlua1xuICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWIuYWN0aXZlID8gJzAnIDogJy0xJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWIuYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiIXRhYi5hcmlhTGFiZWwgJiYgdGFiLmFyaWFMYWJlbGxlZEJ5ID8gdGFiLmFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfdGFiSGVhZGVyS2V5SGFuZGxlcihpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl90YWJIZWFkZXJDbGlja0hhbmRsZXIodGFiLnBhbmVsKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLnRpdGxlVGVtcGxhdGUgfHwgbnVsbFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiLnRpdGxlVGVtcGxhdGVcIiBbbmdTd2l0Y2hdPVwibW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbHRlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaGVhZGVyICpuZ0lmPVwidGFiLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1jb3VudGVyLWhlYWRlciAqbmdJZj1cInRhYi5jb3VudFwiPnt7IHRhYi5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsICpuZ0lmPVwidGFiLnRpdGxlXCI+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYi5pc0hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaWNvbiBbaWNvbl09XCJ0YWIuZ2x5cGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaWNvbi1vbmx5J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWItY291bnQ+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncHJvY2VzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItaWNvbiAqbmdJZj1cInRhYi5nbHlwaFwiIFtpY29uXT1cInRhYi5nbHlwaFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLXRhYi1wcm9jZXNzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWwgKm5nSWY9XCJ0YWIuY291bnRcIj57eyB0YWIuY291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbCAqbmdJZj1cInRhYi50aXRsZVwiPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFiLWNvdW50ICpuZ0lmPVwidGFiLmNvdW50XCI+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi10YWc+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLXRhYi1wcm9jZXNzLWljb24gKm5nSWY9XCJtb2RlID09PSAncHJvY2VzcycgJiYgIWxhc3RcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGFiLmlzSGVhZGVyXCIgZmQtdGFiLXNlcGFyYXRvcj48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZmQtaXRlbS1leHBhbmRcbiAgICAgICAgKm5nSWY9XCJfaXNDb2xsYXBzZWRcIlxuICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcbiAgICAgICAgW2xhYmVsXT1cImV4cGFuZE92ZXJmbG93VGV4dFwiXG4gICAgICAgIChrZXlkb3duKT1cIl9vblRyaWdnZXJLZXlkb3duKCRldmVudCwgbWVudSlcIlxuICAgID5cbiAgICA8L2ZkLWl0ZW0tZXhwYW5kPlxuPC9kaXY+XG5cbjxkaXZcbiAgICAjY29udGVudENvbnRhaW5lclxuICAgIGNsYXNzPVwiZmQtdGFic19fY29udGVudFwiXG4gICAgW3N0eWxlLm1heEhlaWdodF09XCJtYXhDb250ZW50SGVpZ2h0XCJcbiAgICBmZFNjcm9sbFNweVxuICAgIFt0cmFja2VkVGFnc109XCJbJ2ZkLXRhYiddXCJcbiAgICBbc2Nyb2xsU3B5RGlzYWJsZWRdPVwiX2Rpc2FibGVTY3JvbGxTcHlcIlxuICAgIChzcHlDaGFuZ2UpPVwiX2hpZ2hsaWdodEFjdGl2ZVRhYigkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGZkLW1lbnUgI21lbnU+XG4gICAgPGxpXG4gICAgICAgIGZkLW1lbnUtaXRlbVxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIF92aXN1YWxPcmRlci5vdmVyZmxvd2luZ1wiXG4gICAgICAgIChvblNlbGVjdCk9XCJfb3ZlcmZsb3dpbmdUYWJIZWFkZXJDbGlja0hhbmRsZXIodGFiLnBhbmVsKVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgIXRhYi50aXRsZVRlbXBsYXRlICYmIG1vZGUgPT09ICdpY29uLW9ubHknID8gaWNvbk9ubHlUZW1wbGF0ZSA6IHRhYi50aXRsZVRlbXBsYXRlIHx8IHRleHRUaXRsZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHRhYiB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9saT5cbjwvZmQtbWVudT5cblxuPG5nLXRlbXBsYXRlICN0ZXh0VGl0bGUgbGV0LXRhYj5cbiAgICA8c3BhbiBmZC1tZW51LXRpdGxlPnt7IHRhYi50aXRsZSB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvbk9ubHlUZW1wbGF0ZSBsZXQtdGFiPlxuICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICA8cCBmZC10YWItY291bnQ+e3sgdGFiLmNvdW50IH19PC9wPlxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGFicy90YWItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90YWJzL3RhYi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7Ozs7OztBQU1oSDs7R0FFRztBQVlILE1BQU0sT0FBTyxnQkFBZ0I7SUFpR3pCLGNBQWM7SUFDZCxZQUNxQixrQkFBcUMsRUFDOUMsTUFBa0IsRUFDakIsdUJBQStDLEVBQ3ZDLFdBQTZCO1FBSDdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDOUMsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNqQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQ3ZDLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQXJHbEQscUhBQXFIO1FBRXJILFNBQUksR0FBYSxHQUFHLENBQUM7UUFTckIsc0VBQXNFO1FBRXRFLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUV4QjtxRUFDNkQ7UUFFN0QsbUJBQWMsR0FBRyxRQUFRLENBQUM7UUFFMUIsdUVBQXVFO1FBRXZFLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLG9DQUFvQztRQUVwQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFFMUIsc0VBQXNFO1FBRXRFLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBU3hCLHFEQUFxRDtRQUVyRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUUxRCwrREFBK0Q7UUFFL0Qsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUvQyw4REFBOEQ7UUFFOUQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQWdDOUMsNENBQTRDO1FBQzVDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQixjQUFjO1FBQ2QsVUFBSyxHQUFHLElBQUksQ0FBQztRQUViLHNFQUFzRTtRQUM3RCxnQkFBVyxHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRTlELDREQUE0RDtRQUNuRCw0QkFBdUIsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV0RSxjQUFjO1FBQ04sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBUXpDLENBQUM7SUFFSixjQUFjO0lBQ2Qsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO0lBQ2Qsc0JBQXNCLENBQUMsUUFBMkI7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGNBQWM7SUFDZCx3QkFBd0IsQ0FBQyxLQUFvQixFQUFFLFFBQTJCO1FBQ3RFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzNDLE9BQU87U0FDVjtRQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGNBQWM7SUFDZCxpQ0FBaUMsQ0FBQyxRQUEyQjtRQUN6RCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNkLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFlO1FBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLGlCQUFpQixDQUFDLEtBQW9CLEVBQUUsT0FBc0I7UUFDMUQsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLElBQVksaUJBQWlCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNOLGNBQWM7UUFDbEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzNDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTiw4QkFBOEI7UUFDbEMsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVELGtGQUFrRjtJQUMxRSx3Q0FBd0M7UUFDNUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxpQkFBaUI7aUJBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDM0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNoRyxDQUFDO1NBQ1Q7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLDRDQUE0QztRQUNoRCxJQUFJLENBQUMsaUJBQWlCO2FBQ2pCLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDMUQsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDOUI7YUFDQSxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxjQUFjO0lBQ04sZ0NBQWdDO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUI7YUFDakIsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFDakYsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUM3QyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUM5QjthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxjQUFjO0lBQ04sNENBQTRDO1FBQ2hELElBQUksQ0FBQyxpQkFBaUI7YUFDakIsSUFBSSxDQUNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDdkQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUN0RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDdEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzlCO2FBQ0EsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWM7SUFDTix5QkFBeUI7UUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQzthQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNqQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGNBQWM7SUFDTixtQkFBbUIsQ0FBQyxRQUEyQixFQUFFLE1BQU0sR0FBRyxJQUFJO1FBQ2xFLElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDM0IsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sc0JBQXNCLENBQUMsUUFBMkIsRUFBRSxNQUFlO1FBQ3ZFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNyRCxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixHQUFHLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sVUFBVSxDQUFDLFFBQTJCLEVBQUUsTUFBZSxFQUFFLGFBQWEsR0FBRyxJQUFJO1FBQ2pGLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUMvQyxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO0lBQ04sY0FBYyxDQUFDLFFBQTJCO1FBQzlDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztRQUM3RCxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1FBQzdFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUN2RixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLENBQUMscUJBQXFCLEtBQUssZ0JBQWdCLElBQUksZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsRUFBRTtZQUN0RixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDckUsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztpQkFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUM3RCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2RCxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRDtJQUNMLENBQUM7SUFFRCxvREFBb0Q7SUFDNUMscUJBQXFCLENBQUMsUUFBMkIsRUFBRSxNQUFlO1FBQ3RFLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLE1BQU0sS0FBSyxRQUFRLENBQUMsUUFBUSxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoSCxDQUFDOzs2R0EzU1EsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsdWRBRmQsQ0FBQywrQkFBK0IsRUFBRSxFQUFFLGdCQUFnQixDQUFDLHVGQXVEOUIsaUJBQWlCLGtGQVl4QyxzQkFBc0IsMkJBQVUsVUFBVSw2R0FJZixVQUFVLCtHQUlULFVBQVUsNkVBR3RDLHVCQUF1QixvRUFuQnBCLGdCQUFnQixnRUFJaEIsZ0JBQWdCLGdEQzlHbEMscWlMQWlJQTsyRkRoRmEsZ0JBQWdCO2tCQVg1QixTQUFTOytCQUNJLGFBQWEsUUFHakI7d0JBQ0YsS0FBSyxFQUFFLGdCQUFnQjtxQkFDMUIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLCtCQUErQixFQUFFLEVBQUUsZ0JBQWdCLENBQUM7cU1BS2hFLElBQUk7c0JBREgsS0FBSztnQkFRTixJQUFJO3NCQURILEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBTU4sY0FBYztzQkFEYixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBUU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1AsU0FBUztzQkFEUixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFLcEQsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLdkQsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLbEQsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXpELGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9vdmVyZmxvdy1sYXlvdXQnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRlbGF5LCBmaWx0ZXIsIGZpcnN0LCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlLCBLZXlVdGlsLCBzY3JvbGxUb3AgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgVGFiSXRlbUV4cGFuZENvbXBvbmVudCB9IGZyb20gJy4vdGFiLWl0ZW0tZXhwYW5kL3RhYi1pdGVtLWV4cGFuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vdGFiLWxpbmsvdGFiLWxpbmsuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRhYkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3RhYi1pdGVtL3RhYi1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vdGFiLXBhbmVsL3RhYi1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiSW5mbyB9IGZyb20gJy4vdGFiLXV0aWxzL3RhYi1pbmZvLmNsYXNzJztcbmltcG9ydCB7IEVOVEVSLCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lbnUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuXG5leHBvcnQgdHlwZSBUYWJNb2RlcyA9ICdpY29uLW9ubHknIHwgJ3Byb2Nlc3MnIHwgJ2ZpbHRlcic7XG5cbmV4cG9ydCB0eXBlIFRhYlNpemVzID0gJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsaXN0IG9mIHRhYi1wYW5lbHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGFiLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFiLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtdGFicy1jdXN0b20nXG4gICAgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKSwgRGVzdHJveWVkU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVGFiTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFNpemUgb2YgdGFiLCBpdCdzIG1vc3RseSBhYm91dCBhZGRpbmcgc3BhY2luZyBvbiB0YWIgY29udGFpbmVyLCBhdmFpbGFibGUgc2l6ZXMgJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyB8ICd4eGwnICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBUYWJTaXplcyA9ICdtJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdXNlciB3YW50cyB0byB1c2UgdGFiIGNvbXBvbmVudCBpbiBjZXJ0YWluIG1vZGUuIE1vZGVzIGF2YWlsYWJsZTpcbiAgICAgKiAnaWNvbi1vbmx5JyB8ICdwcm9jZXNzJyB8ICdmaWx0ZXInXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiBUYWJNb2RlcztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG1vdmUgdGFicyBvdmVyZmxvd2luZyBpbiB0aGUgdGFiIGJhciB0byB0aGUgZHJvcGRvd24gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbGxhcHNlT3ZlcmZsb3cgPSB0cnVlO1xuXG4gICAgLyoqIExpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFicyB2aXNpYmxlIGluIHRoZSB0YWIgYmFyIGluIGNvbGxhcHNlT3ZlcmZsb3cgbW9kZS5cbiAgICAgKiBPdGhlciB0YWJzIHdpbGwgYmUgbW92ZWQgdG8gdGhlIGNvbGxhcHNlZCB0YWJzIGRyb3Bkb3duICovXG4gICAgQElucHV0KClcbiAgICBtYXhWaXNpYmxlVGFicyA9IEluZmluaXR5O1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gb3BlbiB0YWIgY29udGVudCBvbmUgdW5kZXIgYW5vdGhlciB3aXRob3V0IGNvbGxhcHNpbmcgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YWNrQ29udGVudCA9IGZhbHNlO1xuXG4gICAgLyoqIE1heGltdW0gaGVpZ2h0IG9mIHRoZSBjb250ZW50ICovXG4gICAgQElucHV0KClcbiAgICBtYXhDb250ZW50SGVpZ2h0ID0gJzEwMCUnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIGNvbGxhcHNpbmcgZXhwYW5kZWQgdGFiIG9uIGV4cGFuZGVkIHRhYiBjbGljayAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sbGFwc2libGVUYWJzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFRleHQgdmlzaWJsZSBpbiBleHBhbmQgb3ZlcmZsb3cgdHJpZ2dlclxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXhwYW5kT3ZlcmZsb3dUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBwYW5lbCBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJQYW5lbENvbXBvbmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdmlzaWJsZSBpdGVtcyBjb3VudCBoYXMgYmVlbiBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZpc2libGVJdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGhpZGRlbiBpdGVtcyBjb3VudCBoYXMgYmVlbiBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGhpZGRlbkl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFRhYlBhbmVsQ29tcG9uZW50KSlcbiAgICB0YWJQYW5lbHM6IFF1ZXJ5TGlzdDxUYWJQYW5lbENvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGFiTGlua0RpcmVjdGl2ZSlcbiAgICB0YWJIZWFkZXJMaW5rczogUXVlcnlMaXN0PFRhYkxpbmtEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFRhYkl0ZW1EaXJlY3RpdmUpXG4gICAgdGFiSGVhZGVyczogUXVlcnlMaXN0PFRhYkl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFRhYkl0ZW1FeHBhbmRDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIG92ZXJmbG93VHJpZ2dlcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgaGVhZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjb250ZW50Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBjb250ZW50Q29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xheW91dENvbXBvbmVudClcbiAgICBwcml2YXRlIF9vdmVyZmxvd0xheW91dDogT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiBDb2xsZWN0aW9uIG9mIHRhYnMgaW4gb3JpZ2luYWwgb3JkZXIgKi9cbiAgICBfdGFiQXJyYXk6IFRhYkluZm9bXTtcblxuICAgIC8qKiBAaGlkZGVuIFdoZXRoZXIgdG8gZGlzYWJsZSBzY3JvbGwgc3B5ICovXG4gICAgX2Rpc2FibGVTY3JvbGxTcHkgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2luaXQgPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGlzIHRocm93biBhbHdheXMgd2hlbiB0YWIgaXMgc2VsZWN0ZWQgYnkga2V5Ym9hcmQgYWN0aW9ucyAqL1xuICAgIHJlYWRvbmx5IHRhYlNlbGVjdGVkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgaXMgdGhyb3duIGFsd2F5cywgd2hlbiBzb21lIHByb3BlcnR5IGlzIGNoYW5nZWQgKi9cbiAgICByZWFkb25seSB0YWJQYW5lbFByb3BlcnR5Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogRGVzdHJveWVkU2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXR1cFRhYlBhbmVsc0NoYW5nZUxpc3RlbmVycygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25Qcm9wZXJ0aWVzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kVGFiKHRhYlBhbmVsLCAhdGFiUGFuZWwuZXhwYW5kZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYkhlYWRlcktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl90YWJIZWFkZXJDbGlja0hhbmRsZXIodGFiUGFuZWwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX292ZXJmbG93aW5nVGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJBcnJheS5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHRhYi5wYW5lbC5fZm9yY2VkVmlzaWJpbGl0eSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWw7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V4cGFuZFRhYih0YWJQYW5lbCwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgICAgIHRoaXMuX292ZXJmbG93TGF5b3V0LnRyaWdnZXJSZWNhbGN1bGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZ2hsaWdodEFjdGl2ZVRhYih7IGlkIH06IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYiA9IHRoaXMuX3RhYkFycmF5LmZpbmQoKF90YWIpID0+IF90YWIuaWQgPT09IGlkKTtcbiAgICAgICAgaWYgKHRhYikge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVTdGFja2VkVGFiKHRhYi5wYW5lbCwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRhYi5wYW5lbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblRyaWdnZXJLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBtZW51UmVmOiBNZW51Q29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgbWVudVJlZi50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3RhYlBhbmVsc0NoYW5nZSQoKTogT2JzZXJ2YWJsZTxUYWJQYW5lbENvbXBvbmVudFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYlBhbmVscy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy50YWJQYW5lbHMpLFxuICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+IHRhYlBhbmVscy50b0FycmF5KCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZiAmJiAhdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWZbJ2Rlc3Ryb3llZCddKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwVGFiUGFuZWxzQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0FuZFVwZGF0ZVN0b3JhZ2VTdHJ1Y3R1cmVzKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzQW5kU2V0dXBTdGFja2VkQ29udGVudCgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRhYlBhbmVsc0V4cGFuZGVkQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVGFiUGFuZWxzQW5kSW5pdGlhbGx5RXhwYW5kVGFiUGFuZWwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZXR1cCBtZWNoYW5pc21zIHJlcXVpcmVkIGZvciBoYW5kbGluZyB0aGUgc3RhY2tlZCBjb250ZW50IGJlaGF2aW9yICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNBbmRTZXR1cFN0YWNrZWRDb250ZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGFja0NvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgICAgICAucGlwZShkZWxheSgwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFiQXJyYXkuZmlsdGVyKCh0YWIpID0+ICF0YWIucGFuZWwuZGlzYWJsZWQpLmZvckVhY2goKHRhYikgPT4gdGFiLnBhbmVsLl9leHBhbmQodHJ1ZSkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25UYWJQYW5lbHNBbmRVcGRhdGVTdG9yYWdlU3RydWN0dXJlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFiUGFuZWxzQ2hhbmdlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCh0YWJQYW5lbHMpID0+IHRhYlBhbmVscy5tYXAoKGVsKSA9PiBuZXcgVGFiSW5mbyhlbCkpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhYnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJBcnJheSA9IHRhYnM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzRXhwYW5kZWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodGFiUGFuZWxzKSA9PiB0YWJQYW5lbHMubWFwKChlbCkgPT4gZWwuX2V4cGFuZGVkU3RhdGVDaGFuZ2UuYXNPYnNlcnZhYmxlKCkpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHRhYlBhbmVscykgPT4gbWVyZ2UoLi4udGFiUGFuZWxzKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5fZXhwYW5kVGFiKGV2ZW50LnRhcmdldCwgZXZlbnQuc3RhdGUpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVGFiUGFuZWxzQW5kSW5pdGlhbGx5RXhwYW5kVGFiUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYlBhbmVsc0NoYW5nZSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5fdGFiQXJyYXkuc29tZSgodGFiKSA9PiB0YWIuYWN0aXZlKSksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuX3RhYkFycmF5LmZpbmQoKHRhYikgPT4gIXRhYi5kaXNhYmxlZCkpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigodGFiKSA9PiAhIXRhYiksXG4gICAgICAgICAgICAgICAgZGVsYXkoMCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh0YWIpID0+IHRhYiAmJiB0aGlzLl9leHBhbmRUYWIodGFiLnBhbmVsLCB0cnVlKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblByb3BlcnRpZXNDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIG1lcmdlKHRoaXMudGFiUGFuZWxQcm9wZXJ0eUNoYW5nZWQsIHRoaXMudGFiUGFuZWxzLmNoYW5nZXMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2RldGVjdENoYW5nZXMoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50LCBzY3JvbGwgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmIChzY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvUGFuZWwodGFiUGFuZWwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RhYkFycmF5LmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgdGFiLmFjdGl2ZSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWw7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZhdGVFeHBhbmRhYmxlVGFiKHRhYlBhbmVsOiBUYWJQYW5lbENvbXBvbmVudCwgZXhwYW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlID0gdGhpcy5jb2xsYXBzaWJsZVRhYnMgJiYgIWV4cGFuZDtcbiAgICAgICAgdGhpcy5fdGFiQXJyYXkuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRhYi5wYW5lbCA9PT0gdGFiUGFuZWwgJiYgIWNvbGxhcHNlO1xuICAgICAgICAgICAgdGFiLnBhbmVsLl9leHBhbmQoaXNBY3RpdmUpO1xuICAgICAgICAgICAgdGFiLmFjdGl2ZSA9IGlzQWN0aXZlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZFRhYih0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQsIGV4cGFuZDogYm9vbGVhbiwgZGV0ZWN0Q2hhbmdlcyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmF0ZVN0YWNrZWRUYWIodGFiUGFuZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9jYW5DaGFuZ2VFeHBhbmRTdGF0ZSh0YWJQYW5lbCwgZXhwYW5kKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fYWN0aXZhdGVFeHBhbmRhYmxlVGFiKHRhYlBhbmVsLCBleHBhbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGFiUGFuZWwpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9QYW5lbCh0YWJQYW5lbDogVGFiUGFuZWxDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFuZWxFbGVtZW50ID0gdGFiUGFuZWwuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5jb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlVG9TY3JvbGwgPSBwYW5lbEVsZW1lbnQub2Zmc2V0VG9wIC0gY29udGFpbmVyRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICAgIGNvbnN0IG1heGltdW1TY3JvbGxUb3AgPSBjb250YWluZXJFbGVtZW50LnNjcm9sbEhlaWdodCAtIGNvbnRhaW5lckVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsUG9zaXRpb24gPSBNYXRoLmNlaWwoY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3ApO1xuXG4gICAgICAgIGlmICghKGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9PT0gbWF4aW11bVNjcm9sbFRvcCAmJiBkaXN0YW5jZVRvU2Nyb2xsID4gbWF4aW11bVNjcm9sbFRvcCkpIHtcbiAgICAgICAgICAgICF0aGlzLl9pbml0ID8gKHRoaXMuX2Rpc2FibGVTY3JvbGxTcHkgPSB0cnVlKSA6ICh0aGlzLl9pbml0ID0gZmFsc2UpO1xuICAgICAgICAgICAgZnJvbUV2ZW50KGNvbnRhaW5lckVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApLCBmaXJzdCgpLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiAodGhpcy5fZGlzYWJsZVNjcm9sbFNweSA9IGZhbHNlKSk7XG4gICAgICAgICAgICBzY3JvbGxUb3AoY29udGFpbmVyRWxlbWVudCwgZGlzdGFuY2VUb1Njcm9sbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBXaGV0aGVyIHRhYiBjYW4gYmUgZXhwYW5kZWQvY29sbGFwc2VkICovXG4gICAgcHJpdmF0ZSBfY2FuQ2hhbmdlRXhwYW5kU3RhdGUodGFiUGFuZWw6IFRhYlBhbmVsQ29tcG9uZW50LCBleHBhbmQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0YWJQYW5lbC5kaXNhYmxlZCAmJiBleHBhbmQgIT09IHRhYlBhbmVsLmV4cGFuZGVkICYmIGV4cGFuZCA9PT0gZmFsc2UgPyB0aGlzLmNvbGxhcHNpYmxlVGFicyA6IHRydWU7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICNoZWFkZXJDb250YWluZXJcbiAgICByb2xlPVwidGFibGlzdFwiXG4gICAgY2xhc3M9XCJmZC10YWJzXCJcbiAgICBbY2xhc3NdPVwiKG1vZGUgPyAnZmQtdGFicy0tJyArIG1vZGUgOiAnJykgKyAoJyBmZC10YWJzLS0nICsgc2l6ZSlcIlxuICAgIFtjbGFzcy5mZC10YWJzLS1jb21wYWN0XT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ29tcGFjdFwiXG4+XG4gICAgPGZkLW92ZXJmbG93LWxheW91dFxuICAgICAgICBbbWF4VmlzaWJsZUl0ZW1zXT1cIm1heFZpc2libGVUYWJzXCJcbiAgICAgICAgW2VuYWJsZUtleWJvYXJkTmF2aWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgbmF2aWdhdGlvblRyaWdnZXI9XCJrZXlkb3duXCJcbiAgICAgICAgKGhpZGRlbkl0ZW1zQ291bnQpPVwiaGlkZGVuSXRlbXNDb3VudC5lbWl0KCRldmVudClcIlxuICAgICAgICAodmlzaWJsZUl0ZW1zQ291bnQpPVwidmlzaWJsZUl0ZW1zQ291bnQuZW1pdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiBfdGFiQXJyYXk7IGxldCBpID0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGZkLXRhYi1pdGVtXG4gICAgICAgICAgICAgICAgKmZkT3ZlcmZsb3dJdGVtUmVmPVwidGFiXCJcbiAgICAgICAgICAgICAgICBmZE92ZXJmbG93TGF5b3V0SXRlbVxuICAgICAgICAgICAgICAgIFtmb3JjZVZpc2liaWxpdHldPVwidGFiLnBhbmVsLl9mb3JjZWRWaXNpYmlsaXR5XCJcbiAgICAgICAgICAgICAgICBbaGVhZGVyXT1cInRhYi5pc0hlYWRlclwiXG4gICAgICAgICAgICAgICAgW3RhYkl0ZW1TdGF0ZV09XCJ0YWIudGFiU3RhdGVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgZmQtdGFiLWxpbmtcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJ0YWIuaWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRhYi5hcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRGb2N1c2FibGVJdGVtXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidGFiLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuYXZpZ2FibGVdPVwiIXRhYi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIhdGFiLmFyaWFMYWJlbCAmJiB0YWIuYXJpYUxhYmVsbGVkQnkgPyB0YWIuYXJpYUxhYmVsbGVkQnkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJ0YWIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl90YWJIZWFkZXJLZXlkb3duSGFuZGxlcigkZXZlbnQsIHRhYi5wYW5lbClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3RhYkhlYWRlckNsaWNrSGFuZGxlcih0YWIucGFuZWwpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIudGl0bGVUZW1wbGF0ZSB8fCBudWxsXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWIudGl0bGVUZW1wbGF0ZVwiIFtuZ1N3aXRjaF09XCJtb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsdGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1oZWFkZXIgKm5nSWY9XCJ0YWIuaXNIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWNvdW50ZXItaGVhZGVyICpuZ0lmPVwidGFiLmNvdW50XCI+e3sgdGFiLmNvdW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWwgKm5nSWY9XCJ0YWIudGl0bGVcIj57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uIFtpY29uXT1cInRhYi5nbHlwaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFiLWNvdW50Pnt7IHRhYi5jb3VudCB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC10YWItbGFiZWw+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpY29uLW9ubHknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWljb24gW2ljb25dPVwidGFiLmdseXBoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGZkLXRhYi1jb3VudD57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwcm9jZXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1pY29uICpuZ0lmPVwidGFiLmdseXBoXCIgW2ljb25dPVwidGFiLmdseXBoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtdGFiLXByb2Nlc3M+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLXRhYi1sYWJlbCAqbmdJZj1cInRhYi5jb3VudFwiPnt7IHRhYi5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLWxhYmVsICpuZ0lmPVwidGFiLnRpdGxlXCI+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBmZC10YWItY291bnQgKm5nSWY9XCJ0YWIuY291bnRcIj57eyB0YWIuY291bnQgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtdGFiLXRhZz57eyB0YWIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtdGFiLXByb2Nlc3MtaWNvbiAqbmdJZj1cIm1vZGUgPT09ICdwcm9jZXNzJyAmJiAhbGFzdFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0YWIuaXNIZWFkZXJcIiBmZC10YWItc2VwYXJhdG9yPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZmRPdmVyZmxvd0V4cGFuZD1cImxldCB0YWJzOyBpdGVtczogX3RhYkFycmF5XCI+XG4gICAgICAgICAgICA8ZmQtaXRlbS1leHBhbmRcbiAgICAgICAgICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZXhwYW5kT3ZlcmZsb3dUZXh0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRhYnMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX29uVHJpZ2dlcktleWRvd24oJGV2ZW50LCBtZW51KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ZkLWl0ZW0tZXhwYW5kPlxuICAgICAgICAgICAgPGZkLW1lbnUgI21lbnU+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGZkLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIlxuICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiX292ZXJmbG93aW5nVGFiSGVhZGVyQ2xpY2tIYW5kbGVyKHRhYi5pdGVtLnBhbmVsKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRhYi5pdGVtLnRpdGxlVGVtcGxhdGUgJiYgbW9kZSA9PT0gJ2ljb24tb25seSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaWNvbk9ubHlUZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0YWIuaXRlbS50aXRsZVRlbXBsYXRlIHx8IHRleHRUaXRsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHRhYi5pdGVtIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9mZC1tZW51PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLW92ZXJmbG93LWxheW91dD5cbjwvZGl2PlxuXG48ZGl2XG4gICAgI2NvbnRlbnRDb250YWluZXJcbiAgICBjbGFzcz1cImZkLXRhYnNfX2NvbnRlbnRcIlxuICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwibWF4Q29udGVudEhlaWdodFwiXG4gICAgZmRTY3JvbGxTcHlcbiAgICBbdHJhY2tlZFRhZ3NdPVwiWydmZC10YWInXVwiXG4gICAgW3Njcm9sbFNweURpc2FibGVkXT1cIl9kaXNhYmxlU2Nyb2xsU3B5XCJcbiAgICAoc3B5Q2hhbmdlKT1cIl9oaWdobGlnaHRBY3RpdmVUYWIoJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGV4dFRpdGxlIGxldC10YWI+XG4gICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyB0YWIudGl0bGUgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ljb25Pbmx5VGVtcGxhdGUgbGV0LXRhYj5cbiAgICA8c3BhbiBmZC10YWItaWNvbiBbaWNvbl09XCJ0YWIuZ2x5cGhcIj5cbiAgICAgICAgPHAgZmQtdGFiLWNvdW50Pnt7IHRhYi5jb3VudCB9fTwvcD5cbiAgICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19