@fundamental-ngx/core 0.36.0-rc.12 → 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 (178) 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/package.json +1 -1
  26. package/dynamic-side-content/package.json +1 -1
  27. package/esm2020/breadcrumb/breadcrumb.component.mjs +1 -1
  28. package/esm2020/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +75 -0
  29. package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +4 -34
  30. package/esm2020/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +31 -12
  31. package/esm2020/overflow-layout/index.mjs +3 -1
  32. package/esm2020/overflow-layout/interfaces/overflow-focusable-item.interface.mjs +2 -0
  33. package/esm2020/overflow-layout/interfaces/overflow-item.interface.mjs +1 -1
  34. package/esm2020/overflow-layout/overflow-layout.component.mjs +49 -45
  35. package/esm2020/overflow-layout/overflow-layout.module.mjs +12 -5
  36. package/esm2020/overflow-layout/overflow-layout.service.mjs +12 -7
  37. package/esm2020/overflow-layout/tokens/overflow-focusable-item.token.mjs +3 -0
  38. package/esm2020/tabs/public_api.mjs +1 -2
  39. package/esm2020/tabs/tab-item-expand/tab-item-expand.component.mjs +1 -1
  40. package/esm2020/tabs/tab-link/tab-link.directive.mjs +25 -7
  41. package/esm2020/tabs/tab-list.component.mjs +51 -148
  42. package/esm2020/tabs/tab-nav/tab-nav.component.mjs +52 -37
  43. package/esm2020/tabs/tab-panel/tab-panel.component.mjs +9 -10
  44. package/esm2020/tabs/tab-utils/tab-directives.mjs +22 -33
  45. package/esm2020/tabs/tab-utils/tab-info.class.mjs +5 -1
  46. package/esm2020/tabs/tabs.module.mjs +8 -4
  47. package/facets/package.json +1 -1
  48. package/feed-input/package.json +1 -1
  49. package/feed-list-item/package.json +1 -1
  50. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +1 -1
  51. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  52. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +165 -91
  53. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  54. package/fesm2015/fundamental-ngx-core-tabs.mjs +255 -382
  55. package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  56. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +1 -1
  57. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  58. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +161 -87
  59. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  60. package/fesm2020/fundamental-ngx-core-tabs.mjs +248 -378
  61. package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  62. package/file-uploader/package.json +1 -1
  63. package/fixed-card-layout/package.json +1 -1
  64. package/flexible-column-layout/package.json +1 -1
  65. package/form/package.json +1 -1
  66. package/formatted-text/package.json +1 -1
  67. package/grid-list/package.json +1 -1
  68. package/icon/package.json +1 -1
  69. package/illustrated-message/package.json +1 -1
  70. package/infinite-scroll/package.json +1 -1
  71. package/info-label/package.json +1 -1
  72. package/inline-help/package.json +1 -1
  73. package/input-group/package.json +1 -1
  74. package/layout-grid/package.json +1 -1
  75. package/layout-panel/package.json +1 -1
  76. package/link/package.json +1 -1
  77. package/list/package.json +1 -1
  78. package/menu/package.json +1 -1
  79. package/message-box/package.json +1 -1
  80. package/message-strip/package.json +1 -1
  81. package/message-toast/package.json +1 -1
  82. package/micro-process-flow/package.json +1 -1
  83. package/mobile-mode/package.json +1 -1
  84. package/multi-input/package.json +1 -1
  85. package/nested-list/package.json +1 -1
  86. package/notification/package.json +1 -1
  87. package/object-identifier/package.json +1 -1
  88. package/object-marker/package.json +1 -1
  89. package/object-number/package.json +1 -1
  90. package/object-status/package.json +1 -1
  91. package/overflow-layout/directives/overflow-layout-focusable-item.directive.d.ts +28 -0
  92. package/overflow-layout/directives/overflow-layout-item.directive.d.ts +6 -11
  93. package/overflow-layout/directives/overflow-layout-popover-content.directive.d.ts +6 -2
  94. package/overflow-layout/esm2020/directives/overflow-layout-focusable-item.directive.mjs +75 -0
  95. package/overflow-layout/esm2020/directives/overflow-layout-item.directive.mjs +4 -34
  96. package/overflow-layout/esm2020/directives/overflow-layout-popover-content.directive.mjs +31 -12
  97. package/overflow-layout/esm2020/index.mjs +3 -1
  98. package/overflow-layout/esm2020/interfaces/overflow-focusable-item.interface.mjs +2 -0
  99. package/overflow-layout/esm2020/interfaces/overflow-item.interface.mjs +1 -1
  100. package/overflow-layout/esm2020/overflow-layout.component.mjs +49 -45
  101. package/overflow-layout/esm2020/overflow-layout.module.mjs +12 -5
  102. package/overflow-layout/esm2020/overflow-layout.service.mjs +12 -7
  103. package/overflow-layout/esm2020/tokens/overflow-focusable-item.token.mjs +3 -0
  104. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs +165 -91
  105. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  106. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs +161 -87
  107. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  108. package/overflow-layout/index.d.ts +2 -0
  109. package/overflow-layout/interfaces/overflow-focusable-item.interface.d.ts +9 -0
  110. package/overflow-layout/interfaces/overflow-item.interface.d.ts +6 -6
  111. package/overflow-layout/overflow-layout.component.d.ts +16 -14
  112. package/overflow-layout/overflow-layout.module.d.ts +6 -5
  113. package/overflow-layout/overflow-layout.service.d.ts +6 -4
  114. package/overflow-layout/package.json +4 -4
  115. package/overflow-layout/tokens/overflow-focusable-item.token.d.ts +3 -0
  116. package/package.json +2 -2
  117. package/pagination/package.json +1 -1
  118. package/panel/package.json +1 -1
  119. package/popover/package.json +1 -1
  120. package/product-switch/package.json +1 -1
  121. package/progress-indicator/package.json +1 -1
  122. package/quick-view/package.json +1 -1
  123. package/radio/package.json +1 -1
  124. package/rating-indicator/package.json +1 -1
  125. package/resizable-card-layout/package.json +1 -1
  126. package/scroll-spy/package.json +1 -1
  127. package/scrollbar/package.json +1 -1
  128. package/segmented-button/package.json +1 -1
  129. package/select/package.json +1 -1
  130. package/shared/package.json +1 -1
  131. package/shellbar/package.json +1 -1
  132. package/side-navigation/package.json +1 -1
  133. package/slider/package.json +1 -1
  134. package/split-button/package.json +1 -1
  135. package/splitter/package.json +1 -1
  136. package/status-indicator/package.json +1 -1
  137. package/step-input/package.json +1 -1
  138. package/switch/package.json +1 -1
  139. package/table/package.json +1 -1
  140. package/tabs/esm2020/public_api.mjs +1 -2
  141. package/tabs/esm2020/tab-item-expand/tab-item-expand.component.mjs +1 -1
  142. package/tabs/esm2020/tab-link/tab-link.directive.mjs +25 -7
  143. package/tabs/esm2020/tab-list.component.mjs +51 -148
  144. package/tabs/esm2020/tab-nav/tab-nav.component.mjs +52 -37
  145. package/tabs/esm2020/tab-panel/tab-panel.component.mjs +9 -10
  146. package/tabs/esm2020/tab-utils/tab-directives.mjs +22 -33
  147. package/tabs/esm2020/tab-utils/tab-info.class.mjs +5 -1
  148. package/tabs/esm2020/tabs.module.mjs +8 -4
  149. package/tabs/fesm2015/fundamental-ngx-core-tabs.mjs +255 -382
  150. package/tabs/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  151. package/tabs/fesm2020/fundamental-ngx-core-tabs.mjs +248 -378
  152. package/tabs/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  153. package/tabs/package.json +1 -1
  154. package/tabs/public_api.d.ts +0 -1
  155. package/tabs/tab-link/tab-link.directive.d.ts +10 -3
  156. package/tabs/tab-list.component.d.ts +18 -42
  157. package/tabs/tab-nav/tab-nav.component.d.ts +15 -10
  158. package/tabs/tab-panel/tab-panel.component.d.ts +5 -3
  159. package/tabs/tab-utils/tab-directives.d.ts +12 -12
  160. package/tabs/tab-utils/tab-info.class.d.ts +2 -0
  161. package/tabs/tabs.module.d.ts +2 -1
  162. package/text/package.json +1 -1
  163. package/theming/package.json +1 -1
  164. package/tile/package.json +1 -1
  165. package/time/package.json +1 -1
  166. package/time-picker/package.json +1 -1
  167. package/timeline/package.json +1 -1
  168. package/title/package.json +1 -1
  169. package/token/package.json +1 -1
  170. package/toolbar/package.json +1 -1
  171. package/tree/package.json +1 -1
  172. package/upload-collection/package.json +1 -1
  173. package/utils/package.json +1 -1
  174. package/vertical-navigation/package.json +1 -1
  175. package/wizard/package.json +1 -1
  176. package/esm2020/tabs/tabs.service.mjs +0 -69
  177. package/tabs/esm2020/tabs.service.mjs +0 -69
  178. package/tabs/tabs.service.d.ts +0 -22
@@ -1,31 +1,32 @@
1
1
  import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';
2
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, QueryList, ChangeDetectorRef, ContentChild, HostBinding, ViewChild, ElementRef, NgZone, Output, EventEmitter, HostListener, Optional, ViewChildren, Input } from '@angular/core';
3
- import { KeyUtil, RtlService } from '@fundamental-ngx/core/utils';
4
- import { debounceTime, Subject, Subscription } from 'rxjs';
2
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, QueryList, ChangeDetectorRef, ContentChild, HostBinding, ViewChild, ElementRef, Output, EventEmitter, ViewChildren, Input } from '@angular/core';
3
+ import { debounceTime, filter, fromEvent, Subject, Subscription } from 'rxjs';
4
+ import { KeyUtil } from '@fundamental-ngx/core/utils';
5
5
  import { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';
6
6
  import { OverflowLayoutService } from './overflow-layout.service';
7
7
  import { FD_OVERFLOW_CONTAINER } from './tokens/overflow-container.token';
8
8
  import { FD_OVERFLOW_EXPAND } from './tokens/overflow-expand.token';
9
+ import { FD_OVERFLOW_FOCUSABLE_ITEM } from './tokens/overflow-focusable-item.token';
9
10
  import { FD_OVERFLOW_ITEM_REF } from './tokens/overflow-item-ref.token';
10
- import { FD_OVERFLOW_ITEM } from './tokens/overflow-item.token';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "./overflow-layout.service";
13
- import * as i2 from "@fundamental-ngx/core/utils";
14
- import * as i3 from "@angular/common";
15
- import * as i4 from "@fundamental-ngx/core/popover";
16
- import * as i5 from "@fundamental-ngx/core/button";
17
- import * as i6 from "./directives/overflow-item-container-ref.directive";
18
- import * as i7 from "./directives/overflow-layout-popover-content.directive";
19
- import * as i8 from "./directives/overflow-layout-item-container.directive";
20
- import * as i9 from "@fundamental-ngx/i18n";
13
+ import * as i2 from "@angular/common";
14
+ import * as i3 from "@fundamental-ngx/core/popover";
15
+ import * as i4 from "@fundamental-ngx/core/button";
16
+ import * as i5 from "./directives/overflow-item-container-ref.directive";
17
+ import * as i6 from "./directives/overflow-layout-popover-content.directive";
18
+ import * as i7 from "./directives/overflow-layout-item-container.directive";
19
+ import * as i8 from "@fundamental-ngx/i18n";
21
20
  export class OverflowLayoutComponent {
22
21
  /** @hidden */
23
- constructor(_cdr, _zone, _elRef, _overflowLayoutService, _rtlService) {
22
+ constructor(_elementRef, _cdr, _overflowLayoutService) {
23
+ this._elementRef = _elementRef;
24
24
  this._cdr = _cdr;
25
- this._zone = _zone;
26
- this._elRef = _elRef;
27
25
  this._overflowLayoutService = _overflowLayoutService;
28
- this._rtlService = _rtlService;
26
+ /**
27
+ * Keyboard event to listen for keyboard navigation through items.
28
+ */
29
+ this.navigationTrigger = 'keyup';
29
30
  /** Direction of the fitting items calculation. */
30
31
  this.showMorePosition = 'right';
31
32
  /** Whether to render hidden items in reverse order. */
@@ -73,6 +74,9 @@ export class OverflowLayoutComponent {
73
74
  get maxVisibleItems() {
74
75
  return this._maxVisibleItems;
75
76
  }
77
+ ngOnInit() {
78
+ this._setupKeyboardListener();
79
+ }
76
80
  /**
77
81
  * Triggers layout recalculation of the items.
78
82
  */
@@ -92,7 +96,7 @@ export class OverflowLayoutComponent {
92
96
  * @param element Element that needs to be focused.
93
97
  */
94
98
  setFocusedElement(element) {
95
- const index = this._overflowItems.toArray().findIndex((item) => item === element);
99
+ const index = this._focusableOverflowItems.toArray().findIndex((item) => item === element);
96
100
  if (index !== -1) {
97
101
  this._overflowLayoutService._keyboardEventsManager.setActiveItem(index);
98
102
  }
@@ -140,7 +144,7 @@ export class OverflowLayoutComponent {
140
144
  return {
141
145
  visibleItems: this._visibleItems,
142
146
  items: this._items,
143
- focusableItems: this._overflowItems,
147
+ focusableItems: this._focusableOverflowItems,
144
148
  itemsWrapper: this._itemsWrapper.nativeElement,
145
149
  showMoreContainer: this._showMoreContainer.nativeElement,
146
150
  layoutContainerElement: this._layoutContainer.nativeElement,
@@ -151,31 +155,34 @@ export class OverflowLayoutComponent {
151
155
  };
152
156
  }
153
157
  /** @hidden */
154
- _keyUpHandler(event) {
155
- if (!this.enableKeyboardNavigation) {
156
- return;
157
- }
158
- if (KeyUtil.isKeyCode(event, TAB)) {
159
- const index = this._allItems.findIndex((item) => item.overflowItem?.focusable && item.elementRef.nativeElement === event.target);
160
- if (index !== -1) {
161
- this._overflowLayoutService._keyboardEventsManager.setActiveItem(index);
158
+ _setupKeyboardListener() {
159
+ this._subscription.add(fromEvent(this._elementRef.nativeElement, this.navigationTrigger)
160
+ .pipe(filter(() => this.enableKeyboardNavigation))
161
+ .subscribe((event) => {
162
+ if (KeyUtil.isKeyCode(event, TAB)) {
163
+ const index = this._focusableOverflowItems
164
+ .toArray()
165
+ .findIndex((item) => item.focusable && item.elementRef.nativeElement === event.target);
166
+ if (index !== -1) {
167
+ this._overflowLayoutService._keyboardEventsManager.setActiveItem(index);
168
+ }
162
169
  }
163
- }
164
- if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {
165
- event.preventDefault();
166
- // passing the event to key manager so, we get a change fired
167
- this._overflowLayoutService._keyboardEventsManager.onKeydown(event);
168
- }
170
+ if (KeyUtil.isKeyCode(event, [DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW])) {
171
+ event.preventDefault();
172
+ // passing the event to key manager so, we get a change fired
173
+ this._overflowLayoutService._keyboardEventsManager.onKeydown(event);
174
+ }
175
+ }));
169
176
  }
170
177
  }
171
- OverflowLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OverflowLayoutComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.OverflowLayoutService }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
172
- OverflowLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: OverflowLayoutComponent, selector: "fd-overflow-layout", inputs: { maxVisibleItems: "maxVisibleItems", showMorePosition: "showMorePosition", reverseHiddenItems: "reverseHiddenItems", enableKeyboardNavigation: "enableKeyboardNavigation", moreItemsButtonText: "moreItemsButtonText" }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount" }, host: { listeners: { "keyup": "_keyUpHandler($event)" }, properties: { "class": "this._initialClass" } }, providers: [
178
+ OverflowLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OverflowLayoutComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.OverflowLayoutService }], target: i0.ɵɵFactoryTarget.Component });
179
+ OverflowLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: OverflowLayoutComponent, selector: "fd-overflow-layout", inputs: { maxVisibleItems: "maxVisibleItems", navigationTrigger: "navigationTrigger", showMorePosition: "showMorePosition", reverseHiddenItems: "reverseHiddenItems", enableKeyboardNavigation: "enableKeyboardNavigation", moreItemsButtonText: "moreItemsButtonText" }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount" }, host: { properties: { "class": "this._initialClass" } }, providers: [
173
180
  {
174
181
  provide: FD_OVERFLOW_CONTAINER,
175
182
  useExisting: OverflowLayoutComponent
176
183
  },
177
184
  OverflowLayoutService
178
- ], queries: [{ propertyName: "_moreButton", first: true, predicate: FD_OVERFLOW_EXPAND, descendants: true }, { propertyName: "_items", predicate: FD_OVERFLOW_ITEM_REF, descendants: true }, { propertyName: "_overflowItems", predicate: FD_OVERFLOW_ITEM, descendants: true }], viewQueries: [{ propertyName: "_itemsWrapper", first: true, predicate: ["itemsWrapper"], descendants: true }, { propertyName: "_layoutContainer", first: true, predicate: ["layoutContainer"], descendants: true }, { propertyName: "_showMoreContainer", first: true, predicate: ["showMoreContainer"], descendants: true }, { propertyName: "_visibleItems", predicate: OverflowLayoutItemContainerDirective, descendants: true }], ngImport: i0, template: "<ng-template [ngIf]=\"showMorePosition === 'left'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template [ngIf]=\"showMorePosition === 'right'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'block' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ 'coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length } }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n <ng-container *ngFor=\"let item of _hiddenItems\">\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n", styles: [".fd-overflow-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;width:100%;justify-content:space-between}.fd-overflow-layout:before,.fd-overflow-layout:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;display:inline-flex}.fd-overflow-layout__items:before,.fd-overflow-layout__items:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__more{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;flex-shrink:0}.fd-overflow-layout__more:before,.fd-overflow-layout__more:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-overflow-layout__items-container:before,.fd-overflow-layout__items-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-wrapper{display:inline-flex}.fd-overflow-layout__popover-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:block;white-space:normal}.fd-overflow-layout__popover-container:before,.fd-overflow-layout__popover-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__item--soft-hidden{opacity:0!important;position:absolute!important}\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: "component", type: i4.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i4.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i4.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: i6.OverflowItemContainerRefDirective, selector: "[fdOverflowItemContainerRef]" }, { kind: "directive", type: i7.OverflowLayoutPopoverContentDirective, selector: "[fdOverflowLayoutPopoverContent]", inputs: ["items"] }, { kind: "directive", type: i8.OverflowLayoutItemContainerDirective, selector: "[fdOverflowLayoutItemContainer]", inputs: ["last", "first", "softHidden"] }, { kind: "pipe", type: i9.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
185
+ ], queries: [{ propertyName: "_moreButton", first: true, predicate: FD_OVERFLOW_EXPAND, descendants: true }, { propertyName: "_items", predicate: FD_OVERFLOW_ITEM_REF, descendants: true }, { propertyName: "_focusableOverflowItems", predicate: FD_OVERFLOW_FOCUSABLE_ITEM, descendants: true }], viewQueries: [{ propertyName: "_itemsWrapper", first: true, predicate: ["itemsWrapper"], descendants: true }, { propertyName: "_layoutContainer", first: true, predicate: ["layoutContainer"], descendants: true }, { propertyName: "_showMoreContainer", first: true, predicate: ["showMoreContainer"], descendants: true }, { propertyName: "_visibleItems", predicate: OverflowLayoutItemContainerDirective, descendants: true }], ngImport: i0, template: "<ng-template [ngIf]=\"showMorePosition === 'left'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template [ngIf]=\"showMorePosition === 'right'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'block' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ 'coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length } }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n <ng-container *ngFor=\"let item of _hiddenItems\">\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n", styles: [".fd-overflow-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;width:100%;justify-content:space-between}.fd-overflow-layout:before,.fd-overflow-layout:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;display:inline-flex}.fd-overflow-layout__items:before,.fd-overflow-layout__items:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__more{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;flex-shrink:0}.fd-overflow-layout__more:before,.fd-overflow-layout__more:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;position:relative}.fd-overflow-layout__items-container:before,.fd-overflow-layout__items-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-wrapper{display:inline-flex}.fd-overflow-layout__popover-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:block;white-space:normal}.fd-overflow-layout__popover-container:before,.fd-overflow-layout__popover-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__item--soft-hidden{opacity:0!important;position:absolute!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i3.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: i5.OverflowItemContainerRefDirective, selector: "[fdOverflowItemContainerRef]" }, { kind: "directive", type: i6.OverflowLayoutPopoverContentDirective, selector: "[fdOverflowLayoutPopoverContent]", inputs: ["items"] }, { kind: "directive", type: i7.OverflowLayoutItemContainerDirective, selector: "[fdOverflowLayoutItemContainer]", inputs: ["last", "first", "softHidden"] }, { kind: "pipe", type: i8.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
179
186
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OverflowLayoutComponent, decorators: [{
180
187
  type: Component,
181
188
  args: [{ selector: 'fd-overflow-layout', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -184,10 +191,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
184
191
  useExisting: OverflowLayoutComponent
185
192
  },
186
193
  OverflowLayoutService
187
- ], template: "<ng-template [ngIf]=\"showMorePosition === 'left'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template [ngIf]=\"showMorePosition === 'right'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'block' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ 'coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length } }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n <ng-container *ngFor=\"let item of _hiddenItems\">\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n", styles: [".fd-overflow-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;width:100%;justify-content:space-between}.fd-overflow-layout:before,.fd-overflow-layout:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;display:inline-flex}.fd-overflow-layout__items:before,.fd-overflow-layout__items:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__more{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;flex-shrink:0}.fd-overflow-layout__more:before,.fd-overflow-layout__more:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0}.fd-overflow-layout__items-container:before,.fd-overflow-layout__items-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-wrapper{display:inline-flex}.fd-overflow-layout__popover-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:block;white-space:normal}.fd-overflow-layout__popover-container:before,.fd-overflow-layout__popover-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__item--soft-hidden{opacity:0!important;position:absolute!important}\n"] }]
188
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.OverflowLayoutService }, { type: i2.RtlService, decorators: [{
189
- type: Optional
190
- }] }]; }, propDecorators: { maxVisibleItems: [{
194
+ ], template: "<ng-template [ngIf]=\"showMorePosition === 'left'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<div class=\"fd-overflow-layout__items-container\" #layoutContainer>\n <div class=\"fd-overflow-layout__items-wrapper\">\n <div class=\"fd-overflow-layout__items\" #itemsWrapper>\n <ng-container *ngFor=\"let item of _allItems; trackBy: _itemsTrackFn\">\n <div\n fdOverflowLayoutItemContainer\n [first]=\"item.first\"\n [last]=\"item.last\"\n [softHidden]=\"item.softHidden\"\n >\n <ng-container *fdOverflowItemContainerRef>\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template [ngIf]=\"showMorePosition === 'right'\">\n <ng-template [ngTemplateOutlet]=\"showMore\"></ng-template>\n</ng-template>\n\n<ng-template #showMore>\n <div class=\"fd-overflow-layout__more\" [style.display]=\"_showMore ? 'block' : 'none'\" #showMoreContainer>\n <ng-template #defaultShowMore>\n <fd-popover\n (isOpenChange)=\"_onPopoverStateChange($event)\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [maxWidth]=\"312\"\n >\n <fd-popover-control>\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\n {{ 'coreOverflowLayout.moreItemsButton' | fdTranslate: { count: _hiddenItems.length } }}\n </button>\n </fd-popover-control>\n <fd-popover-body>\n <div fdOverflowLayoutPopoverContent [items]=\"_hiddenItems\">\n <ng-container *ngFor=\"let item of _hiddenItems\">\n <ng-template\n [ngTemplateOutlet]=\"item.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: item.hidden,\n index: item.index,\n first: item.first,\n last: item.last,\n globalIndex: item.globalIndex\n }\"\n ></ng-template>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"_moreButton?.templateRef || defaultShowMore\"\n [ngTemplateOutletContext]=\"{ $implicit: _hiddenItems }\"\n ></ng-template>\n </div>\n</ng-template>\n", styles: [".fd-overflow-layout{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;width:100%;justify-content:space-between}.fd-overflow-layout:before,.fd-overflow-layout:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;display:inline-flex}.fd-overflow-layout__items:before,.fd-overflow-layout__items:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__more{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;align-items:center;flex-shrink:0}.fd-overflow-layout__more:before,.fd-overflow-layout__more:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;position:relative}.fd-overflow-layout__items-container:before,.fd-overflow-layout__items-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__items-wrapper{display:inline-flex}.fd-overflow-layout__popover-container{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:block;white-space:normal}.fd-overflow-layout__popover-container:before,.fd-overflow-layout__popover-container:after{box-sizing:inherit;font-size:inherit}.fd-overflow-layout__item--soft-hidden{opacity:0!important;position:absolute!important}\n"] }]
195
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.OverflowLayoutService }]; }, propDecorators: { maxVisibleItems: [{
196
+ type: Input
197
+ }], navigationTrigger: [{
191
198
  type: Input
192
199
  }], showMorePosition: [{
193
200
  type: Input
@@ -205,9 +212,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
205
212
  }], _moreButton: [{
206
213
  type: ContentChild,
207
214
  args: [FD_OVERFLOW_EXPAND]
208
- }], _overflowItems: [{
215
+ }], _focusableOverflowItems: [{
209
216
  type: ContentChildren,
210
- args: [FD_OVERFLOW_ITEM, { descendants: true }]
217
+ args: [FD_OVERFLOW_FOCUSABLE_ITEM, { descendants: true }]
211
218
  }], _visibleItems: [{
212
219
  type: ViewChildren,
213
220
  args: [OverflowLayoutItemContainerDirective]
@@ -225,8 +232,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
225
232
  args: ['class']
226
233
  }], moreItemsButtonText: [{
227
234
  type: Input
228
- }], _keyUpHandler: [{
229
- type: HostListener,
230
- args: ['keyup', ['$event']]
231
235
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL292ZXJmbG93LWxheW91dC9vdmVyZmxvdy1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvb3ZlcmZsb3ctbGF5b3V0L292ZXJmbG93LWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNGLE9BQU8sRUFDSCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixlQUFlLEVBQ2YsU0FBUyxFQUNULGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUNaLFFBQVEsRUFFUixZQUFZLEVBR1osS0FBSyxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBTTdHLE9BQU8sRUFBd0IscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4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QUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFdBQVcseUJBQXlCO3lCQUN2Qzt3QkFDRCxxQkFBcUI7cUJBQ3hCOzswQkFrSUksUUFBUTs0Q0EzSFQsZUFBZTtzQkFEbEIsS0FBSztnQkFlTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFPUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFRUCxNQUFNO3NCQURMLGVBQWU7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQVE1RCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsa0JBQWtCO2dCQVFoQyxjQUFjO3NCQURiLGVBQWU7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQVF4RCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsb0NBQW9DO2dCQVFsRCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsY0FBYztnQkFRekIsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsaUJBQWlCO2dCQVE1QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsbUJBQW1CO2dCQWNiLGFBQWE7c0JBRDdCLFdBQVc7dUJBQUMsT0FBTztnQkFvQnBCLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFtSEUsYUFBYTtzQkFEcEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET1dOX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgVEFCLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgT3B0aW9uYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2V5VXRpbCwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWxheW91dC1pdGVtLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dDb250YWluZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvb3ZlcmZsb3ctY29udGFpbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0V4cGFuZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9vdmVyZmxvdy1leHBhbmQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE92ZXJmbG93SXRlbVJlZiB9IGZyb20gJy4vaW50ZXJmYWNlcy9vdmVyZmxvdy1pdGVtLXJlZi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT3ZlcmZsb3dJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzL292ZXJmbG93LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IE92ZXJmbG93UG9wb3ZlckNvbnRlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvb3ZlcmZsb3ctcG9wb3Zlci1jb250ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dENvbmZpZywgT3ZlcmZsb3dMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi9vdmVyZmxvdy1sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBGRF9PVkVSRkxPV19DT05UQUlORVIgfSBmcm9tICcuL3Rva2Vucy9vdmVyZmxvdy1jb250YWluZXIudG9rZW4nO1xuaW1wb3J0IHsgRkRfT1ZFUkZMT1dfRVhQQU5EIH0gZnJvbSAnLi90b2tlbnMvb3ZlcmZsb3ctZXhwYW5kLnRva2VuJztcbmltcG9ydCB7IEZEX09WRVJGTE9XX0lURU1fUkVGIH0gZnJvbSAnLi90b2tlbnMvb3ZlcmZsb3ctaXRlbS1yZWYudG9rZW4nO1xuaW1wb3J0IHsgRkRfT1ZFUkZMT1dfSVRFTSB9IGZyb20gJy4vdG9rZW5zL292ZXJmbG93LWl0ZW0udG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLW92ZXJmbG93LWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL292ZXJmbG93LWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vb3ZlcmZsb3ctbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfT1ZFUkZMT1dfQ09OVEFJTkVSLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IE92ZXJmbG93TGF5b3V0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIE92ZXJmbG93TGF5b3V0U2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE92ZXJmbG93Q29udGFpbmVyIHtcbiAgICAvKipcbiAgICAgKiBNYXhpbXVtIGFtb3VudCBvZiB2aXNpYmxlIGl0ZW1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heFZpc2libGVJdGVtcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbWF4VmlzaWJsZUl0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWF4VmlzaWJsZUl0ZW1zID0gdmFsdWU7XG4gICAgICAgIHRoaXMudHJpZ2dlclJlY2FsY3VsYXRpb24oKTtcbiAgICB9XG5cbiAgICBnZXQgbWF4VmlzaWJsZUl0ZW1zKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhWaXNpYmxlSXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIERpcmVjdGlvbiBvZiB0aGUgZml0dGluZyBpdGVtcyBjYWxjdWxhdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dNb3JlUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gcmVuZGVyIGhpZGRlbiBpdGVtcyBpbiByZXZlcnNlIG9yZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmV2ZXJzZUhpZGRlbkl0ZW1zID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBlbmFibGUga2V5Ym9hcmQgbmF2aWdhdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGVuYWJsZUtleWJvYXJkTmF2aWdhdGlvbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCwgdHJpZ2dlcmVkIHdoZW4gYW1vdW50IG9mIHZpc2libGUgaXRlbXMgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICB2aXNpYmxlSXRlbXNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQsIHRyaWdnZXJlZCB3aGVuIGFtb3VudCBvZiBoaWRkZW4gaXRlbXMgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBoaWRkZW5JdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiBpdGVtcyB0byBkaXNwbGF5LlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfT1ZFUkZMT1dfSVRFTV9SRUYsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBfaXRlbXM6IFF1ZXJ5TGlzdDxPdmVyZmxvd0l0ZW1SZWY+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRlbXBsYXRlIGZvciB0aGUgY3VzdG9tIFwiTW9yZVwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKEZEX09WRVJGTE9XX0VYUEFORClcbiAgICBfbW9yZUJ1dHRvbjogT3ZlcmZsb3dFeHBhbmQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiBpdGVtcyB0aGF0IGNhbiBiZSBmb2N1c2VkLlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfT1ZFUkZMT1dfSVRFTSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIF9vdmVyZmxvd0l0ZW1zOiBRdWVyeUxpc3Q8T3ZlcmZsb3dJdGVtPjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0IG9mIHJlbmRlcmVkIGl0ZW1zLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oT3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyRGlyZWN0aXZlKVxuICAgIF92aXNpYmxlSXRlbXM6IFF1ZXJ5TGlzdDxPdmVyZmxvd0xheW91dEl0ZW1Db250YWluZXJEaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEl0ZW1zIHdyYXBwZXIgZGlyZWN0aXZlLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2l0ZW1zV3JhcHBlcicpXG4gICAgX2l0ZW1zV3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGF5b3V0IGNvbnRhaW5lciBlbGVtZW50LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xheW91dENvbnRhaW5lcicpXG4gICAgX2xheW91dENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogXCJNb3JlXCIgYnV0dG9uIGNvbnRhaW5lciBlbGVtZW50LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3Nob3dNb3JlQ29udGFpbmVyJylcbiAgICBfc2hvd01vcmVDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWxsSXRlbXM6IE92ZXJmbG93SXRlbVJlZltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oaWRkZW5JdGVtczogT3ZlcmZsb3dJdGVtUmVmW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dNb3JlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2luaXRpYWxDbGFzcyA9ICdmZC1vdmVyZmxvdy1sYXlvdXQnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX292ZXJmbG93UG9wb3ZlckNvbnRlbnQ6IE92ZXJmbG93UG9wb3ZlckNvbnRlbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZpbGxUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21heFZpc2libGVJdGVtcyA9IEluZmluaXR5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYW5MaXN0ZW5Ub1Jlc2l6ZSA9IGZhbHNlO1xuXG4gICAgLyoqIE92ZXJmbG93IExheW91dCBtb3JlIGJ1dHRvbiB0ZXh0ICovXG4gICAgQElucHV0KClcbiAgICBtb3JlSXRlbXNCdXR0b25UZXh0OiAoaGlkZGVuSXRlbXNDb3VudDogbnVtYmVyKSA9PiBzdHJpbmcgPSAoY291bnQpID0+IGAke2NvdW50fSBtb3JlYDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF96b25lOiBOZ1pvbmUsXG4gICAgICAgIHByb3RlY3RlZCBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBfb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlOiBPdmVyZmxvd0xheW91dFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5fZmlsbFRyaWdnZXIkLnBpcGUoZGVib3VuY2VUaW1lKDMwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX292ZXJmbG93TGF5b3V0U2VydmljZS5maXRWaXNpYmxlSXRlbXMoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyBsYXlvdXQgcmVjYWxjdWxhdGlvbiBvZiB0aGUgaXRlbXMuXG4gICAgICovXG4gICAgdHJpZ2dlclJlY2FsY3VsYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY2FuTGlzdGVuVG9SZXNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dFNlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuX2dldENvbmZpZygpKTtcbiAgICAgICAgdGhpcy5fZmlsbFRyaWdnZXIkLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50LlxuICAgICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdGhhdCBuZWVkcyB0byBiZSBmb2N1c2VkLlxuICAgICAqL1xuICAgIHNldEZvY3VzZWRFbGVtZW50KGVsZW1lbnQ6IE92ZXJmbG93SXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX292ZXJmbG93SXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbSA9PT0gZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLl9rZXlib2FyZEV2ZW50c01hbmFnZXIuc2V0QWN0aXZlSXRlbShpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgcG9wb3ZlciBjb250ZW50IGRpcmVjdGl2ZSBmb3IgbWFpbiBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGNvbnRlbnQge092ZXJmbG93UG9wb3ZlckNvbnRlbnR9IGRpcmVjdGl2ZVxuICAgICAqL1xuICAgIHJlZ2lzdGVyUG9wb3ZlckNvbnRlbnQoY29udGVudDogT3ZlcmZsb3dQb3BvdmVyQ29udGVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd1BvcG92ZXJDb250ZW50ID0gY29udGVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pdGVtc1RyYWNrRm4oXzogbnVtYmVyLCBpdGVtOiBPdmVyZmxvd0l0ZW1SZWYpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udGVtcGxhdGVSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Qb3BvdmVyU3RhdGVDaGFuZ2Uob3BlbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJmbG93UG9wb3ZlckNvbnRlbnQ/LmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLmRldGVjdENoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLm9uUmVzdWx0LnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlkZGVuSXRlbXMgPSByZXN1bHQuaGlkZGVuSXRlbXM7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd01vcmUgPSByZXN1bHQuc2hvd01vcmU7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRkZW5JdGVtc0NvdW50LmVtaXQocmVzdWx0LmhpZGRlbkl0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXNDb3VudC5lbWl0KHRoaXMuX2FsbEl0ZW1zLmZpbHRlcigoaSkgPT4gIWkuaGlkZGVuKS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLl9pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsSXRlbXMgPSB0aGlzLl9pdGVtcy50b0FycmF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fYWxsSXRlbXMgPSB0aGlzLl9pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLnN0YXJ0TGlzdGVuaW5nKHRoaXMuX2dldENvbmZpZygpKTtcblxuICAgICAgICB0aGlzLl9jYW5MaXN0ZW5Ub1Jlc2l6ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDb25maWcoKTogT3ZlcmZsb3dMYXlvdXRDb25maWcge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlzaWJsZUl0ZW1zOiB0aGlzLl92aXNpYmxlSXRlbXMsXG4gICAgICAgICAgICBpdGVtczogdGhpcy5faXRlbXMsXG4gICAgICAgICAgICBmb2N1c2FibGVJdGVtczogdGhpcy5fb3ZlcmZsb3dJdGVtcyxcbiAgICAgICAgICAgIGl0ZW1zV3JhcHBlcjogdGhpcy5faXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBzaG93TW9yZUNvbnRhaW5lcjogdGhpcy5fc2hvd01vcmVDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGxheW91dENvbnRhaW5lckVsZW1lbnQ6IHRoaXMuX2xheW91dENvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgbWF4VmlzaWJsZUl0ZW1zOiB0aGlzLm1heFZpc2libGVJdGVtcyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5zaG93TW9yZVBvc2l0aW9uLFxuICAgICAgICAgICAgZW5hYmxlS2V5Ym9hcmROYXZpZ2F0aW9uOiB0aGlzLmVuYWJsZUtleWJvYXJkTmF2aWdhdGlvbixcbiAgICAgICAgICAgIHJldmVyc2VIaWRkZW5JdGVtczogdGhpcy5yZXZlcnNlSGlkZGVuSXRlbXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIF9rZXlVcEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZUtleWJvYXJkTmF2aWdhdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVEFCKSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9hbGxJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ub3ZlcmZsb3dJdGVtPy5mb2N1c2FibGUgJiYgaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgPT09IGV2ZW50LnRhcmdldFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dFNlcnZpY2UuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5zZXRBY3RpdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAvLyBwYXNzaW5nIHRoZSBldmVudCB0byBrZXkgbWFuYWdlciBzbywgd2UgZ2V0IGEgY2hhbmdlIGZpcmVkXG4gICAgICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dFNlcnZpY2UuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNob3dNb3JlUG9zaXRpb24gPT09ICdsZWZ0J1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzaG93TW9yZVwiPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2IGNsYXNzPVwiZmQtb3ZlcmZsb3ctbGF5b3V0X19pdGVtcy1jb250YWluZXJcIiAjbGF5b3V0Q29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmZC1vdmVyZmxvdy1sYXlvdXRfX2l0ZW1zLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLW92ZXJmbG93LWxheW91dF9faXRlbXNcIiAjaXRlbXNXcmFwcGVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfYWxsSXRlbXM7IHRyYWNrQnk6IF9pdGVtc1RyYWNrRm5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtmaXJzdF09XCJpdGVtLmZpcnN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhc3RdPVwiaXRlbS5sYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW3NvZnRIaWRkZW5dPVwiaXRlbS5zb2Z0SGlkZGVuXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmZkT3ZlcmZsb3dJdGVtQ29udGFpbmVyUmVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLmhpZGRlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGl0ZW0uaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0OiBpdGVtLmZpcnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0OiBpdGVtLmxhc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbEluZGV4OiBpdGVtLmdsb2JhbEluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNob3dNb3JlUG9zaXRpb24gPT09ICdyaWdodCdcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2hvd01vcmVcIj48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93TW9yZT5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtb3ZlcmZsb3ctbGF5b3V0X19tb3JlXCIgW3N0eWxlLmRpc3BsYXldPVwiX3Nob3dNb3JlID8gJ2Jsb2NrJyA6ICdub25lJ1wiICNzaG93TW9yZUNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2hvd01vcmU+XG4gICAgICAgICAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAgICAgICAgIChpc09wZW5DaGFuZ2UpPVwiX29uUG9wb3ZlclN0YXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbbWF4V2lkdGhdPVwiMzEyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBbZmRNZW51XT1cInRydWVcIiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NvcmVPdmVyZmxvd0xheW91dC5tb3JlSXRlbXNCdXR0b24nIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IF9oaWRkZW5JdGVtcy5sZW5ndGggfSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkT3ZlcmZsb3dMYXlvdXRQb3BvdmVyQ29udGVudCBbaXRlbXNdPVwiX2hpZGRlbkl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9oaWRkZW5JdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogaXRlbS5oaWRkZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaXRlbS5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0OiBpdGVtLmZpcnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDogaXRlbS5sYXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsSW5kZXg6IGl0ZW0uZ2xvYmFsSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX21vcmVCdXR0b24/LnRlbXBsYXRlUmVmIHx8IGRlZmF1bHRTaG93TW9yZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IF9oaWRkZW5JdGVtcyB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL292ZXJmbG93LWxheW91dC9vdmVyZmxvdy1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvb3ZlcmZsb3ctbGF5b3V0L292ZXJmbG93LWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNGLE9BQU8sRUFDSCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixlQUFlLEVBQ2YsU0FBUyxFQUNULGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBR1osS0FBSyxFQUVSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQU03RyxPQUFPLEVBQXdCLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEYsT0FBTyxFQUFFLG9CQUFvQixF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UlJPVywgVEFCLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZnJvbUV2ZW50LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtleVV0aWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWxheW91dC1pdGVtLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dDb250YWluZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvb3ZlcmZsb3ctY29udGFpbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0V4cGFuZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9vdmVyZmxvdy1leHBhbmQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE92ZXJmbG93TGF5b3V0Rm9jdXNhYmxlSXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcy9vdmVyZmxvdy1mb2N1c2FibGUtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT3ZlcmZsb3dJdGVtUmVmIH0gZnJvbSAnLi9pbnRlcmZhY2VzL292ZXJmbG93LWl0ZW0tcmVmLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPdmVyZmxvd1BvcG92ZXJDb250ZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL292ZXJmbG93LXBvcG92ZXItY29udGVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRDb25maWcsIE92ZXJmbG93TGF5b3V0U2VydmljZSB9IGZyb20gJy4vb3ZlcmZsb3ctbGF5b3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRkRfT1ZFUkZMT1dfQ09OVEFJTkVSIH0gZnJvbSAnLi90b2tlbnMvb3ZlcmZsb3ctY29udGFpbmVyLnRva2VuJztcbmltcG9ydCB7IEZEX09WRVJGTE9XX0VYUEFORCB9IGZyb20gJy4vdG9rZW5zL292ZXJmbG93LWV4cGFuZC50b2tlbic7XG5pbXBvcnQgeyBGRF9PVkVSRkxPV19GT0NVU0FCTEVfSVRFTSB9IGZyb20gJy4vdG9rZW5zL292ZXJmbG93LWZvY3VzYWJsZS1pdGVtLnRva2VuJztcbmltcG9ydCB7IEZEX09WRVJGTE9XX0lURU1fUkVGIH0gZnJvbSAnLi90b2tlbnMvb3ZlcmZsb3ctaXRlbS1yZWYudG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLW92ZXJmbG93LWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL292ZXJmbG93LWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vb3ZlcmZsb3ctbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfT1ZFUkZMT1dfQ09OVEFJTkVSLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IE92ZXJmbG93TGF5b3V0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIE92ZXJmbG93TGF5b3V0U2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT3ZlcmZsb3dDb250YWluZXIge1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gYW1vdW50IG9mIHZpc2libGUgaXRlbXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4VmlzaWJsZUl0ZW1zKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9tYXhWaXNpYmxlSXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tYXhWaXNpYmxlSXRlbXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy50cmlnZ2VyUmVjYWxjdWxhdGlvbigpO1xuICAgIH1cblxuICAgIGdldCBtYXhWaXNpYmxlSXRlbXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFZpc2libGVJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBldmVudCB0byBsaXN0ZW4gZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gdGhyb3VnaCBpdGVtcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb25UcmlnZ2VyOiAna2V5dXAnIHwgJ2tleWRvd24nID0gJ2tleXVwJztcblxuICAgIC8qKiBEaXJlY3Rpb24gb2YgdGhlIGZpdHRpbmcgaXRlbXMgY2FsY3VsYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBzaG93TW9yZVBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcblxuICAgIC8qKiBXaGV0aGVyIHRvIHJlbmRlciBoaWRkZW4gaXRlbXMgaW4gcmV2ZXJzZSBvcmRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJldmVyc2VIaWRkZW5JdGVtcyA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIGtleWJvYXJkIG5hdmlnYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBlbmFibGVLZXlib2FyZE5hdmlnYXRpb24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQsIHRyaWdnZXJlZCB3aGVuIGFtb3VudCBvZiB2aXNpYmxlIGl0ZW1zIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdmlzaWJsZUl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50LCB0cmlnZ2VyZWQgd2hlbiBhbW91bnQgb2YgaGlkZGVuIGl0ZW1zIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgaGlkZGVuSXRlbXNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgaXRlbXMgdG8gZGlzcGxheS5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZEX09WRVJGTE9XX0lURU1fUkVGLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgX2l0ZW1zOiBRdWVyeUxpc3Q8T3ZlcmZsb3dJdGVtUmVmPjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUZW1wbGF0ZSBmb3IgdGhlIGN1c3RvbSBcIk1vcmVcIiBidXR0b24uXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChGRF9PVkVSRkxPV19FWFBBTkQpXG4gICAgX21vcmVCdXR0b246IE92ZXJmbG93RXhwYW5kO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgaXRlbXMgdGhhdCBjYW4gYmUgZm9jdXNlZFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfT1ZFUkZMT1dfRk9DVVNBQkxFX0lURU0sIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBfZm9jdXNhYmxlT3ZlcmZsb3dJdGVtczogUXVlcnlMaXN0PE92ZXJmbG93TGF5b3V0Rm9jdXNhYmxlSXRlbT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiByZW5kZXJlZCBpdGVtcy5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkcmVuKE92ZXJmbG93TGF5b3V0SXRlbUNvbnRhaW5lckRpcmVjdGl2ZSlcbiAgICBfdmlzaWJsZUl0ZW1zOiBRdWVyeUxpc3Q8T3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBJdGVtcyB3cmFwcGVyIGRpcmVjdGl2ZS5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpdGVtc1dyYXBwZXInKVxuICAgIF9pdGVtc1dyYXBwZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExheW91dCBjb250YWluZXIgZWxlbWVudC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdsYXlvdXRDb250YWluZXInKVxuICAgIF9sYXlvdXRDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFwiTW9yZVwiIGJ1dHRvbiBjb250YWluZXIgZWxlbWVudC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdzaG93TW9yZUNvbnRhaW5lcicpXG4gICAgX3Nob3dNb3JlQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FsbEl0ZW1zOiBPdmVyZmxvd0l0ZW1SZWZbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGlkZGVuSXRlbXM6IE92ZXJmbG93SXRlbVJlZltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zaG93TW9yZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbml0aWFsQ2xhc3MgPSAnZmQtb3ZlcmZsb3ctbGF5b3V0JztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vdmVyZmxvd1BvcG92ZXJDb250ZW50OiBPdmVyZmxvd1BvcG92ZXJDb250ZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9maWxsVHJpZ2dlciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tYXhWaXNpYmxlSXRlbXMgPSBJbmZpbml0eTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FuTGlzdGVuVG9SZXNpemUgPSBmYWxzZTtcblxuICAgIC8qKiBPdmVyZmxvdyBMYXlvdXQgbW9yZSBidXR0b24gdGV4dCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9yZUl0ZW1zQnV0dG9uVGV4dDogKGhpZGRlbkl0ZW1zQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nID0gKGNvdW50KSA9PiBgJHtjb3VudH0gbW9yZWA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgX292ZXJmbG93TGF5b3V0U2VydmljZTogT3ZlcmZsb3dMYXlvdXRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLl9maWxsVHJpZ2dlciQucGlwZShkZWJvdW5jZVRpbWUoMzApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLmZpdFZpc2libGVJdGVtcygpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXR1cEtleWJvYXJkTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyBsYXlvdXQgcmVjYWxjdWxhdGlvbiBvZiB0aGUgaXRlbXMuXG4gICAgICovXG4gICAgdHJpZ2dlclJlY2FsY3VsYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fY2FuTGlzdGVuVG9SZXNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dFNlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuX2dldENvbmZpZygpKTtcbiAgICAgICAgdGhpcy5fZmlsbFRyaWdnZXIkLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50LlxuICAgICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdGhhdCBuZWVkcyB0byBiZSBmb2N1c2VkLlxuICAgICAqL1xuICAgIHNldEZvY3VzZWRFbGVtZW50KGVsZW1lbnQ6IE92ZXJmbG93TGF5b3V0Rm9jdXNhYmxlSXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2ZvY3VzYWJsZU92ZXJmbG93SXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbSA9PT0gZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLl9rZXlib2FyZEV2ZW50c01hbmFnZXIuc2V0QWN0aXZlSXRlbShpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgcG9wb3ZlciBjb250ZW50IGRpcmVjdGl2ZSBmb3IgbWFpbiBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGNvbnRlbnQge092ZXJmbG93UG9wb3ZlckNvbnRlbnR9IGRpcmVjdGl2ZVxuICAgICAqL1xuICAgIHJlZ2lzdGVyUG9wb3ZlckNvbnRlbnQoY29udGVudDogT3ZlcmZsb3dQb3BvdmVyQ29udGVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd1BvcG92ZXJDb250ZW50ID0gY29udGVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pdGVtc1RyYWNrRm4oXzogbnVtYmVyLCBpdGVtOiBPdmVyZmxvd0l0ZW1SZWYpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udGVtcGxhdGVSZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Qb3BvdmVyU3RhdGVDaGFuZ2Uob3BlbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJmbG93UG9wb3ZlckNvbnRlbnQ/LmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLmRldGVjdENoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLm9uUmVzdWx0LnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlkZGVuSXRlbXMgPSByZXN1bHQuaGlkZGVuSXRlbXM7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd01vcmUgPSByZXN1bHQuc2hvd01vcmU7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRkZW5JdGVtc0NvdW50LmVtaXQocmVzdWx0LmhpZGRlbkl0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXNDb3VudC5lbWl0KHRoaXMuX2FsbEl0ZW1zLmZpbHRlcigoaSkgPT4gIWkuaGlkZGVuKS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLl9pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsSXRlbXMgPSB0aGlzLl9pdGVtcy50b0FycmF5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fYWxsSXRlbXMgPSB0aGlzLl9pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXRTZXJ2aWNlLnN0YXJ0TGlzdGVuaW5nKHRoaXMuX2dldENvbmZpZygpKTtcblxuICAgICAgICB0aGlzLl9jYW5MaXN0ZW5Ub1Jlc2l6ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDb25maWcoKTogT3ZlcmZsb3dMYXlvdXRDb25maWcge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlzaWJsZUl0ZW1zOiB0aGlzLl92aXNpYmxlSXRlbXMsXG4gICAgICAgICAgICBpdGVtczogdGhpcy5faXRlbXMsXG4gICAgICAgICAgICBmb2N1c2FibGVJdGVtczogdGhpcy5fZm9jdXNhYmxlT3ZlcmZsb3dJdGVtcyxcbiAgICAgICAgICAgIGl0ZW1zV3JhcHBlcjogdGhpcy5faXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBzaG93TW9yZUNvbnRhaW5lcjogdGhpcy5fc2hvd01vcmVDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGxheW91dENvbnRhaW5lckVsZW1lbnQ6IHRoaXMuX2xheW91dENvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgbWF4VmlzaWJsZUl0ZW1zOiB0aGlzLm1heFZpc2libGVJdGVtcyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5zaG93TW9yZVBvc2l0aW9uLFxuICAgICAgICAgICAgZW5hYmxlS2V5Ym9hcmROYXZpZ2F0aW9uOiB0aGlzLmVuYWJsZUtleWJvYXJkTmF2aWdhdGlvbixcbiAgICAgICAgICAgIHJldmVyc2VIaWRkZW5JdGVtczogdGhpcy5yZXZlcnNlSGlkZGVuSXRlbXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwS2V5Ym9hcmRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMubmF2aWdhdGlvblRyaWdnZXIpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKCgpID0+IHRoaXMuZW5hYmxlS2V5Ym9hcmROYXZpZ2F0aW9uKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFRBQikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZm9jdXNhYmxlT3ZlcmZsb3dJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmZvY3VzYWJsZSAmJiBpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dFNlcnZpY2UuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5zZXRBY3RpdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPV10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXNzaW5nIHRoZSBldmVudCB0byBrZXkgbWFuYWdlciBzbywgd2UgZ2V0IGEgY2hhbmdlIGZpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dFNlcnZpY2UuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgW25nSWZdPVwic2hvd01vcmVQb3NpdGlvbiA9PT0gJ2xlZnQnXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNob3dNb3JlXCI+PC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgY2xhc3M9XCJmZC1vdmVyZmxvdy1sYXlvdXRfX2l0ZW1zLWNvbnRhaW5lclwiICNsYXlvdXRDb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZkLW92ZXJmbG93LWxheW91dF9faXRlbXMtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtb3ZlcmZsb3ctbGF5b3V0X19pdGVtc1wiICNpdGVtc1dyYXBwZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9hbGxJdGVtczsgdHJhY2tCeTogX2l0ZW1zVHJhY2tGblwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd0xheW91dEl0ZW1Db250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW2ZpcnN0XT1cIml0ZW0uZmlyc3RcIlxuICAgICAgICAgICAgICAgICAgICBbbGFzdF09XCJpdGVtLmxhc3RcIlxuICAgICAgICAgICAgICAgICAgICBbc29mdEhpZGRlbl09XCJpdGVtLnNvZnRIaWRkZW5cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqZmRPdmVyZmxvd0l0ZW1Db250YWluZXJSZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGl0ZW0uaGlkZGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaXRlbS5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Q6IGl0ZW0uZmlyc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q6IGl0ZW0ubGFzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsSW5kZXg6IGl0ZW0uZ2xvYmFsSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgW25nSWZdPVwic2hvd01vcmVQb3NpdGlvbiA9PT0gJ3JpZ2h0J1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzaG93TW9yZVwiPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dNb3JlPlxuICAgIDxkaXYgY2xhc3M9XCJmZC1vdmVyZmxvdy1sYXlvdXRfX21vcmVcIiBbc3R5bGUuZGlzcGxheV09XCJfc2hvd01vcmUgPyAnYmxvY2snIDogJ25vbmUnXCIgI3Nob3dNb3JlQ29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTaG93TW9yZT5cbiAgICAgICAgICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICAgICAgICAgKGlzT3BlbkNoYW5nZSk9XCJfb25Qb3BvdmVyU3RhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFttYXhXaWR0aF09XCIzMTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtmZE1lbnVdPVwidHJ1ZVwiIGZkVHlwZT1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29yZU92ZXJmbG93TGF5b3V0Lm1vcmVJdGVtc0J1dHRvbicgfCBmZFRyYW5zbGF0ZTogeyBjb3VudDogX2hpZGRlbkl0ZW1zLmxlbmd0aCB9IH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmRPdmVyZmxvd0xheW91dFBvcG92ZXJDb250ZW50IFtpdGVtc109XCJfaGlkZGVuSXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2hpZGRlbkl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0udGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLmhpZGRlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpdGVtLmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Q6IGl0ZW0uZmlyc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0OiBpdGVtLmxhc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxJbmRleDogaXRlbS5nbG9iYWxJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbW9yZUJ1dHRvbj8udGVtcGxhdGVSZWYgfHwgZGVmYXVsdFNob3dNb3JlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogX2hpZGRlbkl0ZW1zIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -10,6 +10,7 @@ import { OverflowLayoutItemDirective } from './directives/overflow-layout-item.d
10
10
  import { OverflowItemContainerRefDirective } from './directives/overflow-item-container-ref.directive';
11
11
  import { OverflowLayoutPopoverContentDirective } from './directives/overflow-layout-popover-content.directive';
12
12
  import { OverflowLayoutItemContainerDirective } from './directives/overflow-layout-item-container.directive';
13
+ import { OverflowLayoutFocusableItemDirective } from './directives/overflow-layout-focusable-item.directive';
13
14
  import * as i0 from "@angular/core";
14
15
  export class OverflowLayoutModule {
15
16
  }
@@ -20,12 +21,15 @@ OverflowLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ve
20
21
  OverflowLayoutItemDirective,
21
22
  OverflowItemContainerRefDirective,
22
23
  OverflowLayoutPopoverContentDirective,
23
- OverflowLayoutItemContainerDirective], imports: [CommonModule, PopoverModule, ButtonModule, I18nModule], exports: [OverflowLayoutComponent,
24
+ OverflowLayoutItemContainerDirective,
25
+ OverflowLayoutFocusableItemDirective], imports: [CommonModule, PopoverModule, ButtonModule, I18nModule], exports: [OverflowLayoutComponent,
24
26
  OverflowItemRefDirective,
25
27
  OverflowExpandDirective,
26
28
  OverflowLayoutItemDirective,
27
29
  OverflowItemContainerRefDirective,
28
- OverflowLayoutPopoverContentDirective] });
30
+ OverflowLayoutPopoverContentDirective,
31
+ OverflowLayoutItemContainerDirective,
32
+ OverflowLayoutFocusableItemDirective] });
29
33
  OverflowLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OverflowLayoutModule, imports: [CommonModule, PopoverModule, ButtonModule, I18nModule] });
30
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: OverflowLayoutModule, decorators: [{
31
35
  type: NgModule,
@@ -37,7 +41,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
37
41
  OverflowExpandDirective,
38
42
  OverflowLayoutItemDirective,
39
43
  OverflowItemContainerRefDirective,
40
- OverflowLayoutPopoverContentDirective
44
+ OverflowLayoutPopoverContentDirective,
45
+ OverflowLayoutItemContainerDirective,
46
+ OverflowLayoutFocusableItemDirective
41
47
  ],
42
48
  declarations: [
43
49
  OverflowLayoutComponent,
@@ -46,8 +52,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
46
52
  OverflowLayoutItemDirective,
47
53
  OverflowItemContainerRefDirective,
48
54
  OverflowLayoutPopoverContentDirective,
49
- OverflowLayoutItemContainerDirective
55
+ OverflowLayoutItemContainerDirective,
56
+ OverflowLayoutFocusableItemDirective
50
57
  ]
51
58
  }]
52
59
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGF5b3V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL292ZXJmbG93LWxheW91dC9vdmVyZmxvdy1sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOztBQXNCN0csTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQVR6Qix1QkFBdUI7UUFDdkIsd0JBQXdCO1FBQ3hCLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0IsaUNBQWlDO1FBQ2pDLHFDQUFxQztRQUNyQyxvQ0FBb0MsYUFoQjlCLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFVBQVUsYUFFM0QsdUJBQXVCO1FBQ3ZCLHdCQUF3QjtRQUN4Qix1QkFBdUI7UUFDdkIsMkJBQTJCO1FBQzNCLGlDQUFpQztRQUNqQyxxQ0FBcUM7a0hBWWhDLG9CQUFvQixZQW5CbkIsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsVUFBVTsyRkFtQnRELG9CQUFvQjtrQkFwQmhDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDO29CQUNoRSxPQUFPLEVBQUU7d0JBQ0wsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQixpQ0FBaUM7d0JBQ2pDLHFDQUFxQztxQkFDeEM7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLDJCQUEyQjt3QkFDM0IsaUNBQWlDO3dCQUNqQyxxQ0FBcUM7d0JBQ3JDLG9DQUFvQztxQkFDdkM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IEkxOG5Nb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL292ZXJmbG93LWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3ZlcmZsb3dJdGVtUmVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWl0ZW0tcmVmLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0V4cGFuZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1leHBhbmQuZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJmbG93TGF5b3V0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1sYXlvdXQtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dJdGVtQ29udGFpbmVyUmVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWl0ZW0tY29udGFpbmVyLXJlZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRQb3BvdmVyQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1sYXlvdXQtcG9wb3Zlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dEl0ZW1Db250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvb3ZlcmZsb3ctbGF5b3V0LWl0ZW0tY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3Zlck1vZHVsZSwgQnV0dG9uTW9kdWxlLCBJMThuTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIE92ZXJmbG93TGF5b3V0Q29tcG9uZW50LFxuICAgICAgICBPdmVyZmxvd0l0ZW1SZWZEaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93RXhwYW5kRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0xheW91dEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93SXRlbUNvbnRhaW5lclJlZkRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRQb3BvdmVyQ29udGVudERpcmVjdGl2ZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIE92ZXJmbG93TGF5b3V0Q29tcG9uZW50LFxuICAgICAgICBPdmVyZmxvd0l0ZW1SZWZEaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93RXhwYW5kRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0xheW91dEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93SXRlbUNvbnRhaW5lclJlZkRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRQb3BvdmVyQ29udGVudERpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBPdmVyZmxvd0xheW91dE1vZHVsZSB7fVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbGF5b3V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL292ZXJmbG93LWxheW91dC9vdmVyZmxvdy1sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOztBQXlCN0csTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQVZ6Qix1QkFBdUI7UUFDdkIsd0JBQXdCO1FBQ3hCLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0IsaUNBQWlDO1FBQ2pDLHFDQUFxQztRQUNyQyxvQ0FBb0M7UUFDcEMsb0NBQW9DLGFBbkI5QixZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxVQUFVLGFBRTNELHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIsdUJBQXVCO1FBQ3ZCLDJCQUEyQjtRQUMzQixpQ0FBaUM7UUFDakMscUNBQXFDO1FBQ3JDLG9DQUFvQztRQUNwQyxvQ0FBb0M7a0hBYS9CLG9CQUFvQixZQXRCbkIsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsVUFBVTsyRkFzQnRELG9CQUFvQjtrQkF2QmhDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDO29CQUNoRSxPQUFPLEVBQUU7d0JBQ0wsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQixpQ0FBaUM7d0JBQ2pDLHFDQUFxQzt3QkFDckMsb0NBQW9DO3dCQUNwQyxvQ0FBb0M7cUJBQ3ZDO29CQUNELFlBQVksRUFBRTt3QkFDVix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLGlDQUFpQzt3QkFDakMscUNBQXFDO3dCQUNyQyxvQ0FBb0M7d0JBQ3BDLG9DQUFvQztxQkFDdkM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IEkxOG5Nb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL292ZXJmbG93LWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3ZlcmZsb3dJdGVtUmVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWl0ZW0tcmVmLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0V4cGFuZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1leHBhbmQuZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJmbG93TGF5b3V0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1sYXlvdXQtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dJdGVtQ29udGFpbmVyUmVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL292ZXJmbG93LWl0ZW0tY29udGFpbmVyLXJlZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3ZlcmZsb3dMYXlvdXRQb3BvdmVyQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9vdmVyZmxvdy1sYXlvdXQtcG9wb3Zlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dEl0ZW1Db250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvb3ZlcmZsb3ctbGF5b3V0LWl0ZW0tY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvb3ZlcmZsb3ctbGF5b3V0LWZvY3VzYWJsZS1pdGVtLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3Zlck1vZHVsZSwgQnV0dG9uTW9kdWxlLCBJMThuTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIE92ZXJmbG93TGF5b3V0Q29tcG9uZW50LFxuICAgICAgICBPdmVyZmxvd0l0ZW1SZWZEaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93RXhwYW5kRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0xheW91dEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93SXRlbUNvbnRhaW5lclJlZkRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRQb3BvdmVyQ29udGVudERpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRJdGVtQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0xheW91dEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBPdmVyZmxvd0xheW91dENvbXBvbmVudCxcbiAgICAgICAgT3ZlcmZsb3dJdGVtUmVmRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0V4cGFuZERpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRJdGVtRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0l0ZW1Db250YWluZXJSZWZEaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93TGF5b3V0UG9wb3ZlckNvbnRlbnREaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93TGF5b3V0SXRlbUNvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRGb2N1c2FibGVJdGVtRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBPdmVyZmxvd0xheW91dE1vZHVsZSB7fVxuIl19