@fundamental-ngx/core 0.44.0-rc.2 → 0.44.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/avatar/avatar.component.d.ts +0 -1
  2. package/bar/directives/bar-element.directive.d.ts +6 -3
  3. package/breadcrumb/breadcrumb.component.d.ts +4 -4
  4. package/carousel/carousel.component.d.ts +8 -2
  5. package/content-density/providers/content-density-observer-providers.d.ts +1 -1
  6. package/content-density/services/content-density-observer.service.d.ts +3 -3
  7. package/date-picker/date-picker.component.d.ts +30 -9
  8. package/datetime-picker/datetime-picker.component.d.ts +28 -10
  9. package/dialog/dialog-container/dialog-container.component.d.ts +4 -4
  10. package/dialog/dialog-footer-button/dialog-footer-button.component.d.ts +2 -0
  11. package/dialog/directives/dialog-decisive-button.directive.d.ts +2 -0
  12. package/dialog/utils/dialog-config.class.d.ts +1 -1
  13. package/esm2022/action-bar/action-bar.component.mjs +10 -3
  14. package/esm2022/alert/alert-service/alert.service.mjs +12 -3
  15. package/esm2022/alert/alert-utils/alert-config.mjs +11 -3
  16. package/esm2022/alert/alert-utils/alert-container.component.mjs +11 -3
  17. package/esm2022/alert/alert-utils/alert-ref.mjs +11 -3
  18. package/esm2022/alert/alert.component.mjs +17 -3
  19. package/esm2022/alert/alert.module.mjs +11 -3
  20. package/esm2022/avatar/avatar.component.mjs +2 -2
  21. package/esm2022/bar/directives/bar-element.directive.mjs +15 -7
  22. package/esm2022/breadcrumb/breadcrumb.component.mjs +9 -11
  23. package/esm2022/carousel/carousel.component.mjs +34 -5
  24. package/esm2022/combobox/combobox-mobile/combobox-mobile.component.mjs +1 -1
  25. package/esm2022/content-density/providers/content-density-observer-providers.mjs +4 -4
  26. package/esm2022/content-density/services/content-density-observer.service.mjs +13 -13
  27. package/esm2022/date-picker/date-picker.component.mjs +103 -10
  28. package/esm2022/datetime-picker/datetime-picker.component.mjs +78 -8
  29. package/esm2022/dialog/dialog-container/dialog-container.component.mjs +12 -13
  30. package/esm2022/dialog/dialog-footer-button/dialog-footer-button.component.mjs +8 -3
  31. package/esm2022/dialog/dialog-header/dialog-header.component.mjs +1 -1
  32. package/esm2022/dialog/directives/dialog-decisive-button.directive.mjs +6 -2
  33. package/esm2022/dialog/utils/dialog-config.class.mjs +1 -1
  34. package/esm2022/feed-list-item/components/item/feed-list-item.component.mjs +23 -1
  35. package/esm2022/form/form-label/form-label.component.mjs +21 -5
  36. package/esm2022/list/list-item/list-item.component.mjs +36 -1
  37. package/esm2022/menu/menu-mobile/menu-mobile.component.mjs +1 -1
  38. package/esm2022/message-box/directives/message-box-decisive-button.directive.mjs +6 -2
  39. package/esm2022/message-box/message-box-container/message-box-container.component.mjs +12 -15
  40. package/esm2022/message-box/message-box-footer-button/message-box-footer-button.component.mjs +8 -3
  41. package/esm2022/message-box/message-box-header/message-box-header.component.mjs +1 -1
  42. package/esm2022/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.mjs +8 -9
  43. package/esm2022/message-strip/auto-dismiss-message-strip.directive.mjs +10 -9
  44. package/esm2022/message-strip/message-strip.component.mjs +12 -1
  45. package/esm2022/multi-combobox/base-multi-combobox.class.mjs +17 -14
  46. package/esm2022/multi-combobox/mobile/mobile-multi-combobox.component.mjs +1 -1
  47. package/esm2022/multi-combobox/multi-combobox.component.mjs +44 -45
  48. package/esm2022/multi-combobox/select-all-toggler/select-all-toggler.component.mjs +8 -10
  49. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
  50. package/esm2022/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +9 -11
  51. package/esm2022/pagination/pagination.component.mjs +140 -2
  52. package/esm2022/popover/base/base-popover.class.mjs +25 -1
  53. package/esm2022/popover/popover.component.mjs +28 -17
  54. package/esm2022/product-switch/product-switch/product-switch.component.mjs +11 -1
  55. package/esm2022/quick-view/quick-view-title/quick-view-title.component.mjs +1 -1
  56. package/esm2022/segmented-button/segmented-button.component.mjs +19 -21
  57. package/esm2022/select/select.component.mjs +17 -10
  58. package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +12 -1
  59. package/esm2022/shellbar/shellbar.component.mjs +12 -11
  60. package/esm2022/side-navigation/side-navigation.component.mjs +12 -3
  61. package/esm2022/slider/slider.component.mjs +83 -13
  62. package/esm2022/split-button/split-button.component.mjs +34 -16
  63. package/esm2022/splitter/splitter-pagination/splitter-pagination.component.mjs +9 -2
  64. package/esm2022/splitter/splitter.component.mjs +16 -5
  65. package/esm2022/step-input/step-input.component.mjs +46 -24
  66. package/esm2022/switch/switch.component.mjs +25 -3
  67. package/esm2022/table/directives/table-cell.directive.mjs +5 -7
  68. package/esm2022/table/directives/table-row.directive.mjs +17 -20
  69. package/esm2022/table/table.component.mjs +10 -9
  70. package/esm2022/tabs/tab-item-expand/tab-item-expand.component.mjs +11 -1
  71. package/esm2022/tabs/tab-list.component.mjs +40 -31
  72. package/esm2022/text/text.component.mjs +23 -1
  73. package/esm2022/time/i18n/time-i18n.mjs +2 -2
  74. package/esm2022/token/token.component.mjs +36 -14
  75. package/esm2022/toolbar/toolbar.component.mjs +33 -26
  76. package/esm2022/tree/components/tree-item/tree-item.component.mjs +21 -21
  77. package/esm2022/tree/tree.component.mjs +23 -22
  78. package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +67 -1
  79. package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +12 -1
  80. package/feed-list-item/components/item/feed-list-item.component.d.ts +8 -2
  81. package/fesm2022/fundamental-ngx-core-action-bar.mjs +9 -2
  82. package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-alert.mjs +58 -13
  84. package/fesm2022/fundamental-ngx-core-alert.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-avatar.mjs +1 -1
  86. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-bar.mjs +14 -6
  88. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +9 -10
  90. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-carousel.mjs +32 -3
  92. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  94. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-content-density.mjs +15 -14
  96. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  97. package/fesm2022/fundamental-ngx-core-date-picker.mjs +102 -9
  98. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  99. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +77 -7
  100. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-core-dialog.mjs +23 -13
  102. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +22 -0
  104. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-form.mjs +20 -4
  106. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-core-list.mjs +35 -0
  108. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-menu.mjs +1 -1
  110. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-message-box.mjs +24 -15
  112. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-core-message-strip.mjs +27 -14
  114. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +63 -64
  116. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
  118. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  119. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +9 -10
  120. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  121. package/fesm2022/fundamental-ngx-core-pagination.mjs +139 -1
  122. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  123. package/fesm2022/fundamental-ngx-core-popover.mjs +51 -16
  124. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  125. package/fesm2022/fundamental-ngx-core-product-switch.mjs +10 -0
  126. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  127. package/fesm2022/fundamental-ngx-core-quick-view.mjs +1 -1
  128. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  129. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +17 -19
  130. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  131. package/fesm2022/fundamental-ngx-core-select.mjs +16 -9
  132. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  133. package/fesm2022/fundamental-ngx-core-shellbar.mjs +22 -10
  134. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  135. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +11 -2
  136. package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  137. package/fesm2022/fundamental-ngx-core-slider.mjs +82 -12
  138. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  139. package/fesm2022/fundamental-ngx-core-split-button.mjs +32 -13
  140. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  141. package/fesm2022/fundamental-ngx-core-splitter.mjs +23 -5
  142. package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-core-step-input.mjs +45 -23
  144. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-core-switch.mjs +24 -2
  146. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  147. package/fesm2022/fundamental-ngx-core-table.mjs +26 -30
  148. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-tabs.mjs +51 -31
  150. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-text.mjs +22 -0
  152. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-time.mjs +1 -1
  154. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-token.mjs +36 -13
  156. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-toolbar.mjs +31 -24
  158. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-core-tree.mjs +38 -38
  160. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +77 -0
  162. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  163. package/form/form-label/form-label.component.d.ts +8 -2
  164. package/fundamental-ngx-core-v0.44.0-rc.4.tgz +0 -0
  165. package/list/list-item/list-item.component.d.ts +16 -4
  166. package/message-box/directives/message-box-decisive-button.directive.d.ts +2 -0
  167. package/message-box/message-box-container/message-box-container.component.d.ts +4 -6
  168. package/message-box/message-box-footer-button/message-box-footer-button.component.d.ts +2 -0
  169. package/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.d.ts +1 -1
  170. package/message-strip/auto-dismiss-message-strip.directive.d.ts +3 -3
  171. package/message-strip/message-strip.component.d.ts +4 -1
  172. package/multi-combobox/base-multi-combobox.class.d.ts +30 -30
  173. package/multi-combobox/multi-combobox.component.d.ts +17 -18
  174. package/multi-combobox/select-all-toggler/select-all-toggler.component.d.ts +1 -1
  175. package/overflow-layout/directives/overflow-layout-popover-content.directive.d.ts +5 -6
  176. package/package.json +3 -3
  177. package/pagination/pagination.component.d.ts +44 -11
  178. package/popover/base/base-popover.class.d.ts +12 -3
  179. package/popover/popover.component.d.ts +8 -5
  180. package/product-switch/product-switch/product-switch.component.d.ts +4 -1
  181. package/schematics/add-dependencies/index.js +4 -4
  182. package/segmented-button/segmented-button.component.d.ts +6 -7
  183. package/select/select.component.d.ts +9 -6
  184. package/shellbar/shellbar-actions/shellbar-actions.component.d.ts +6 -3
  185. package/shellbar/shellbar.component.d.ts +1 -1
  186. package/slider/slider.component.d.ts +13 -4
  187. package/split-button/split-button.component.d.ts +11 -6
  188. package/splitter/splitter.component.d.ts +5 -2
  189. package/step-input/step-input.component.d.ts +12 -6
  190. package/switch/switch.component.d.ts +10 -4
  191. package/table/directives/table-row.directive.d.ts +2 -4
  192. package/table/table.component.d.ts +3 -4
  193. package/tabs/tab-item-expand/tab-item-expand.component.d.ts +4 -1
  194. package/tabs/tab-list.component.d.ts +10 -8
  195. package/text/text.component.d.ts +8 -2
  196. package/time/i18n/time-i18n.d.ts +2 -2
  197. package/token/token.component.d.ts +13 -7
  198. package/toolbar/toolbar.component.d.ts +10 -7
  199. package/tree/components/tree-item/tree-item.component.d.ts +28 -28
  200. package/tree/tree.component.d.ts +7 -7
  201. package/upload-collection/upload-collection-button-group/upload-collection-button-group.component.d.ts +24 -6
  202. package/upload-collection/upload-collection-form-item/upload-collection-form-item.component.d.ts +6 -3
  203. package/fundamental-ngx-core-v0.44.0-rc.2.tgz +0 -0
@@ -1,7 +1,9 @@
1
+ import { __decorate, __metadata } from "tslib";
1
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, EventEmitter, HostListener, Input, NgZone, Optional, Output, TemplateRef, Type, ViewChild, ViewContainerRef } from '@angular/core';
2
3
  import { AbstractFdNgxClass } from '@fundamental-ngx/cdk/utils';
3
4
  import { AlertRef } from './alert-utils/alert-ref';
4
5
  import { AlertConfig } from './alert-utils/alert-config';
6
+ import deprecated from 'deprecated-decorator';
5
7
  import * as i0 from "@angular/core";
6
8
  import * as i1 from "./alert-utils/alert-config";
7
9
  import * as i2 from "./alert-utils/alert-ref";
@@ -15,7 +17,7 @@ let alertUniqueId = 0;
15
17
  * The component that represents an alert. It can be only be used inline.
16
18
  * If the AlertService is used, this component is auto-generated.
17
19
  */
18
- export class AlertComponent extends AbstractFdNgxClass {
20
+ export let AlertComponent = class AlertComponent extends AbstractFdNgxClass {
19
21
  /** @hidden */
20
22
  constructor(elRef, cdRef, componentFactoryResolver, ngZone, alertConfig, alertRef) {
21
23
  super(elRef);
@@ -164,7 +166,19 @@ export class AlertComponent extends AbstractFdNgxClass {
164
166
  }
165
167
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AlertComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: i1.AlertConfig, optional: true }, { token: i2.AlertRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
166
168
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: AlertComponent, selector: "fd-alert", inputs: { dismissible: "dismissible", type: "type", id: "id", duration: "duration", mousePersist: "mousePersist", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", dismissLabel: "dismissLabel", width: "width", minWidth: "minWidth", message: "message" }, outputs: { onDismiss: "onDismiss" }, host: { listeners: { "mouseenter": "handleAlertMouseEvent($event)", "mouseleave": "handleAlertMouseEvent($event)" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<fd-message-strip\n [dismissLabel]=\"dismissLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaLabel]=\"ariaLabel\"\n [width]=\"width\"\n [minWidth]=\"minWidth\"\n [dismissible]=\"dismissible\"\n [id]=\"id\"\n [type]=\"type\"\n (onDismiss)=\"onDismiss.emit($event)\"\n>\n <ng-container #container>{{ message }}</ng-container>\n <ng-content></ng-content>\n</fd-message-strip>\n", styles: [":host{display:block}:host.fd-has-display-block{display:block}:host.fd-has-display-none{display:none}\n"], dependencies: [{ kind: "component", type: i3.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "dismissLabel", "width", "minWidth", "marginBottom"], outputs: ["onDismiss"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
167
- }
169
+ };
170
+ AlertComponent = __decorate([
171
+ deprecated({
172
+ version: '0.16.0',
173
+ alternative: 'Message Strip'
174
+ }),
175
+ __metadata("design:paramtypes", [ElementRef,
176
+ ChangeDetectorRef,
177
+ ComponentFactoryResolver,
178
+ NgZone,
179
+ AlertConfig,
180
+ AlertRef])
181
+ ], AlertComponent);
168
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AlertComponent, decorators: [{
169
183
  type: Component,
170
184
  args: [{ selector: 'fd-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-message-strip\n [dismissLabel]=\"dismissLabel\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [ariaLabel]=\"ariaLabel\"\n [width]=\"width\"\n [minWidth]=\"minWidth\"\n [dismissible]=\"dismissible\"\n [id]=\"id\"\n [type]=\"type\"\n (onDismiss)=\"onDismiss.emit($event)\"\n>\n <ng-container #container>{{ message }}</ng-container>\n <ng-content></ng-content>\n</fd-message-strip>\n", styles: [":host{display:block}:host.fd-has-display-block{display:block}:host.fd-has-display-none{display:none}\n"] }]
@@ -208,4 +222,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
208
222
  type: HostListener,
209
223
  args: ['mouseleave', ['$event']]
210
224
  }] } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYWxlcnQvYWxlcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULHdCQUF3QixFQUV4QixVQUFVLEVBRVYsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLElBQUksRUFDSixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBR3pELElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztBQUV0Qjs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxrQkFBa0I7SUErRGxELGNBQWM7SUFDZCxZQUNZLEtBQWlCLEVBQ2pCLEtBQXdCLEVBQ3hCLHdCQUFrRCxFQUNsRCxNQUFjLEVBQ0YsV0FBd0IsRUFDeEIsUUFBa0I7UUFFdEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBUEwsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDRixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFV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dUJBQXVCLENBQUMsTUFBTTs7MEJBdUUxQyxRQUFROzswQkFDUixRQUFROzRDQW5FYixZQUFZO3NCQURYLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUtsRCxXQUFXO3NCQURWLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLEVBQUU7c0JBREQsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sT0FBTztzQkFETixLQUFLOztRQUtOLCtEQUErRDtRQUMvRCxTQUFTO3NCQUZSLE1BQU07Z0JBMEdQLHFCQUFxQjtzQkFGcEIsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNyQyxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIENvbXBvbmVudFJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEVtYmVkZGVkVmlld1JlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZkTmd4Q2xhc3MsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQWxlcnRSZWYgfSBmcm9tICcuL2FsZXJ0LXV0aWxzL2FsZXJ0LXJlZic7XG5pbXBvcnQgeyBBbGVydENvbmZpZyB9IGZyb20gJy4vYWxlcnQtdXRpbHMvYWxlcnQtY29uZmlnJztcbmltcG9ydCB7IE1lc3NhZ2VTdHJpcFR5cGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVzc2FnZS1zdHJpcCc7XG5cbmxldCBhbGVydFVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQWxlcnQgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjE2LjBcbiAqIE1lc3NhZ2UgU3RyaXAgY29tcG9uZW50IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuXG4gKlxuICogVGhlIGNvbXBvbmVudCB0aGF0IHJlcHJlc2VudHMgYW4gYWxlcnQuIEl0IGNhbiBiZSBvbmx5IGJlIHVzZWQgaW5saW5lLlxuICogSWYgdGhlIEFsZXJ0U2VydmljZSBpcyB1c2VkLCB0aGlzIGNvbXBvbmVudCBpcyBhdXRvLWdlbmVyYXRlZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1hbGVydCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGZE5neENsYXNzIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhbGVydCBpcyBkaXNtaXNzaWJsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc21pc3NpYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgdHlwZSBvZiB0aGUgYWxlcnQuIENhbiBiZSBvbmUgb2YgKndhcm5pbmcqLCAqc3VjY2VzcyosICppbmZvcm1hdGlvbiosICplcnJvciogb3IgbnVsbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGU7XG5cbiAgICAvKiogSWQgZm9yIHRoZSBhbGVydCBjb21wb25lbnQuIElmIG9taXR0ZWQsIGEgdW5pcXVlIG9uZSBpcyBnZW5lcmF0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkLWFsZXJ0LScgKyBhbGVydFVuaXF1ZUlkKys7XG5cbiAgICAvKiogRHVyYXRpb24gb2YgdGltZSAqaW4gbWlsbGlzZWNvbmRzKiB0aGF0IHRoZSBhbGVydCB3aWxsIGJlIHZpc2libGUuIFNldCB0byAtMSBmb3IgaW5kZWZpbml0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGR1cmF0aW9uID0gMTAwMDA7XG5cbiAgICAvKiogV2hldGhlciB0aGUgYWxlcnQgc2hvdWxkIHN0YXkgb3BlbiBpZiB0aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciBpdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vdXNlUGVyc2lzdCA9IGZhbHNlO1xuXG4gICAgLyoqIElkIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzIHRoZSBhbGVydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBhbGVydCBjb21wb25lbnQgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgZGlzbWlzcyBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBkaXNtaXNzTGFiZWwgPSAnRGlzbWlzcyc7XG5cbiAgICAvKiogV2lkdGggb2YgdGhlIGFsZXJ0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgd2lkdGg6IHN0cmluZztcblxuICAgIC8qKiBNaW5pbXVtIHdpZHRoIG9mIHRoZSBhbGVydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbldpZHRoOiBzdHJpbmc7XG5cbiAgICAvKiogQWx0ZXJuYXRpdmUgd2F5IG9mIHBhc3NpbmcgaW4gYSBtZXNzYWdlIHRvIHRoZSBhbGVydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1lc3NhZ2U6IHN0cmluZztcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBhbGVydCBpcyBkaXNtaXNzZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25EaXNtaXNzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1vdXNlSW5BbGVydCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+IHwgRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoaWxkQ29udGVudDogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGFsZXJ0Q29uZmlnOiBBbGVydENvbmZpZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBhbGVydFJlZjogQWxlcnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxSZWYpO1xuICAgICAgICB0aGlzLl9zZXRBbGVydENvbmZpZyhhbGVydENvbmZpZyk7XG4gICAgICAgIHRoaXMuX3NldFByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbGVydFJlZikge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0UHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jaGlsZENvbnRlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkQ29udGVudCBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRGcm9tQ29tcG9uZW50KHRoaXMuY2hpbGRDb250ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGlsZENvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZEZyb21UZW1wbGF0ZSh0aGlzLmNoaWxkQ29udGVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZEZyb21TdHJpbmcodGhpcy5jaGlsZENvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNtaXNzZXMgdGhlIGFsZXJ0LiBJZiB0aGUgYWxlcnQgd2FzIGdlbmVyYXRlZCB2aWEgdGhlIEFsZXJ0U2VydmljZSwgaXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICogT3RoZXJ3aXNlLCBpdCBzZXRzIHRoZSBkaXNwbGF5IHZhbHVlIHRvIG5vbmUuIEZpcmVzIHRoZSBvbkRpc21pc3MgZXZlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWFudWFsRGlzbWlzcyBTZXQgdG8gdHJ1ZSB0byBza2lwIHRoZSBkaXNtaXNzIGFuaW1hdGlvbi5cbiAgICAgKiBAcGFyYW0gcmVhc29uIERhdGEgdG8gcGFzcyBiYWNrIHRvIHRoZSBjYWxsaW5nIGNvbXBvbmVudC4gT25seSB1c2FibGUgaWYgYWxlcnQgaXMgb3BlbmVkIHVzaW5nIHRoZSBTZXJ2aWNlLlxuICAgICAqXG4gICAgICovXG4gICAgZGlzbWlzcyhyZWFzb24/OiBhbnksIG1hbnVhbERpc21pc3M6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAobWFudWFsRGlzbWlzcykge1xuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ZkLWhhcy1kaXNwbGF5LW5vbmUnKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmZC1oYXMtZGlzcGxheS1ibG9jaycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsZXJ0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0UmVmLmRpc21pc3MocmVhc29uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC1oYXMtZGlzcGxheS1ub25lJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZmQtaGFzLWRpc3BsYXktYmxvY2snKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uRGlzbWlzcy5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGFsZXJ0LlxuICAgICAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hbGVydFJlZikge1xuICAgICAgICAgICAgaWYgKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2ZkLWhhcy1kaXNwbGF5LW5vbmUnKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC1oYXMtZGlzcGxheS1ibG9jaycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHVyYXRpb24gPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3VzZVBlcnNpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhaXQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW91c2VJbkFsZXJ0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2FpdCwgNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5kaXNtaXNzKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5kaXNtaXNzKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5kdXJhdGlvbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlQWxlcnRNb3VzZUV2ZW50KGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VlbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VJbkFsZXJ0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnbW91c2VsZWF2ZScpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VJbkFsZXJ0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hZGRDbGFzc1RvRWxlbWVudCgnZmQtYWxlcnQnKTtcbiAgICAgICAgaWYgKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkQ2xhc3NUb0VsZW1lbnQoJ2ZkLWFsZXJ0LS0nICsgdGhpcy50eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkQ2xhc3NUb0VsZW1lbnQoJ2ZkLWFsZXJ0LS1kaXNtaXNzaWJsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGxvYWRGcm9tVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogdGhpcy5hbGVydFJlZlxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGxvYWRGcm9tQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFR5cGU8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgbG9hZEZyb21TdHJpbmcoY29udGVudFN0cmluZzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGNvbnRlbnRTdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRBbGVydENvbmZpZyhhbGVydENvbmZpZzogQWxlcnRDb25maWcpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXMoYWxlcnRDb25maWcgfHwge30pXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleSAhPT0gJ2RhdGEnICYmIGtleSAhPT0gJ2NvbnRhaW5lcicpXG4gICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiAodGhpc1trZXldID0gYWxlcnRDb25maWdba2V5XSkpO1xuICAgIH1cbn1cbiIsIjxmZC1tZXNzYWdlLXN0cmlwXG4gICAgW2Rpc21pc3NMYWJlbF09XCJkaXNtaXNzTGFiZWxcIlxuICAgIFthcmlhTGFiZWxsZWRCeV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFt3aWR0aF09XCJ3aWR0aFwiXG4gICAgW21pbldpZHRoXT1cIm1pbldpZHRoXCJcbiAgICBbZGlzbWlzc2libGVdPVwiZGlzbWlzc2libGVcIlxuICAgIFtpZF09XCJpZFwiXG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgKG9uRGlzbWlzcyk9XCJvbkRpc21pc3MuZW1pdCgkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICNjb250YWluZXI+e3sgbWVzc2FnZSB9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZmQtbWVzc2FnZS1zdHJpcD5cbiJdfQ==
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYWxlcnQvYWxlcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFFeEIsVUFBVSxFQUVWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLEVBQ0osU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sVUFBVSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUU5QyxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFFdEI7Ozs7Ozs7R0FPRztBQVdJLFdBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWUsU0FBUSxrQkFBa0I7SUErRGxELGNBQWM7SUFDZCxZQUNZLEtBQWlCLEVBQ2pCLEtBQXdCLEVBQ3hCLHdCQUFrRCxFQUNsRCxNQUFjLEVBQ0YsV0FBd0IsRUFDeEIsUUFBa0I7UUFFdEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBUEwsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDRixn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Y0E7O0FEaUNhLGNBQWM7SUFWMUIsVUFBVSxDQUFDO1FBQ1IsT0FBTyxFQUFFLFFBQVE7UUFDakIsV0FBVyxFQUFFLGVBQWU7S0FDL0IsQ0FBQztxQ0F3RXFCLFVBQVU7UUFDVixpQkFBaUI7UUFDRSx3QkFBd0I7UUFDMUMsTUFBTTtRQUNXLFdBQVc7UUFDZCxRQUFRO0dBdEVqQyxjQUFjLENBeU0xQjsyRkF6TVksY0FBYztrQkFOMUIsU0FBUzsrQkFDSSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07OzBCQXVFMUMsUUFBUTs7MEJBQ1IsUUFBUTs0Q0FuRWIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFLbEQsV0FBVztzQkFEVixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixFQUFFO3NCQURELEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSzs7UUFLTiwrREFBK0Q7UUFDL0QsU0FBUztzQkFGUixNQUFNO2dCQTBHUCxxQkFBcUI7c0JBRnBCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDckMsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBUeXBlLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RGZE5neENsYXNzLCBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEFsZXJ0UmVmIH0gZnJvbSAnLi9hbGVydC11dGlscy9hbGVydC1yZWYnO1xuaW1wb3J0IHsgQWxlcnRDb25maWcgfSBmcm9tICcuL2FsZXJ0LXV0aWxzL2FsZXJ0LWNvbmZpZyc7XG5pbXBvcnQgeyBNZXNzYWdlU3RyaXBUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lc3NhZ2Utc3RyaXAnO1xuaW1wb3J0IGRlcHJlY2F0ZWQgZnJvbSAnZGVwcmVjYXRlZC1kZWNvcmF0b3InO1xuXG5sZXQgYWxlcnRVbmlxdWVJZCA9IDA7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFsZXJ0IGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC4xNi4wXG4gKiBNZXNzYWdlIFN0cmlwIGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICpcbiAqIFRoZSBjb21wb25lbnQgdGhhdCByZXByZXNlbnRzIGFuIGFsZXJ0LiBJdCBjYW4gYmUgb25seSBiZSB1c2VkIGlubGluZS5cbiAqIElmIHRoZSBBbGVydFNlcnZpY2UgaXMgdXNlZCwgdGhpcyBjb21wb25lbnQgaXMgYXV0by1nZW5lcmF0ZWQuXG4gKi9cbkBkZXByZWNhdGVkKHtcbiAgICB2ZXJzaW9uOiAnMC4xNi4wJyxcbiAgICBhbHRlcm5hdGl2ZTogJ01lc3NhZ2UgU3RyaXAnXG59KVxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1hbGVydCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGZE5neENsYXNzIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhbGVydCBpcyBkaXNtaXNzaWJsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc21pc3NpYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgdHlwZSBvZiB0aGUgYWxlcnQuIENhbiBiZSBvbmUgb2YgKndhcm5pbmcqLCAqc3VjY2VzcyosICppbmZvcm1hdGlvbiosICplcnJvciogb3IgbnVsbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHR5cGU6IE1lc3NhZ2VTdHJpcFR5cGU7XG5cbiAgICAvKiogSWQgZm9yIHRoZSBhbGVydCBjb21wb25lbnQuIElmIG9taXR0ZWQsIGEgdW5pcXVlIG9uZSBpcyBnZW5lcmF0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkLWFsZXJ0LScgKyBhbGVydFVuaXF1ZUlkKys7XG5cbiAgICAvKiogRHVyYXRpb24gb2YgdGltZSAqaW4gbWlsbGlzZWNvbmRzKiB0aGF0IHRoZSBhbGVydCB3aWxsIGJlIHZpc2libGUuIFNldCB0byAtMSBmb3IgaW5kZWZpbml0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGR1cmF0aW9uID0gMTAwMDA7XG5cbiAgICAvKiogV2hldGhlciB0aGUgYWxlcnQgc2hvdWxkIHN0YXkgb3BlbiBpZiB0aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciBpdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vdXNlUGVyc2lzdCA9IGZhbHNlO1xuXG4gICAgLyoqIElkIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzIHRoZSBhbGVydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBhbGVydCBjb21wb25lbnQgZWxlbWVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgZGlzbWlzcyBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBkaXNtaXNzTGFiZWwgPSAnRGlzbWlzcyc7XG5cbiAgICAvKiogV2lkdGggb2YgdGhlIGFsZXJ0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgd2lkdGg6IHN0cmluZztcblxuICAgIC8qKiBNaW5pbXVtIHdpZHRoIG9mIHRoZSBhbGVydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1pbldpZHRoOiBzdHJpbmc7XG5cbiAgICAvKiogQWx0ZXJuYXRpdmUgd2F5IG9mIHBhc3NpbmcgaW4gYSBtZXNzYWdlIHRvIHRoZSBhbGVydC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1lc3NhZ2U6IHN0cmluZztcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBhbGVydCBpcyBkaXNtaXNzZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgb25EaXNtaXNzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG1vdXNlSW5BbGVydCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+IHwgRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoaWxkQ29udGVudDogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGFsZXJ0Q29uZmlnOiBBbGVydENvbmZpZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBhbGVydFJlZjogQWxlcnRSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxSZWYpO1xuICAgICAgICB0aGlzLl9zZXRBbGVydENvbmZpZyhhbGVydENvbmZpZyk7XG4gICAgICAgIHRoaXMuX3NldFByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbGVydFJlZikge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0UHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jaGlsZENvbnRlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkQ29udGVudCBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRGcm9tQ29tcG9uZW50KHRoaXMuY2hpbGRDb250ZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGlsZENvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZEZyb21UZW1wbGF0ZSh0aGlzLmNoaWxkQ29udGVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZEZyb21TdHJpbmcodGhpcy5jaGlsZENvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNtaXNzZXMgdGhlIGFsZXJ0LiBJZiB0aGUgYWxlcnQgd2FzIGdlbmVyYXRlZCB2aWEgdGhlIEFsZXJ0U2VydmljZSwgaXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICogT3RoZXJ3aXNlLCBpdCBzZXRzIHRoZSBkaXNwbGF5IHZhbHVlIHRvIG5vbmUuIEZpcmVzIHRoZSBvbkRpc21pc3MgZXZlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWFudWFsRGlzbWlzcyBTZXQgdG8gdHJ1ZSB0byBza2lwIHRoZSBkaXNtaXNzIGFuaW1hdGlvbi5cbiAgICAgKiBAcGFyYW0gcmVhc29uIERhdGEgdG8gcGFzcyBiYWNrIHRvIHRoZSBjYWxsaW5nIGNvbXBvbmVudC4gT25seSB1c2FibGUgaWYgYWxlcnQgaXMgb3BlbmVkIHVzaW5nIHRoZSBTZXJ2aWNlLlxuICAgICAqXG4gICAgICovXG4gICAgZGlzbWlzcyhyZWFzb24/OiBhbnksIG1hbnVhbERpc21pc3M6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAobWFudWFsRGlzbWlzcykge1xuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ZkLWhhcy1kaXNwbGF5LW5vbmUnKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmZC1oYXMtZGlzcGxheS1ibG9jaycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmFsZXJ0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0UmVmLmRpc21pc3MocmVhc29uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC1oYXMtZGlzcGxheS1ub25lJyk7XG4gICAgICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZmQtaGFzLWRpc3BsYXktYmxvY2snKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uRGlzbWlzcy5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGFsZXJ0LlxuICAgICAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hbGVydFJlZikge1xuICAgICAgICAgICAgaWYgKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2ZkLWhhcy1kaXNwbGF5LW5vbmUnKTtcbiAgICAgICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC1oYXMtZGlzcGxheS1ibG9jaycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHVyYXRpb24gPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3VzZVBlcnNpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhaXQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW91c2VJbkFsZXJ0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2FpdCwgNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5kaXNtaXNzKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5kaXNtaXNzKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5kdXJhdGlvbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlQWxlcnRNb3VzZUV2ZW50KGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VlbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VJbkFsZXJ0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnbW91c2VsZWF2ZScpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VJbkFsZXJ0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hZGRDbGFzc1RvRWxlbWVudCgnZmQtYWxlcnQnKTtcbiAgICAgICAgaWYgKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkQ2xhc3NUb0VsZW1lbnQoJ2ZkLWFsZXJ0LS0nICsgdGhpcy50eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fYWRkQ2xhc3NUb0VsZW1lbnQoJ2ZkLWFsZXJ0LS1kaXNtaXNzaWJsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGxvYWRGcm9tVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogdGhpcy5hbGVydFJlZlxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGxvYWRGcm9tQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IFR5cGU8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgbG9hZEZyb21TdHJpbmcoY29udGVudFN0cmluZzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGNvbnRlbnRTdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRBbGVydENvbmZpZyhhbGVydENvbmZpZzogQWxlcnRDb25maWcpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXMoYWxlcnRDb25maWcgfHwge30pXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleSAhPT0gJ2RhdGEnICYmIGtleSAhPT0gJ2NvbnRhaW5lcicpXG4gICAgICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiAodGhpc1trZXldID0gYWxlcnRDb25maWdba2V5XSkpO1xuICAgIH1cbn1cbiIsIjxmZC1tZXNzYWdlLXN0cmlwXG4gICAgW2Rpc21pc3NMYWJlbF09XCJkaXNtaXNzTGFiZWxcIlxuICAgIFthcmlhTGFiZWxsZWRCeV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFt3aWR0aF09XCJ3aWR0aFwiXG4gICAgW21pbldpZHRoXT1cIm1pbldpZHRoXCJcbiAgICBbZGlzbWlzc2libGVdPVwiZGlzbWlzc2libGVcIlxuICAgIFtpZF09XCJpZFwiXG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgKG9uRGlzbWlzcyk9XCJvbkRpc21pc3MuZW1pdCgkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICNjb250YWluZXI+e3sgbWVzc2FnZSB9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZmQtbWVzc2FnZS1zdHJpcD5cbiJdfQ==
@@ -1,3 +1,4 @@
1
+ import { __decorate } from "tslib";
1
2
  import { NgModule } from '@angular/core';
2
3
  import { CommonModule } from '@angular/common';
3
4
  import { AlertComponent } from './alert.component';
@@ -6,17 +7,24 @@ import { AlertContainerComponent } from './alert-utils/alert-container.component
6
7
  import { DynamicComponentService } from '@fundamental-ngx/cdk/utils';
7
8
  import { ButtonModule } from '@fundamental-ngx/core/button';
8
9
  import { MessageStripComponent } from '@fundamental-ngx/core/message-strip';
10
+ import deprecated from 'deprecated-decorator';
9
11
  import * as i0 from "@angular/core";
10
12
  /**
11
13
  * @deprecated
12
14
  * Alert component is deprecated since version 0.16.0
13
15
  * Message Strip component should be used instead.
14
16
  */
15
- export class AlertModule {
17
+ export let AlertModule = class AlertModule {
16
18
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
19
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: AlertModule, declarations: [AlertComponent, AlertContainerComponent], imports: [CommonModule, ButtonModule, MessageStripComponent], exports: [AlertComponent, AlertContainerComponent] }); }
18
20
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AlertModule, providers: [AlertService, DynamicComponentService], imports: [CommonModule, ButtonModule, MessageStripComponent] }); }
19
- }
21
+ };
22
+ AlertModule = __decorate([
23
+ deprecated({
24
+ version: '0.16.0',
25
+ alternative: 'Message Strip'
26
+ })
27
+ ], AlertModule);
20
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AlertModule, decorators: [{
21
29
  type: NgModule,
22
30
  args: [{
@@ -26,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
26
34
  providers: [AlertService, DynamicComponentService]
27
35
  }]
28
36
  }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYWxlcnQvYWxlcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUU1RTs7OztHQUlHO0FBT0gsTUFBTSxPQUFPLFdBQVc7OEdBQVgsV0FBVzsrR0FBWCxXQUFXLGlCQUxMLGNBQWMsRUFBRSx1QkFBdUIsYUFDNUMsWUFBWSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsYUFDakQsY0FBYyxFQUFFLHVCQUF1QjsrR0FHeEMsV0FBVyxhQUZULENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFDLFlBRnhDLFlBQVksRUFBRSxZQUFZLEVBQUUscUJBQXFCOzsyRkFJbEQsV0FBVztrQkFOdkIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxjQUFjLEVBQUUsdUJBQXVCLENBQUM7b0JBQ3ZELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUscUJBQXFCLENBQUM7b0JBQzVELE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQztvQkFDbEQsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFDO2lCQUNyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBBbGVydENvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vYWxlcnQtc2VydmljZS9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9hbGVydC11dGlscy9hbGVydC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBNZXNzYWdlU3RyaXBDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVzc2FnZS1zdHJpcCc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFsZXJ0IGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC4xNi4wXG4gKiBNZXNzYWdlIFN0cmlwIGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0FsZXJ0Q29tcG9uZW50LCBBbGVydENvbnRhaW5lckNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQnV0dG9uTW9kdWxlLCBNZXNzYWdlU3RyaXBDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtBbGVydENvbXBvbmVudCwgQWxlcnRDb250YWluZXJDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW0FsZXJ0U2VydmljZSwgRHluYW1pY0NvbXBvbmVudFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0TW9kdWxlIHt9XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYWxlcnQvYWxlcnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFOUM7Ozs7R0FJRztBQVdJLFdBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVc7OEdBQVgsV0FBVzsrR0FBWCxXQUFXLGlCQUxMLGNBQWMsRUFBRSx1QkFBdUIsYUFDNUMsWUFBWSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsYUFDakQsY0FBYyxFQUFFLHVCQUF1QjsrR0FHeEMsV0FBVyxhQUZULENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFDLFlBRnhDLFlBQVksRUFBRSxZQUFZLEVBQUUscUJBQXFCOztBQUlsRCxXQUFXO0lBVnZCLFVBQVUsQ0FBQztRQUNSLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFdBQVcsRUFBRSxlQUFlO0tBQy9CLENBQUM7R0FPVyxXQUFXLENBQUc7MkZBQWQsV0FBVztrQkFOdkIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxjQUFjLEVBQUUsdUJBQXVCLENBQUM7b0JBQ3ZELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUscUJBQXFCLENBQUM7b0JBQzVELE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQztvQkFDbEQsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFDO2lCQUNyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBBbGVydENvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vYWxlcnQtc2VydmljZS9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9hbGVydC11dGlscy9hbGVydC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBNZXNzYWdlU3RyaXBDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVzc2FnZS1zdHJpcCc7XG5pbXBvcnQgZGVwcmVjYXRlZCBmcm9tICdkZXByZWNhdGVkLWRlY29yYXRvcic7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFsZXJ0IGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC4xNi4wXG4gKiBNZXNzYWdlIFN0cmlwIGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLlxuICovXG5AZGVwcmVjYXRlZCh7XG4gICAgdmVyc2lvbjogJzAuMTYuMCcsXG4gICAgYWx0ZXJuYXRpdmU6ICdNZXNzYWdlIFN0cmlwJ1xufSlcbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbQWxlcnRDb21wb25lbnQsIEFsZXJ0Q29udGFpbmVyQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25Nb2R1bGUsIE1lc3NhZ2VTdHJpcENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0FsZXJ0Q29tcG9uZW50LCBBbGVydENvbnRhaW5lckNvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbQWxlcnRTZXJ2aWNlLCBEeW5hbWljQ29tcG9uZW50U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRNb2R1bGUge31cbiJdfQ==
@@ -20,9 +20,9 @@ export class AvatarComponent {
20
20
  /**
21
21
  * @deprecated
22
22
  * Deprecated according to Rename `backgroundImage` to `image`
23
- * */
24
23
  /** Background image url. */
25
24
  set backgroundImage(value) {
25
+ console.warn('`backgroundImage` input property is deprecated. Use `image` instead.');
26
26
  this._setImage(value);
27
27
  }
28
28
  /** Background image resource: url or base64. */
@@ -379,4 +379,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
379
379
  type: HostListener,
380
380
  args: ['keydown.space', ['$event']]
381
381
  }] } });
382
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYXZhdGFyL2F2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsMEJBQTBCLEVBRzFCLGFBQWEsRUFDYixvQkFBb0IsRUFFdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUUvQyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFFdkIsTUFBTSxrQkFBa0IsR0FBRztJQUN2QixPQUFPLEVBQUUsU0FBUztJQUNsQixHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxjQUFjO0NBQy9CLENBQUM7QUFrQkYsTUFBTSxPQUFPLGVBQWU7SUFxQnhCLCtCQUErQjtJQUMvQixJQUNJLEtBQUssQ0FBQyxLQUF1QjtRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFzQ0Q7OztTQUdLO0lBQ0wsNEJBQTRCO0lBQzVCLElBQ0ksZUFBZSxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFNB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R0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFRRixlQUFlO3NCQURsQixLQUFLO2dCQU9GLEtBQUs7c0JBRFIsS0FBSztnQkFhRixTQUFTO3NCQURaLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQVNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBR0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQWlCSCxJQUFJO3NCQURQLFdBQVc7dUJBQUMsV0FBVztnQkFPcEIsT0FBTztzQkFEVixTQUFTO3VCQUFDLFNBQVM7Z0JBK0RwQixzQkFBc0IsTUFvQnRCLFFBQVE7c0JBSFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNoQyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3hDLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBTllfTEFOR1VBR0VfTEVUVEVSU19SRUdFWCxcbiAgICBDb2xvckFjY2VudCxcbiAgICBTaXplLFxuICAgIGFwcGx5Q3NzQ2xhc3MsXG4gICAgZ2V0UmFuZG9tQ29sb3JBY2NlbnQsXG4gICAgQ3NzQ2xhc3NCdWlsZGVyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRkRfQVZBVEFSX0NPTVBPTkVOVCB9IGZyb20gJy4vdG9rZW5zJztcblxubGV0IGF2YXRhclVuaXF1ZUlkID0gMDtcblxuY29uc3QgQUxURVJfSUNPTl9PUFRJT05TID0ge1xuICAgIENPTlRFTlQ6ICdjb250ZW50JyxcbiAgICBBTFQ6ICdhbHQnLFxuICAgIEJBQ0tVUDogJ2JhY2t1cCcsXG4gICAgREVGQVVMVF9JQ09OOiAnZGVmYXVsdC1pY29uJ1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1hdmF0YXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2F2YXRhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0FWQVRBUl9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogQXZhdGFyQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdfdGFiaW5kZXgnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQ3NzQ2xhc3NCdWlsZGVyLCBPbkNoYW5nZXMge1xuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogSWQgb2YgdGhlIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgaWQgPSBgZmQtYXZhdGFyLSR7YXZhdGFyVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIEFyaWEtbGFiZWwgZm9yIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYWx0JylcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIEFyaWEtTGFiZWxsZWRieSBmb3IgZWxlbWVudCBkZXNjcmliaW5nIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsbGVkYnknKVxuICAgIGFyaWFMYWJlbGxlZGJ5OiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcblxuICAgIC8qKiBMb2NhbGl6ZWQgdGV4dCBmb3IgbGFiZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBsYWJlbCh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLmFyaWFMYWJlbCA9IHZhbHVlIHx8IG51bGw7XG4gICAgICAgIHRoaXMuYWJicmV2aWF0ZSA9IHRoaXMuX2dldEFiYnJldmlhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgc2l6ZSBvZiB0aGUgQXZhdGFyLiBPcHRpb25zIGluY2x1ZGU6ICp4cyosICpzKiwgKm0qLCAqbCogYW5kICp4bCouICovXG4gICAgQElucHV0KCkgc2l6ZTogU2l6ZSA9ICdsJztcblxuICAgIC8qKiBUaGUgZ2x5cGggbmFtZS4gKi9cbiAgICBASW5wdXQoKSBnbHlwaDogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG5cbiAgICAvKiogVGhlIGdseXBoIG5hbWUgZm9yIHpvb20gaWNvbi4gKi9cbiAgICBASW5wdXQoKSB6b29tR2x5cGg6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgYSBjaXJjbGUgc3R5bGUgdG8gdGhlIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKSBjaXJjbGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IGEgdHJhbnNwYXJlbnQgc3R5bGUgdG8gdGhlIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKSB0cmFuc3BhcmVudCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgYmFja2dyb3VuZCBzaXplIGNvbnRhaW4gc3R5bGUgdG8gdGhlIEF2YXRhciAqL1xuICAgIEBJbnB1dCgpIGNvbnRhaW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IGEgcGxhY2Vob2xkZXIgYmFja2dyb3VuZCBzdHlsZSB0byB0aGUgQXZhdGFyLiAqL1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBhcHBseSBhIHRpbGUgYmFja2dyb3VuZCBzdHlsZSB0byB0aGUgQXZhdGFyLiAqL1xuICAgIEBJbnB1dCgpIHRpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IGEgYm9yZGVyIHRvIHRoZSBBdmF0YXIuICovXG4gICAgQElucHV0KCkgYm9yZGVyID0gZmFsc2U7XG5cbiAgICAvKiogQSBudW1iZXIgZnJvbSAxIHRvIDEwIHJlcHJlc2VudGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgQXZhdGFyLiAqL1xuICAgIEBJbnB1dCgpIGNvbG9yQWNjZW50OiBOdWxsYWJsZTxDb2xvckFjY2VudD4gPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgcmFuZG9tIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKSByYW5kb20gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGNvbXBvbmVudCBzaG91bGQgYmUgZm9jdXNhYmxlICYgY2xpY2FibGUgKi9cbiAgICBASW5wdXQoKSBjbGlja2FibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogRGVwcmVjYXRlZCBhY2NvcmRpbmcgdG8gUmVuYW1lIGBiYWNrZ3JvdW5kSW1hZ2VgIHRvIGBpbWFnZWBcbiAgICAgKiAqL1xuICAgIC8qKiBCYWNrZ3JvdW5kIGltYWdlIHVybC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBiYWNrZ3JvdW5kSW1hZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZXRJbWFnZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEJhY2tncm91bmQgaW1hZ2UgcmVzb3VyY2U6IHVybCBvciBiYXNlNjQuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaW1hZ2UodmFsdWU6IE51bGxhYmxlPHN0cmluZz4pIHtcbiAgICAgICAgdGhpcy5fc2V0SW1hZ2UodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgaW1hZ2UoKTogTnVsbGFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZTtcbiAgICB9XG5cbiAgICAvKiogQmFja3VwIG9wdGlvbnMgdG8gdXNlIHdoZW4gaW1hZ2UgaGFzbid0IGJlZW4gbG9hZGVkIHN1Y2Nlc3NmdWxseS5cbiAgICAgKiBPcHRpb25zIHNlcGFyYXRlZCB3aXRoIFwifFwiIHN5bWJvbC5cbiAgICAgKiBQb3NzaWJsZSBvcHRpb25zOiBjb250ZW50LCBhbHQsIGJhY2t1cCwgZGVmYXVsdC1pY29uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYWx0ZXJJY29uKHZhbHVlOiBOdWxsYWJsZTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX2FsdGVySWNvbiA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgYWx0ZXJJY29uKCk6IE51bGxhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWx0ZXJJY29uO1xuICAgIH1cblxuICAgIC8qKiBCYWNrdXAgaW1hZ2UgdG8gbG9hZCB3aGVuIGltYWdlIGhhc24ndCBiZWVuIGxvYWRlZCBzdWNjZXNzZnVsbHkuXG4gICAgICogT25seSBhcHBsaWNhYmxlIHdoZW4gdXNpbmcgYWx0ZXJJY29uIGlucHV0IHByb3BlcnR5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJhY2t1cEltYWdlKHZhbHVlOiBOdWxsYWJsZTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX2JhY2t1cEltYWdlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBiYWNrdXBJbWFnZSgpOiBOdWxsYWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JhY2t1cEltYWdlO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYXZhdGFyIGNsaWNrZWQuIE9ubHkgZmlyZXMgaWYgY2xpY2thYmxlIGlucHV0IHByb3BlcnR5IHNldCB0byB0cnVlLiAqL1xuICAgIEBPdXRwdXQoKSBhdmF0YXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gem9vbSBpY29uIGNsaWNrZWQuIE9ubHkgZmlyZXMgaWYgem9vbUdseXBoIGlucHV0IHByb3BlcnR5IGlzIHNldC4gKi9cbiAgICBAT3V0cHV0KCkgem9vbUdseXBoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBzZXQgYmdJbWFnZShpbWFnZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9iZ0ltYWdlID0gaW1hZ2U7XG5cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWltYWdlJywgaW1hZ2UpO1xuICAgIH1cblxuICAgIGdldCBiZ0ltYWdlKCk6IE51bGxhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmdJbWFnZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBnZXQgcm9sZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy56b29tR2x5cGggPyAnYnV0dG9uJyA6ICdpbWcnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpXG4gICAgc2V0IGNvbnRlbnQodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWJicmV2aWF0ZTogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ltYWdlOiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWx0ZXJJY29uOiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29udGVudDogTnVsbGFibGU8RWxlbWVudFJlZj4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9iYWNrdXBJbWFnZTogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2JnSW1hZ2U6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3RhYmluZGV4KCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5ob3N0VGFiaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9zdFRhYmluZGV4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNsaWNrYWJsZSA/IDAgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBJZiBhIGRlZmF1bHQgcGxhY2Vob2xkZXIgc2hvdWxkIGJlIGRpc3BsYXllZCAqL1xuICAgIGdldCBzaG93RGVmYXVsdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmFiYnJldmlhdGUgJiYgIXRoaXMuX2ltYWdlICYmICF0aGlzLmdseXBoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAQXR0cmlidXRlKCd0YWJpbmRleCcpIHByaXZhdGUgaG9zdFRhYmluZGV4OiBudW1iZXIgfCBudWxsXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuem9vbUdseXBoKSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrYWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBDc3NDbGFzc0J1aWxkZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogZnVuY3Rpb24gbXVzdCByZXR1cm4gc2luZ2xlIHN0cmluZ1xuICAgICAqIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBvcmRlciB3aGljaCBjc3MgY2xhc3NlcyBhcmUgYXBwbGllZFxuICAgICAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZmQtYXZhdGFyJyxcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA/IGBmZC1hdmF0YXItLSR7dGhpcy5zaXplfWAgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY29sb3JBY2NlbnQgJiYgIXRoaXMucmFuZG9tID8gYGZkLWF2YXRhci0tYWNjZW50LWNvbG9yLSR7dGhpcy5jb2xvckFjY2VudH1gIDogJycsXG4gICAgICAgICAgICB0aGlzLnJhbmRvbSA/IGBmZC1hdmF0YXItLWFjY2VudC1jb2xvci0ke2dldFJhbmRvbUNvbG9yQWNjZW50KCl9YCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5jaXJjbGUgPyAnZmQtYXZhdGFyLS1jaXJjbGUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmJvcmRlciA/ICdmZC1hdmF0YXItLWJvcmRlcicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbnQgPyAnZmQtYXZhdGFyLS10cmFuc3BhcmVudCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY29udGFpbiA/ICdmZC1hdmF0YXItLWJhY2tncm91bmQtY29udGFpbicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPyAnZmQtYXZhdGFyLS1wbGFjZWhvbGRlcicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMudGlsZSA/ICdmZC1hdmF0YXItLXRpbGUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zcGFjZScsIFsnJGV2ZW50J10pXG4gICAgX29uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsaWNrYWJsZSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuYXZhdGFyQ2xpY2tlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnpvb21HbHlwaCkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbUdseXBoQ2xpY2tlZC5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHpvb21DbGlja2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLnpvb21HbHlwaENsaWNrZWQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCBhbiBhYmJyZXZpYXRlIGZyb20gdGhlIGxhYmVsIG9yIHJldHVybiBudWxsIGlmIG5vdCBmaXQgcmVxdWlyZW1lbnRzICovXG4gICAgcHJpdmF0ZSBfZ2V0QWJicmV2aWF0ZShsYWJlbDogTnVsbGFibGU8c3RyaW5nPik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIWxhYmVsIHx8IHRoaXMuX2ltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9nZW5lcmF0ZUFiYnJldmlhdGlvbihsYWJlbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0IHRoZSBhYmJyZXZpYXRpb24gc3RyaW5nICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVBYmJyZXZpYXRpb24obGFiZWw6IE51bGxhYmxlPHN0cmluZz4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCFsYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF4TGV0dGVyc0NvdW50ID0gMztcbiAgICAgICAgY29uc3QgZmlyc3RMZXR0ZXJzID0gbGFiZWwuc3BsaXQoJyAnKS5tYXAoKHdvcmQpID0+IHdvcmQuY2hhckF0KDApKTtcbiAgICAgICAgY29uc3QgYWJicmV2aWF0ZSA9IGZpcnN0TGV0dGVycy5qb2luKCcnKTtcblxuICAgICAgICBpZiAoZmlyc3RMZXR0ZXJzLmxlbmd0aCA+IG1heExldHRlcnNDb3VudCB8fCAhYWJicmV2aWF0ZS5tYXRjaChBTllfTEFOR1VBR0VfTEVUVEVSU19SRUdFWCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFiYnJldmlhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRJbWFnZSh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbWFnZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmVyaWZ5SW1hZ2VVcmwodmFsdWUsICgpOiB2b2lkID0+IHt9LCB0aGlzLl9vbkVycm9yQ2FsbGJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5iZ0ltYWdlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmVyaWZ5SW1hZ2VVcmwoc3JjVmFsdWU6IHN0cmluZywgb25Mb2FkQ2FsbGJhY2s6ICgpID0+IHZvaWQsIG9uRXJyb3JDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICAvLyBEb24ndCBsb2FkIHRoZSBzYW1lIGltYWdlIGFsbCB0aGUgdGltZSBjaGVjayBoYXBwZW5zXG4gICAgICAgIGlmIChzcmNWYWx1ZSA9PT0gdGhpcy5iZ0ltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5vbmxvYWQgPSBvbkxvYWRDYWxsYmFjay5iaW5kKHRoaXMpO1xuICAgICAgICBpbWcub25lcnJvciA9IG9uRXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpO1xuICAgICAgICBpbWcuc3JjID0gc3JjVmFsdWU7XG4gICAgICAgIHRoaXMuX2Fzc2lnbkJnSW1hZ2Uoc3JjVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQmdJbWFnZShzcmNWYWx1ZTogTnVsbGFibGU8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICB0aGlzLmJnSW1hZ2UgPSBzcmNWYWx1ZSA/IGB1cmwoJHtzcmNWYWx1ZX0pYCA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbkVycm9yQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYWx0ZXJJY29uKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93RGVmYXVsdEljb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9hbHRlckljb24uc3BsaXQoJ3wnKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zW2ldO1xuXG4gICAgICAgICAgICBpZiAob3B0aW9uID09PSBBTFRFUl9JQ09OX09QVElPTlMuQ09OVEVOVCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRWYWx1ZSA9IHRoaXMuX2NvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFiYnJldmlhdGUgPSB0aGlzLl9nZW5lcmF0ZUFiYnJldmlhdGlvbihjb250ZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbiA9PT0gQUxURVJfSUNPTl9PUFRJT05TLkFMVCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsdFZhbHVlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhbHQnKTtcbiAgICAgICAgICAgICAgICBpZiAoYWx0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYmJyZXZpYXRlID0gdGhpcy5fZ2VuZXJhdGVBYmJyZXZpYXRpb24oYWx0VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbiA9PT0gQUxURVJfSUNPTl9PUFRJT05TLkJBQ0tVUCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9iYWNrdXBJbWFnZSAmJiB0aGlzLl9iYWNrdXBJbWFnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYmFja3VwSW1hZ2UgY2FuIGJlIGxvYWRlZCBzdWNjZXNzZnVsbHlcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm90LCBzZXQgZGVmYXVsdCB1c2VyIGljb25cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmVyaWZ5SW1hZ2VVcmwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9iYWNrdXBJbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25CZ0ltYWdlKHRoaXMuX2JhY2t1cEltYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0RlZmF1bHRJY29uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9uID09PSBBTFRFUl9JQ09OX09QVElPTlMuREVGQVVMVF9JQ09OKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd0RlZmF1bHRJY29uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3Nob3dEZWZhdWx0SWNvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93RGVmYXVsdEljb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWJicmV2aWF0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ltYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5nbHlwaCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiYWJicmV2aWF0ZVwiPnt7IGFiYnJldmlhdGUgfX08L25nLWNvbnRhaW5lcj5cblxuPGlcbiAgICAqbmdJZj1cInpvb21HbHlwaFwiXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgY2xhc3M9XCJmZC1hdmF0YXJfX3pvb20taWNvblwiXG4gICAgW2NsYXNzXT1cInpvb21HbHlwaCA/ICdzYXAtaWNvbi0tJyArIHpvb21HbHlwaCA6ICcnXCJcbiAgICAobW91c2Vkb3duKT1cInpvb21DbGlja2VkKCRldmVudClcIlxuPlxuPC9pPlxuXG48aVxuICAgICpuZ0lmPVwiZ2x5cGggfHwgc2hvd0RlZmF1bHRcIlxuICAgIGNsYXNzPVwiZmQtYXZhdGFyX19pY29uXCJcbiAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICBbY2xhc3NdPVwiZ2x5cGggPyAnc2FwLWljb24tLScgKyBnbHlwaCA6ICdzYXAtaWNvbi0tcGVyc29uLXBsYWNlaG9sZGVyJ1wiXG4+XG48L2k+XG5cbjxkaXYgI2NvbnRlbnQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYXZhdGFyL2F2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsMEJBQTBCLEVBRzFCLGFBQWEsRUFDYixvQkFBb0IsRUFFdkIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUUvQyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFFdkIsTUFBTSxrQkFBa0IsR0FBRztJQUN2QixPQUFPLEVBQUUsU0FBUztJQUNsQixHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxjQUFjO0NBQy9CLENBQUM7QUFrQkYsTUFBTSxPQUFPLGVBQWU7SUFxQnhCLCtCQUErQjtJQUMvQixJQUNJLEtBQUssQ0FBQyxLQUF1QjtRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFzQ0Q7OztnQ0FHNEI7SUFDNUIsSUFDSSxlQUFlLENBQUMsS0FBYTtRQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLHNF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QVosS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFPRixlQUFlO3NCQURsQixLQUFLO2dCQVFGLEtBQUs7c0JBRFIsS0FBSztnQkFhRixTQUFTO3NCQURaLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQVNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBR0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQWlCSCxJQUFJO3NCQURQLFdBQVc7dUJBQUMsV0FBVztnQkFPcEIsT0FBTztzQkFEVixTQUFTO3VCQUFDLFNBQVM7Z0JBK0RwQixzQkFBc0IsTUFvQnRCLFFBQVE7c0JBSFAsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNoQyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3hDLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBTllfTEFOR1VBR0VfTEVUVEVSU19SRUdFWCxcbiAgICBDb2xvckFjY2VudCxcbiAgICBTaXplLFxuICAgIGFwcGx5Q3NzQ2xhc3MsXG4gICAgZ2V0UmFuZG9tQ29sb3JBY2NlbnQsXG4gICAgQ3NzQ2xhc3NCdWlsZGVyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRkRfQVZBVEFSX0NPTVBPTkVOVCB9IGZyb20gJy4vdG9rZW5zJztcblxubGV0IGF2YXRhclVuaXF1ZUlkID0gMDtcblxuY29uc3QgQUxURVJfSUNPTl9PUFRJT05TID0ge1xuICAgIENPTlRFTlQ6ICdjb250ZW50JyxcbiAgICBBTFQ6ICdhbHQnLFxuICAgIEJBQ0tVUDogJ2JhY2t1cCcsXG4gICAgREVGQVVMVF9JQ09OOiAnZGVmYXVsdC1pY29uJ1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1hdmF0YXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2F2YXRhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0FWQVRBUl9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogQXZhdGFyQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdfdGFiaW5kZXgnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQ3NzQ2xhc3NCdWlsZGVyLCBPbkNoYW5nZXMge1xuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogSWQgb2YgdGhlIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgaWQgPSBgZmQtYXZhdGFyLSR7YXZhdGFyVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIEFyaWEtbGFiZWwgZm9yIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYWx0JylcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIEFyaWEtTGFiZWxsZWRieSBmb3IgZWxlbWVudCBkZXNjcmliaW5nIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsbGVkYnknKVxuICAgIGFyaWFMYWJlbGxlZGJ5OiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcblxuICAgIC8qKiBMb2NhbGl6ZWQgdGV4dCBmb3IgbGFiZWwgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBsYWJlbCh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLmFyaWFMYWJlbCA9IHZhbHVlIHx8IG51bGw7XG4gICAgICAgIHRoaXMuYWJicmV2aWF0ZSA9IHRoaXMuX2dldEFiYnJldmlhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgc2l6ZSBvZiB0aGUgQXZhdGFyLiBPcHRpb25zIGluY2x1ZGU6ICp4cyosICpzKiwgKm0qLCAqbCogYW5kICp4bCouICovXG4gICAgQElucHV0KCkgc2l6ZTogU2l6ZSA9ICdsJztcblxuICAgIC8qKiBUaGUgZ2x5cGggbmFtZS4gKi9cbiAgICBASW5wdXQoKSBnbHlwaDogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG5cbiAgICAvKiogVGhlIGdseXBoIG5hbWUgZm9yIHpvb20gaWNvbi4gKi9cbiAgICBASW5wdXQoKSB6b29tR2x5cGg6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgYSBjaXJjbGUgc3R5bGUgdG8gdGhlIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKSBjaXJjbGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IGEgdHJhbnNwYXJlbnQgc3R5bGUgdG8gdGhlIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKSB0cmFuc3BhcmVudCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgYmFja2dyb3VuZCBzaXplIGNvbnRhaW4gc3R5bGUgdG8gdGhlIEF2YXRhciAqL1xuICAgIEBJbnB1dCgpIGNvbnRhaW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IGEgcGxhY2Vob2xkZXIgYmFja2dyb3VuZCBzdHlsZSB0byB0aGUgQXZhdGFyLiAqL1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBhcHBseSBhIHRpbGUgYmFja2dyb3VuZCBzdHlsZSB0byB0aGUgQXZhdGFyLiAqL1xuICAgIEBJbnB1dCgpIHRpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IGEgYm9yZGVyIHRvIHRoZSBBdmF0YXIuICovXG4gICAgQElucHV0KCkgYm9yZGVyID0gZmFsc2U7XG5cbiAgICAvKiogQSBudW1iZXIgZnJvbSAxIHRvIDEwIHJlcHJlc2VudGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgQXZhdGFyLiAqL1xuICAgIEBJbnB1dCgpIGNvbG9yQWNjZW50OiBOdWxsYWJsZTxDb2xvckFjY2VudD4gPSBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwbHkgcmFuZG9tIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIEF2YXRhci4gKi9cbiAgICBASW5wdXQoKSByYW5kb20gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGNvbXBvbmVudCBzaG91bGQgYmUgZm9jdXNhYmxlICYgY2xpY2FibGUgKi9cbiAgICBASW5wdXQoKSBjbGlja2FibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogRGVwcmVjYXRlZCBhY2NvcmRpbmcgdG8gUmVuYW1lIGBiYWNrZ3JvdW5kSW1hZ2VgIHRvIGBpbWFnZWBcbiAgICAvKiogQmFja2dyb3VuZCBpbWFnZSB1cmwuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYmFja2dyb3VuZEltYWdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdgYmFja2dyb3VuZEltYWdlYCBpbnB1dCBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLiBVc2UgYGltYWdlYCBpbnN0ZWFkLicpO1xuICAgICAgICB0aGlzLl9zZXRJbWFnZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEJhY2tncm91bmQgaW1hZ2UgcmVzb3VyY2U6IHVybCBvciBiYXNlNjQuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaW1hZ2UodmFsdWU6IE51bGxhYmxlPHN0cmluZz4pIHtcbiAgICAgICAgdGhpcy5fc2V0SW1hZ2UodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgaW1hZ2UoKTogTnVsbGFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZTtcbiAgICB9XG5cbiAgICAvKiogQmFja3VwIG9wdGlvbnMgdG8gdXNlIHdoZW4gaW1hZ2UgaGFzbid0IGJlZW4gbG9hZGVkIHN1Y2Nlc3NmdWxseS5cbiAgICAgKiBPcHRpb25zIHNlcGFyYXRlZCB3aXRoIFwifFwiIHN5bWJvbC5cbiAgICAgKiBQb3NzaWJsZSBvcHRpb25zOiBjb250ZW50LCBhbHQsIGJhY2t1cCwgZGVmYXVsdC1pY29uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYWx0ZXJJY29uKHZhbHVlOiBOdWxsYWJsZTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX2FsdGVySWNvbiA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgYWx0ZXJJY29uKCk6IE51bGxhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWx0ZXJJY29uO1xuICAgIH1cblxuICAgIC8qKiBCYWNrdXAgaW1hZ2UgdG8gbG9hZCB3aGVuIGltYWdlIGhhc24ndCBiZWVuIGxvYWRlZCBzdWNjZXNzZnVsbHkuXG4gICAgICogT25seSBhcHBsaWNhYmxlIHdoZW4gdXNpbmcgYWx0ZXJJY29uIGlucHV0IHByb3BlcnR5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJhY2t1cEltYWdlKHZhbHVlOiBOdWxsYWJsZTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX2JhY2t1cEltYWdlID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBiYWNrdXBJbWFnZSgpOiBOdWxsYWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JhY2t1cEltYWdlO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYXZhdGFyIGNsaWNrZWQuIE9ubHkgZmlyZXMgaWYgY2xpY2thYmxlIGlucHV0IHByb3BlcnR5IHNldCB0byB0cnVlLiAqL1xuICAgIEBPdXRwdXQoKSBhdmF0YXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gem9vbSBpY29uIGNsaWNrZWQuIE9ubHkgZmlyZXMgaWYgem9vbUdseXBoIGlucHV0IHByb3BlcnR5IGlzIHNldC4gKi9cbiAgICBAT3V0cHV0KCkgem9vbUdseXBoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBzZXQgYmdJbWFnZShpbWFnZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9iZ0ltYWdlID0gaW1hZ2U7XG5cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdiYWNrZ3JvdW5kLWltYWdlJywgaW1hZ2UpO1xuICAgIH1cblxuICAgIGdldCBiZ0ltYWdlKCk6IE51bGxhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmdJbWFnZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBnZXQgcm9sZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy56b29tR2x5cGggPyAnYnV0dG9uJyA6ICdpbWcnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udGVudCcpXG4gICAgc2V0IGNvbnRlbnQodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWJicmV2aWF0ZTogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ltYWdlOiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWx0ZXJJY29uOiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29udGVudDogTnVsbGFibGU8RWxlbWVudFJlZj4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9iYWNrdXBJbWFnZTogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2JnSW1hZ2U6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3RhYmluZGV4KCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5ob3N0VGFiaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaG9zdFRhYmluZGV4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNsaWNrYWJsZSA/IDAgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBJZiBhIGRlZmF1bHQgcGxhY2Vob2xkZXIgc2hvdWxkIGJlIGRpc3BsYXllZCAqL1xuICAgIGdldCBzaG93RGVmYXVsdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmFiYnJldmlhdGUgJiYgIXRoaXMuX2ltYWdlICYmICF0aGlzLmdseXBoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAQXR0cmlidXRlKCd0YWJpbmRleCcpIHByaXZhdGUgaG9zdFRhYmluZGV4OiBudW1iZXIgfCBudWxsXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuem9vbUdseXBoKSB7XG4gICAgICAgICAgICB0aGlzLmNsaWNrYWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBDc3NDbGFzc0J1aWxkZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogZnVuY3Rpb24gbXVzdCByZXR1cm4gc2luZ2xlIHN0cmluZ1xuICAgICAqIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBvcmRlciB3aGljaCBjc3MgY2xhc3NlcyBhcmUgYXBwbGllZFxuICAgICAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZmQtYXZhdGFyJyxcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA/IGBmZC1hdmF0YXItLSR7dGhpcy5zaXplfWAgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY29sb3JBY2NlbnQgJiYgIXRoaXMucmFuZG9tID8gYGZkLWF2YXRhci0tYWNjZW50LWNvbG9yLSR7dGhpcy5jb2xvckFjY2VudH1gIDogJycsXG4gICAgICAgICAgICB0aGlzLnJhbmRvbSA/IGBmZC1hdmF0YXItLWFjY2VudC1jb2xvci0ke2dldFJhbmRvbUNvbG9yQWNjZW50KCl9YCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5jaXJjbGUgPyAnZmQtYXZhdGFyLS1jaXJjbGUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmJvcmRlciA/ICdmZC1hdmF0YXItLWJvcmRlcicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbnQgPyAnZmQtYXZhdGFyLS10cmFuc3BhcmVudCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY29udGFpbiA/ICdmZC1hdmF0YXItLWJhY2tncm91bmQtY29udGFpbicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPyAnZmQtYXZhdGFyLS1wbGFjZWhvbGRlcicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMudGlsZSA/ICdmZC1hdmF0YXItLXRpbGUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zcGFjZScsIFsnJGV2ZW50J10pXG4gICAgX29uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsaWNrYWJsZSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuYXZhdGFyQ2xpY2tlZC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnpvb21HbHlwaCkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbUdseXBoQ2xpY2tlZC5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHpvb21DbGlja2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLnpvb21HbHlwaENsaWNrZWQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCBhbiBhYmJyZXZpYXRlIGZyb20gdGhlIGxhYmVsIG9yIHJldHVybiBudWxsIGlmIG5vdCBmaXQgcmVxdWlyZW1lbnRzICovXG4gICAgcHJpdmF0ZSBfZ2V0QWJicmV2aWF0ZShsYWJlbDogTnVsbGFibGU8c3RyaW5nPik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIWxhYmVsIHx8IHRoaXMuX2ltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9nZW5lcmF0ZUFiYnJldmlhdGlvbihsYWJlbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0IHRoZSBhYmJyZXZpYXRpb24gc3RyaW5nICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVBYmJyZXZpYXRpb24obGFiZWw6IE51bGxhYmxlPHN0cmluZz4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCFsYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF4TGV0dGVyc0NvdW50ID0gMztcbiAgICAgICAgY29uc3QgZmlyc3RMZXR0ZXJzID0gbGFiZWwuc3BsaXQoJyAnKS5tYXAoKHdvcmQpID0+IHdvcmQuY2hhckF0KDApKTtcbiAgICAgICAgY29uc3QgYWJicmV2aWF0ZSA9IGZpcnN0TGV0dGVycy5qb2luKCcnKTtcblxuICAgICAgICBpZiAoZmlyc3RMZXR0ZXJzLmxlbmd0aCA+IG1heExldHRlcnNDb3VudCB8fCAhYWJicmV2aWF0ZS5tYXRjaChBTllfTEFOR1VBR0VfTEVUVEVSU19SRUdFWCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFiYnJldmlhdGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRJbWFnZSh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbWFnZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmVyaWZ5SW1hZ2VVcmwodmFsdWUsICgpOiB2b2lkID0+IHt9LCB0aGlzLl9vbkVycm9yQ2FsbGJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5iZ0ltYWdlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmVyaWZ5SW1hZ2VVcmwoc3JjVmFsdWU6IHN0cmluZywgb25Mb2FkQ2FsbGJhY2s6ICgpID0+IHZvaWQsIG9uRXJyb3JDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICAvLyBEb24ndCBsb2FkIHRoZSBzYW1lIGltYWdlIGFsbCB0aGUgdGltZSBjaGVjayBoYXBwZW5zXG4gICAgICAgIGlmIChzcmNWYWx1ZSA9PT0gdGhpcy5iZ0ltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5vbmxvYWQgPSBvbkxvYWRDYWxsYmFjay5iaW5kKHRoaXMpO1xuICAgICAgICBpbWcub25lcnJvciA9IG9uRXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpO1xuICAgICAgICBpbWcuc3JjID0gc3JjVmFsdWU7XG4gICAgICAgIHRoaXMuX2Fzc2lnbkJnSW1hZ2Uoc3JjVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQmdJbWFnZShzcmNWYWx1ZTogTnVsbGFibGU8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICB0aGlzLmJnSW1hZ2UgPSBzcmNWYWx1ZSA/IGB1cmwoJHtzcmNWYWx1ZX0pYCA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbkVycm9yQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYWx0ZXJJY29uKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93RGVmYXVsdEljb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9hbHRlckljb24uc3BsaXQoJ3wnKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zW2ldO1xuXG4gICAgICAgICAgICBpZiAob3B0aW9uID09PSBBTFRFUl9JQ09OX09QVElPTlMuQ09OVEVOVCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRWYWx1ZSA9IHRoaXMuX2NvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFiYnJldmlhdGUgPSB0aGlzLl9nZW5lcmF0ZUFiYnJldmlhdGlvbihjb250ZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbiA9PT0gQUxURVJfSUNPTl9PUFRJT05TLkFMVCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsdFZhbHVlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhbHQnKTtcbiAgICAgICAgICAgICAgICBpZiAoYWx0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYmJyZXZpYXRlID0gdGhpcy5fZ2VuZXJhdGVBYmJyZXZpYXRpb24oYWx0VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbiA9PT0gQUxURVJfSUNPTl9PUFRJT05TLkJBQ0tVUCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9iYWNrdXBJbWFnZSAmJiB0aGlzLl9iYWNrdXBJbWFnZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYmFja3VwSW1hZ2UgY2FuIGJlIGxvYWRlZCBzdWNjZXNzZnVsbHlcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm90LCBzZXQgZGVmYXVsdCB1c2VyIGljb25cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmVyaWZ5SW1hZ2VVcmwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9iYWNrdXBJbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25CZ0ltYWdlKHRoaXMuX2JhY2t1cEltYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0RlZmF1bHRJY29uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9uID09PSBBTFRFUl9JQ09OX09QVElPTlMuREVGQVVMVF9JQ09OKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd0RlZmF1bHRJY29uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3Nob3dEZWZhdWx0SWNvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG93RGVmYXVsdEljb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWJicmV2aWF0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ltYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5nbHlwaCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiYWJicmV2aWF0ZVwiPnt7IGFiYnJldmlhdGUgfX08L25nLWNvbnRhaW5lcj5cblxuPGlcbiAgICAqbmdJZj1cInpvb21HbHlwaFwiXG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgY2xhc3M9XCJmZC1hdmF0YXJfX3pvb20taWNvblwiXG4gICAgW2NsYXNzXT1cInpvb21HbHlwaCA/ICdzYXAtaWNvbi0tJyArIHpvb21HbHlwaCA6ICcnXCJcbiAgICAobW91c2Vkb3duKT1cInpvb21DbGlja2VkKCRldmVudClcIlxuPlxuPC9pPlxuXG48aVxuICAgICpuZ0lmPVwiZ2x5cGggfHwgc2hvd0RlZmF1bHRcIlxuICAgIGNsYXNzPVwiZmQtYXZhdGFyX19pY29uXCJcbiAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICBbY2xhc3NdPVwiZ2x5cGggPyAnc2FwLWljb24tLScgKyBnbHlwaCA6ICdzYXAtaWNvbi0tcGVyc29uLXBsYWNlaG9sZGVyJ1wiXG4+XG48L2k+XG5cbjxkaXYgI2NvbnRlbnQgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -7,13 +7,21 @@ export class BarElementDirective {
7
7
  constructor() {
8
8
  /** Whether the element should take the whole width of the container. */
9
9
  this.fullWidth = false;
10
- /** @deprecated */
11
- this.isTitle = false;
12
10
  /** @hidden */
13
11
  this.barElement = true;
12
+ /** @hidden */
13
+ this._isTitle = false;
14
+ }
15
+ /** @deprecated */
16
+ set isTitle(value) {
17
+ console.warn('isTitle is deprecated, it will be automatically set.');
18
+ this._isTitle = value;
19
+ }
20
+ get isTitle() {
21
+ return this._isTitle;
14
22
  }
15
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: BarElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: BarElementDirective, selector: "fd-bar-element", inputs: { fullWidth: "fullWidth", isTitle: "isTitle" }, host: { properties: { "class.fd-bar__element--full-width": "this.fullWidth", "class.fd-bar__element": "this.barElement" } }, ngImport: i0 }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: BarElementDirective, selector: "fd-bar-element", inputs: { isTitle: "isTitle", fullWidth: "fullWidth" }, host: { properties: { "class.fd-bar__element--full-width": "this.fullWidth", "class.fd-bar__element": "this.barElement" } }, ngImport: i0 }); }
17
25
  }
18
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: BarElementDirective, decorators: [{
19
27
  type: Directive,
@@ -21,15 +29,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
21
29
  // eslint-disable-next-line @angular-eslint/directive-selector
22
30
  selector: 'fd-bar-element'
23
31
  }]
24
- }], propDecorators: { fullWidth: [{
32
+ }], propDecorators: { isTitle: [{
33
+ type: Input
34
+ }], fullWidth: [{
25
35
  type: Input
26
36
  }, {
27
37
  type: HostBinding,
28
38
  args: ['class.fd-bar__element--full-width']
29
- }], isTitle: [{
30
- type: Input
31
39
  }], barElement: [{
32
40
  type: HostBinding,
33
41
  args: ['class.fd-bar__element']
34
42
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWVsZW1lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYmFyL2RpcmVjdGl2ZXMvYmFyLWVsZW1lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFOUQ7O0dBRUc7QUFLSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBS0ksd0VBQXdFO1FBR3hFLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsa0JBQWtCO1FBRWxCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsY0FBYztRQUVkLGVBQVUsR0FBRyxJQUFJLENBQUM7S0FDckI7OEdBYlksbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3Qjs4QkFLRyxTQUFTO3NCQUZSLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsbUNBQW1DO2dCQUtoRCxPQUFPO3NCQUROLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQW4gZWxlbWVudCBvZiB0aGUgQmFyLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmQtYmFyLWVsZW1lbnQnXG59KVxuZXhwb3J0IGNsYXNzIEJhckVsZW1lbnREaXJlY3RpdmUge1xuICAgIC8qKiBXaGV0aGVyIHRoZSBlbGVtZW50IHNob3VsZCB0YWtlIHRoZSB3aG9sZSB3aWR0aCBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1iYXJfX2VsZW1lbnQtLWZ1bGwtd2lkdGgnKVxuICAgIGZ1bGxXaWR0aCA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkICovXG4gICAgQElucHV0KClcbiAgICBpc1RpdGxlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtYmFyX19lbGVtZW50JylcbiAgICBiYXJFbGVtZW50ID0gdHJ1ZTtcbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWVsZW1lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYmFyL2RpcmVjdGl2ZXMvYmFyLWVsZW1lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFOUQ7O0dBRUc7QUFLSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBZ0JJLHdFQUF3RTtRQUd4RSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGNBQWM7UUFFZCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGNBQWM7UUFDTixhQUFRLEdBQUcsS0FBSyxDQUFDO0tBQzVCO0lBdEJHLGtCQUFrQjtJQUNsQixJQUNJLE9BQU8sQ0FBQyxLQUFjO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7OEdBVlEsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3Qjs4QkFJTyxPQUFPO3NCQURWLEtBQUs7Z0JBYU4sU0FBUztzQkFGUixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLG1DQUFtQztnQkFLaEQsVUFBVTtzQkFEVCxXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQW4gZWxlbWVudCBvZiB0aGUgQmFyLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmQtYmFyLWVsZW1lbnQnXG59KVxuZXhwb3J0IGNsYXNzIEJhckVsZW1lbnREaXJlY3RpdmUge1xuICAgIC8qKiBAZGVwcmVjYXRlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzVGl0bGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdpc1RpdGxlIGlzIGRlcHJlY2F0ZWQsIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZXQuJyk7XG4gICAgICAgIHRoaXMuX2lzVGl0bGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaXNUaXRsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVGl0bGU7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGVsZW1lbnQgc2hvdWxkIHRha2UgdGhlIHdob2xlIHdpZHRoIG9mIHRoZSBjb250YWluZXIuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWJhcl9fZWxlbWVudC0tZnVsbC13aWR0aCcpXG4gICAgZnVsbFdpZHRoID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtYmFyX19lbGVtZW50JylcbiAgICBiYXJFbGVtZW50ID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNUaXRsZSA9IGZhbHNlO1xufVxuIl19
@@ -1,9 +1,9 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, isDevMode, Optional, Output, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, DestroyRef, ElementRef, EventEmitter, Input, isDevMode, Optional, Output, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { OverflowLayoutComponent } from '@fundamental-ngx/core/overflow-layout';
3
- import { DestroyedService } from '@fundamental-ngx/cdk/utils';
4
- import { BehaviorSubject, takeUntil } from 'rxjs';
3
+ import { BehaviorSubject } from 'rxjs';
5
4
  import { MenuComponent } from '@fundamental-ngx/core/menu';
6
5
  import { FD_BREADCRUMB_COMPONENT, FD_BREADCRUMB_ITEM_COMPONENT } from './tokens';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@fundamental-ngx/cdk/utils";
9
9
  import * as i2 from "@angular/common";
@@ -38,9 +38,9 @@ export class BreadcrumbComponent {
38
38
  }
39
39
  }
40
40
  /** @hidden */
41
- constructor(elementRef, _onDestroy$, _rtlService, _cdr) {
41
+ constructor(elementRef, _destroyRef, _rtlService, _cdr) {
42
42
  this.elementRef = elementRef;
43
- this._onDestroy$ = _onDestroy$;
43
+ this._destroyRef = _destroyRef;
44
44
  this._rtlService = _rtlService;
45
45
  this._cdr = _cdr;
46
46
  /** Whether to append items to the overflow dropdown in reverse order. Default is true. */
@@ -66,7 +66,7 @@ export class BreadcrumbComponent {
66
66
  /** @hidden */
67
67
  ngOnInit() {
68
68
  this._rtlService?.rtl
69
- .pipe(takeUntil(this._onDestroy$))
69
+ .pipe(takeUntilDestroyed(this._destroyRef))
70
70
  .subscribe((value) => this._placement$.next(value ? 'bottom-end' : 'bottom-start'));
71
71
  }
72
72
  /** @hidden */
@@ -116,9 +116,8 @@ export class BreadcrumbComponent {
116
116
  this._items = this._contentItems.toArray();
117
117
  this._cdr.detectChanges();
118
118
  }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ElementRef }, { token: i1.DestroyedService }, { token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ElementRef }, { token: i0.DestroyRef }, { token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
120
120
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: BreadcrumbComponent, selector: "fd-breadcrumb", inputs: { containerElement: "containerElement", reverse: "reverse", tabIndex: "tabIndex" }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount" }, host: { attributes: { "role": "tree" }, classAttribute: "fd-breadcrumb" }, providers: [
121
- DestroyedService,
122
121
  {
123
122
  provide: FD_BREADCRUMB_COMPONENT,
124
123
  useExisting: BreadcrumbComponent
@@ -131,13 +130,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
131
130
  class: 'fd-breadcrumb',
132
131
  role: 'tree'
133
132
  }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
134
- DestroyedService,
135
133
  {
136
134
  provide: FD_BREADCRUMB_COMPONENT,
137
135
  useExisting: BreadcrumbComponent
138
136
  }
139
137
  ], template: "<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n>\n <ng-container *ngFor=\"let breadcrumb of _items\">\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of breadcrumbs\">\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem.item, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.item.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\">\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n </fd-menu>\n <span class=\"fd-breadcrumb__item\" *ngIf=\"breadcrumbs.length > 0\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"listbox\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n </ng-container>\n</fd-overflow-layout>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-breadcrumb\n .fd-breadcrumb__item\n .fd-breadcrump__link\n*/.fd-breadcrumb{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapContent_LabelColor);content:\"/\";margin-left:.25rem;margin-right:.25rem}.fd-breadcrumb__item:last-child:after{content:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb .fd-overflow-layout{justify-content:start}.fd-breadcrumb .fd-breadcrumb__item:last-child:after{content:\"/\"}.fd-breadcrumb .fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n"] }]
140
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DestroyedService }, { type: i1.RtlService, decorators: [{
138
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.DestroyRef }, { type: i1.RtlService, decorators: [{
141
139
  type: Optional
142
140
  }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { containerElement: [{
143
141
  type: Input
@@ -159,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
159
157
  type: ViewChild,
160
158
  args: [OverflowLayoutComponent]
161
159
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7OztBQUVqRjs7Ozs7Ozs7OztHQVVHO0FBbUJILE1BQU0sT0FBTyxtQkFBbUI7SUFDNUI7Ozs7OztPQU1HO0lBQ0gsSUFDSSxnQkFBZ0IsQ0FBQyxDQUFjO1FBQy9CLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUNSLDBIQUEwSCxDQUM3SCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBMkNELGNBQWM7SUFDZCxZQUNXLFVBQW1DLEVBQ2xDLFdBQTZCLEVBQ2pCLFdBQThCLEVBQzFDLElBQXVCO1FBSHhCLGVBQVUs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O2dCQUNoQyxXQUFXLEVBQUUsbUJBQW1CO2FBQ25DO1NBQ0osd0RBd0NnQiw0QkFBNEIsNkVBSWxDLGFBQWEsa0ZBSWIsdUJBQXVCLGdEQ3BHdEMsMjVIQWdGQTs7MkZEMUJhLG1CQUFtQjtrQkFsQi9CLFNBQVM7K0JBQ0ksZUFBZSxRQUNuQjt3QkFDRixLQUFLLEVBQUUsZUFBZTt3QkFDdEIsSUFBSSxFQUFFLE1BQU07cUJBQ2YsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxnQkFBZ0I7d0JBQ2hCOzRCQUNJLE9BQU8sRUFBRSx1QkFBdUI7NEJBQ2hDLFdBQVcscUJBQXFCO3lCQUNuQztxQkFDSjs7MEJBZ0VJLFFBQVE7NEVBckRULGdCQUFnQjtzQkFEbkIsS0FBSztnQkFXTixPQUFPO3NCQUROLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFPUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLVSxhQUFhO3NCQUQ3QixlQUFlO3VCQUFDLDRCQUE0QjtnQkFLNUIsY0FBYztzQkFEOUIsU0FBUzt1QkFBQyxhQUFhO2dCQUtQLGVBQWU7c0JBRC9CLFNBQVM7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgaXNEZXZNb2RlLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJmbG93TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL292ZXJmbG93LWxheW91dCc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEZEX0JSRUFEQ1JVTUJfQ09NUE9ORU5ULCBGRF9CUkVBRENSVU1CX0lURU1fQ09NUE9ORU5UIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEJyZWFkY3J1bWIgcGFyZW50IHdyYXBwZXIgZGlyZWN0aXZlLiBNdXN0IGhhdmUgYnJlYWRjcnVtYiBpdGVtIGNoaWxkIGRpcmVjdGl2ZXMuXG4gKlxuICogYGBgaHRtbFxuICogPGZkLWJyZWFkY3J1bWI+XG4gKiAgICAgPGZkLWJyZWFkY3J1bWItaXRlbT5cbiAqICAgICAgICAgPGEgZmQtbGluayBbcm91dGVyTGlua109XCInIydcIj5CcmVhZGNydW1iIExpbms8L2E+XG4gKiAgICAgPC9mZC1icmVhZGNydW1iLWl0ZW0+XG4gKiA8L2ZkLWJyZWFkY3J1bWI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1icmVhZGNydW1iJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtYnJlYWRjcnVtYicsXG4gICAgICAgIHJvbGU6ICd0cmVlJ1xuICAgIH0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9CUkVBRENSVU1CX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBCcmVhZGNydW1iQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQnJlYWRjcnVtYnMgY29tcG9uZW50IG5vdyB1c2VzIG1vcmUgYWR2YW5jZWQgY2FsY3VsYXRpb24gbWVjaGFuaXNtIHdpdGhvdXQgdGhlIG5lZWQgb2Ygc3BlY2lmeWluZyB0aGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBUaGUgZWxlbWVudCB0byBhY3QgYXMgdGhlIGJyZWFkY3J1bWIgY29udGFpbmVyLiBXaGVuIHByb3ZpZGVkLCB0aGUgYnJlYWRjcnVtYidzIHJlc3BvbnNpdmUgY29sbGFwc2luZyBiZWhhdmlvclxuICAgICAqIHBlcmZvcm1zIGJldHRlci4gV2hlbiBub3QgcHJvdmlkZWQsIHRoZSBpbW1lZGlhdGUgcGFyZW50IGVsZW1lbnQncyB3aWR0aCB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY29udGFpbmVyRWxlbWVudChfOiBIVE1MRWxlbWVudCkge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnQnJlYWRjcnVtYnMgY29tcG9uZW50IG5vdyB1c2VzIG1vcmUgYWR2YW5jZWQgY2FsY3VsYXRpb24gbWVjaGFuaXNtIHdpdGhvdXQgdGhlIG5lZWQgb2Ygc3BlY2lmeWluZyB0aGUgY29udGFpbmVyIGVsZW1lbnQuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGVuZCBpdGVtcyB0byB0aGUgb3ZlcmZsb3cgZHJvcGRvd24gaW4gcmV2ZXJzZSBvcmRlci4gRGVmYXVsdCBpcyB0cnVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmV2ZXJzZSA9IGZhbHNlO1xuXG4gICAgLyoqIFRhYmluZGV4IG9mIHRoZSBicmVhZGNydW1iLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiSW5kZXggPSAnMCc7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdmlzaWJsZSBpdGVtcyBjb3VudCBpcyBjaGFuZ2VkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZpc2libGVJdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gaGlkZGVuIGl0ZW1zIGNvdW50IGlzIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgaGlkZGVuSXRlbXNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZEX0JSRUFEQ1JVTUJfSVRFTV9DT01QT05FTlQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudEl0ZW1zOiBRdWVyeUxpc3Q8QnJlYWRjcnVtYkl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKE1lbnVDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVudUNvbXBvbmVudDogTWVudUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xheW91dENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vdmVyZmxvd0xheW91dDogT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQXJyYXkgb2YgYnJlYWRjcnVtYiBpdGVtcy5cbiAgICAgKi9cbiAgICBfaXRlbXM6IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BsYWNlbWVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBsYWNlbWVudD4oJ2JvdHRvbS1zdGFydCcpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIF9vbkRlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlIHwgbnVsbCxcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMuX3BsYWNlbWVudCQubmV4dCh2YWx1ZSA/ICdib3R0b20tZW5kJyA6ICdib3R0b20tc3RhcnQnKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXQudHJpZ2dlclJlY2FsY3VsYXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXZSBjYXRjaCBpbnRlcmFjdGlvbnMgd2l0aCBpdGVtLCBFbnRlciwgU3BhY2UsIE1vdXNlIGNsaWNrIGFuZCBUb3VjaCBjbGljayxcbiAgICAgKiBpZiBvcmlnaW5hbCBlbGVtZW50IGhhZCByb3V0ZXIgbGluayB3ZSBhcmUgcHJveHlpbmcgY2xpY2sgdG8gdGhhdCBlbGVtZW50XG4gICAgICogKi9cbiAgICBpdGVtQ2xpY2tlZChicmVhZGNydW1iSXRlbTogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQsICRldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChicmVhZGNydW1iSXRlbS5fbmVlZHNDbGlja1Byb3h5KSB7XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFkY3J1bWJJdGVtLmJyZWFkY3J1bWJMaW5rLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldEl0ZW1zKCk7XG5cbiAgICAgICAgdGhpcy5fY29udGVudEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NldEl0ZW1zKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2tleURvd25IYW5kbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVDb21wb25lbnQudG9nZ2xlKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25IaWRkZW5DaGFuZ2UoaXNIaWRkZW46IGJvb2xlYW4sIGJyZWFkY3J1bWI6IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghaXNIaWRkZW4pIHtcbiAgICAgICAgICAgIGJyZWFkY3J1bWIuX2RldGFjaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWRjcnVtYi5fYXR0YWNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblZpc2libGVJdGVtc0NvdW50Q2hhbmdlKHZpc2libGVJdGVtc0NvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aXNpYmxlSXRlbXNDb3VudC5lbWl0KHZpc2libGVJdGVtc0NvdW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkhpZGRlbkl0ZW1zQ291bnRDaGFuZ2UoaGlkZGVuSXRlbXNDb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZGVuSXRlbXNDb3VudC5lbWl0KGhpZGRlbkl0ZW1zQ291bnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnNldFBvcnRhbCgpKTtcbiAgICAgICAgdGhpcy5faXRlbXMgPSB0aGlzLl9jb250ZW50SXRlbXMudG9BcnJheSgpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxmZC1vdmVyZmxvdy1sYXlvdXRcbiAgICBbcmV2ZXJzZUhpZGRlbkl0ZW1zXT1cIiFyZXZlcnNlXCJcbiAgICBzaG93TW9yZVBvc2l0aW9uPVwibGVmdFwiXG4gICAgW2VuYWJsZUtleWJvYXJkTmF2aWdhdGlvbl09XCJmYWxzZVwiXG4gICAgKHZpc2libGVJdGVtc0NvdW50KT1cIl9vblZpc2libGVJdGVtc0NvdW50Q2hhbmdlKCRldmVudClcIlxuICAgIChoaWRkZW5JdGVtc0NvdW50KT1cIl9vbkhpZGRlbkl0ZW1zQ291bnRDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnJlYWRjcnVtYiBvZiBfaXRlbXNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKmZkT3ZlcmZsb3dJdGVtUmVmPVwiYnJlYWRjcnVtYjsgbGV0IGhpZGRlblwiXG4gICAgICAgICAgICBmZE92ZXJmbG93TGF5b3V0SXRlbVxuICAgICAgICAgICAgKGhpZGRlbkNoYW5nZSk9XCJfb25IaWRkZW5DaGFuZ2UoJGV2ZW50LCBicmVhZGNydW1iKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cImJyZWFkY3J1bWIucG9ydGFsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqZmRPdmVyZmxvd0V4cGFuZD1cImxldCBicmVhZGNydW1iczsgaXRlbXM6IF9pdGVtc1wiPlxuICAgICAgICA8ZmQtbWVudSAjbWVudSBbY2xvc2VPbkVzY2FwZUtleV09XCJ0cnVlXCIgW2ZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiIFtwbGFjZW1lbnRdPVwiX3BsYWNlbWVudCQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnJlYWRjcnVtYkl0ZW0gb2YgYnJlYWRjcnVtYnNcIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgZmQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsgPyBicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLmRpc2FibGVkIDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1tZW51LWludGVyYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrZWQoYnJlYWRjcnVtYkl0ZW0uaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2tlZChicmVhZGNydW1iSXRlbS5pdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIml0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtLml0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRjcnVtYkl0ZW0/Lml0ZW0uYnJlYWRjcnVtYkxpbms7IGVsc2UgcG9ydGFsQ29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wcmVmaXhJY29uTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJiZWZvcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuX3ByZWZpeEljb25OYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5saW5rQ29udGVudFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5fcG9zdGZpeEljb25OYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5fcG9zdGZpeEljb25OYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3J0YWxDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtQb3J0YWxPdXRsZXRdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iSXRlbVBvcnRhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLW1lbnU+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtYnJlYWRjcnVtYl9faXRlbVwiICpuZ0lmPVwiYnJlYWRjcnVtYnMubGVuZ3RoID4gMFwiIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgZmQtbGlua1xuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2NvcmVCcmVhZGNydW1iLm92ZXJmbG93VGl0bGVNb3JlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWJyZWFkY3J1bWJfX2NvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX2tleURvd25IYW5kbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiX2tleURvd25IYW5kbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLWljb25cbiAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJvdmVyZmxvd1wiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInY29yZUJyZWFkY3J1bWIub3ZlcmZsb3dUaXRsZU1vcmUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIidjb3JlQnJlYWRjcnVtYi5vdmVyZmxvd1RpdGxlTW9yZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9mZC1vdmVyZmxvdy1sYXlvdXQ+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQUVoRTs7Ozs7Ozs7OztHQVVHO0FBa0JILE1BQU0sT0FBTyxtQkFBbUI7SUFDNUI7Ozs7OztPQU1HO0lBQ0gsSUFDSSxnQkFBZ0IsQ0FBQyxDQUFjO1FBQy9CLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUNSLDBIQUEwSCxDQUM3SCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBMkNELGNBQWM7SUFDZCxZQUNXLFVBQW1DLEVBQ2xDLFdBQXVCLEVBQ1gsV0FBOEIsRUFDMUMsSUFBdUI7UUFIeEIsZUFBVSxH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QUFFLG1CQUFtQjthQUNuQztTQUNKLHdEQXdDZ0IsNEJBQTRCLDZFQUlsQyxhQUFhLGtGQUliLHVCQUF1QixnRENyR3RDLDI1SEFnRkE7OzJGRHpCYSxtQkFBbUI7a0JBakIvQixTQUFTOytCQUNJLGVBQWUsUUFDbkI7d0JBQ0YsS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLElBQUksRUFBRSxNQUFNO3FCQUNmLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsV0FBVyxxQkFBcUI7eUJBQ25DO3FCQUNKOzswQkFnRUksUUFBUTs0RUFyRFQsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVdOLE9BQU87c0JBRE4sS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixNQUFNO2dCQU9QLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtVLGFBQWE7c0JBRDdCLGVBQWU7dUJBQUMsNEJBQTRCO2dCQUs1QixjQUFjO3NCQUQ5QixTQUFTO3VCQUFDLGFBQWE7Z0JBS1AsZUFBZTtzQkFEL0IsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIGlzRGV2TW9kZSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9vdmVyZmxvdy1sYXlvdXQnO1xuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZW51JztcbmltcG9ydCB7IFBsYWNlbWVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRkRfQlJFQURDUlVNQl9DT01QT05FTlQsIEZEX0JSRUFEQ1JVTUJfSVRFTV9DT01QT05FTlQgfSBmcm9tICcuL3Rva2Vucyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogQnJlYWRjcnVtYiBwYXJlbnQgd3JhcHBlciBkaXJlY3RpdmUuIE11c3QgaGF2ZSBicmVhZGNydW1iIGl0ZW0gY2hpbGQgZGlyZWN0aXZlcy5cbiAqXG4gKiBgYGBodG1sXG4gKiA8ZmQtYnJlYWRjcnVtYj5cbiAqICAgICA8ZmQtYnJlYWRjcnVtYi1pdGVtPlxuICogICAgICAgICA8YSBmZC1saW5rIFtyb3V0ZXJMaW5rXT1cIicjJ1wiPkJyZWFkY3J1bWIgTGluazwvYT5cbiAqICAgICA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cbiAqIDwvZmQtYnJlYWRjcnVtYj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWJyZWFkY3J1bWInLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1icmVhZGNydW1iJyxcbiAgICAgICAgcm9sZTogJ3RyZWUnXG4gICAgfSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0JSRUFEQ1JVTUJfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEJyZWFkY3J1bWJDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBCcmVhZGNydW1icyBjb21wb25lbnQgbm93IHVzZXMgbW9yZSBhZHZhbmNlZCBjYWxjdWxhdGlvbiBtZWNoYW5pc20gd2l0aG91dCB0aGUgbmVlZCBvZiBzcGVjaWZ5aW5nIHRoZSBjb250YWluZXIgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIFRoZSBlbGVtZW50IHRvIGFjdCBhcyB0aGUgYnJlYWRjcnVtYiBjb250YWluZXIuIFdoZW4gcHJvdmlkZWQsIHRoZSBicmVhZGNydW1iJ3MgcmVzcG9uc2l2ZSBjb2xsYXBzaW5nIGJlaGF2aW9yXG4gICAgICogcGVyZm9ybXMgYmV0dGVyLiBXaGVuIG5vdCBwcm92aWRlZCwgdGhlIGltbWVkaWF0ZSBwYXJlbnQgZWxlbWVudCdzIHdpZHRoIHdpbGwgYmUgdXNlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb250YWluZXJFbGVtZW50KF86IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdCcmVhZGNydW1icyBjb21wb25lbnQgbm93IHVzZXMgbW9yZSBhZHZhbmNlZCBjYWxjdWxhdGlvbiBtZWNoYW5pc20gd2l0aG91dCB0aGUgbmVlZCBvZiBzcGVjaWZ5aW5nIHRoZSBjb250YWluZXIgZWxlbWVudC4nXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwZW5kIGl0ZW1zIHRvIHRoZSBvdmVyZmxvdyBkcm9wZG93biBpbiByZXZlcnNlIG9yZGVyLiBEZWZhdWx0IGlzIHRydWUuICovXG4gICAgQElucHV0KClcbiAgICByZXZlcnNlID0gZmFsc2U7XG5cbiAgICAvKiogVGFiaW5kZXggb2YgdGhlIGJyZWFkY3J1bWIuICovXG4gICAgQElucHV0KClcbiAgICB0YWJJbmRleCA9ICcwJztcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2aXNpYmxlIGl0ZW1zIGNvdW50IGlzIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdmlzaWJsZUl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBoaWRkZW4gaXRlbXMgY291bnQgaXMgY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBoaWRkZW5JdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfQlJFQURDUlVNQl9JVEVNX0NPTVBPTkVOVClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50SXRlbXM6IFF1ZXJ5TGlzdDxCcmVhZGNydW1iSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTWVudUNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZW51Q29tcG9uZW50OiBNZW51Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKE92ZXJmbG93TGF5b3V0Q29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX292ZXJmbG93TGF5b3V0OiBPdmVyZmxvd0xheW91dENvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBcnJheSBvZiBicmVhZGNydW1iIGl0ZW1zLlxuICAgICAqL1xuICAgIF9pdGVtczogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2VtZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGxhY2VtZW50PignYm90dG9tLXN0YXJ0Jyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UgfCBudWxsLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZT8ucnRsXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5fcGxhY2VtZW50JC5uZXh0KHZhbHVlID8gJ2JvdHRvbS1lbmQnIDogJ2JvdHRvbS1zdGFydCcpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dC50cmlnZ2VyUmVjYWxjdWxhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIGNhdGNoIGludGVyYWN0aW9ucyB3aXRoIGl0ZW0sIEVudGVyLCBTcGFjZSwgTW91c2UgY2xpY2sgYW5kIFRvdWNoIGNsaWNrLFxuICAgICAqIGlmIG9yaWdpbmFsIGVsZW1lbnQgaGFkIHJvdXRlciBsaW5rIHdlIGFyZSBwcm94eWluZyBjbGljayB0byB0aGF0IGVsZW1lbnRcbiAgICAgKiAqL1xuICAgIGl0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtOiBCcmVhZGNydW1iSXRlbUNvbXBvbmVudCwgJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGJyZWFkY3J1bWJJdGVtLl9uZWVkc0NsaWNrUHJveHkpIHtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW0uYnJlYWRjcnVtYkxpbmsuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0SXRlbXMoKTtcblxuICAgICAgICB0aGlzLl9jb250ZW50SXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2V0SXRlbXMoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfa2V5RG93bkhhbmRsZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudUNvbXBvbmVudC50b2dnbGUoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkhpZGRlbkNoYW5nZShpc0hpZGRlbjogYm9vbGVhbiwgYnJlYWRjcnVtYjogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc0hpZGRlbikge1xuICAgICAgICAgICAgYnJlYWRjcnVtYi5fZGV0YWNoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVhZGNydW1iLl9hdHRhY2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uVmlzaWJsZUl0ZW1zQ291bnRDaGFuZ2UodmlzaWJsZUl0ZW1zQ291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGVJdGVtc0NvdW50LmVtaXQodmlzaWJsZUl0ZW1zQ291bnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSGlkZGVuSXRlbXNDb3VudENoYW5nZShoaWRkZW5JdGVtc0NvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRkZW5JdGVtc0NvdW50LmVtaXQoaGlkZGVuSXRlbXNDb3VudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udGVudEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0uc2V0UG9ydGFsKCkpO1xuICAgICAgICB0aGlzLl9pdGVtcyA9IHRoaXMuX2NvbnRlbnRJdGVtcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPGZkLW92ZXJmbG93LWxheW91dFxuICAgIFtyZXZlcnNlSGlkZGVuSXRlbXNdPVwiIXJldmVyc2VcIlxuICAgIHNob3dNb3JlUG9zaXRpb249XCJsZWZ0XCJcbiAgICBbZW5hYmxlS2V5Ym9hcmROYXZpZ2F0aW9uXT1cImZhbHNlXCJcbiAgICAodmlzaWJsZUl0ZW1zQ291bnQpPVwiX29uVmlzaWJsZUl0ZW1zQ291bnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGhpZGRlbkl0ZW1zQ291bnQpPVwiX29uSGlkZGVuSXRlbXNDb3VudENoYW5nZSgkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBicmVhZGNydW1iIG9mIF9pdGVtc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqZmRPdmVyZmxvd0l0ZW1SZWY9XCJicmVhZGNydW1iOyBsZXQgaGlkZGVuXCJcbiAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRJdGVtXG4gICAgICAgICAgICAoaGlkZGVuQ2hhbmdlKT1cIl9vbkhpZGRlbkNoYW5nZSgkZXZlbnQsIGJyZWFkY3J1bWIpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiYnJlYWRjcnVtYi5wb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpmZE92ZXJmbG93RXhwYW5kPVwibGV0IGJyZWFkY3J1bWJzOyBpdGVtczogX2l0ZW1zXCI+XG4gICAgICAgIDxmZC1tZW51ICNtZW51IFtjbG9zZU9uRXNjYXBlS2V5XT1cInRydWVcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW3BsYWNlbWVudF09XCJfcGxhY2VtZW50JCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBicmVhZGNydW1iSXRlbSBvZiBicmVhZGNydW1ic1wiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluayA/IGJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuZGlzYWJsZWQgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLW1lbnUtaW50ZXJhY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2tlZChicmVhZGNydW1iSXRlbS5pdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIml0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtLml0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiaXRlbUNsaWNrZWQoYnJlYWRjcnVtYkl0ZW0uaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iSXRlbT8uaXRlbS5icmVhZGNydW1iTGluazsgZWxzZSBwb3J0YWxDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuX3ByZWZpeEljb25OYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5fcHJlZml4SWNvbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Nka1BvcnRhbE91dGxldF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmxpbmtDb250ZW50UG9ydGFsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wb3N0Zml4SWNvbk5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wb3N0Zml4SWNvbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BvcnRhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka1BvcnRhbE91dGxldF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJJdGVtUG9ydGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtbWVudT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1icmVhZGNydW1iX19pdGVtXCIgKm5nSWY9XCJicmVhZGNydW1icy5sZW5ndGggPiAwXCIgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBmZC1saW5rXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInY29yZUJyZWFkY3J1bWIub3ZlcmZsb3dUaXRsZU1vcmUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYnJlYWRjcnVtYl9fY29sbGFwc2VkXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfa2V5RG93bkhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJfa2V5RG93bkhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm92ZXJmbG93XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidjb3JlQnJlYWRjcnVtYi5vdmVyZmxvd1RpdGxlTW9yZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVCcmVhZGNydW1iLm92ZXJmbG93VGl0bGVNb3JlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwic2xpbS1hcnJvdy1kb3duXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2ZkLW92ZXJmbG93LWxheW91dD5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19