@fundamental-ngx/core 0.35.5-rc.6 → 0.35.5

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 (175) 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/fesm2020/fundamental-ngx-core-breadcrumb.mjs +1 -1
  10. package/breadcrumb/package.json +1 -1
  11. package/busy-indicator/package.json +1 -1
  12. package/button/package.json +1 -1
  13. package/calendar/package.json +1 -1
  14. package/card/package.json +1 -1
  15. package/carousel/package.json +1 -1
  16. package/checkbox/package.json +1 -1
  17. package/combobox/package.json +1 -1
  18. package/content-density/package.json +4 -4
  19. package/date-picker/date-picker.component.d.ts +1 -10
  20. package/date-picker/date-picker.module.d.ts +2 -3
  21. package/date-picker/esm2020/date-picker.component.mjs +6 -30
  22. package/date-picker/esm2020/date-picker.module.mjs +1 -5
  23. package/date-picker/fesm2015/fundamental-ngx-core-date-picker.mjs +5 -33
  24. package/date-picker/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
  25. package/date-picker/fesm2020/fundamental-ngx-core-date-picker.mjs +5 -33
  26. package/date-picker/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
  27. package/date-picker/package.json +1 -1
  28. package/datetime/package.json +1 -1
  29. package/datetime-picker/package.json +1 -1
  30. package/dialog/package.json +1 -1
  31. package/dynamic-page/package.json +1 -1
  32. package/dynamic-side-content/package.json +1 -1
  33. package/esm2020/breadcrumb/breadcrumb.component.mjs +1 -1
  34. package/esm2020/date-picker/date-picker.component.mjs +6 -30
  35. package/esm2020/date-picker/date-picker.module.mjs +1 -5
  36. package/esm2020/menu/menu-item/menu-item.component.mjs +43 -7
  37. package/esm2020/menu/menu.component.mjs +37 -34
  38. package/esm2020/menu/services/menu.service.mjs +14 -13
  39. package/esm2020/shellbar/product-menu/product-menu.component.mjs +1 -1
  40. package/esm2020/shellbar/user-menu/shellbar-user-menu.component.mjs +1 -1
  41. package/esm2020/split-button/split-button.component.mjs +6 -6
  42. package/esm2020/tabs/tab-list.component.mjs +1 -1
  43. package/esm2020/time/time-column/time-column.component.mjs +2 -12
  44. package/esm2020/tree/tree-child.component.mjs +2 -2
  45. package/facets/package.json +1 -1
  46. package/feed-input/package.json +1 -1
  47. package/feed-list-item/package.json +1 -1
  48. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +1 -1
  49. package/fesm2015/fundamental-ngx-core-date-picker.mjs +5 -33
  50. package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
  51. package/fesm2015/fundamental-ngx-core-menu.mjs +90 -50
  52. package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  53. package/fesm2015/fundamental-ngx-core-shellbar.mjs +2 -2
  54. package/fesm2015/fundamental-ngx-core-split-button.mjs +5 -5
  55. package/fesm2015/fundamental-ngx-core-split-button.mjs.map +1 -1
  56. package/fesm2015/fundamental-ngx-core-tabs.mjs +1 -1
  57. package/fesm2015/fundamental-ngx-core-time.mjs +1 -11
  58. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  59. package/fesm2015/fundamental-ngx-core-tree.mjs +1 -1
  60. package/fesm2015/fundamental-ngx-core-tree.mjs.map +1 -1
  61. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +1 -1
  62. package/fesm2020/fundamental-ngx-core-date-picker.mjs +5 -33
  63. package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
  64. package/fesm2020/fundamental-ngx-core-menu.mjs +90 -50
  65. package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  66. package/fesm2020/fundamental-ngx-core-shellbar.mjs +2 -2
  67. package/fesm2020/fundamental-ngx-core-split-button.mjs +5 -5
  68. package/fesm2020/fundamental-ngx-core-split-button.mjs.map +1 -1
  69. package/fesm2020/fundamental-ngx-core-tabs.mjs +1 -1
  70. package/fesm2020/fundamental-ngx-core-time.mjs +1 -11
  71. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  72. package/fesm2020/fundamental-ngx-core-tree.mjs +1 -1
  73. package/fesm2020/fundamental-ngx-core-tree.mjs.map +1 -1
  74. package/file-uploader/package.json +1 -1
  75. package/fixed-card-layout/package.json +1 -1
  76. package/flexible-column-layout/package.json +1 -1
  77. package/form/package.json +1 -1
  78. package/formatted-text/package.json +1 -1
  79. package/grid-list/package.json +1 -1
  80. package/icon/package.json +1 -1
  81. package/illustrated-message/package.json +1 -1
  82. package/infinite-scroll/package.json +1 -1
  83. package/info-label/package.json +1 -1
  84. package/inline-help/package.json +1 -1
  85. package/input-group/package.json +1 -1
  86. package/layout-grid/package.json +1 -1
  87. package/layout-panel/package.json +1 -1
  88. package/link/package.json +1 -1
  89. package/list/package.json +1 -1
  90. package/menu/esm2020/menu-item/menu-item.component.mjs +43 -7
  91. package/menu/esm2020/menu.component.mjs +37 -34
  92. package/menu/esm2020/services/menu.service.mjs +14 -13
  93. package/menu/fesm2015/fundamental-ngx-core-menu.mjs +90 -50
  94. package/menu/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  95. package/menu/fesm2020/fundamental-ngx-core-menu.mjs +90 -50
  96. package/menu/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  97. package/menu/menu-item/menu-item.component.d.ts +27 -7
  98. package/menu/menu.component.d.ts +10 -10
  99. package/menu/package.json +1 -1
  100. package/menu/services/menu.service.d.ts +3 -3
  101. package/message-box/package.json +1 -1
  102. package/message-strip/package.json +1 -1
  103. package/message-toast/package.json +1 -1
  104. package/micro-process-flow/package.json +1 -1
  105. package/mobile-mode/package.json +1 -1
  106. package/multi-input/package.json +1 -1
  107. package/nested-list/package.json +1 -1
  108. package/notification/package.json +1 -1
  109. package/object-identifier/package.json +1 -1
  110. package/object-marker/package.json +1 -1
  111. package/object-number/package.json +1 -1
  112. package/object-status/package.json +1 -1
  113. package/overflow-layout/package.json +14 -14
  114. package/package.json +2 -2
  115. package/pagination/package.json +1 -1
  116. package/panel/package.json +1 -1
  117. package/popover/package.json +1 -1
  118. package/product-switch/package.json +1 -1
  119. package/progress-indicator/package.json +1 -1
  120. package/quick-view/package.json +1 -1
  121. package/radio/package.json +1 -1
  122. package/rating-indicator/package.json +1 -1
  123. package/resizable-card-layout/package.json +1 -1
  124. package/scroll-spy/package.json +1 -1
  125. package/scrollbar/package.json +1 -1
  126. package/segmented-button/package.json +1 -1
  127. package/select/package.json +1 -1
  128. package/shared/package.json +1 -1
  129. package/shellbar/esm2020/product-menu/product-menu.component.mjs +1 -1
  130. package/shellbar/esm2020/user-menu/shellbar-user-menu.component.mjs +1 -1
  131. package/shellbar/fesm2015/fundamental-ngx-core-shellbar.mjs +2 -2
  132. package/shellbar/fesm2020/fundamental-ngx-core-shellbar.mjs +2 -2
  133. package/shellbar/package.json +1 -1
  134. package/side-navigation/package.json +1 -1
  135. package/slider/package.json +1 -1
  136. package/split-button/esm2020/split-button.component.mjs +6 -6
  137. package/split-button/fesm2015/fundamental-ngx-core-split-button.mjs +5 -5
  138. package/split-button/fesm2015/fundamental-ngx-core-split-button.mjs.map +1 -1
  139. package/split-button/fesm2020/fundamental-ngx-core-split-button.mjs +5 -5
  140. package/split-button/fesm2020/fundamental-ngx-core-split-button.mjs.map +1 -1
  141. package/split-button/package.json +1 -1
  142. package/splitter/package.json +1 -1
  143. package/status-indicator/package.json +1 -1
  144. package/step-input/package.json +1 -1
  145. package/switch/package.json +1 -1
  146. package/table/package.json +1 -1
  147. package/tabs/esm2020/tab-list.component.mjs +1 -1
  148. package/tabs/fesm2015/fundamental-ngx-core-tabs.mjs +1 -1
  149. package/tabs/fesm2020/fundamental-ngx-core-tabs.mjs +1 -1
  150. package/tabs/package.json +1 -1
  151. package/text/package.json +1 -1
  152. package/theming/package.json +1 -1
  153. package/tile/package.json +1 -1
  154. package/time/esm2020/time-column/time-column.component.mjs +2 -12
  155. package/time/fesm2015/fundamental-ngx-core-time.mjs +1 -11
  156. package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  157. package/time/fesm2020/fundamental-ngx-core-time.mjs +1 -11
  158. package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  159. package/time/package.json +1 -1
  160. package/time/time-column/time-column.component.d.ts +0 -2
  161. package/time-picker/package.json +1 -1
  162. package/timeline/package.json +1 -1
  163. package/title/package.json +1 -1
  164. package/token/package.json +1 -1
  165. package/toolbar/package.json +1 -1
  166. package/tree/esm2020/tree-child.component.mjs +2 -2
  167. package/tree/fesm2015/fundamental-ngx-core-tree.mjs +1 -1
  168. package/tree/fesm2015/fundamental-ngx-core-tree.mjs.map +1 -1
  169. package/tree/fesm2020/fundamental-ngx-core-tree.mjs +1 -1
  170. package/tree/fesm2020/fundamental-ngx-core-tree.mjs.map +1 -1
  171. package/tree/package.json +1 -1
  172. package/upload-collection/package.json +1 -1
  173. package/utils/package.json +2 -2
  174. package/vertical-navigation/package.json +1 -1
  175. package/wizard/package.json +1 -1
@@ -9,6 +9,7 @@ import { MenuService } from './services/menu.service';
9
9
  import { MENU_COMPONENT } from './menu.interface';
10
10
  import { MenuItemComponent } from './menu-item/menu-item.component';
11
11
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
12
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "@fundamental-ngx/core/dialog";
14
15
  import * as i2 from "./services/menu.service";
@@ -46,27 +47,34 @@ export class MenuComponent extends BasePopoverClass {
46
47
  this.id = `fd-menu-${menuUniqueId++}`;
47
48
  /** Emits array of active menu items */
48
49
  this.activePath = new EventEmitter();
49
- /** Whether use menu in mobile mode */
50
- this.mobile = false;
51
- /** @hidden Whether Popover with the menu is opened */
52
- this.isOpen = false;
50
+ /** @hidden Whether use a menu in mobile mode */
51
+ this._mobile = false;
53
52
  /** @hidden */
54
53
  this._subscriptions = new Subscription();
55
54
  }
56
55
  /** Set menu in mobile mode */
57
- // eslint-disable-next-line @angular-eslint/no-input-rename
58
- set setMobileMode(value) {
59
- this.mobile = value;
56
+ set mobile(value) {
57
+ this._mobile = coerceBooleanProperty(value);
60
58
  this._menuService.setMenuMode(this.mobile);
61
59
  }
60
+ get mobile() {
61
+ return this._mobile;
62
+ }
63
+ /** @hidden */
64
+ get _popoverConfig() {
65
+ return {
66
+ ...this,
67
+ additionalBodyClass: (this.additionalBodyClass ?? '') + ' fd-popover--menu'
68
+ };
69
+ }
62
70
  /** @hidden */
63
71
  ngOnInit() {
64
72
  /** keep isOpen up to date */
65
73
  this.isOpenChange.subscribe((isOpen) => {
66
74
  this.isOpen = isOpen;
75
+ // when popover got closed by its own mechanism (e.x. click outside)
76
+ // we need to clean up a menu as well
67
77
  if (!isOpen) {
68
- // when popover got closed by its own mechanism (e.x. click outside)
69
- // we need to clean up menu as well
70
78
  this._cleanUpMenuAfterClose();
71
79
  }
72
80
  this._changeDetectorRef.markForCheck();
@@ -74,15 +82,15 @@ export class MenuComponent extends BasePopoverClass {
74
82
  }
75
83
  /** @hidden */
76
84
  ngAfterContentInit() {
77
- this._menuService.setMenuRoot(this);
85
+ this._menuService.setMenuComponent(this);
78
86
  this._listenOnMenuItemsChange();
79
87
  }
80
88
  /** @hidden */
81
89
  ngAfterViewInit() {
82
90
  this._menuService.isMobileMode.subscribe((isMobile) => {
83
91
  this._setupView();
92
+ // Since it is mobile, it's needed to disable popoverService
84
93
  if (isMobile) {
85
- // Since it is mobile it's needed to disable popoverService
86
94
  this._popoverService.deactivate();
87
95
  }
88
96
  });
@@ -111,7 +119,7 @@ export class MenuComponent extends BasePopoverClass {
111
119
  this.isOpen = true;
112
120
  this.isOpenChange.emit(this.isOpen);
113
121
  }
114
- if (!this.mobile) {
122
+ else {
115
123
  this._popoverService.open();
116
124
  }
117
125
  this._changeDetectorRef.markForCheck();
@@ -122,7 +130,7 @@ export class MenuComponent extends BasePopoverClass {
122
130
  this.isOpen = false;
123
131
  this.isOpenChange.emit(this.isOpen);
124
132
  }
125
- if (!this.mobile) {
133
+ else {
126
134
  this._popoverService.close();
127
135
  }
128
136
  this._cleanUpMenuAfterClose();
@@ -153,13 +161,9 @@ export class MenuComponent extends BasePopoverClass {
153
161
  }
154
162
  /** @hidden */
155
163
  _setupPopoverService() {
156
- this._subscriptions.add(this._popoverService._onLoad.subscribe((elementRef) => this._manageKeyboardSupport(elementRef)));
157
- this._popoverService.templateContent = this.menuRootTemplate;
158
- this._popoverService.initialise(this._externalTrigger, this);
159
- }
160
- /** @hidden */
161
- _manageKeyboardSupport(elementRef) {
162
- this._menuService.addKeyboardSupport(elementRef);
164
+ this._subscriptions.add(this._popoverService._onLoad.subscribe((elementRef) => this._menuService.addKeyboardSupport(elementRef)));
165
+ this._popoverService.templateContent = this._menuRootTemplate;
166
+ this._popoverService.initialise(this._externalTrigger, this._popoverConfig);
163
167
  }
164
168
  /** @hidden Open Menu in mobile mode */
165
169
  async _setupMobileMode() {
@@ -167,15 +171,15 @@ export class MenuComponent extends BasePopoverClass {
167
171
  providers: [{ provide: MENU_COMPONENT, useValue: this }],
168
172
  parent: this._injector
169
173
  });
170
- this._mobileModeComponentRef = await this._dynamicComponentService.createDynamicModule(this.menuRootTemplate, MenuMobileModule, MenuMobileComponent, this._viewContainerRef, injector);
174
+ this._mobileModeComponentRef = await this._dynamicComponentService.createDynamicModule(this._menuRootTemplate, MenuMobileModule, MenuMobileComponent, this._viewContainerRef, injector);
171
175
  this._listenOnTriggerRefClicks();
172
176
  }
173
177
  /** @hidden Listen on menu items change and rebuild menu */
174
178
  _listenOnMenuItemsChange() {
175
- this._subscriptions.add(this.menuItems.changes.subscribe(() => this._menuService.rebuildMenu()));
176
- this.menuItems.forEach((m) => {
177
- if (m.submenu && m.submenu.menuItems) {
178
- this._subscriptions.add(m.submenu.menuItems.changes.subscribe(() => this._menuService.rebuildMenu()));
179
+ this._subscriptions.add(this._menuItems.changes.subscribe(() => this._menuService.rebuildMenu()));
180
+ this._menuItems.forEach((menuItem) => {
181
+ if (menuItem.submenu?.menuItems) {
182
+ this._subscriptions.add(menuItem.submenu._menuItemsChange$.subscribe(() => this._menuService.rebuildMenu()));
179
183
  }
180
184
  });
181
185
  }
@@ -213,17 +217,16 @@ export class MenuComponent extends BasePopoverClass {
213
217
  }
214
218
  }
215
219
  MenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuComponent, deps: [{ token: i0.ElementRef }, { token: i1.DialogConfig, optional: true }, { token: i0.Renderer2 }, { token: i2.MenuService }, { token: i0.ChangeDetectorRef }, { token: i3.PopoverService }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: i4.DynamicComponentService, optional: true }, { token: i5.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component });
216
- MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: MenuComponent, selector: "fd-menu", inputs: { setMobileMode: ["mobile", "setMobileMode"], disabled: "disabled", focusTrapped: "focusTrapped", openOnHoverTime: "openOnHoverTime", mobileConfig: "mobileConfig", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", id: "id" }, outputs: { activePath: "activePath" }, providers: [MenuService, PopoverService, contentDensityObserverProviders()], queries: [{ propertyName: "menuItems", predicate: MenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "menuRootTemplate", first: true, predicate: ["menuRootTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <nav\n class=\"fd-menu\"\n fdInitialFocus\n [enabled]=\"focusTrapped\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"menu\"\n [class.fd-menu--compact]=\"_contentDensityObserver.isCompact$ | async\"\n [class.fd-menu--mobile]=\"mobile\"\n >\n <ul role=\"none\" class=\"fd-menu__list fd-menu__list--no-shadow\">\n <ng-content></ng-content>\n </ul>\n </nav>\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 */.fd-dialog__body{--fdButton_Menu_Border_Radius:0}.fd-menu{-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;max-width:20rem;padding:0;width:-moz-fit-content;width:fit-content}.fd-menu:after,.fd-menu:before{box-sizing:inherit;font-size:inherit}.fd-menu__list,.fd-menu__sublist{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;-webkit-box-shadow:var(--sapContent_Shadow1);border:0;border-radius:var(--fdButton_Menu_Border_Radius);box-shadow:var(--sapContent_Shadow1);box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;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-menu__list:after,.fd-menu__list:before,.fd-menu__sublist:after,.fd-menu__sublist:before{box-sizing:inherit;font-size:inherit}.fd-menu__list--no-shadow,.fd-menu__sublist--no-shadow{box-shadow:none}.fd-menu__sublist{-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;left:100%;line-height:var(--sapContent_LineHeight);margin:.25rem 0 0 -.25rem;min-width:100%;padding:0;position:absolute;top:0;z-index:2}.fd-menu__sublist:after,.fd-menu__sublist:before{box-sizing:inherit;font-size:inherit}.fd-menu__sublist[dir=rtl],[dir=rtl] .fd-menu__sublist{left:auto;margin:.25rem -.25rem 0 0;right:100%}.fd-menu__sublist[aria-hidden=true]{display:none}.fd-menu__list>.fd-menu__item{position:relative;width:100%}.fd-menu__list--overflow{flex-wrap:nowrap;overflow-y:scroll}.fd-menu__separator{-webkit-box-sizing:border-box;background-color:var(--sapGroup_ContentBorderColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:.0625rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:100%}.fd-menu__separator:after,.fd-menu__separator:before{box-sizing:inherit;font-size:inherit}.fd-menu__item{-webkit-box-sizing:border-box;background-color:var(--sapList_Background);border:0;border-radius: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;position:relative}.fd-menu__item:after,.fd-menu__item:before{box-sizing:inherit;font-size:inherit}.fd-menu__item:first-child,.fd-menu__item:first-child .fd-menu__link:after{border-top-left-radius:var(--fdButton_Menu_Border_Radius);border-top-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu__item:last-child,.fd-menu__item:last-child .fd-menu__link:after{border-bottom-left-radius:var(--fdButton_Menu_Border_Radius);border-bottom-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu__link{-webkit-box-sizing:border-box;align-items:center;border:0;border-radius:inherit;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2.75rem;line-height:var(--sapContent_LineHeight);margin:0;outline:none;padding:.75rem 1rem .75rem .75rem;text-decoration:none;width:100%}.fd-menu__link:after,.fd-menu__link:before{box-sizing:inherit;font-size:inherit}.fd-menu__link.is-focus:after,.fd-menu__link:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);bottom:.0625rem;content:\"\";left:.0625rem;pointer-events:none;position:absolute;right:.0625rem;top:.0625rem}.fd-menu__link.is-hover,.fd-menu__link:hover{background-color:var(--sapList_Hover_Background)}.fd-menu__link.is-selected,.fd-menu__link[aria-selected=true]{background-color:var(--sapList_SelectionBackgroundColor);border-bottom:.0625rem solid var(--sapList_SelectionBorderColor)}.fd-menu__link.is-selected .fd-menu__addon-after,.fd-menu__link.is-selected .fd-menu__addon-before,.fd-menu__link.is-selected .fd-menu__shortcut,.fd-menu__link[aria-selected=true] .fd-menu__addon-after,.fd-menu__link[aria-selected=true] .fd-menu__addon-before,.fd-menu__link[aria-selected=true] .fd-menu__shortcut{color:var(--sapContent_NonInteractiveIconColor)}.fd-menu__link.is-selected.is-hover:not(:active):not(.is-active),.fd-menu__link.is-selected:hover:not(:active):not(.is-active),.fd-menu__link[aria-selected=true].is-hover:not(:active):not(.is-active),.fd-menu__link[aria-selected=true]:hover:not(:active):not(.is-active){background-color:var(--sapList_Hover_SelectionBackground)}.fd-menu__link.is-selected.is-focus,.fd-menu__link.is-selected:focus,.fd-menu__link[aria-selected=true].is-focus,.fd-menu__link[aria-selected=true]:focus{z-index:5}.fd-menu__link.is-selected.is-focus:after,.fd-menu__link.is-selected:focus:after,.fd-menu__link[aria-selected=true].is-focus:after,.fd-menu__link[aria-selected=true]:focus:after{bottom:.125rem}.fd-menu__link.is-active,.fd-menu__link:active{background-color:var(--sapList_Active_Background);color:var(--sapList_Active_TextColor)}.fd-menu__link.is-active:after,.fd-menu__link:active:after{display:none}.fd-menu__link.is-active .fd-menu__addon-after,.fd-menu__link.is-active .fd-menu__addon-before,.fd-menu__link.is-active .fd-menu__shortcut,.fd-menu__link.is-active .fd-menu__title,.fd-menu__link:active .fd-menu__addon-after,.fd-menu__link:active .fd-menu__addon-before,.fd-menu__link:active .fd-menu__shortcut,.fd-menu__link:active .fd-menu__title{color:var(--sapList_Active_TextColor)}.fd-menu__link.is-active.is-focus,.fd-menu__link.is-active:focus,.fd-menu__link:active.is-focus,.fd-menu__link:active:focus{outline-color:var(--fdMenu_Active_State_Focus);z-index:5}.fd-menu__link.is-disabled,.fd-menu__link:disabled,.fd-menu__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-menu__link.is-disabled.is-focus,.fd-menu__link.is-disabled:focus,.fd-menu__link:disabled.is-focus,.fd-menu__link:disabled:focus,.fd-menu__link[aria-disabled=true].is-focus,.fd-menu__link[aria-disabled=true]:focus{z-index:5}.fd-menu__link.is-disabled.is-focus:after,.fd-menu__link.is-disabled:focus:after,.fd-menu__link:disabled.is-focus:after,.fd-menu__link:disabled:focus:after,.fd-menu__link[aria-disabled=true].is-focus:after,.fd-menu__link[aria-disabled=true]:focus:after{display:none}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active){background-color:var(--sapList_SelectionBackgroundColor);border-bottom:.0625rem solid var(--sapList_SelectionBorderColor)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__addon-after,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__addon-before,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__shortcut,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__addon-after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__addon-before,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__shortcut{color:var(--sapContent_NonInteractiveIconColor)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-hover:not(:active):not(.is-active),.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):hover:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-hover:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):hover:not(:active):not(.is-active){background-color:var(--sapList_Hover_SelectionBackground)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-focus,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):focus,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-focus,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):focus{z-index:5}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-focus:after,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):focus:after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-focus:after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):focus:after{bottom:.125rem}.fd-menu__title{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapList_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;text-shadow:var(--fdMenu_Text_Shadow);white-space:nowrap;width:100%}.fd-menu__title:after,.fd-menu__title:before{box-sizing:inherit;font-size:inherit}.fd-menu__addon-after,.fd-menu__addon-before{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:transparent;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:var(--sapFontLargeSize);font-weight:400;height:1.25rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:2.25rem;padding:0;text-shadow:var(--fdMenu_Text_Shadow);width:2.25rem}.fd-menu__addon-after:after,.fd-menu__addon-after:before,.fd-menu__addon-before:after,.fd-menu__addon-before:before{box-sizing:inherit;font-size:inherit}.fd-menu__addon-after [class*=sap-icon],.fd-menu__addon-after[class*=sap-icon],.fd-menu__addon-before [class*=sap-icon],.fd-menu__addon-before[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-menu__addon-before{margin:0 0 0 -.75rem}.fd-menu__addon-after,.fd-menu__addon-before[dir=rtl],[dir=rtl] .fd-menu__addon-before{margin:0 -1rem 0 0}.fd-menu__addon-after[dir=rtl],[dir=rtl] .fd-menu__addon-after{margin:0 0 0 -.75rem}.fd-menu__addon-after--submenu{font-size:var(--sapFontSmallSize)}.fd-menu__addon-after--submenu:before{content:\"\\e066\"}.fd-menu__addon-after--submenu:before,.fd-menu__addon-after--submenu[dir=rtl]:before,[dir=rtl] .fd-menu__addon-after--submenu:before{text-rendering:optimizeLegibility;font-family:SAP-icons;text-align:center;text-decoration:inherit;text-transform:none}.fd-menu__addon-after--submenu[dir=rtl]:before,[dir=rtl] .fd-menu__addon-after--submenu:before{content:\"\\e067\"}.fd-menu__shortcut{-webkit-box-sizing:border-box;-ms-flex-negative:0;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;flex-shrink:0;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0 0 0 1rem;text-overflow:ellipsis;white-space:nowrap}.fd-menu__shortcut:after,.fd-menu__shortcut:before{box-sizing:inherit;font-size:inherit}.fd-menu__shortcut[dir=rtl],[dir=rtl] .fd-menu__shortcut{padding-left:0;padding-right:1rem}.fd-menu--overflow{-webkit-box-shadow:var(--sapContent_Shadow1);border-radius:var(--fdButton_Menu_Border_Radius);box-shadow:var(--sapContent_Shadow1);overflow-y:scroll}.fd-menu--overflow .fd-menu__list{box-shadow:none}.fd-menu--overflow .fd-menu__item:first-child{border-top-right-radius:0}.fd-menu--overflow .fd-menu__item:first-child[dir=rtl],[dir=rtl] .fd-menu--overflow .fd-menu__item:first-child{border-top-left-radius:0;border-top-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu--overflow .fd-menu__item:last-child{border-bottom-right-radius:0}.fd-menu--overflow .fd-menu__item:last-child[dir=rtl],[dir=rtl] .fd-menu--overflow .fd-menu__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu--full-width{max-width:100%}.fd-menu--compact .fd-menu__link{height:2rem;padding:.375rem .75rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-after,.fd-menu--compact .fd-menu__link .fd-menu__addon-before{min-width:2rem;width:2rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-before{margin:0 0 0 -.5rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-after,.fd-menu--compact .fd-menu__link[dir=rtl] .fd-menu__addon-before,[dir=rtl] .fd-menu--compact .fd-menu__link .fd-menu__addon-before{margin:0 -.75rem 0 0}.fd-menu--compact .fd-menu__link[dir=rtl] .fd-menu__addon-after,[dir=rtl] .fd-menu--compact .fd-menu__link .fd-menu__addon-after{margin:0 0 0 -.5rem}.fd-menu--mobile{max-width:100%;width:100%}.fd-menu--mobile .fd-menu__list,.fd-menu--mobile .fd-menu__sublist{-webkit-box-shadow:none;border-radius:0;box-shadow:none;margin:0;position:static}.fd-menu--mobile .fd-menu__list .fd-menu__item,.fd-menu--mobile .fd-menu__sublist .fd-menu__item{border-radius:0}.fd-menu--mobile .fd-menu__list .fd-menu__link,.fd-menu--mobile .fd-menu__sublist .fd-menu__link{padding:.75rem 1rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-after,.fd-menu--mobile .fd-menu__list .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{min-width:2.75rem;width:2.75rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{margin:0 0 0 -1rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-after,.fd-menu--mobile .fd-menu__list[dir=rtl] .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist[dir=rtl] .fd-menu__addon-before,[dir=rtl] .fd-menu--mobile .fd-menu__list .fd-menu__addon-before,[dir=rtl] .fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{margin:0 -1rem 0 0}.fd-menu--mobile .fd-menu__list[dir=rtl] .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist[dir=rtl] .fd-menu__addon-after,[dir=rtl] .fd-menu--mobile .fd-menu__list .fd-menu__addon-after,[dir=rtl] .fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after{margin:0 0 0 -1rem}:host{display:inline}fd-menu .fd-menu__list,fd-menu .fd-menu__sublist{flex-wrap:nowrap}\n"], directives: [{ type: i4.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
220
+ MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: MenuComponent, selector: "fd-menu", inputs: { mobile: "mobile", disabled: "disabled", focusTrapped: "focusTrapped", openOnHoverTime: "openOnHoverTime", mobileConfig: "mobileConfig", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", id: "id" }, outputs: { activePath: "activePath" }, providers: [MenuService, PopoverService, contentDensityObserverProviders()], queries: [{ propertyName: "_menuItems", predicate: MenuItemComponent }], viewQueries: [{ propertyName: "_menuRootTemplate", first: true, predicate: ["menuRootTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <nav\n class=\"fd-menu\"\n fdInitialFocus\n [enabled]=\"focusTrapped\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"menu\"\n [class.fd-menu--compact]=\"_contentDensityObserver.isCompact$ | async\"\n [class.fd-menu--mobile]=\"mobile\"\n >\n <ul role=\"none\" class=\"fd-menu__list fd-menu__list--no-shadow\">\n <ng-content></ng-content>\n </ul>\n </nav>\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 */.fd-dialog__body{--fdButton_Menu_Border_Radius:0}.fd-menu{-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;max-width:20rem;padding:0;width:-moz-fit-content;width:fit-content}.fd-menu:after,.fd-menu:before{box-sizing:inherit;font-size:inherit}.fd-menu__list,.fd-menu__sublist{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;-webkit-box-shadow:var(--sapContent_Shadow1);border:0;border-radius:var(--fdButton_Menu_Border_Radius);box-shadow:var(--sapContent_Shadow1);box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;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-menu__list:after,.fd-menu__list:before,.fd-menu__sublist:after,.fd-menu__sublist:before{box-sizing:inherit;font-size:inherit}.fd-menu__list--no-shadow,.fd-menu__sublist--no-shadow{box-shadow:none}.fd-menu__sublist{-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;left:100%;line-height:var(--sapContent_LineHeight);margin:.25rem 0 0 -.25rem;min-width:100%;padding:0;position:absolute;top:0;z-index:2}.fd-menu__sublist:after,.fd-menu__sublist:before{box-sizing:inherit;font-size:inherit}.fd-menu__sublist[dir=rtl],[dir=rtl] .fd-menu__sublist{left:auto;margin:.25rem -.25rem 0 0;right:100%}.fd-menu__sublist[aria-hidden=true]{display:none}.fd-menu__list>.fd-menu__item{position:relative;width:100%}.fd-menu__list--overflow{flex-wrap:nowrap;overflow-y:scroll}.fd-menu__separator{-webkit-box-sizing:border-box;background-color:var(--sapGroup_ContentBorderColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:.0625rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:100%}.fd-menu__separator:after,.fd-menu__separator:before{box-sizing:inherit;font-size:inherit}.fd-menu__item{-webkit-box-sizing:border-box;background-color:var(--sapList_Background);border:0;border-radius: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;position:relative}.fd-menu__item:after,.fd-menu__item:before{box-sizing:inherit;font-size:inherit}.fd-menu__item:first-child,.fd-menu__item:first-child .fd-menu__link:after{border-top-left-radius:var(--fdButton_Menu_Border_Radius);border-top-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu__item:last-child,.fd-menu__item:last-child .fd-menu__link:after{border-bottom-left-radius:var(--fdButton_Menu_Border_Radius);border-bottom-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu__link{-webkit-box-sizing:border-box;align-items:center;border:0;border-radius:inherit;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2.75rem;line-height:var(--sapContent_LineHeight);margin:0;outline:none;padding:.75rem 1rem .75rem .75rem;text-decoration:none;width:100%}.fd-menu__link:after,.fd-menu__link:before{box-sizing:inherit;font-size:inherit}.fd-menu__link.is-focus:after,.fd-menu__link:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);bottom:.0625rem;content:\"\";left:.0625rem;pointer-events:none;position:absolute;right:.0625rem;top:.0625rem}.fd-menu__link.is-hover,.fd-menu__link:hover{background-color:var(--sapList_Hover_Background)}.fd-menu__link.is-selected,.fd-menu__link[aria-selected=true]{background-color:var(--sapList_SelectionBackgroundColor);border-bottom:.0625rem solid var(--sapList_SelectionBorderColor)}.fd-menu__link.is-selected .fd-menu__addon-after,.fd-menu__link.is-selected .fd-menu__addon-before,.fd-menu__link.is-selected .fd-menu__shortcut,.fd-menu__link[aria-selected=true] .fd-menu__addon-after,.fd-menu__link[aria-selected=true] .fd-menu__addon-before,.fd-menu__link[aria-selected=true] .fd-menu__shortcut{color:var(--sapContent_NonInteractiveIconColor)}.fd-menu__link.is-selected.is-hover:not(:active):not(.is-active),.fd-menu__link.is-selected:hover:not(:active):not(.is-active),.fd-menu__link[aria-selected=true].is-hover:not(:active):not(.is-active),.fd-menu__link[aria-selected=true]:hover:not(:active):not(.is-active){background-color:var(--sapList_Hover_SelectionBackground)}.fd-menu__link.is-selected.is-focus,.fd-menu__link.is-selected:focus,.fd-menu__link[aria-selected=true].is-focus,.fd-menu__link[aria-selected=true]:focus{z-index:5}.fd-menu__link.is-selected.is-focus:after,.fd-menu__link.is-selected:focus:after,.fd-menu__link[aria-selected=true].is-focus:after,.fd-menu__link[aria-selected=true]:focus:after{bottom:.125rem}.fd-menu__link.is-active,.fd-menu__link:active{background-color:var(--sapList_Active_Background);color:var(--sapList_Active_TextColor)}.fd-menu__link.is-active:after,.fd-menu__link:active:after{display:none}.fd-menu__link.is-active .fd-menu__addon-after,.fd-menu__link.is-active .fd-menu__addon-before,.fd-menu__link.is-active .fd-menu__shortcut,.fd-menu__link.is-active .fd-menu__title,.fd-menu__link:active .fd-menu__addon-after,.fd-menu__link:active .fd-menu__addon-before,.fd-menu__link:active .fd-menu__shortcut,.fd-menu__link:active .fd-menu__title{color:var(--sapList_Active_TextColor)}.fd-menu__link.is-active.is-focus,.fd-menu__link.is-active:focus,.fd-menu__link:active.is-focus,.fd-menu__link:active:focus{outline-color:var(--fdMenu_Active_State_Focus);z-index:5}.fd-menu__link.is-disabled,.fd-menu__link:disabled,.fd-menu__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-menu__link.is-disabled.is-focus,.fd-menu__link.is-disabled:focus,.fd-menu__link:disabled.is-focus,.fd-menu__link:disabled:focus,.fd-menu__link[aria-disabled=true].is-focus,.fd-menu__link[aria-disabled=true]:focus{z-index:5}.fd-menu__link.is-disabled.is-focus:after,.fd-menu__link.is-disabled:focus:after,.fd-menu__link:disabled.is-focus:after,.fd-menu__link:disabled:focus:after,.fd-menu__link[aria-disabled=true].is-focus:after,.fd-menu__link[aria-disabled=true]:focus:after{display:none}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active){background-color:var(--sapList_SelectionBackgroundColor);border-bottom:.0625rem solid var(--sapList_SelectionBorderColor)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__addon-after,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__addon-before,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__shortcut,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__addon-after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__addon-before,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__shortcut{color:var(--sapContent_NonInteractiveIconColor)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-hover:not(:active):not(.is-active),.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):hover:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-hover:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):hover:not(:active):not(.is-active){background-color:var(--sapList_Hover_SelectionBackground)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-focus,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):focus,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-focus,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):focus{z-index:5}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-focus:after,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):focus:after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-focus:after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):focus:after{bottom:.125rem}.fd-menu__title{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapList_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;text-shadow:var(--fdMenu_Text_Shadow);white-space:nowrap;width:100%}.fd-menu__title:after,.fd-menu__title:before{box-sizing:inherit;font-size:inherit}.fd-menu__addon-after,.fd-menu__addon-before{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:transparent;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:var(--sapFontLargeSize);font-weight:400;height:1.25rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:2.25rem;padding:0;text-shadow:var(--fdMenu_Text_Shadow);width:2.25rem}.fd-menu__addon-after:after,.fd-menu__addon-after:before,.fd-menu__addon-before:after,.fd-menu__addon-before:before{box-sizing:inherit;font-size:inherit}.fd-menu__addon-after [class*=sap-icon],.fd-menu__addon-after[class*=sap-icon],.fd-menu__addon-before [class*=sap-icon],.fd-menu__addon-before[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-menu__addon-before{margin:0 0 0 -.75rem}.fd-menu__addon-after,.fd-menu__addon-before[dir=rtl],[dir=rtl] .fd-menu__addon-before{margin:0 -1rem 0 0}.fd-menu__addon-after[dir=rtl],[dir=rtl] .fd-menu__addon-after{margin:0 0 0 -.75rem}.fd-menu__addon-after--submenu{font-size:var(--sapFontSmallSize)}.fd-menu__addon-after--submenu:before{content:\"\\e066\"}.fd-menu__addon-after--submenu:before,.fd-menu__addon-after--submenu[dir=rtl]:before,[dir=rtl] .fd-menu__addon-after--submenu:before{text-rendering:optimizeLegibility;font-family:SAP-icons;text-align:center;text-decoration:inherit;text-transform:none}.fd-menu__addon-after--submenu[dir=rtl]:before,[dir=rtl] .fd-menu__addon-after--submenu:before{content:\"\\e067\"}.fd-menu__shortcut{-webkit-box-sizing:border-box;-ms-flex-negative:0;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;flex-shrink:0;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0 0 0 1rem;text-overflow:ellipsis;white-space:nowrap}.fd-menu__shortcut:after,.fd-menu__shortcut:before{box-sizing:inherit;font-size:inherit}.fd-menu__shortcut[dir=rtl],[dir=rtl] .fd-menu__shortcut{padding-left:0;padding-right:1rem}.fd-menu--overflow{-webkit-box-shadow:var(--sapContent_Shadow1);border-radius:var(--fdButton_Menu_Border_Radius);box-shadow:var(--sapContent_Shadow1);overflow-y:scroll}.fd-menu--overflow .fd-menu__list{box-shadow:none}.fd-menu--overflow .fd-menu__item:first-child{border-top-right-radius:0}.fd-menu--overflow .fd-menu__item:first-child[dir=rtl],[dir=rtl] .fd-menu--overflow .fd-menu__item:first-child{border-top-left-radius:0;border-top-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu--overflow .fd-menu__item:last-child{border-bottom-right-radius:0}.fd-menu--overflow .fd-menu__item:last-child[dir=rtl],[dir=rtl] .fd-menu--overflow .fd-menu__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu--full-width{max-width:100%}.fd-menu--compact .fd-menu__link{height:2rem;padding:.375rem .75rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-after,.fd-menu--compact .fd-menu__link .fd-menu__addon-before{min-width:2rem;width:2rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-before{margin:0 0 0 -.5rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-after,.fd-menu--compact .fd-menu__link[dir=rtl] .fd-menu__addon-before,[dir=rtl] .fd-menu--compact .fd-menu__link .fd-menu__addon-before{margin:0 -.75rem 0 0}.fd-menu--compact .fd-menu__link[dir=rtl] .fd-menu__addon-after,[dir=rtl] .fd-menu--compact .fd-menu__link .fd-menu__addon-after{margin:0 0 0 -.5rem}.fd-menu--mobile{max-width:100%;width:100%}.fd-menu--mobile .fd-menu__list,.fd-menu--mobile .fd-menu__sublist{-webkit-box-shadow:none;border-radius:0;box-shadow:none;margin:0;position:static}.fd-menu--mobile .fd-menu__list .fd-menu__item,.fd-menu--mobile .fd-menu__sublist .fd-menu__item{border-radius:0}.fd-menu--mobile .fd-menu__list .fd-menu__link,.fd-menu--mobile .fd-menu__sublist .fd-menu__link{padding:.75rem 1rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-after,.fd-menu--mobile .fd-menu__list .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{min-width:2.75rem;width:2.75rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{margin:0 0 0 -1rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-after,.fd-menu--mobile .fd-menu__list[dir=rtl] .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist[dir=rtl] .fd-menu__addon-before,[dir=rtl] .fd-menu--mobile .fd-menu__list .fd-menu__addon-before,[dir=rtl] .fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{margin:0 -1rem 0 0}.fd-menu--mobile .fd-menu__list[dir=rtl] .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist[dir=rtl] .fd-menu__addon-after,[dir=rtl] .fd-menu--mobile .fd-menu__list .fd-menu__addon-after,[dir=rtl] .fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after{margin:0 0 0 -1rem}:host{display:inline}fd-menu .fd-menu__list,fd-menu .fd-menu__sublist{flex-wrap:nowrap}.fd-popover--menu.fd-popover__popper{overflow:visible!important}\n"], directives: [{ type: i4.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
217
221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: MenuComponent, decorators: [{
218
222
  type: Component,
219
- args: [{ selector: 'fd-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [MenuService, PopoverService, contentDensityObserverProviders()], template: "<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <nav\n class=\"fd-menu\"\n fdInitialFocus\n [enabled]=\"focusTrapped\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"menu\"\n [class.fd-menu--compact]=\"_contentDensityObserver.isCompact$ | async\"\n [class.fd-menu--mobile]=\"mobile\"\n >\n <ul role=\"none\" class=\"fd-menu__list fd-menu__list--no-shadow\">\n <ng-content></ng-content>\n </ul>\n </nav>\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 */.fd-dialog__body{--fdButton_Menu_Border_Radius:0}.fd-menu{-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;max-width:20rem;padding:0;width:-moz-fit-content;width:fit-content}.fd-menu:after,.fd-menu:before{box-sizing:inherit;font-size:inherit}.fd-menu__list,.fd-menu__sublist{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;-webkit-box-shadow:var(--sapContent_Shadow1);border:0;border-radius:var(--fdButton_Menu_Border_Radius);box-shadow:var(--sapContent_Shadow1);box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;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-menu__list:after,.fd-menu__list:before,.fd-menu__sublist:after,.fd-menu__sublist:before{box-sizing:inherit;font-size:inherit}.fd-menu__list--no-shadow,.fd-menu__sublist--no-shadow{box-shadow:none}.fd-menu__sublist{-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;left:100%;line-height:var(--sapContent_LineHeight);margin:.25rem 0 0 -.25rem;min-width:100%;padding:0;position:absolute;top:0;z-index:2}.fd-menu__sublist:after,.fd-menu__sublist:before{box-sizing:inherit;font-size:inherit}.fd-menu__sublist[dir=rtl],[dir=rtl] .fd-menu__sublist{left:auto;margin:.25rem -.25rem 0 0;right:100%}.fd-menu__sublist[aria-hidden=true]{display:none}.fd-menu__list>.fd-menu__item{position:relative;width:100%}.fd-menu__list--overflow{flex-wrap:nowrap;overflow-y:scroll}.fd-menu__separator{-webkit-box-sizing:border-box;background-color:var(--sapGroup_ContentBorderColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:.0625rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:100%}.fd-menu__separator:after,.fd-menu__separator:before{box-sizing:inherit;font-size:inherit}.fd-menu__item{-webkit-box-sizing:border-box;background-color:var(--sapList_Background);border:0;border-radius: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;position:relative}.fd-menu__item:after,.fd-menu__item:before{box-sizing:inherit;font-size:inherit}.fd-menu__item:first-child,.fd-menu__item:first-child .fd-menu__link:after{border-top-left-radius:var(--fdButton_Menu_Border_Radius);border-top-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu__item:last-child,.fd-menu__item:last-child .fd-menu__link:after{border-bottom-left-radius:var(--fdButton_Menu_Border_Radius);border-bottom-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu__link{-webkit-box-sizing:border-box;align-items:center;border:0;border-radius:inherit;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2.75rem;line-height:var(--sapContent_LineHeight);margin:0;outline:none;padding:.75rem 1rem .75rem .75rem;text-decoration:none;width:100%}.fd-menu__link:after,.fd-menu__link:before{box-sizing:inherit;font-size:inherit}.fd-menu__link.is-focus:after,.fd-menu__link:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);bottom:.0625rem;content:\"\";left:.0625rem;pointer-events:none;position:absolute;right:.0625rem;top:.0625rem}.fd-menu__link.is-hover,.fd-menu__link:hover{background-color:var(--sapList_Hover_Background)}.fd-menu__link.is-selected,.fd-menu__link[aria-selected=true]{background-color:var(--sapList_SelectionBackgroundColor);border-bottom:.0625rem solid var(--sapList_SelectionBorderColor)}.fd-menu__link.is-selected .fd-menu__addon-after,.fd-menu__link.is-selected .fd-menu__addon-before,.fd-menu__link.is-selected .fd-menu__shortcut,.fd-menu__link[aria-selected=true] .fd-menu__addon-after,.fd-menu__link[aria-selected=true] .fd-menu__addon-before,.fd-menu__link[aria-selected=true] .fd-menu__shortcut{color:var(--sapContent_NonInteractiveIconColor)}.fd-menu__link.is-selected.is-hover:not(:active):not(.is-active),.fd-menu__link.is-selected:hover:not(:active):not(.is-active),.fd-menu__link[aria-selected=true].is-hover:not(:active):not(.is-active),.fd-menu__link[aria-selected=true]:hover:not(:active):not(.is-active){background-color:var(--sapList_Hover_SelectionBackground)}.fd-menu__link.is-selected.is-focus,.fd-menu__link.is-selected:focus,.fd-menu__link[aria-selected=true].is-focus,.fd-menu__link[aria-selected=true]:focus{z-index:5}.fd-menu__link.is-selected.is-focus:after,.fd-menu__link.is-selected:focus:after,.fd-menu__link[aria-selected=true].is-focus:after,.fd-menu__link[aria-selected=true]:focus:after{bottom:.125rem}.fd-menu__link.is-active,.fd-menu__link:active{background-color:var(--sapList_Active_Background);color:var(--sapList_Active_TextColor)}.fd-menu__link.is-active:after,.fd-menu__link:active:after{display:none}.fd-menu__link.is-active .fd-menu__addon-after,.fd-menu__link.is-active .fd-menu__addon-before,.fd-menu__link.is-active .fd-menu__shortcut,.fd-menu__link.is-active .fd-menu__title,.fd-menu__link:active .fd-menu__addon-after,.fd-menu__link:active .fd-menu__addon-before,.fd-menu__link:active .fd-menu__shortcut,.fd-menu__link:active .fd-menu__title{color:var(--sapList_Active_TextColor)}.fd-menu__link.is-active.is-focus,.fd-menu__link.is-active:focus,.fd-menu__link:active.is-focus,.fd-menu__link:active:focus{outline-color:var(--fdMenu_Active_State_Focus);z-index:5}.fd-menu__link.is-disabled,.fd-menu__link:disabled,.fd-menu__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-menu__link.is-disabled.is-focus,.fd-menu__link.is-disabled:focus,.fd-menu__link:disabled.is-focus,.fd-menu__link:disabled:focus,.fd-menu__link[aria-disabled=true].is-focus,.fd-menu__link[aria-disabled=true]:focus{z-index:5}.fd-menu__link.is-disabled.is-focus:after,.fd-menu__link.is-disabled:focus:after,.fd-menu__link:disabled.is-focus:after,.fd-menu__link:disabled:focus:after,.fd-menu__link[aria-disabled=true].is-focus:after,.fd-menu__link[aria-disabled=true]:focus:after{display:none}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active){background-color:var(--sapList_SelectionBackgroundColor);border-bottom:.0625rem solid var(--sapList_SelectionBorderColor)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__addon-after,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__addon-before,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__shortcut,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__addon-after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__addon-before,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__shortcut{color:var(--sapContent_NonInteractiveIconColor)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-hover:not(:active):not(.is-active),.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):hover:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-hover:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):hover:not(:active):not(.is-active){background-color:var(--sapList_Hover_SelectionBackground)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-focus,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):focus,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-focus,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):focus{z-index:5}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-focus:after,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):focus:after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-focus:after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):focus:after{bottom:.125rem}.fd-menu__title{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapList_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;text-shadow:var(--fdMenu_Text_Shadow);white-space:nowrap;width:100%}.fd-menu__title:after,.fd-menu__title:before{box-sizing:inherit;font-size:inherit}.fd-menu__addon-after,.fd-menu__addon-before{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:transparent;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:var(--sapFontLargeSize);font-weight:400;height:1.25rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:2.25rem;padding:0;text-shadow:var(--fdMenu_Text_Shadow);width:2.25rem}.fd-menu__addon-after:after,.fd-menu__addon-after:before,.fd-menu__addon-before:after,.fd-menu__addon-before:before{box-sizing:inherit;font-size:inherit}.fd-menu__addon-after [class*=sap-icon],.fd-menu__addon-after[class*=sap-icon],.fd-menu__addon-before [class*=sap-icon],.fd-menu__addon-before[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-menu__addon-before{margin:0 0 0 -.75rem}.fd-menu__addon-after,.fd-menu__addon-before[dir=rtl],[dir=rtl] .fd-menu__addon-before{margin:0 -1rem 0 0}.fd-menu__addon-after[dir=rtl],[dir=rtl] .fd-menu__addon-after{margin:0 0 0 -.75rem}.fd-menu__addon-after--submenu{font-size:var(--sapFontSmallSize)}.fd-menu__addon-after--submenu:before{content:\"\\e066\"}.fd-menu__addon-after--submenu:before,.fd-menu__addon-after--submenu[dir=rtl]:before,[dir=rtl] .fd-menu__addon-after--submenu:before{text-rendering:optimizeLegibility;font-family:SAP-icons;text-align:center;text-decoration:inherit;text-transform:none}.fd-menu__addon-after--submenu[dir=rtl]:before,[dir=rtl] .fd-menu__addon-after--submenu:before{content:\"\\e067\"}.fd-menu__shortcut{-webkit-box-sizing:border-box;-ms-flex-negative:0;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;flex-shrink:0;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0 0 0 1rem;text-overflow:ellipsis;white-space:nowrap}.fd-menu__shortcut:after,.fd-menu__shortcut:before{box-sizing:inherit;font-size:inherit}.fd-menu__shortcut[dir=rtl],[dir=rtl] .fd-menu__shortcut{padding-left:0;padding-right:1rem}.fd-menu--overflow{-webkit-box-shadow:var(--sapContent_Shadow1);border-radius:var(--fdButton_Menu_Border_Radius);box-shadow:var(--sapContent_Shadow1);overflow-y:scroll}.fd-menu--overflow .fd-menu__list{box-shadow:none}.fd-menu--overflow .fd-menu__item:first-child{border-top-right-radius:0}.fd-menu--overflow .fd-menu__item:first-child[dir=rtl],[dir=rtl] .fd-menu--overflow .fd-menu__item:first-child{border-top-left-radius:0;border-top-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu--overflow .fd-menu__item:last-child{border-bottom-right-radius:0}.fd-menu--overflow .fd-menu__item:last-child[dir=rtl],[dir=rtl] .fd-menu--overflow .fd-menu__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu--full-width{max-width:100%}.fd-menu--compact .fd-menu__link{height:2rem;padding:.375rem .75rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-after,.fd-menu--compact .fd-menu__link .fd-menu__addon-before{min-width:2rem;width:2rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-before{margin:0 0 0 -.5rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-after,.fd-menu--compact .fd-menu__link[dir=rtl] .fd-menu__addon-before,[dir=rtl] .fd-menu--compact .fd-menu__link .fd-menu__addon-before{margin:0 -.75rem 0 0}.fd-menu--compact .fd-menu__link[dir=rtl] .fd-menu__addon-after,[dir=rtl] .fd-menu--compact .fd-menu__link .fd-menu__addon-after{margin:0 0 0 -.5rem}.fd-menu--mobile{max-width:100%;width:100%}.fd-menu--mobile .fd-menu__list,.fd-menu--mobile .fd-menu__sublist{-webkit-box-shadow:none;border-radius:0;box-shadow:none;margin:0;position:static}.fd-menu--mobile .fd-menu__list .fd-menu__item,.fd-menu--mobile .fd-menu__sublist .fd-menu__item{border-radius:0}.fd-menu--mobile .fd-menu__list .fd-menu__link,.fd-menu--mobile .fd-menu__sublist .fd-menu__link{padding:.75rem 1rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-after,.fd-menu--mobile .fd-menu__list .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{min-width:2.75rem;width:2.75rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{margin:0 0 0 -1rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-after,.fd-menu--mobile .fd-menu__list[dir=rtl] .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist[dir=rtl] .fd-menu__addon-before,[dir=rtl] .fd-menu--mobile .fd-menu__list .fd-menu__addon-before,[dir=rtl] .fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{margin:0 -1rem 0 0}.fd-menu--mobile .fd-menu__list[dir=rtl] .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist[dir=rtl] .fd-menu__addon-after,[dir=rtl] .fd-menu--mobile .fd-menu__list .fd-menu__addon-after,[dir=rtl] .fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after{margin:0 0 0 -1rem}:host{display:inline}fd-menu .fd-menu__list,fd-menu .fd-menu__sublist{flex-wrap:nowrap}\n"] }]
223
+ args: [{ selector: 'fd-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [MenuService, PopoverService, contentDensityObserverProviders()], template: "<ng-container #viewContainer></ng-container>\n\n<ng-template #menuRootTemplate>\n <nav\n class=\"fd-menu\"\n fdInitialFocus\n [enabled]=\"focusTrapped\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"menu\"\n [class.fd-menu--compact]=\"_contentDensityObserver.isCompact$ | async\"\n [class.fd-menu--mobile]=\"mobile\"\n >\n <ul role=\"none\" class=\"fd-menu__list fd-menu__list--no-shadow\">\n <ng-content></ng-content>\n </ul>\n </nav>\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 */.fd-dialog__body{--fdButton_Menu_Border_Radius:0}.fd-menu{-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;max-width:20rem;padding:0;width:-moz-fit-content;width:fit-content}.fd-menu:after,.fd-menu:before{box-sizing:inherit;font-size:inherit}.fd-menu__list,.fd-menu__sublist{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;-webkit-box-shadow:var(--sapContent_Shadow1);border:0;border-radius:var(--fdButton_Menu_Border_Radius);box-shadow:var(--sapContent_Shadow1);box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;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-menu__list:after,.fd-menu__list:before,.fd-menu__sublist:after,.fd-menu__sublist:before{box-sizing:inherit;font-size:inherit}.fd-menu__list--no-shadow,.fd-menu__sublist--no-shadow{box-shadow:none}.fd-menu__sublist{-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;left:100%;line-height:var(--sapContent_LineHeight);margin:.25rem 0 0 -.25rem;min-width:100%;padding:0;position:absolute;top:0;z-index:2}.fd-menu__sublist:after,.fd-menu__sublist:before{box-sizing:inherit;font-size:inherit}.fd-menu__sublist[dir=rtl],[dir=rtl] .fd-menu__sublist{left:auto;margin:.25rem -.25rem 0 0;right:100%}.fd-menu__sublist[aria-hidden=true]{display:none}.fd-menu__list>.fd-menu__item{position:relative;width:100%}.fd-menu__list--overflow{flex-wrap:nowrap;overflow-y:scroll}.fd-menu__separator{-webkit-box-sizing:border-box;background-color:var(--sapGroup_ContentBorderColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:.0625rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:100%}.fd-menu__separator:after,.fd-menu__separator:before{box-sizing:inherit;font-size:inherit}.fd-menu__item{-webkit-box-sizing:border-box;background-color:var(--sapList_Background);border:0;border-radius: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;position:relative}.fd-menu__item:after,.fd-menu__item:before{box-sizing:inherit;font-size:inherit}.fd-menu__item:first-child,.fd-menu__item:first-child .fd-menu__link:after{border-top-left-radius:var(--fdButton_Menu_Border_Radius);border-top-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu__item:last-child,.fd-menu__item:last-child .fd-menu__link:after{border-bottom-left-radius:var(--fdButton_Menu_Border_Radius);border-bottom-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu__link{-webkit-box-sizing:border-box;align-items:center;border:0;border-radius:inherit;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2.75rem;line-height:var(--sapContent_LineHeight);margin:0;outline:none;padding:.75rem 1rem .75rem .75rem;text-decoration:none;width:100%}.fd-menu__link:after,.fd-menu__link:before{box-sizing:inherit;font-size:inherit}.fd-menu__link.is-focus:after,.fd-menu__link:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);bottom:.0625rem;content:\"\";left:.0625rem;pointer-events:none;position:absolute;right:.0625rem;top:.0625rem}.fd-menu__link.is-hover,.fd-menu__link:hover{background-color:var(--sapList_Hover_Background)}.fd-menu__link.is-selected,.fd-menu__link[aria-selected=true]{background-color:var(--sapList_SelectionBackgroundColor);border-bottom:.0625rem solid var(--sapList_SelectionBorderColor)}.fd-menu__link.is-selected .fd-menu__addon-after,.fd-menu__link.is-selected .fd-menu__addon-before,.fd-menu__link.is-selected .fd-menu__shortcut,.fd-menu__link[aria-selected=true] .fd-menu__addon-after,.fd-menu__link[aria-selected=true] .fd-menu__addon-before,.fd-menu__link[aria-selected=true] .fd-menu__shortcut{color:var(--sapContent_NonInteractiveIconColor)}.fd-menu__link.is-selected.is-hover:not(:active):not(.is-active),.fd-menu__link.is-selected:hover:not(:active):not(.is-active),.fd-menu__link[aria-selected=true].is-hover:not(:active):not(.is-active),.fd-menu__link[aria-selected=true]:hover:not(:active):not(.is-active){background-color:var(--sapList_Hover_SelectionBackground)}.fd-menu__link.is-selected.is-focus,.fd-menu__link.is-selected:focus,.fd-menu__link[aria-selected=true].is-focus,.fd-menu__link[aria-selected=true]:focus{z-index:5}.fd-menu__link.is-selected.is-focus:after,.fd-menu__link.is-selected:focus:after,.fd-menu__link[aria-selected=true].is-focus:after,.fd-menu__link[aria-selected=true]:focus:after{bottom:.125rem}.fd-menu__link.is-active,.fd-menu__link:active{background-color:var(--sapList_Active_Background);color:var(--sapList_Active_TextColor)}.fd-menu__link.is-active:after,.fd-menu__link:active:after{display:none}.fd-menu__link.is-active .fd-menu__addon-after,.fd-menu__link.is-active .fd-menu__addon-before,.fd-menu__link.is-active .fd-menu__shortcut,.fd-menu__link.is-active .fd-menu__title,.fd-menu__link:active .fd-menu__addon-after,.fd-menu__link:active .fd-menu__addon-before,.fd-menu__link:active .fd-menu__shortcut,.fd-menu__link:active .fd-menu__title{color:var(--sapList_Active_TextColor)}.fd-menu__link.is-active.is-focus,.fd-menu__link.is-active:focus,.fd-menu__link:active.is-focus,.fd-menu__link:active:focus{outline-color:var(--fdMenu_Active_State_Focus);z-index:5}.fd-menu__link.is-disabled,.fd-menu__link:disabled,.fd-menu__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-menu__link.is-disabled.is-focus,.fd-menu__link.is-disabled:focus,.fd-menu__link:disabled.is-focus,.fd-menu__link:disabled:focus,.fd-menu__link[aria-disabled=true].is-focus,.fd-menu__link[aria-disabled=true]:focus{z-index:5}.fd-menu__link.is-disabled.is-focus:after,.fd-menu__link.is-disabled:focus:after,.fd-menu__link:disabled.is-focus:after,.fd-menu__link:disabled:focus:after,.fd-menu__link[aria-disabled=true].is-focus:after,.fd-menu__link[aria-disabled=true]:focus:after{display:none}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active){background-color:var(--sapList_SelectionBackgroundColor);border-bottom:.0625rem solid var(--sapList_SelectionBorderColor)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__addon-after,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__addon-before,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active) .fd-menu__shortcut,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__addon-after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__addon-before,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active) .fd-menu__shortcut{color:var(--sapContent_NonInteractiveIconColor)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-hover:not(:active):not(.is-active),.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):hover:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-hover:not(:active):not(.is-active),.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):hover:not(:active):not(.is-active){background-color:var(--sapList_Hover_SelectionBackground)}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-focus,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):focus,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-focus,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):focus{z-index:5}.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active).is-focus:after,.fd-menu__link.has-child.is-expanded:not(:active):not(.is-active):focus:after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active).is-focus:after,.fd-menu__link.has-child[aria-expanded=true]:not(:active):not(.is-active):focus:after{bottom:.125rem}.fd-menu__title{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapList_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;text-shadow:var(--fdMenu_Text_Shadow);white-space:nowrap;width:100%}.fd-menu__title:after,.fd-menu__title:before{box-sizing:inherit;font-size:inherit}.fd-menu__addon-after,.fd-menu__addon-before{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:transparent;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:var(--sapFontLargeSize);font-weight:400;height:1.25rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:2.25rem;padding:0;text-shadow:var(--fdMenu_Text_Shadow);width:2.25rem}.fd-menu__addon-after:after,.fd-menu__addon-after:before,.fd-menu__addon-before:after,.fd-menu__addon-before:before{box-sizing:inherit;font-size:inherit}.fd-menu__addon-after [class*=sap-icon],.fd-menu__addon-after[class*=sap-icon],.fd-menu__addon-before [class*=sap-icon],.fd-menu__addon-before[class*=sap-icon]{background:inherit;border-radius:inherit;color:inherit;font-size:inherit;line-height:1}.fd-menu__addon-before{margin:0 0 0 -.75rem}.fd-menu__addon-after,.fd-menu__addon-before[dir=rtl],[dir=rtl] .fd-menu__addon-before{margin:0 -1rem 0 0}.fd-menu__addon-after[dir=rtl],[dir=rtl] .fd-menu__addon-after{margin:0 0 0 -.75rem}.fd-menu__addon-after--submenu{font-size:var(--sapFontSmallSize)}.fd-menu__addon-after--submenu:before{content:\"\\e066\"}.fd-menu__addon-after--submenu:before,.fd-menu__addon-after--submenu[dir=rtl]:before,[dir=rtl] .fd-menu__addon-after--submenu:before{text-rendering:optimizeLegibility;font-family:SAP-icons;text-align:center;text-decoration:inherit;text-transform:none}.fd-menu__addon-after--submenu[dir=rtl]:before,[dir=rtl] .fd-menu__addon-after--submenu:before{content:\"\\e067\"}.fd-menu__shortcut{-webkit-box-sizing:border-box;-ms-flex-negative:0;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;flex-shrink:0;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0 0 0 1rem;text-overflow:ellipsis;white-space:nowrap}.fd-menu__shortcut:after,.fd-menu__shortcut:before{box-sizing:inherit;font-size:inherit}.fd-menu__shortcut[dir=rtl],[dir=rtl] .fd-menu__shortcut{padding-left:0;padding-right:1rem}.fd-menu--overflow{-webkit-box-shadow:var(--sapContent_Shadow1);border-radius:var(--fdButton_Menu_Border_Radius);box-shadow:var(--sapContent_Shadow1);overflow-y:scroll}.fd-menu--overflow .fd-menu__list{box-shadow:none}.fd-menu--overflow .fd-menu__item:first-child{border-top-right-radius:0}.fd-menu--overflow .fd-menu__item:first-child[dir=rtl],[dir=rtl] .fd-menu--overflow .fd-menu__item:first-child{border-top-left-radius:0;border-top-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu--overflow .fd-menu__item:last-child{border-bottom-right-radius:0}.fd-menu--overflow .fd-menu__item:last-child[dir=rtl],[dir=rtl] .fd-menu--overflow .fd-menu__item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:var(--fdButton_Menu_Border_Radius)}.fd-menu--full-width{max-width:100%}.fd-menu--compact .fd-menu__link{height:2rem;padding:.375rem .75rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-after,.fd-menu--compact .fd-menu__link .fd-menu__addon-before{min-width:2rem;width:2rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-before{margin:0 0 0 -.5rem}.fd-menu--compact .fd-menu__link .fd-menu__addon-after,.fd-menu--compact .fd-menu__link[dir=rtl] .fd-menu__addon-before,[dir=rtl] .fd-menu--compact .fd-menu__link .fd-menu__addon-before{margin:0 -.75rem 0 0}.fd-menu--compact .fd-menu__link[dir=rtl] .fd-menu__addon-after,[dir=rtl] .fd-menu--compact .fd-menu__link .fd-menu__addon-after{margin:0 0 0 -.5rem}.fd-menu--mobile{max-width:100%;width:100%}.fd-menu--mobile .fd-menu__list,.fd-menu--mobile .fd-menu__sublist{-webkit-box-shadow:none;border-radius:0;box-shadow:none;margin:0;position:static}.fd-menu--mobile .fd-menu__list .fd-menu__item,.fd-menu--mobile .fd-menu__sublist .fd-menu__item{border-radius:0}.fd-menu--mobile .fd-menu__list .fd-menu__link,.fd-menu--mobile .fd-menu__sublist .fd-menu__link{padding:.75rem 1rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-after,.fd-menu--mobile .fd-menu__list .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{min-width:2.75rem;width:2.75rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{margin:0 0 0 -1rem}.fd-menu--mobile .fd-menu__list .fd-menu__addon-after,.fd-menu--mobile .fd-menu__list[dir=rtl] .fd-menu__addon-before,.fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist[dir=rtl] .fd-menu__addon-before,[dir=rtl] .fd-menu--mobile .fd-menu__list .fd-menu__addon-before,[dir=rtl] .fd-menu--mobile .fd-menu__sublist .fd-menu__addon-before{margin:0 -1rem 0 0}.fd-menu--mobile .fd-menu__list[dir=rtl] .fd-menu__addon-after,.fd-menu--mobile .fd-menu__sublist[dir=rtl] .fd-menu__addon-after,[dir=rtl] .fd-menu--mobile .fd-menu__list .fd-menu__addon-after,[dir=rtl] .fd-menu--mobile .fd-menu__sublist .fd-menu__addon-after{margin:0 0 0 -1rem}:host{display:inline}fd-menu .fd-menu__list,fd-menu .fd-menu__sublist{flex-wrap:nowrap}.fd-popover--menu.fd-popover__popper{overflow:visible!important}\n"] }]
220
224
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DialogConfig, decorators: [{
221
225
  type: Optional
222
226
  }] }, { type: i0.Renderer2 }, { type: i2.MenuService }, { type: i0.ChangeDetectorRef }, { type: i3.PopoverService }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: i4.DynamicComponentService, decorators: [{
223
227
  type: Optional
224
- }] }, { type: i5.ContentDensityObserver }]; }, propDecorators: { setMobileMode: [{
225
- type: Input,
226
- args: ['mobile']
228
+ }] }, { type: i5.ContentDensityObserver }]; }, propDecorators: { mobile: [{
229
+ type: Input
227
230
  }], disabled: [{
228
231
  type: Input
229
232
  }], focusTrapped: [{
@@ -240,11 +243,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
240
243
  type: Input
241
244
  }], activePath: [{
242
245
  type: Output
243
- }], menuRootTemplate: [{
246
+ }], _menuRootTemplate: [{
244
247
  type: ViewChild,
245
248
  args: ['menuRootTemplate']
246
- }], menuItems: [{
249
+ }], _menuItems: [{
247
250
  type: ContentChildren,
248
- args: [MenuItemComponent, { descendants: true }]
251
+ args: [MenuItemComponent]
249
252
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9tZW51L21lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbWVudS9tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFpQixNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7OztBQUVoSCxJQUFJLFlBQVksR0FB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RGdDYSxhQUFhO2tCQVJ6QixTQUFTOytCQUNJLFNBQVMsaUJBR0osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsQ0FBQzs7MEJBMkV0RSxRQUFROzswQkFPUixRQUFRO2lGQXpFVCxhQUFhO3NCQURoQixLQUFLO3VCQUFDLFFBQVE7Z0JBUWYsUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sRUFBRTtzQkFERCxLQUFLO2dCQUtHLFVBQVU7c0JBRGxCLE1BQU07Z0JBS1AsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUs3QixTQUFTO3NCQURSLGVBQWU7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBEaWFsb2dDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IE1vYmlsZU1vZGVDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbW9iaWxlLW1vZGUnO1xuaW1wb3J0IHsgQmFzZVBvcG92ZXJDbGFzcywgUG9wb3ZlclNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuXG5pbXBvcnQgeyBNZW51TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LW1vYmlsZS9tZW51LW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVudU1vYmlsZU1vZHVsZSB9IGZyb20gJy4vbWVudS1tb2JpbGUvbWVudS1tb2JpbGUubW9kdWxlJztcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgTUVOVV9DT01QT05FTlQsIE1lbnVJbnRlcmZhY2UgfSBmcm9tICcuL21lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LWl0ZW0vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5cbmxldCBtZW51VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFRoZSBjb21wb25lbnQgdGhhdCByZXByZXNlbnRzIGEgbWVudS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ21lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW01lbnVTZXJ2aWNlLCBQb3BvdmVyU2VydmljZSwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpXVxufSlcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBCYXNlUG9wb3ZlckNsYXNzXG4gICAgaW1wbGVtZW50cyBNZW51SW50ZXJmYWNlLCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdFxue1xuICAgIC8qKiBTZXQgbWVudSBpbiBtb2JpbGUgbW9kZSAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdtb2JpbGUnKVxuICAgIHNldCBzZXRNb2JpbGVNb2RlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubW9iaWxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX21lbnVTZXJ2aWNlLnNldE1lbnVNb2RlKHRoaXMubW9iaWxlKTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBpcyBkaXNhYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBzaG91bGQgYmUgZm9jdXNUcmFwcGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNUcmFwcGVkID0gdHJ1ZTtcblxuICAgIC8qKiBPcGVuIHN1Ym1lbnUgb24gaG92ZXIgYWZ0ZXIgZ2l2ZW4gbWlsbGlzZWNvbmRzICovXG4gICAgQElucHV0KClcbiAgICBvcGVuT25Ib3ZlclRpbWUgPSAwO1xuXG4gICAgLyoqIERpc3BsYXkgbWVudSB3aXRob3V0IGludGVncmF0ZWQgcG9wb3ZlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlQ29uZmlnOiBNb2JpbGVNb2RlQ29uZmlnID0geyBjYW5jZWxCdXR0b25UZXh0OiAnQ2FuY2VsJyB9O1xuXG4gICAgLyoqIEFyaWEtbGFiZWwgZm9yIG5hdmlnYXRpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBcmlhLUxhYmVsbGVkYnkgZm9yIGVsZW1lbnQgZGVzY3JpYmluZyBuYXZpZ2F0aW9uICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRieTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBJZCBvZiB0aGUgY29udHJvbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlkID0gYGZkLW1lbnUtJHttZW51VW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIEVtaXRzIGFycmF5IG9mIGFjdGl2ZSBtZW51IGl0ZW1zICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlUGF0aDogRXZlbnRFbWl0dGVyPE1lbnVJdGVtQ29tcG9uZW50W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxNZW51SXRlbUNvbXBvbmVudFtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gUmVmZXJlbmNlIHRvIHRoZSBtZW51IHJvb3QgdGVtcGxhdGUgKi9cbiAgICBAVmlld0NoaWxkKCdtZW51Um9vdFRlbXBsYXRlJylcbiAgICBtZW51Um9vdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gUmVmZXJlbmNlIHRvIGFsbCBtZW51IEl0ZW1zICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihNZW51SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIG1lbnVJdGVtczogUXVlcnlMaXN0PE1lbnVJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBXaGV0aGVyIHVzZSBtZW51IGluIG1vYmlsZSBtb2RlICovXG4gICAgbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBXaGV0aGVyIFBvcG92ZXIgd2l0aCB0aGUgbWVudSBpcyBvcGVuZWQgKi9cbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuIFJlZmVyZW5jZSB0byBleHRlcm5hbCBtZW51IHRyaWdnZXIgKi9cbiAgICBwcml2YXRlIF9leHRlcm5hbFRyaWdnZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbW9iaWxlTW9kZUNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE1lbnVNb2JpbGVDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbGlja0V2ZW50TGlzdGVuZXI6IG51bGwgfCAoKCkgPT4gdm9pZCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIHJlYWRvbmx5IGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlZDogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9tZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcG9wb3ZlclNlcnZpY2U6IFBvcG92ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvKioga2VlcCBpc09wZW4gdXAgdG8gZGF0ZSAqL1xuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5zdWJzY3JpYmUoKGlzT3BlbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gICAgICAgICAgICBpZiAoIWlzT3Blbikge1xuICAgICAgICAgICAgICAgIC8vIHdoZW4gcG9wb3ZlciBnb3QgY2xvc2VkIGJ5IGl0cyBvd24gbWVjaGFuaXNtIChlLnguIGNsaWNrIG91dHNpZGUpXG4gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjbGVhbiB1cCBtZW51IGFzIHdlbGxcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGVhblVwTWVudUFmdGVyQ2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudVNlcnZpY2Uuc2V0TWVudVJvb3QodGhpcyk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uTWVudUl0ZW1zQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVTZXJ2aWNlLmlzTW9iaWxlTW9kZS5zdWJzY3JpYmUoKGlzTW9iaWxlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cFZpZXcoKTtcbiAgICAgICAgICAgIGlmIChpc01vYmlsZSkge1xuICAgICAgICAgICAgICAgIC8vIFNpbmNlIGl0IGlzIG1vYmlsZSBpdCdzIG5lZWRlZCB0byBkaXNhYmxlIHBvcG92ZXJTZXJ2aWNlXG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fbWVudVNlcnZpY2Uuc2V0TWVudU1vZGUodGhpcy5tb2JpbGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lNb2JpbGVDb21wb25lbnQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk7XG4gICAgICAgIHRoaXMuX21lbnVTZXJ2aWNlLm9uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLm9uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIGdldCB0cmlnZ2VyKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXh0ZXJuYWxUcmlnZ2VyO1xuICAgIH1cblxuICAgIHNldCB0cmlnZ2VyKHRyaWdnZXI6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5fZXh0ZXJuYWxUcmlnZ2VyID0gdHJpZ2dlcjtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuaW5pdGlhbGlzZSh0aGlzLl9leHRlcm5hbFRyaWdnZXIpO1xuICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25UcmlnZ2VyUmVmQ2xpY2tzKCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBtZW51ICovXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlcyB0aGUgbWVudSAqL1xuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NsZWFuVXBNZW51QWZ0ZXJDbG9zZSgpO1xuICAgICAgICB0aGlzLl9mb2N1c1RyaWdnZXIoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIFRvZ2dsZXMgbWVudSBvcGVuL2Nsb3NlIHN0YXRlICovXG4gICAgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHRvIHJlZnJlc2ggcG9zaXRpb24gb2Ygb3BlbmVkIHBvcG92ZXIgKi9cbiAgICByZWZyZXNoUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnJlZnJlc2hQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xlYW5VcE1lbnVBZnRlckNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51U2VydmljZS5yZXNldE1lbnVTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNlbGVjdCBhbmQgaW5zdGFudGlhdGUgbWVudSB2aWV3IG1vZGUgKi9cbiAgICBwcml2YXRlIF9zZXR1cFZpZXcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cFBvcG92ZXJTZXJ2aWNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBQb3BvdmVyU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5fb25Mb2FkLnN1YnNjcmliZSgoZWxlbWVudFJlZikgPT4gdGhpcy5fbWFuYWdlS2V5Ym9hcmRTdXBwb3J0KGVsZW1lbnRSZWYpKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnRlbXBsYXRlQ29udGVudCA9IHRoaXMubWVudVJvb3RUZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuaW5pdGlhbGlzZSh0aGlzLl9leHRlcm5hbFRyaWdnZXIsIHRoaXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWFuYWdlS2V5Ym9hcmRTdXBwb3J0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudVNlcnZpY2UuYWRkS2V5Ym9hcmRTdXBwb3J0KGVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE9wZW4gTWVudSBpbiBtb2JpbGUgbW9kZSAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3NldHVwTW9iaWxlTW9kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNRU5VX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX21vYmlsZU1vZGVDb21wb25lbnRSZWYgPSBhd2FpdCB0aGlzLl9keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVEeW5hbWljTW9kdWxlKFxuICAgICAgICAgICAgdGhpcy5tZW51Um9vdFRlbXBsYXRlLFxuICAgICAgICAgICAgTWVudU1vYmlsZU1vZHVsZSxcbiAgICAgICAgICAgIE1lbnVNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgaW5qZWN0b3JcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5PblRyaWdnZXJSZWZDbGlja3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBMaXN0ZW4gb24gbWVudSBpdGVtcyBjaGFuZ2UgYW5kIHJlYnVpbGQgbWVudSAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uTWVudUl0ZW1zQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZCh0aGlzLm1lbnVJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9tZW51U2VydmljZS5yZWJ1aWxkTWVudSgpKSk7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zLmZvckVhY2goKG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLnN1Ym1lbnUgJiYgbS5zdWJtZW51Lm1lbnVJdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKG0uc3VibWVudS5tZW51SXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fbWVudVNlcnZpY2UucmVidWlsZE1lbnUoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVGhpcyBpcyBnb2luZyB0byBiZSByZW1vdmVkIGluIGZlYXR1cmUsIG9uIGRpYWxvZyBhbmQgZHluYW1pYyBzZXJ2aWNlIGNvbXBvbmVudCByZWZhY3RvclxuICAgICAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uVHJpZ2dlclJlZkNsaWNrcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk7XG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIgJiYgdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NsaWNrRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVkLmxpc3Rlbih0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCwgJ2NsaWNrJywgKCkgPT4gdGhpcy50b2dnbGUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVGhpcyBpcyBnb2luZyB0byBiZSByZW1vdmVkIGluIGZlYXR1cmUsIG9uIGRpYWxvZyBhbmQgZHluYW1pYyBzZXJ2aWNlIGNvbXBvbmVudCByZWZhY3RvclxuICAgICAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NsaWNrRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5fY2xpY2tFdmVudExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLl9jbGlja0V2ZW50TGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95TW9iaWxlQ29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbW9iaWxlTW9kZUNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5fbW9iaWxlTW9kZUNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzVHJpZ2dlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNUcmFwcGVkICYmIHRoaXMudHJpZ2dlcikge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI3ZpZXdDb250YWluZXI+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbWVudVJvb3RUZW1wbGF0ZT5cbiAgICA8bmF2XG4gICAgICAgIGNsYXNzPVwiZmQtbWVudVwiXG4gICAgICAgIGZkSW5pdGlhbEZvY3VzXG4gICAgICAgIFtlbmFibGVkXT1cImZvY3VzVHJhcHBlZFwiXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgICBbY2xhc3MuZmQtbWVudS0tY29tcGFjdF09XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgICAgICBbY2xhc3MuZmQtbWVudS0tbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgPlxuICAgICAgICA8dWwgcm9sZT1cIm5vbmVcIiBjbGFzcz1cImZkLW1lbnVfX2xpc3QgZmQtbWVudV9fbGlzdC0tbm8tc2hhZG93XCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG48L25nLXRlbXBsYXRlPlxuIl19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9tZW51L21lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbWVudS9tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFpQixNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hILE9BQU8sRUFBZ0IscUJBQXFCLEVB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QUFFLENBQUMscURBcUQxRCxpQkFBaUIsMktDdkd0QywrbEJBbUJBOzJGRGlDYSxhQUFhO2tCQVJ6QixTQUFTOytCQUNJLFNBQVMsaUJBR0osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsQ0FBQzs7MEJBa0Z0RSxRQUFROzswQkFPUixRQUFRO2lGQWpGVCxNQUFNO3NCQURULEtBQUs7Z0JBV04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sRUFBRTtzQkFERCxLQUFLO2dCQUtHLFVBQVU7c0JBRGxCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLGtCQUFrQjtnQkFLN0IsVUFBVTtzQkFEVCxlQUFlO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBNb2JpbGVNb2RlQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IEJhc2VQb3BvdmVyQ2xhc3MsIFBvcG92ZXJTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuaW1wb3J0IHsgTWVudU1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1tb2JpbGUvbWVudS1tb2JpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnVNb2JpbGVNb2R1bGUgfSBmcm9tICcuL21lbnUtbW9iaWxlL21lbnUtbW9iaWxlLm1vZHVsZSc7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IE1FTlVfQ09NUE9ORU5ULCBNZW51SW50ZXJmYWNlIH0gZnJvbSAnLi9tZW51LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1pdGVtL21lbnUtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5sZXQgbWVudVVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBUaGUgY29tcG9uZW50IHRoYXQgcmVwcmVzZW50cyBhIG1lbnUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydtZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtNZW51U2VydmljZSwgUG9wb3ZlclNlcnZpY2UsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKV1cbn0pXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQmFzZVBvcG92ZXJDbGFzc1xuICAgIGltcGxlbWVudHMgTWVudUludGVyZmFjZSwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXRcbntcbiAgICAvKiogU2V0IG1lbnUgaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtb2JpbGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9tb2JpbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICB0aGlzLl9tZW51U2VydmljZS5zZXRNZW51TW9kZSh0aGlzLm1vYmlsZSk7XG4gICAgfVxuICAgIGdldCBtb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2JpbGU7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgZGlzYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgc2hvdWxkIGJlIGZvY3VzVHJhcHBlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZvY3VzVHJhcHBlZCA9IHRydWU7XG5cbiAgICAvKiogT3BlbiBzdWJtZW51IG9uIGhvdmVyIGFmdGVyIGdpdmVuIG1pbGxpc2Vjb25kcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgb3Blbk9uSG92ZXJUaW1lID0gMDtcblxuICAgIC8qKiBEaXNwbGF5IG1lbnUgd2l0aG91dCBpbnRlZ3JhdGVkIHBvcG92ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZyA9IHsgY2FuY2VsQnV0dG9uVGV4dDogJ0NhbmNlbCcgfTtcblxuICAgIC8qKiBBcmlhLWxhYmVsIGZvciBuYXZpZ2F0aW9uICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQXJpYS1MYWJlbGxlZGJ5IGZvciBlbGVtZW50IGRlc2NyaWJpbmcgbmF2aWdhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkYnk6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogSWQgb2YgdGhlIGNvbnRyb2wuICovXG4gICAgQElucHV0KClcbiAgICBpZCA9IGBmZC1tZW51LSR7bWVudVVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBFbWl0cyBhcnJheSBvZiBhY3RpdmUgbWVudSBpdGVtcyAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGFjdGl2ZVBhdGggPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnVJdGVtQ29tcG9uZW50W10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBSZWZlcmVuY2UgdG8gdGhlIG1lbnUgcm9vdCB0ZW1wbGF0ZSAqL1xuICAgIEBWaWV3Q2hpbGQoJ21lbnVSb290VGVtcGxhdGUnKVxuICAgIF9tZW51Um9vdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gUmVmZXJlbmNlIHRvIGFsbCBtZW51IEl0ZW1zICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihNZW51SXRlbUNvbXBvbmVudClcbiAgICBfbWVudUl0ZW1zOiBRdWVyeUxpc3Q8TWVudUl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gV2hldGhlciB1c2UgYSBtZW51IGluIG1vYmlsZSBtb2RlICovXG4gICAgcHJpdmF0ZSBfbW9iaWxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBSZWZlcmVuY2UgdG8gZXh0ZXJuYWwgbWVudSB0cmlnZ2VyICovXG4gICAgcHJpdmF0ZSBfZXh0ZXJuYWxUcmlnZ2VyOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tb2JpbGVNb2RlQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TWVudU1vYmlsZUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NsaWNrRXZlbnRMaXN0ZW5lcjogbnVsbCB8ICgoKSA9PiB2b2lkKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3BvcG92ZXJDb25maWcoKTogQmFzZVBvcG92ZXJDbGFzcyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLFxuICAgICAgICAgICAgYWRkaXRpb25hbEJvZHlDbGFzczogKHRoaXMuYWRkaXRpb25hbEJvZHlDbGFzcyA/PyAnJykgKyAnIGZkLXBvcG92ZXItLW1lbnUnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWFkb25seSBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZWQ6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3BvcG92ZXJTZXJ2aWNlOiBQb3BvdmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9keW5hbWljQ29tcG9uZW50U2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLyoqIGtlZXAgaXNPcGVuIHVwIHRvIGRhdGUgKi9cbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2Uuc3Vic2NyaWJlKChpc09wZW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gaXNPcGVuO1xuXG4gICAgICAgICAgICAvLyB3aGVuIHBvcG92ZXIgZ290IGNsb3NlZCBieSBpdHMgb3duIG1lY2hhbmlzbSAoZS54LiBjbGljayBvdXRzaWRlKVxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjbGVhbiB1cCBhIG1lbnUgYXMgd2VsbFxuICAgICAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGVhblVwTWVudUFmdGVyQ2xvc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51U2VydmljZS5zZXRNZW51Q29tcG9uZW50KHRoaXMpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Pbk1lbnVJdGVtc0NoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51U2VydmljZS5pc01vYmlsZU1vZGUuc3Vic2NyaWJlKChpc01vYmlsZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBWaWV3KCk7XG5cbiAgICAgICAgICAgIC8vIFNpbmNlIGl0IGlzIG1vYmlsZSwgaXQncyBuZWVkZWQgdG8gZGlzYWJsZSBwb3BvdmVyU2VydmljZVxuICAgICAgICAgICAgaWYgKGlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9tZW51U2VydmljZS5zZXRNZW51TW9kZSh0aGlzLm1vYmlsZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveU1vYmlsZUNvbXBvbmVudCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy5fbWVudVNlcnZpY2Uub25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2Uub25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgZ2V0IHRyaWdnZXIoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leHRlcm5hbFRyaWdnZXI7XG4gICAgfVxuXG4gICAgc2V0IHRyaWdnZXIodHJpZ2dlcjogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLl9leHRlcm5hbFRyaWdnZXIgPSB0cmlnZ2VyO1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5pbml0aWFsaXNlKHRoaXMuX2V4dGVybmFsVHJpZ2dlcik7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lFdmVudExpc3RlbmVycygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblRyaWdnZXJSZWZDbGlja3MoKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbnMgdGhlIG1lbnUgKi9cbiAgICBvcGVuKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodGhpcy5pc09wZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2Uub3BlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlcyB0aGUgbWVudSAqL1xuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jbGVhblVwTWVudUFmdGVyQ2xvc2UoKTtcbiAgICAgICAgdGhpcy5fZm9jdXNUcmlnZ2VyKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIG1lbnUgb3Blbi9jbG9zZSBzdGF0ZSAqL1xuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCB0byByZWZyZXNoIHBvc2l0aW9uIG9mIG9wZW5lZCBwb3BvdmVyICovXG4gICAgcmVmcmVzaFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5yZWZyZXNoUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NsZWFuVXBNZW51QWZ0ZXJDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudVNlcnZpY2UucmVzZXRNZW51U3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTZWxlY3QgYW5kIGluc3RhbnRpYXRlIG1lbnUgdmlldyBtb2RlICovXG4gICAgcHJpdmF0ZSBfc2V0dXBWaWV3KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwTW9iaWxlTW9kZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0dXBQb3BvdmVyU2VydmljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBQb3BvdmVyU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5fb25Mb2FkLnN1YnNjcmliZSgoZWxlbWVudFJlZikgPT4gdGhpcy5fbWVudVNlcnZpY2UuYWRkS2V5Ym9hcmRTdXBwb3J0KGVsZW1lbnRSZWYpKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnRlbXBsYXRlQ29udGVudCA9IHRoaXMuX21lbnVSb290VGVtcGxhdGU7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLmluaXRpYWxpc2UodGhpcy5fZXh0ZXJuYWxUcmlnZ2VyLCB0aGlzLl9wb3BvdmVyQ29uZmlnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBPcGVuIE1lbnUgaW4gbW9iaWxlIG1vZGUgKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXR1cE1vYmlsZU1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTUVOVV9DT01QT05FTlQsIHVzZVZhbHVlOiB0aGlzIH1dLFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvclxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9tb2JpbGVNb2RlQ29tcG9uZW50UmVmID0gYXdhaXQgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY01vZHVsZShcbiAgICAgICAgICAgIHRoaXMuX21lbnVSb290VGVtcGxhdGUsXG4gICAgICAgICAgICBNZW51TW9iaWxlTW9kdWxlLFxuICAgICAgICAgICAgTWVudU1vYmlsZUNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBpbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uVHJpZ2dlclJlZkNsaWNrcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIExpc3RlbiBvbiBtZW51IGl0ZW1zIGNoYW5nZSBhbmQgcmVidWlsZCBtZW51ICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25NZW51SXRlbXNDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX21lbnVJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9tZW51U2VydmljZS5yZWJ1aWxkTWVudSgpKSk7XG5cbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zLmZvckVhY2goKG1lbnVJdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAobWVudUl0ZW0uc3VibWVudT8ubWVudUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtLnN1Ym1lbnUuX21lbnVJdGVtc0NoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX21lbnVTZXJ2aWNlLnJlYnVpbGRNZW51KCkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZCBpbiBmZWF0dXJlLCBvbiBkaWFsb2cgYW5kIGR5bmFtaWMgc2VydmljZSBjb21wb25lbnQgcmVmYWN0b3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblRyaWdnZXJSZWZDbGlja3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lFdmVudExpc3RlbmVycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIgJiYgdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NsaWNrRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVkLmxpc3Rlbih0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCwgJ2NsaWNrJywgKCkgPT4gdGhpcy50b2dnbGUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVGhpcyBpcyBnb2luZyB0byBiZSByZW1vdmVkIGluIGZlYXR1cmUsIG9uIGRpYWxvZyBhbmQgZHluYW1pYyBzZXJ2aWNlIGNvbXBvbmVudCByZWZhY3RvclxuICAgICAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NsaWNrRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5fY2xpY2tFdmVudExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLl9jbGlja0V2ZW50TGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95TW9iaWxlQ29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbW9iaWxlTW9kZUNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5fbW9iaWxlTW9kZUNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzVHJpZ2dlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNUcmFwcGVkICYmIHRoaXMudHJpZ2dlcikge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI3ZpZXdDb250YWluZXI+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbWVudVJvb3RUZW1wbGF0ZT5cbiAgICA8bmF2XG4gICAgICAgIGNsYXNzPVwiZmQtbWVudVwiXG4gICAgICAgIGZkSW5pdGlhbEZvY3VzXG4gICAgICAgIFtlbmFibGVkXT1cImZvY3VzVHJhcHBlZFwiXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgICBbY2xhc3MuZmQtbWVudS0tY29tcGFjdF09XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgICAgICBbY2xhc3MuZmQtbWVudS0tbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgPlxuICAgICAgICA8dWwgcm9sZT1cIm5vbmVcIiBjbGFzcz1cImZkLW1lbnVfX2xpc3QgZmQtbWVudV9fbGlzdC0tbm8tc2hhZG93XCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -19,8 +19,8 @@ export class MenuService {
19
19
  return this._rtlService?.rtl.value;
20
20
  }
21
21
  /** Reference to menu component */
22
- get menu() {
23
- return this._menu;
22
+ get menuComponent() {
23
+ return this._menuComponent;
24
24
  }
25
25
  /** Returns menu mode observable */
26
26
  get isMobileMode() {
@@ -61,9 +61,9 @@ export class MenuService {
61
61
  this._emitActivePath();
62
62
  }
63
63
  /** Initializes menu service based on given Menu Component */
64
- setMenuRoot(menu) {
65
- this._menu = menu;
66
- this.menuMap = this._buildMenuMap(this._menu);
64
+ setMenuComponent(menu) {
65
+ this._menuComponent = menu;
66
+ this.menuMap = this._buildMenuMap(this._menuComponent);
67
67
  }
68
68
  /** Clears Active Node Path and resets Focused Node */
69
69
  resetMenuState() {
@@ -75,7 +75,7 @@ export class MenuService {
75
75
  * - Validates Active Node Path
76
76
  * - Validates Focused Node */
77
77
  rebuildMenu() {
78
- this.menuMap = this._buildMenuMap(this._menu);
78
+ this.menuMap = this._buildMenuMap(this._menuComponent);
79
79
  const deadNode = this.activeNodePath.find((node) => !this.menuMap.has(node.item));
80
80
  if (deadNode?.item) {
81
81
  this.setActive(false, deadNode.item);
@@ -140,7 +140,7 @@ export class MenuService {
140
140
  item: menuItem,
141
141
  parent: null,
142
142
  children: menuItem.submenu
143
- ? menuItem.submenu.menuItems.toArray().map((subMenuItem) => buildNode(subMenuItem))
143
+ ? menuItem.submenu.menuItems.map((subMenuItem) => buildNode(subMenuItem))
144
144
  : []
145
145
  };
146
146
  }
@@ -153,11 +153,12 @@ export class MenuService {
153
153
  node.children.forEach((childNode) => toMap(childNode, map));
154
154
  return map;
155
155
  }
156
+ const rootItems = menu._menuItems.filter((rootItem) => !rootItem.parentSubmenu);
156
157
  /** root item */
157
158
  const menuTree = {
158
159
  item: null,
159
160
  parent: null,
160
- children: menu.menuItems.toArray().map((item) => buildNode(item))
161
+ children: rootItems.map((item) => buildNode(item))
161
162
  };
162
163
  setParents(menuTree, null);
163
164
  return toMap(menuTree);
@@ -167,8 +168,8 @@ export class MenuService {
167
168
  const menuNode = this.menuMap.get(menuItem);
168
169
  const children = menuNode?.parent?.children.map((i) => i.item);
169
170
  const activeSibling = this.activeNodePath.find((i) => children?.includes(i.item));
170
- const activeParentIndex = this.activeNodePath.indexOf(menuNode?.parent);
171
171
  if (activeSibling) {
172
+ const activeParentIndex = this.activeNodePath.indexOf(menuNode?.parent);
172
173
  this._removeFromActivePath(activeParentIndex !== -1 ? activeSibling.item : this.activeNodePath[0].item);
173
174
  }
174
175
  }
@@ -218,8 +219,8 @@ export class MenuService {
218
219
  focusRight(focusedNode);
219
220
  }
220
221
  }
221
- else if (KeyUtil.isKeyCode(event, ESCAPE) && this.menu.closeOnEscapeKey) {
222
- this.menu.close();
222
+ else if (KeyUtil.isKeyCode(event, ESCAPE) && this.menuComponent.closeOnEscapeKey) {
223
+ this.menuComponent.close();
223
224
  }
224
225
  else {
225
226
  matched = false;
@@ -230,7 +231,7 @@ export class MenuService {
230
231
  }
231
232
  /** @hidden Emits an array of active menu items */
232
233
  _emitActivePath() {
233
- this.menu.activePath.emit(this.activeNodePath.map((node) => node.item));
234
+ this.menuComponent.activePath.emit(this.activeNodePath.map((node) => node.item));
234
235
  }
235
236
  /** @hidden Depending on direction returns closest enabled sibling of given node */
236
237
  _closestEnabled(node, direction) {
@@ -253,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
253
254
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.RtlService, decorators: [{
254
255
  type: Optional
255
256
  }] }]; } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbWVudS9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQVk1RyxNQUFNLE9BQU8sV0FBVztJQXdCcEIsWUFBb0IsU0FBb0IsRUFBK0IsV0FBdUI7UUFBMUUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUErQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWpCOUYsc0NBQXNDO1FBQ3RDLG1CQUFjLEdBQWUsRUFBRSxDQUFDO1FBRWhDLHNDQUFzQztRQUM5QixrQkFBYSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBYXlDLENBQUM7SUFMbEcsY0FBYztJQUNkLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFJRCxrQ0FBa0M7SUFDbEMsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0Is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TyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUU5QyxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQyxRQUFRLEVBQUU7b0JBQ2pELE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN0QjthQUNKO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzt3R0FuU1EsV0FBVzs0R0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQXlCb0MsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9wdGlvbmFsLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vbWVudS1pdGVtL21lbnUtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEtleVV0aWwsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgRVNDQVBFLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuaW50ZXJmYWNlIE1lbnVOb2RlIHtcbiAgICBpdGVtOiBNZW51SXRlbUNvbXBvbmVudCB8IG51bGw7XG4gICAgcGFyZW50OiBNZW51Tm9kZSB8IG51bGw7XG4gICAgY2hpbGRyZW46IE1lbnVOb2RlW107XG59XG5cbi8qKiBgbnVsbGAga2V5IGlzIHVzZWQgZm9yIHRoZSByb290IG5vZGUgKi9cbnR5cGUgTWVudU1hcCA9IE1hcDxNZW51SXRlbUNvbXBvbmVudCB8IG51bGwsIE1lbnVOb2RlPjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcbiAgICAvKiogTWFwIG9mIG1lbnUgaXRlbXMgdG8gbWVudSBub2RlcyAqL1xuICAgIG1lbnVNYXA6IE1lbnVNYXA7XG5cbiAgICAvKiogQ3VycmVudGx5IGZvY3VzZWQgbm9kZSAqL1xuICAgIGZvY3VzZWROb2RlOiBNZW51Tm9kZSB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBDb2xsZWN0aW9uIG9mIGFjdGl2ZSBtZW51IG5vZGVzICovXG4gICAgYWN0aXZlTm9kZVBhdGg6IE1lbnVOb2RlW10gPSBbXTtcblxuICAgIC8qKiBDb2xsZWN0aW9uIG9mIGFjdGl2ZSBtZW51IG5vZGVzICovXG4gICAgcHJpdmF0ZSBfaXNNb2JpbGVNb2RlOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWVudTogTWVudUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveUtleWJvYXJkSGFuZGxlckxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UpIHt9XG5cbiAgICAvKiogUmVmZXJlbmNlIHRvIG1lbnUgY29tcG9uZW50ICovXG4gICAgZ2V0IG1lbnUoKTogTWVudUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51O1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG1lbnUgbW9kZSBvYnNlcnZhYmxlICovXG4gICAgZ2V0IGlzTW9iaWxlTW9kZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTW9iaWxlTW9kZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIG1lbnUgbW9kZSAqL1xuICAgIHNldE1lbnVNb2RlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzTW9iaWxlTW9kZS5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBnaXZlbiBtZW51IGl0ZW0gYXMgZm9jdXNlZCAqL1xuICAgIHNldEZvY3VzZWQobWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzZWROb2RlID0gdGhpcy5tZW51TWFwLmdldChtZW51SXRlbSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZE5vZGU/Lml0ZW0/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBzdGF0ZSBvZiBhIGdpdmVuIG1lbnUgaXRlbVxuICAgICAqIEBwYXJhbSBpc0FjdGl2ZSAtIFdoZXRoZXIgc2hvdWxkIGJlIHNldCBhcyBhY3RpdmUgb3IgaW5hY3RpdmVcbiAgICAgKiBAcGFyYW0gbWVudUl0ZW0gYE1lbnVJdGVtQ29tcG9uZW50YCB0aGF0IHNob3VsZCBiZSBzZXQgYXMgYWN0aXZlIG9yIGluYWN0aXZlXG4gICAgICovXG4gICAgc2V0QWN0aXZlKGlzQWN0aXZlOiBib29sZWFuLCBtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmICghbWVudUl0ZW0gfHwgKGlzQWN0aXZlICYmIG1lbnVJdGVtLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9hZGRUb0FjdGl2ZVBhdGgobWVudUl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRnJvbUFjdGl2ZVBhdGgobWVudUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VtaXRBY3RpdmVQYXRoKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgYWN0aXZlIHNpYmxpbmcgc3VibWVudSBpZiBhbnlcbiAgICAgKiBAcGFyYW0gbWVudUl0ZW0gdG8gbG9vayBmb3IgYWN0aXZlIHNpYmxpbmdzXG4gICAgICovXG4gICAgc2V0SW5hY3RpdmVTaWJsaW5nTWVudUl0ZW0obWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFjdGl2ZVNpYmxpbmcobWVudUl0ZW0pO1xuICAgICAgICB0aGlzLl9lbWl0QWN0aXZlUGF0aCgpO1xuICAgIH1cblxuICAgIC8qKiBJbml0aWFsaXplcyBtZW51IHNlcnZpY2UgYmFzZWQgb24gZ2l2ZW4gTWVudSBDb21wb25lbnQgKi9cbiAgICBzZXRNZW51Um9vdChtZW51OiBNZW51Q29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnUgPSBtZW51O1xuICAgICAgICB0aGlzLm1lbnVNYXAgPSB0aGlzLl9idWlsZE1lbnVNYXAodGhpcy5fbWVudSk7XG4gICAgfVxuXG4gICAgLyoqIENsZWFycyBBY3RpdmUgTm9kZSBQYXRoIGFuZCByZXNldHMgRm9jdXNlZCBOb2RlICovXG4gICAgcmVzZXRNZW51U3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NsZWFyQWN0aXZlUGF0aCgpO1xuICAgICAgICB0aGlzLmZvY3VzZWROb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9lbWl0QWN0aXZlUGF0aCgpO1xuICAgIH1cblxuICAgIC8qKiAtIFVwZGF0ZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgbWVudVxuICAgICAqICAtIFZhbGlkYXRlcyBBY3RpdmUgTm9kZSBQYXRoXG4gICAgICogIC0gVmFsaWRhdGVzIEZvY3VzZWQgTm9kZSAqL1xuICAgIHJlYnVpbGRNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVNYXAgPSB0aGlzLl9idWlsZE1lbnVNYXAodGhpcy5fbWVudSk7XG5cbiAgICAgICAgY29uc3QgZGVhZE5vZGUgPSB0aGlzLmFjdGl2ZU5vZGVQYXRoLmZpbmQoKG5vZGUpID0+ICF0aGlzLm1lbnVNYXAuaGFzKG5vZGUuaXRlbSkpO1xuICAgICAgICBpZiAoZGVhZE5vZGU/Lml0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlKGZhbHNlLCBkZWFkTm9kZS5pdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGludmFsaWRGb2N1c2VkRWxlbWVudCA9IHRoaXMuZm9jdXNlZE5vZGUgJiYgIXRoaXMubWVudU1hcC5nZXQodGhpcy5mb2N1c2VkTm9kZS5pdGVtKTtcbiAgICAgICAgaWYgKGludmFsaWRGb2N1c2VkRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkTm9kZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVOb2RlUGF0aFt0aGlzLmFjdGl2ZU5vZGVQYXRoLmxlbmd0aCAtIDFdIHx8IHRoaXMubWVudU1hcC5nZXQobnVsbCkhLmNoaWxkcmVuWzBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEFkZHMgTWVudSBrZXlib2FyZCBzdXBwb3J0ICovXG4gICAgYWRkS2V5Ym9hcmRTdXBwb3J0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVLZXlib2FyZFN1cHBvcnQoKTtcbiAgICAgICAgdGhpcy5fc2V0S2V5Ym9hcmRTdXBwb3J0KGVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIE1lbnUga2V5Ym9hcmQgc3VwcG9ydCAqL1xuICAgIHJlbW92ZUtleWJvYXJkU3VwcG9ydCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2Rlc3Ryb3lLZXlib2FyZEhhbmRsZXJMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5fZGVzdHJveUtleWJvYXJkSGFuZGxlckxpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlS2V5Ym9hcmRTdXBwb3J0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyBzaWJsaW5ncyBvZiBnaXZlbiBub2RlICovXG4gICAgcHJpdmF0ZSBfbm9kZVNpYmxpbmdzKG5vZGU6IE1lbnVOb2RlKTogTWVudU5vZGVbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBub2RlLnBhcmVudCA/IG5vZGUucGFyZW50LmNoaWxkcmVuIDogdGhpcy5tZW51TWFwLmdldChudWxsKT8uY2hpbGRyZW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQWRkcyBnaXZlbiBlbGVtZW50IHRvIHRoZSBBY3RpdmUgTm9kZSBQYXRoIGFuZCBzZXR0cyBhcyBhY3RpdmUqL1xuICAgIHByaXZhdGUgX2FkZFRvQWN0aXZlUGF0aChtZW51SXRlbTogTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVudU5vZGUgPSB0aGlzLm1lbnVNYXAuZ2V0KG1lbnVJdGVtKTtcbiAgICAgICAgdGhpcy5fcmVtb3ZlQWN0aXZlU2libGluZyhtZW51SXRlbSk7XG4gICAgICAgIGlmIChtZW51Tm9kZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVOb2RlUGF0aC5wdXNoKG1lbnVOb2RlKTtcbiAgICAgICAgICAgIG1lbnVOb2RlLml0ZW0/LnNldFNlbGVjdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVtb3ZlcyBnaXZlbiBlbGVtZW50IGFuZCBhbGwgaXRzIHN1Y2Nlc3NvcnMgZnJvbSB0aGUgQWN0aXZlIE5vZGUgUGF0aCBhbmQgc2V0dHMgYXMgaW5hY3RpdmUqL1xuICAgIHByaXZhdGUgX3JlbW92ZUZyb21BY3RpdmVQYXRoKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVudU5vZGUgPSB0aGlzLm1lbnVNYXAuZ2V0KG1lbnVJdGVtKTtcbiAgICAgICAgaWYgKG1lbnVOb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoSW5kZXggPSB0aGlzLmFjdGl2ZU5vZGVQYXRoLmZpbmRJbmRleCgoaSkgPT4gaS5pdGVtID09PSBtZW51Tm9kZS5pdGVtKTtcblxuICAgICAgICAgICAgaWYgKHBhdGhJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU5vZGVQYXRoXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpY2UocGF0aEluZGV4KVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgocmVtb3ZlZEFjdGl2ZU5vZGUpID0+IHJlbW92ZWRBY3RpdmVOb2RlLml0ZW0/LnNldFNlbGVjdGVkKGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBBY3RpdmUgTm9kZSBQYXRoIGFuZCBzZXRzIHRoZW0gYXMgY2xvc2VkICovXG4gICAgcHJpdmF0ZSBfY2xlYXJBY3RpdmVQYXRoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVOb2RlUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21BY3RpdmVQYXRoKHRoaXMuYWN0aXZlTm9kZVBhdGhbMF0uaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIC0gQnVpbGRzIE1lbnUgTm9kZXMgYmFzZWQgb24gTWVudSBJdGVtc1xuICAgICAqIC0gQ3JlYXRlcyBNYXAgb2YgdGhlIE1lbnUgTm9kZXMgKi9cbiAgICBwcml2YXRlIF9idWlsZE1lbnVNYXAobWVudTogTWVudUNvbXBvbmVudCk6IE1lbnVNYXAge1xuICAgICAgICBmdW5jdGlvbiBidWlsZE5vZGUobWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogTWVudU5vZGUge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpdGVtOiBtZW51SXRlbSxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IG1lbnVJdGVtLnN1Ym1lbnVcbiAgICAgICAgICAgICAgICAgICAgPyBtZW51SXRlbS5zdWJtZW51Lm1lbnVJdGVtcy50b0FycmF5KCkubWFwKChzdWJNZW51SXRlbSkgPT4gYnVpbGROb2RlKHN1Yk1lbnVJdGVtKSlcbiAgICAgICAgICAgICAgICAgICAgOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNldFBhcmVudHMobm9kZTogTWVudU5vZGUsIHBhcmVudDogTWVudU5vZGUgfCBudWxsKTogdm9pZCB7XG4gICAgICAgICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGROb2RlKSA9PiBzZXRQYXJlbnRzKGNoaWxkTm9kZSwgbm9kZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdG9NYXAobm9kZTogTWVudU5vZGUsIG1hcCA9IG5ldyBNYXAoKSBhcyBNZW51TWFwKTogTWVudU1hcCB7XG4gICAgICAgICAgICBtYXAuc2V0KG5vZGUuaXRlbSwgbm9kZSk7XG4gICAgICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkTm9kZSkgPT4gdG9NYXAoY2hpbGROb2RlLCBtYXApKTtcbiAgICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgIH1cblxuICAgICAgICAvKiogcm9vdCBpdGVtICovXG4gICAgICAgIGNvbnN0IG1lbnVUcmVlOiBNZW51Tm9kZSA9IHtcbiAgICAgICAgICAgIGl0ZW06IG51bGwsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBjaGlsZHJlbjogbWVudS5tZW51SXRlbXMudG9BcnJheSgpLm1hcCgoaXRlbSkgPT4gYnVpbGROb2RlKGl0ZW0pKVxuICAgICAgICB9O1xuXG4gICAgICAgIHNldFBhcmVudHMobWVudVRyZWUsIG51bGwpO1xuXG4gICAgICAgIHJldHVybiB0b01hcChtZW51VHJlZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVtb3ZlcyBhY3RpdmUgc2libGluZyBvZiBhIGdpdmVuIG1lbnUgaXRlbSBmcm9tIHRoZSBBY3RpdmUgUGF0aCAqL1xuICAgIHByaXZhdGUgX3JlbW92ZUFjdGl2ZVNpYmxpbmcobWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1lbnVOb2RlID0gdGhpcy5tZW51TWFwLmdldChtZW51SXRlbSk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbWVudU5vZGU/LnBhcmVudD8uY2hpbGRyZW4ubWFwKChpKSA9PiBpLml0ZW0pO1xuICAgICAgICBjb25zdCBhY3RpdmVTaWJsaW5nID0gdGhpcy5hY3RpdmVOb2RlUGF0aC5maW5kKChpKSA9PiBjaGlsZHJlbj8uaW5jbHVkZXMoaS5pdGVtKSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVBhcmVudEluZGV4ID0gdGhpcy5hY3RpdmVOb2RlUGF0aC5pbmRleE9mKG1lbnVOb2RlPy5wYXJlbnQgYXMgTWVudU5vZGUpO1xuXG4gICAgICAgIGlmIChhY3RpdmVTaWJsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVGcm9tQWN0aXZlUGF0aChhY3RpdmVQYXJlbnRJbmRleCAhPT0gLTEgPyBhY3RpdmVTaWJsaW5nLml0ZW0gOiB0aGlzLmFjdGl2ZU5vZGVQYXRoWzBdLml0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQWRkcyBrZXlib2FyZCBzdXBwb3J0ICovXG4gICAgcHJpdmF0ZSBfc2V0S2V5Ym9hcmRTdXBwb3J0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveUtleWJvYXJkSGFuZGxlckxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKFxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ2tleWRvd24nLFxuICAgICAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9oYW5kbGVLZXkoZXZlbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFuZGxlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvY3VzUmlnaHQgPSAobm9kZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvY3VzZWQobm9kZS5jaGlsZHJlblswXS5pdGVtKSk7XG4gICAgICAgIH07XG4gICAgICAgIGxldCBtYXRjaGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoIXRoaXMuZm9jdXNlZE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgUklHSFRfQVJST1cpICYmICF0aGlzLl9pc1J0bCkgfHxcbiAgICAgICAgICAgIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykgJiYgdGhpcy5faXNSdGwpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE5vZGU/LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlKHRydWUsIHRoaXMuZm9jdXNlZE5vZGUuaXRlbSk7XG4gICAgICAgICAgICAgICAgZm9jdXNSaWdodCh0aGlzLmZvY3VzZWROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykgJiYgIXRoaXMuX2lzUnRsKSB8fFxuICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgJiYgdGhpcy5faXNSdGwpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE5vZGUucGFyZW50Py5pdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmUoZmFsc2UsIHRoaXMuZm9jdXNlZE5vZGUucGFyZW50Lml0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNlZCh0aGlzLmZvY3VzZWROb2RlLnBhcmVudC5pdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3QgPSB0aGlzLl9jbG9zZXN0RW5hYmxlZCh0aGlzLmZvY3VzZWROb2RlLCAnZG93bicpO1xuICAgICAgICAgICAgaWYgKGNsb3Nlc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZvY3VzZWQoY2xvc2VzdC5pdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0ID0gdGhpcy5fY2xvc2VzdEVuYWJsZWQodGhpcy5mb2N1c2VkTm9kZSwgJ3VwJyk7XG4gICAgICAgICAgICBpZiAoY2xvc2VzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNlZChjbG9zZXN0Lml0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbU1BBQ0UsIEVOVEVSXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWROb2RlID0gdGhpcy5mb2N1c2VkTm9kZTtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlKHRydWUsIGZvY3VzZWROb2RlPy5pdGVtKTtcbiAgICAgICAgICAgIGZvY3VzZWROb2RlLml0ZW0/LmNsaWNrKCk7XG4gICAgICAgICAgICBpZiAoZm9jdXNlZE5vZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9jdXNSaWdodChmb2N1c2VkTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVTQ0FQRSkgJiYgdGhpcy5tZW51LmNsb3NlT25Fc2NhcGVLZXkpIHtcbiAgICAgICAgICAgIHRoaXMubWVudS5jbG9zZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0cyBhbiBhcnJheSBvZiBhY3RpdmUgbWVudSBpdGVtcyAqL1xuICAgIHByaXZhdGUgX2VtaXRBY3RpdmVQYXRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnUuYWN0aXZlUGF0aC5lbWl0KHRoaXMuYWN0aXZlTm9kZVBhdGgubWFwKChub2RlKSA9PiBub2RlLml0ZW0pIGFzIE1lbnVJdGVtQ29tcG9uZW50W10pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIERlcGVuZGluZyBvbiBkaXJlY3Rpb24gcmV0dXJucyBjbG9zZXN0IGVuYWJsZWQgc2libGluZyBvZiBnaXZlbiBub2RlICovXG4gICAgcHJpdmF0ZSBfY2xvc2VzdEVuYWJsZWQobm9kZTogTWVudU5vZGUsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IE1lbnVOb2RlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID1cbiAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ3VwJyA/IFsuLi4odGhpcy5fbm9kZVNpYmxpbmdzKG5vZGUpID8/IFtdKV0ucmV2ZXJzZSgpIDogdGhpcy5fbm9kZVNpYmxpbmdzKG5vZGUpO1xuXG4gICAgICAgIGlmIChzaWJsaW5ncykge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHNpYmxpbmdzLmluZGV4T2Yobm9kZSkgKyAxO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8IHNpYmxpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpYmxpbmdzW2ldLml0ZW0gJiYgIXNpYmxpbmdzW2ldLml0ZW0hLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaWJsaW5nc1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iXX0=
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbWVudS9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQVk1RyxNQUFNLE9BQU8sV0FBVztJQXdCcEIsWUFBb0IsU0FBb0IsRUFBK0IsV0FBdUI7UUFBMUUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUErQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWpCOUYsc0NBQXNDO1FBQ3RDLG1CQUFjLEdBQWUsRUFBRSxDQUFDO1FBRWhDLHNDQUFzQztRQUM5QixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFha0QsQ0FBQztJQUxsRyxjQUFjO0lBQ2QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUlELGtDQUFrQztJQUNsQyxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixF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QUksQ0FBQyxDQUFDO1FBRXBHLElBQUksUUFBUSxFQUFFO1lBQ1YsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9DLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQUMsUUFBUSxFQUFFO29CQUNqRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdEI7YUFDSjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7d0dBeFNRLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkF5Qm9DLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlVdGlsLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRU5URVIsIEVTQ0FQRSwgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFNQQUNFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmludGVyZmFjZSBNZW51Tm9kZSB7XG4gICAgaXRlbTogTWVudUl0ZW1Db21wb25lbnQgfCBudWxsO1xuICAgIHBhcmVudDogTWVudU5vZGUgfCBudWxsO1xuICAgIGNoaWxkcmVuOiBNZW51Tm9kZVtdO1xufVxuXG4vKiogYG51bGxgIGtleSBpcyB1c2VkIGZvciB0aGUgcm9vdCBub2RlICovXG50eXBlIE1lbnVNYXAgPSBNYXA8TWVudUl0ZW1Db21wb25lbnQgfCBudWxsLCBNZW51Tm9kZT47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZW51U2VydmljZSB7XG4gICAgLyoqIE1hcCBvZiBtZW51IGl0ZW1zIHRvIG1lbnUgbm9kZXMgKi9cbiAgICBtZW51TWFwOiBNZW51TWFwO1xuXG4gICAgLyoqIEN1cnJlbnRseSBmb2N1c2VkIG5vZGUgKi9cbiAgICBmb2N1c2VkTm9kZTogTWVudU5vZGUgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQ29sbGVjdGlvbiBvZiBhY3RpdmUgbWVudSBub2RlcyAqL1xuICAgIGFjdGl2ZU5vZGVQYXRoOiBNZW51Tm9kZVtdID0gW107XG5cbiAgICAvKiogQ29sbGVjdGlvbiBvZiBhY3RpdmUgbWVudSBub2RlcyAqL1xuICAgIHByaXZhdGUgX2lzTW9iaWxlTW9kZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21lbnVDb21wb25lbnQ6IE1lbnVDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lLZXlib2FyZEhhbmRsZXJMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1J0bCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC52YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlKSB7fVxuXG4gICAgLyoqIFJlZmVyZW5jZSB0byBtZW51IGNvbXBvbmVudCAqL1xuICAgIGdldCBtZW51Q29tcG9uZW50KCk6IE1lbnVDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudUNvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBtZW51IG1vZGUgb2JzZXJ2YWJsZSAqL1xuICAgIGdldCBpc01vYmlsZU1vZGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc01vYmlsZU1vZGUucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyBtZW51IG1vZGUgKi9cbiAgICBzZXRNZW51TW9kZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc01vYmlsZU1vZGUubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgZ2l2ZW4gbWVudSBpdGVtIGFzIGZvY3VzZWQgKi9cbiAgICBzZXRGb2N1c2VkKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkTm9kZSA9IHRoaXMubWVudU1hcC5nZXQobWVudUl0ZW0pO1xuICAgICAgICB0aGlzLmZvY3VzZWROb2RlPy5pdGVtPy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgc3RhdGUgb2YgYSBnaXZlbiBtZW51IGl0ZW1cbiAgICAgKiBAcGFyYW0gaXNBY3RpdmUgLSBXaGV0aGVyIHNob3VsZCBiZSBzZXQgYXMgYWN0aXZlIG9yIGluYWN0aXZlXG4gICAgICogQHBhcmFtIG1lbnVJdGVtIGBNZW51SXRlbUNvbXBvbmVudGAgdGhhdCBzaG91bGQgYmUgc2V0IGFzIGFjdGl2ZSBvciBpbmFjdGl2ZVxuICAgICAqL1xuICAgIHNldEFjdGl2ZShpc0FjdGl2ZTogYm9vbGVhbiwgbWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIW1lbnVJdGVtIHx8IChpc0FjdGl2ZSAmJiBtZW51SXRlbS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkVG9BY3RpdmVQYXRoKG1lbnVJdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21BY3RpdmVQYXRoKG1lbnVJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2VtaXRBY3RpdmVQYXRoKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgYWN0aXZlIHNpYmxpbmcgc3VibWVudSBpZiBhbnlcbiAgICAgKiBAcGFyYW0gbWVudUl0ZW0gdG8gbG9vayBmb3IgYWN0aXZlIHNpYmxpbmdzXG4gICAgICovXG4gICAgc2V0SW5hY3RpdmVTaWJsaW5nTWVudUl0ZW0obWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFjdGl2ZVNpYmxpbmcobWVudUl0ZW0pO1xuICAgICAgICB0aGlzLl9lbWl0QWN0aXZlUGF0aCgpO1xuICAgIH1cblxuICAgIC8qKiBJbml0aWFsaXplcyBtZW51IHNlcnZpY2UgYmFzZWQgb24gZ2l2ZW4gTWVudSBDb21wb25lbnQgKi9cbiAgICBzZXRNZW51Q29tcG9uZW50KG1lbnU6IE1lbnVDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudUNvbXBvbmVudCA9IG1lbnU7XG4gICAgICAgIHRoaXMubWVudU1hcCA9IHRoaXMuX2J1aWxkTWVudU1hcCh0aGlzLl9tZW51Q29tcG9uZW50KTtcbiAgICB9XG5cbiAgICAvKiogQ2xlYXJzIEFjdGl2ZSBOb2RlIFBhdGggYW5kIHJlc2V0cyBGb2N1c2VkIE5vZGUgKi9cbiAgICByZXNldE1lbnVTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2xlYXJBY3RpdmVQYXRoKCk7XG4gICAgICAgIHRoaXMuZm9jdXNlZE5vZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX2VtaXRBY3RpdmVQYXRoKCk7XG4gICAgfVxuXG4gICAgLyoqIC0gVXBkYXRlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBtZW51XG4gICAgICogIC0gVmFsaWRhdGVzIEFjdGl2ZSBOb2RlIFBhdGhcbiAgICAgKiAgLSBWYWxpZGF0ZXMgRm9jdXNlZCBOb2RlICovXG4gICAgcmVidWlsZE1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudU1hcCA9IHRoaXMuX2J1aWxkTWVudU1hcCh0aGlzLl9tZW51Q29tcG9uZW50KTtcblxuICAgICAgICBjb25zdCBkZWFkTm9kZSA9IHRoaXMuYWN0aXZlTm9kZVBhdGguZmluZCgobm9kZSkgPT4gIXRoaXMubWVudU1hcC5oYXMobm9kZS5pdGVtKSk7XG4gICAgICAgIGlmIChkZWFkTm9kZT8uaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmUoZmFsc2UsIGRlYWROb2RlLml0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW52YWxpZEZvY3VzZWRFbGVtZW50ID0gdGhpcy5mb2N1c2VkTm9kZSAmJiAhdGhpcy5tZW51TWFwLmdldCh0aGlzLmZvY3VzZWROb2RlLml0ZW0pO1xuICAgICAgICBpZiAoaW52YWxpZEZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWROb2RlID1cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU5vZGVQYXRoW3RoaXMuYWN0aXZlTm9kZVBhdGgubGVuZ3RoIC0gMV0gfHwgdGhpcy5tZW51TWFwLmdldChudWxsKSEuY2hpbGRyZW5bMF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkcyBNZW51IGtleWJvYXJkIHN1cHBvcnQgKi9cbiAgICBhZGRLZXlib2FyZFN1cHBvcnQoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZUtleWJvYXJkU3VwcG9ydCgpO1xuICAgICAgICB0aGlzLl9zZXRLZXlib2FyZFN1cHBvcnQoZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZXMgTWVudSBrZXlib2FyZCBzdXBwb3J0ICovXG4gICAgcmVtb3ZlS2V5Ym9hcmRTdXBwb3J0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGVzdHJveUtleWJvYXJkSGFuZGxlckxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95S2V5Ym9hcmRIYW5kbGVyTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVLZXlib2FyZFN1cHBvcnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm5zIHNpYmxpbmdzIG9mIGdpdmVuIG5vZGUgKi9cbiAgICBwcml2YXRlIF9ub2RlU2libGluZ3Mobm9kZTogTWVudU5vZGUpOiBNZW51Tm9kZVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50ID8gbm9kZS5wYXJlbnQuY2hpbGRyZW4gOiB0aGlzLm1lbnVNYXAuZ2V0KG51bGwpPy5jaGlsZHJlbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBBZGRzIGdpdmVuIGVsZW1lbnQgdG8gdGhlIEFjdGl2ZSBOb2RlIFBhdGggYW5kIHNldHRzIGFzIGFjdGl2ZSovXG4gICAgcHJpdmF0ZSBfYWRkVG9BY3RpdmVQYXRoKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZW51Tm9kZSA9IHRoaXMubWVudU1hcC5nZXQobWVudUl0ZW0pO1xuXG4gICAgICAgIHRoaXMuX3JlbW92ZUFjdGl2ZVNpYmxpbmcobWVudUl0ZW0pO1xuXG4gICAgICAgIGlmIChtZW51Tm9kZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVOb2RlUGF0aC5wdXNoKG1lbnVOb2RlKTtcbiAgICAgICAgICAgIG1lbnVOb2RlLml0ZW0/LnNldFNlbGVjdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmVtb3ZlcyBnaXZlbiBlbGVtZW50IGFuZCBhbGwgaXRzIHN1Y2Nlc3NvcnMgZnJvbSB0aGUgQWN0aXZlIE5vZGUgUGF0aCBhbmQgc2V0dHMgYXMgaW5hY3RpdmUqL1xuICAgIHByaXZhdGUgX3JlbW92ZUZyb21BY3RpdmVQYXRoKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVudU5vZGUgPSB0aGlzLm1lbnVNYXAuZ2V0KG1lbnVJdGVtKTtcbiAgICAgICAgaWYgKG1lbnVOb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoSW5kZXggPSB0aGlzLmFjdGl2ZU5vZGVQYXRoLmZpbmRJbmRleCgoaSkgPT4gaS5pdGVtID09PSBtZW51Tm9kZS5pdGVtKTtcblxuICAgICAgICAgICAgaWYgKHBhdGhJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU5vZGVQYXRoXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpY2UocGF0aEluZGV4KVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgocmVtb3ZlZEFjdGl2ZU5vZGUpID0+IHJlbW92ZWRBY3RpdmVOb2RlLml0ZW0/LnNldFNlbGVjdGVkKGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBBY3RpdmUgTm9kZSBQYXRoIGFuZCBzZXRzIHRoZW0gYXMgY2xvc2VkICovXG4gICAgcHJpdmF0ZSBfY2xlYXJBY3RpdmVQYXRoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVOb2RlUGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21BY3RpdmVQYXRoKHRoaXMuYWN0aXZlTm9kZVBhdGhbMF0uaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIC0gQnVpbGRzIE1lbnUgTm9kZXMgYmFzZWQgb24gTWVudSBJdGVtc1xuICAgICAqIC0gQ3JlYXRlcyBNYXAgb2YgdGhlIE1lbnUgTm9kZXMgKi9cbiAgICBwcml2YXRlIF9idWlsZE1lbnVNYXAobWVudTogTWVudUNvbXBvbmVudCk6IE1lbnVNYXAge1xuICAgICAgICBmdW5jdGlvbiBidWlsZE5vZGUobWVudUl0ZW06IE1lbnVJdGVtQ29tcG9uZW50KTogTWVudU5vZGUge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpdGVtOiBtZW51SXRlbSxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IG1lbnVJdGVtLnN1Ym1lbnVcbiAgICAgICAgICAgICAgICAgICAgPyBtZW51SXRlbS5zdWJtZW51Lm1lbnVJdGVtcy5tYXAoKHN1Yk1lbnVJdGVtKSA9PiBidWlsZE5vZGUoc3ViTWVudUl0ZW0pKVxuICAgICAgICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc2V0UGFyZW50cyhub2RlOiBNZW51Tm9kZSwgcGFyZW50OiBNZW51Tm9kZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHNldFBhcmVudHMoY2hpbGROb2RlLCBub2RlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiB0b01hcChub2RlOiBNZW51Tm9kZSwgbWFwID0gbmV3IE1hcCgpIGFzIE1lbnVNYXApOiBNZW51TWFwIHtcbiAgICAgICAgICAgIG1hcC5zZXQobm9kZS5pdGVtLCBub2RlKTtcbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB0b01hcChjaGlsZE5vZGUsIG1hcCkpO1xuICAgICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvb3RJdGVtcyA9IG1lbnUuX21lbnVJdGVtcy5maWx0ZXIoKHJvb3RJdGVtKSA9PiAhcm9vdEl0ZW0ucGFyZW50U3VibWVudSk7XG5cbiAgICAgICAgLyoqIHJvb3QgaXRlbSAqL1xuICAgICAgICBjb25zdCBtZW51VHJlZTogTWVudU5vZGUgPSB7XG4gICAgICAgICAgICBpdGVtOiBudWxsLFxuICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgY2hpbGRyZW46IHJvb3RJdGVtcy5tYXAoKGl0ZW0pID0+IGJ1aWxkTm9kZShpdGVtKSlcbiAgICAgICAgfTtcblxuICAgICAgICBzZXRQYXJlbnRzKG1lbnVUcmVlLCBudWxsKTtcblxuICAgICAgICByZXR1cm4gdG9NYXAobWVudVRyZWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlbW92ZXMgYWN0aXZlIHNpYmxpbmcgb2YgYSBnaXZlbiBtZW51IGl0ZW0gZnJvbSB0aGUgQWN0aXZlIFBhdGggKi9cbiAgICBwcml2YXRlIF9yZW1vdmVBY3RpdmVTaWJsaW5nKG1lbnVJdGVtOiBNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZW51Tm9kZSA9IHRoaXMubWVudU1hcC5nZXQobWVudUl0ZW0pO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IG1lbnVOb2RlPy5wYXJlbnQ/LmNoaWxkcmVuLm1hcCgoaSkgPT4gaS5pdGVtKTtcbiAgICAgICAgY29uc3QgYWN0aXZlU2libGluZyA9IHRoaXMuYWN0aXZlTm9kZVBhdGguZmluZCgoaSkgPT4gY2hpbGRyZW4/LmluY2x1ZGVzKGkuaXRlbSkpO1xuXG4gICAgICAgIGlmIChhY3RpdmVTaWJsaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVQYXJlbnRJbmRleCA9IHRoaXMuYWN0aXZlTm9kZVBhdGguaW5kZXhPZihtZW51Tm9kZT8ucGFyZW50IGFzIE1lbnVOb2RlKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZyb21BY3RpdmVQYXRoKGFjdGl2ZVBhcmVudEluZGV4ICE9PSAtMSA/IGFjdGl2ZVNpYmxpbmcuaXRlbSA6IHRoaXMuYWN0aXZlTm9kZVBhdGhbMF0uaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBBZGRzIGtleWJvYXJkIHN1cHBvcnQgKi9cbiAgICBwcml2YXRlIF9zZXRLZXlib2FyZFN1cHBvcnQoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95S2V5Ym9hcmRIYW5kbGVyTGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oXG4gICAgICAgICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAna2V5ZG93bicsXG4gICAgICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX2hhbmRsZUtleShldmVudClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9jdXNSaWdodCA9IChub2RlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0Rm9jdXNlZChub2RlLmNoaWxkcmVuWzBdLml0ZW0pKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICghdGhpcy5mb2N1c2VkTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgJiYgIXRoaXMuX2lzUnRsKSB8fFxuICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSAmJiB0aGlzLl9pc1J0bClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkTm9kZT8uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmUodHJ1ZSwgdGhpcy5mb2N1c2VkTm9kZS5pdGVtKTtcbiAgICAgICAgICAgICAgICBmb2N1c1JpZ2h0KHRoaXMuZm9jdXNlZE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSAmJiAhdGhpcy5faXNSdGwpIHx8XG4gICAgICAgICAgICAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFJJR0hUX0FSUk9XKSAmJiB0aGlzLl9pc1J0bClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkTm9kZS5wYXJlbnQ/Lml0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEFjdGl2ZShmYWxzZSwgdGhpcy5mb2N1c2VkTm9kZS5wYXJlbnQuaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb2N1c2VkKHRoaXMuZm9jdXNlZE5vZGUucGFyZW50Lml0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgY29uc3QgY2xvc2VzdCA9IHRoaXMuX2Nsb3Nlc3RFbmFibGVkKHRoaXMuZm9jdXNlZE5vZGUsICdkb3duJyk7XG4gICAgICAgICAgICBpZiAoY2xvc2VzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNlZChjbG9zZXN0Lml0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3QgPSB0aGlzLl9jbG9zZXN0RW5hYmxlZCh0aGlzLmZvY3VzZWROb2RlLCAndXAnKTtcbiAgICAgICAgICAgIGlmIChjbG9zZXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb2N1c2VkKGNsb3Nlc3QuaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtTUEFDRSwgRU5URVJdKSkge1xuICAgICAgICAgICAgY29uc3QgZm9jdXNlZE5vZGUgPSB0aGlzLmZvY3VzZWROb2RlO1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmUodHJ1ZSwgZm9jdXNlZE5vZGU/Lml0ZW0pO1xuICAgICAgICAgICAgZm9jdXNlZE5vZGUuaXRlbT8uY2xpY2soKTtcbiAgICAgICAgICAgIGlmIChmb2N1c2VkTm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb2N1c1JpZ2h0KGZvY3VzZWROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRVNDQVBFKSAmJiB0aGlzLm1lbnVDb21wb25lbnQuY2xvc2VPbkVzY2FwZUtleSkge1xuICAgICAgICAgICAgdGhpcy5tZW51Q29tcG9uZW50LmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRjaGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEVtaXRzIGFuIGFycmF5IG9mIGFjdGl2ZSBtZW51IGl0ZW1zICovXG4gICAgcHJpdmF0ZSBfZW1pdEFjdGl2ZVBhdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUNvbXBvbmVudC5hY3RpdmVQYXRoLmVtaXQodGhpcy5hY3RpdmVOb2RlUGF0aC5tYXAoKG5vZGUpID0+IG5vZGUuaXRlbSkgYXMgTWVudUl0ZW1Db21wb25lbnRbXSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGVwZW5kaW5nIG9uIGRpcmVjdGlvbiByZXR1cm5zIGNsb3Nlc3QgZW5hYmxlZCBzaWJsaW5nIG9mIGdpdmVuIG5vZGUgKi9cbiAgICBwcml2YXRlIF9jbG9zZXN0RW5hYmxlZChub2RlOiBNZW51Tm9kZSwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogTWVudU5vZGUgfCBudWxsIHtcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPVxuICAgICAgICAgICAgZGlyZWN0aW9uID09PSAndXAnID8gWy4uLih0aGlzLl9ub2RlU2libGluZ3Mobm9kZSkgPz8gW10pXS5yZXZlcnNlKCkgOiB0aGlzLl9ub2RlU2libGluZ3Mobm9kZSk7XG5cbiAgICAgICAgaWYgKHNpYmxpbmdzKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gc2libGluZ3MuaW5kZXhPZihub2RlKSArIDE7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgc2libGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoc2libGluZ3NbaV0uaXRlbSAmJiAhc2libGluZ3NbaV0uaXRlbSEuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmdzW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==