@festo-ui/angular 5.0.0 → 5.0.1

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 (153) hide show
  1. package/esm2020/lib/components/accordion/accordion-header/accordion-header.component.mjs +5 -5
  2. package/esm2020/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.mjs +5 -5
  3. package/esm2020/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.mjs +10 -10
  4. package/esm2020/lib/components/accordion/accordion-item/accordion-item.component.mjs +15 -15
  5. package/esm2020/lib/components/accordion/accordion.component.mjs +16 -16
  6. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +5 -5
  7. package/esm2020/lib/components/buttons/button/button.component.mjs +5 -5
  8. package/esm2020/lib/components/buttons/link-button/link-button.component.mjs +5 -5
  9. package/esm2020/lib/components/chips/chip/chip.component.mjs +5 -5
  10. package/esm2020/lib/components/chips/chip-container/chip-container.component.mjs +5 -5
  11. package/esm2020/lib/components/components.module.mjs +198 -201
  12. package/esm2020/lib/components/loading-indicator/loading-indicator.component.mjs +5 -5
  13. package/esm2020/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.mjs +5 -5
  14. package/esm2020/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.mjs +7 -7
  15. package/esm2020/lib/components/mobile-flyout/mobile-flyout.component.mjs +7 -7
  16. package/esm2020/lib/components/pagination/pagination.component.mjs +12 -12
  17. package/esm2020/lib/components/popovers/legend/legend.component.mjs +6 -6
  18. package/esm2020/lib/components/popovers/legend/legend.directive.mjs +5 -5
  19. package/esm2020/lib/components/popovers/popover/popover.component.mjs +9 -9
  20. package/esm2020/lib/components/popovers/popover-content/popover-content.component.mjs +6 -6
  21. package/esm2020/lib/components/popovers/popover-content/popover-content.directive.mjs +5 -5
  22. package/esm2020/lib/components/popovers/popover-menu/popover-menu.component.mjs +6 -6
  23. package/esm2020/lib/components/popovers/popover-ref.mjs +1 -1
  24. package/esm2020/lib/components/popovers/popover.models.mjs +7 -7
  25. package/esm2020/lib/components/popovers/popover.service.mjs +7 -7
  26. package/esm2020/lib/components/popovers/tooltip/tooltip.directive.mjs +8 -7
  27. package/esm2020/lib/components/progress/progress.component.mjs +5 -5
  28. package/esm2020/lib/components/scroll/scrollable.directive.mjs +5 -5
  29. package/esm2020/lib/components/search-input/search-input.component.mjs +8 -8
  30. package/esm2020/lib/components/snackbar/snackbar-container.component.mjs +7 -7
  31. package/esm2020/lib/components/snackbar/snackbar-container.directive.mjs +8 -8
  32. package/esm2020/lib/components/snackbar/snackbar.component.mjs +5 -5
  33. package/esm2020/lib/components/snackbar/snackbar.models.mjs +1 -1
  34. package/esm2020/lib/components/snackbar/snackbar.module.mjs +9 -10
  35. package/esm2020/lib/components/snackbar/snackbar.service.mjs +5 -5
  36. package/esm2020/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.mjs +5 -5
  37. package/esm2020/lib/components/stepper-horizontal/stepper-horizontal.component.mjs +7 -7
  38. package/esm2020/lib/components/stepper-vertical/step-vertical/step-vertical.component.mjs +5 -5
  39. package/esm2020/lib/components/stepper-vertical/stepper-vertical.component.mjs +7 -7
  40. package/esm2020/lib/components/table-header-cell/table-header-cell.directive.mjs +5 -5
  41. package/esm2020/lib/components/tabs/tab-pane/tab-pane.component.mjs +7 -7
  42. package/esm2020/lib/components/tabs/tabs.component.mjs +10 -10
  43. package/esm2020/lib/directives/click-outside.directive.mjs +5 -5
  44. package/esm2020/lib/festo-angular.module.mjs +5 -5
  45. package/esm2020/lib/forms/checkbox/checkbox.component.mjs +7 -7
  46. package/esm2020/lib/forms/color-indicator/color-indicator.component.mjs +5 -5
  47. package/esm2020/lib/forms/color-picker/color-picker.component.mjs +7 -7
  48. package/esm2020/lib/forms/date-picker/date-picker.component.mjs +10 -10
  49. package/esm2020/lib/forms/date-range-picker/date-range-picker.component.mjs +9 -9
  50. package/esm2020/lib/forms/flatpickr/flatpickr.component.mjs +5 -5
  51. package/esm2020/lib/forms/forms.module.mjs +107 -127
  52. package/esm2020/lib/forms/radio/radio.component.mjs +18 -18
  53. package/esm2020/lib/forms/segment/segment-control/segment-control.component.mjs +13 -8
  54. package/esm2020/lib/forms/segment/segment.component.mjs +39 -14
  55. package/esm2020/lib/forms/select/chip-text.pipe.mjs +5 -5
  56. package/esm2020/lib/forms/select/select-option/select-option.component.mjs +5 -5
  57. package/esm2020/lib/forms/select/select.component.mjs +14 -14
  58. package/esm2020/lib/forms/slider/slider.component.mjs +7 -7
  59. package/esm2020/lib/forms/switch/switch.component.mjs +7 -7
  60. package/esm2020/lib/forms/text-area/text-area.component.mjs +7 -7
  61. package/esm2020/lib/forms/text-editor/text-editor.component.mjs +8 -8
  62. package/esm2020/lib/forms/text-input/text-input.component.mjs +7 -7
  63. package/esm2020/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.mjs +5 -5
  64. package/esm2020/lib/forms/time-picker/time-picker.component.mjs +9 -9
  65. package/esm2020/lib/forms/unique-selection-dispatcher.mjs +5 -5
  66. package/esm2020/lib/forms/value-accessor-base.mjs +5 -5
  67. package/esm2020/lib/modals/alert/alert.component.mjs +5 -5
  68. package/esm2020/lib/modals/confirm/confirm.component.mjs +5 -5
  69. package/esm2020/lib/modals/custom-modal/custom-modal.component.mjs +5 -5
  70. package/esm2020/lib/modals/image-gallery/image-gallery.component.mjs +7 -7
  71. package/esm2020/lib/modals/modal.service.mjs +13 -13
  72. package/esm2020/lib/modals/modals.module.mjs +9 -12
  73. package/esm2020/lib/modals/prompt/prompt.component.mjs +5 -5
  74. package/esm2020/lib/pipes/safe-html.pipe.mjs +5 -5
  75. package/fesm2015/festo-ui-angular.mjs +742 -727
  76. package/fesm2015/festo-ui-angular.mjs.map +1 -1
  77. package/fesm2020/festo-ui-angular.mjs +742 -727
  78. package/fesm2020/festo-ui-angular.mjs.map +1 -1
  79. package/lib/components/accordion/accordion-header/accordion-header.component.d.ts +3 -3
  80. package/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.d.ts +3 -3
  81. package/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.d.ts +5 -5
  82. package/lib/components/accordion/accordion-item/accordion-item.component.d.ts +7 -7
  83. package/lib/components/accordion/accordion.component.d.ts +7 -7
  84. package/lib/components/breadcrumb/breadcrumb.component.d.ts +3 -3
  85. package/lib/components/buttons/button/button.component.d.ts +3 -3
  86. package/lib/components/buttons/link-button/link-button.component.d.ts +3 -3
  87. package/lib/components/chips/chip/chip.component.d.ts +3 -3
  88. package/lib/components/chips/chip-container/chip-container.component.d.ts +3 -3
  89. package/lib/components/components.module.d.ts +35 -36
  90. package/lib/components/loading-indicator/loading-indicator.component.d.ts +3 -3
  91. package/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.d.ts +3 -3
  92. package/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.d.ts +5 -5
  93. package/lib/components/mobile-flyout/mobile-flyout.component.d.ts +5 -5
  94. package/lib/components/pagination/pagination.component.d.ts +6 -6
  95. package/lib/components/popovers/legend/legend.component.d.ts +9 -9
  96. package/lib/components/popovers/legend/legend.directive.d.ts +5 -5
  97. package/lib/components/popovers/popover/popover.component.d.ts +5 -5
  98. package/lib/components/popovers/popover-content/popover-content.component.d.ts +12 -12
  99. package/lib/components/popovers/popover-content/popover-content.directive.d.ts +5 -5
  100. package/lib/components/popovers/popover-menu/popover-menu.component.d.ts +11 -11
  101. package/lib/components/popovers/popover-ref.d.ts +4 -4
  102. package/lib/components/popovers/popover.models.d.ts +15 -15
  103. package/lib/components/popovers/popover.service.d.ts +7 -7
  104. package/lib/components/popovers/tooltip/tooltip.directive.d.ts +9 -9
  105. package/lib/components/progress/progress.component.d.ts +3 -3
  106. package/lib/components/scroll/scrollable.directive.d.ts +4 -4
  107. package/lib/components/search-input/search-input.component.d.ts +9 -9
  108. package/lib/components/snackbar/snackbar-container.component.d.ts +5 -5
  109. package/lib/components/snackbar/snackbar-container.directive.d.ts +7 -7
  110. package/lib/components/snackbar/snackbar.component.d.ts +5 -5
  111. package/lib/components/snackbar/snackbar.models.d.ts +2 -2
  112. package/lib/components/snackbar/snackbar.module.d.ts +4 -5
  113. package/lib/components/snackbar/snackbar.service.d.ts +8 -8
  114. package/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.d.ts +3 -3
  115. package/lib/components/stepper-horizontal/stepper-horizontal.component.d.ts +5 -5
  116. package/lib/components/stepper-vertical/step-vertical/step-vertical.component.d.ts +3 -3
  117. package/lib/components/stepper-vertical/stepper-vertical.component.d.ts +5 -5
  118. package/lib/components/table-header-cell/table-header-cell.directive.d.ts +5 -5
  119. package/lib/components/tabs/tab-pane/tab-pane.component.d.ts +3 -3
  120. package/lib/components/tabs/tabs.component.d.ts +18 -18
  121. package/lib/directives/click-outside.directive.d.ts +3 -3
  122. package/lib/festo-angular.module.d.ts +1 -1
  123. package/lib/forms/checkbox/checkbox.component.d.ts +3 -3
  124. package/lib/forms/color-indicator/color-indicator.component.d.ts +3 -3
  125. package/lib/forms/color-picker/color-picker.component.d.ts +3 -3
  126. package/lib/forms/date-picker/date-picker.component.d.ts +5 -5
  127. package/lib/forms/date-range-picker/date-range-picker.component.d.ts +5 -5
  128. package/lib/forms/flatpickr/flatpickr.component.d.ts +3 -3
  129. package/lib/forms/forms.module.d.ts +18 -23
  130. package/lib/forms/radio/radio.component.d.ts +15 -15
  131. package/lib/forms/segment/segment-control/segment-control.component.d.ts +5 -4
  132. package/lib/forms/segment/segment.component.d.ts +19 -10
  133. package/lib/forms/select/chip-text.pipe.d.ts +3 -3
  134. package/lib/forms/select/select-option/select-option.component.d.ts +3 -3
  135. package/lib/forms/select/select.component.d.ts +6 -6
  136. package/lib/forms/slider/slider.component.d.ts +3 -3
  137. package/lib/forms/switch/switch.component.d.ts +3 -3
  138. package/lib/forms/text-area/text-area.component.d.ts +3 -3
  139. package/lib/forms/text-editor/text-editor.component.d.ts +7 -7
  140. package/lib/forms/text-input/text-input.component.d.ts +3 -3
  141. package/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.d.ts +3 -3
  142. package/lib/forms/time-picker/time-picker.component.d.ts +5 -5
  143. package/lib/forms/unique-selection-dispatcher.d.ts +3 -3
  144. package/lib/forms/value-accessor-base.d.ts +3 -3
  145. package/lib/modals/alert/alert.component.d.ts +5 -5
  146. package/lib/modals/confirm/confirm.component.d.ts +5 -5
  147. package/lib/modals/custom-modal/custom-modal.component.d.ts +3 -3
  148. package/lib/modals/image-gallery/image-gallery.component.d.ts +7 -7
  149. package/lib/modals/modal.service.d.ts +11 -11
  150. package/lib/modals/modals.module.d.ts +5 -8
  151. package/lib/modals/prompt/prompt.component.d.ts +5 -5
  152. package/lib/pipes/safe-html.pipe.d.ts +3 -3
  153. package/package.json +2 -2
@@ -2,10 +2,10 @@ import { CommonModule, DOCUMENT } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
3
3
  import { noop, Subject } from 'rxjs';
4
4
  import { takeUntil } from 'rxjs/operators';
5
- import { TabPaneComponent } from './tab-pane/tab-pane.component';
5
+ import { FngTabPaneComponent } from './tab-pane/tab-pane.component';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/common";
8
- export class TabsComponent {
8
+ export class FngTabsComponent {
9
9
  constructor(elRef, document, renderer, cd) {
10
10
  this.elRef = elRef;
11
11
  this.document = document;
@@ -16,7 +16,7 @@ export class TabsComponent {
16
16
  this.config = null;
17
17
  this.fngBeforeTabChange = new EventEmitter();
18
18
  this.fngTabChange = new EventEmitter();
19
- this.componentId = `tabs-${++TabsComponent.nextId}`;
19
+ this.componentId = `tabs-${++FngTabsComponent.nextId}`;
20
20
  this.tabs = [];
21
21
  this.useCompactDensity = true;
22
22
  this.activeTab = undefined;
@@ -422,12 +422,12 @@ export class TabsComponent {
422
422
  return -1;
423
423
  }
424
424
  }
425
- TabsComponent.nextId = 0;
426
- TabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: TabsComponent, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
427
- TabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: TabsComponent, isStandalone: true, selector: "fng-tabs", inputs: { viewType: ["fngTabsViewType", "viewType"], showDivider: ["fngTabsUseBottomDivider", "showDivider"], config: "config" }, outputs: { fngBeforeTabChange: "fngBeforeTabChange", fngTabChange: "fngTabChange" }, queries: [{ propertyName: "panes", predicate: TabPaneComponent }], viewQueries: [{ propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "scrollAera", first: true, predicate: ["scrollAera"], descendants: true }, { propertyName: "scrollContent", first: true, predicate: ["scrollContent"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"viewType === 'legacy'\">\r\n <div class=\"fwe-legacy-tabs\">\r\n <ul\r\n role=\"tablist\"\r\n class=\"fwe-legacy-tab-bar\"\r\n [class.fwe-legacy-tab-bar-full-width]=\"config?.tabBar?.fullWidth\"\r\n [class.fwe-legacy-tab-items-equal-width]=\"'equal' === config?.tabItems?.appearance\"\r\n [class.fwe-legacy-tab-items-fill]=\"'fill' === config?.tabItems?.appearance\"\r\n >\r\n <li\r\n *ngFor=\"let tab of tabs; let i = index\"\r\n class=\"fwe-legacy-tab-item\"\r\n [ngClass]=\"{ 'fwe-active': tab?.active, 'fwe-disabled': tab?.disabled }\"\r\n >\r\n <ng-container *ngIf=\"null == tab?.icon\">\r\n <a\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\r\n role=\"tab\"\r\n class=\"fwe-legacy-tab-link\"\r\n (click)=\"showTabPane(tab.paneId)\"\r\n >{{ tab.name }}</a\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"null != tab?.icon\">\r\n <a\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\r\n role=\"tab\"\r\n class=\"fwe-legacy-tab-link\"\r\n (click)=\"showTabPane(tab.paneId)\"\r\n [class.fwe-can-swap-icon]=\"2 === tabs.length && 1 === i\"\r\n >\r\n <i [class]=\"'fwe-icon ' + tab.icon\"></i>\r\n <span>{{ tab.name }}</span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <div class=\"fwe-legacy-tab-panel-content\">\r\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"viewType !== 'legacy'\">\r\n <div class=\"fng-tab-bar\" role=\"tablist\">\r\n <div class=\"fng-tab-scroller\" #scroller>\r\n <div\r\n class=\"fng-tab-scroller-scroll-area fng-tab-scroller-scroll-area--scroll\"\r\n [class.fng-tab-scroller-scroll-area--compact]=\"useCompactDensity\"\r\n #scrollAera\r\n >\r\n <div class=\"fng-tab-scroller-scroll-content\" [class.fng-tab-scroller-scroll-content--with-divider]=\"showDivider\" #scrollContent>\r\n <button\r\n *ngFor=\"let tab of tabs; let i = index\"\r\n role=\"tab\"\r\n class=\"fng-tab\"\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [tabindex]=\"i === 0 ? 0 : -1\"\r\n [class.fng-tab--active]=\"tab?.active\"\r\n [class.fng-tab--disabled]=\"tab?.disabled\"\r\n (click)=\"handleTabScroll($event, i); showTabPane(tab.paneId)\"\r\n >\r\n <span class=\"fng-tab-content\">\r\n <span class=\"fng-tab-text-label\">{{ tab.name }}</span>\r\n </span>\r\n <span class=\"fng-tab-indicator\" [class.fng-tab-indicator--active]=\"tab?.active\">\r\n <span class=\"fng-tab-indicator-content fng-tab-indicator-content--underline\"></span>\r\n </span>\r\n </button>\r\n <div class=\"fng-tab-scroller-divider-line\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"fng-tab-panel-content\">\r\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #tabPanelContent>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n", styles: [".fwe-legacy-tabs{margin:48px 0;width:100%;height:100%}.fwe-legacy-tab-bar{display:flex;flex-wrap:nowrap;width:75%;padding-left:0;margin-bottom:0;margin-top:0;list-style:none;font-size:var(--fwe-font-size-base)}.fwe-legacy-tab-bar.fwe-legacy-tab-bar-full-width{width:100%}.fwe-legacy-tab-bar.fwe-legacy-tab-items-fill .fwe-legacy-tab-item{flex:1 1 auto}.fwe-legacy-tab-bar.fwe-legacy-tab-items-equal-width .fwe-legacy-tab-item{flex:1 1 0}.fwe-legacy-tab-item{height:48px;max-height:48px;background-color:var(--fwe-gray-300);border-right:2px solid var(--fwe-gray-100);text-align:center}.fwe-legacy-tab-item:last-child{border-right:none}.fwe-legacy-tab-item.fwe-active{background-color:var(--fwe-white)}.fwe-legacy-tab-item.fwe-active .fwe-legacy-tab-link{color:var(--fwe-caerul)}.fwe-legacy-tab-item.fwe-disabled{background-color:var(--fwe-control-disabled)}.fwe-legacy-tab-item.fwe-disabled .fwe-legacy-tab-link{color:var(--fwe-text-disabled)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-gray-100)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{padding:11px 16px}.fwe-legacy-tab-link{display:inline-block;width:100%;height:48px;padding:11px 16px 13px;line-height:24px;cursor:pointer;color:var(--fwe-black);white-space:nowrap}.fwe-legacy-tab-link i.fwe-icon{padding-right:8px;vertical-align:initial}.fwe-legacy-tab-link i.fwe-icon.fwe-icon-lg{position:relative;top:3px}.fwe-legacy-tab-link:hover{color:var(--fwe-caerul)}.fwe-legacy-tab-link:active{background-color:var(--fwe-white);color:var(--fwe-caerul)}.fwe-legacy-tab-panel-content{padding:48px 24px;background-color:var(--fwe-white);height:100%;overflow:auto}@media (max-width: 375px){.fwe-legacy-tab-bar{justify-content:space-between;background-color:var(--fwe-white);width:100%}.fwe-legacy-tab-item{background-color:var(--fwe-white);border-right:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{color:var(--fwe-icon-gray)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link i.fwe-icon{color:var(--fwe-icon-gray)}.fwe-legacy-tab-link.fwe-can-swap-icon{direction:rtl}.fwe-legacy-tab-link.fwe-can-swap-icon i.fwe-icon{padding-left:8px;padding-right:0}}.fng-tab-panel-content{padding:48px 24px;background-color:var(--fwe-white);height:100%;overflow:auto}.fng-tab-bar{width:100%}.fng-tab-scroller{overflow-y:hidden}.fng-tab-scroller-scroll-area{position:relative;display:flex;overflow-x:hidden}.fng-tab-scroller-scroll-area::-webkit-scrollbar{display:none}.fng-tab-scroller-scroll-area--scroll{overflow-x:scroll}.fng-tab-scroller-scroll-content{position:relative;display:flex;flex:1 0 auto;transform:none;will-change:transform;padding:0 17px 0 16px}.fng-tab-scroller-scroll-content--with-divider .fng-tab-scroller-divider-line{display:block}.fng-tab-scroller--animating .fng-tab-scroller-scroll-content{transition:.25s transform cubic-bezier(.4,0,.2,1)}.fng-tab-scroller-divider-line{display:none;position:absolute;inset:0;border-bottom:1px solid var(--fwe-control)}.fng-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.fng-tab-indicator-content{transform-origin:left;opacity:0}.fng-tab-indicator-content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.fng-tab-indicator .fng-tab-indicator-content{transition:.25s transform cubic-bezier(.4,0,.2,1)}.fng-tab-indicator .fng-tab-indicator-content--underline{border-top:4px solid var(--fwe-caerul)}.fng-tab-indicator--active .fng-tab-indicator-content{opacity:1}.fng-tab{position:relative;display:flex;flex:1 0 auto;justify-content:center;padding:0;margin:0;border:none;outline:none;background:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1;height:36px}.fng-tab:not(:last-child){margin-right:32px}.fng-tab::-moz-focus-inner{padding:0;border:0}.fng-tab .fng-tab-text-label{color:var(--fwe-text)}.fng-tab--active .fng-tab-text-label{color:var(--fwe-caerul)}.fng-tab--disabled .fng-tab-text-label{color:var(--fwe-text-disabled)}.fng-tab-content{position:relative;display:flex;align-items:flex-start;justify-content:center;height:inherit;pointer-events:none}.fng-tab-text-label{display:inline-block;z-index:2}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab{flex:none}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab:not(:last-child){margin-right:64px}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab-scroller-scroll-content{padding:0 32px}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab-scroller-divider-line{padding-right:64px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
428
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: TabsComponent, decorators: [{
425
+ FngTabsComponent.nextId = 0;
426
+ FngTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngTabsComponent, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
427
+ FngTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: FngTabsComponent, isStandalone: true, selector: "fng-tabs", inputs: { viewType: ["fngTabsViewType", "viewType"], showDivider: ["fngTabsUseBottomDivider", "showDivider"], config: "config" }, outputs: { fngBeforeTabChange: "fngBeforeTabChange", fngTabChange: "fngTabChange" }, queries: [{ propertyName: "panes", predicate: FngTabPaneComponent }], viewQueries: [{ propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "scrollAera", first: true, predicate: ["scrollAera"], descendants: true }, { propertyName: "scrollContent", first: true, predicate: ["scrollContent"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"viewType === 'legacy'\">\r\n <div class=\"fwe-legacy-tabs\">\r\n <ul\r\n role=\"tablist\"\r\n class=\"fwe-legacy-tab-bar\"\r\n [class.fwe-legacy-tab-bar-full-width]=\"config?.tabBar?.fullWidth\"\r\n [class.fwe-legacy-tab-items-equal-width]=\"'equal' === config?.tabItems?.appearance\"\r\n [class.fwe-legacy-tab-items-fill]=\"'fill' === config?.tabItems?.appearance\"\r\n >\r\n <li\r\n *ngFor=\"let tab of tabs; let i = index\"\r\n class=\"fwe-legacy-tab-item\"\r\n [ngClass]=\"{ 'fwe-active': tab?.active, 'fwe-disabled': tab?.disabled }\"\r\n >\r\n <ng-container *ngIf=\"null == tab?.icon\">\r\n <a\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\r\n role=\"tab\"\r\n class=\"fwe-legacy-tab-link\"\r\n (click)=\"showTabPane(tab.paneId)\"\r\n >{{ tab.name }}</a\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"null != tab?.icon\">\r\n <a\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\r\n role=\"tab\"\r\n class=\"fwe-legacy-tab-link\"\r\n (click)=\"showTabPane(tab.paneId)\"\r\n [class.fwe-can-swap-icon]=\"2 === tabs.length && 1 === i\"\r\n >\r\n <i [class]=\"'fwe-icon ' + tab.icon\"></i>\r\n <span>{{ tab.name }}</span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <div class=\"fwe-legacy-tab-panel-content\">\r\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"viewType !== 'legacy'\">\r\n <div class=\"fng-tab-bar\" role=\"tablist\">\r\n <div class=\"fng-tab-scroller\" #scroller>\r\n <div\r\n class=\"fng-tab-scroller-scroll-area fng-tab-scroller-scroll-area--scroll\"\r\n [class.fng-tab-scroller-scroll-area--compact]=\"useCompactDensity\"\r\n #scrollAera\r\n >\r\n <div class=\"fng-tab-scroller-scroll-content\" [class.fng-tab-scroller-scroll-content--with-divider]=\"showDivider\" #scrollContent>\r\n <button\r\n *ngFor=\"let tab of tabs; let i = index\"\r\n role=\"tab\"\r\n class=\"fng-tab\"\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [tabindex]=\"i === 0 ? 0 : -1\"\r\n [class.fng-tab--active]=\"tab?.active\"\r\n [class.fng-tab--disabled]=\"tab?.disabled\"\r\n (click)=\"handleTabScroll($event, i); showTabPane(tab.paneId)\"\r\n >\r\n <span class=\"fng-tab-content\">\r\n <span class=\"fng-tab-text-label\">{{ tab.name }}</span>\r\n </span>\r\n <span class=\"fng-tab-indicator\" [class.fng-tab-indicator--active]=\"tab?.active\">\r\n <span class=\"fng-tab-indicator-content fng-tab-indicator-content--underline\"></span>\r\n </span>\r\n </button>\r\n <div class=\"fng-tab-scroller-divider-line\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"fng-tab-panel-content\">\r\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #tabPanelContent>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n", styles: [".fwe-legacy-tabs{margin:48px 0;width:100%;height:100%}.fwe-legacy-tab-bar{display:flex;flex-wrap:nowrap;width:75%;padding-left:0;margin-bottom:0;margin-top:0;list-style:none;font-size:var(--fwe-font-size-base)}.fwe-legacy-tab-bar.fwe-legacy-tab-bar-full-width{width:100%}.fwe-legacy-tab-bar.fwe-legacy-tab-items-fill .fwe-legacy-tab-item{flex:1 1 auto}.fwe-legacy-tab-bar.fwe-legacy-tab-items-equal-width .fwe-legacy-tab-item{flex:1 1 0}.fwe-legacy-tab-item{height:48px;max-height:48px;background-color:var(--fwe-gray-300);border-right:2px solid var(--fwe-gray-100);text-align:center}.fwe-legacy-tab-item:last-child{border-right:none}.fwe-legacy-tab-item.fwe-active{background-color:var(--fwe-white)}.fwe-legacy-tab-item.fwe-active .fwe-legacy-tab-link{color:var(--fwe-caerul)}.fwe-legacy-tab-item.fwe-disabled{background-color:var(--fwe-control-disabled)}.fwe-legacy-tab-item.fwe-disabled .fwe-legacy-tab-link{color:var(--fwe-text-disabled)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-gray-100)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{padding:11px 16px}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link:hover{color:var(--fwe-btn-text);background-color:var(--fwe-btn-hover)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link:active{background-color:var(--fwe-btn-active)}.fwe-legacy-tab-link{display:inline-block;width:100%;height:46px;padding:11px 16px 13px;line-height:24px;cursor:pointer;color:var(--fwe-black);white-space:nowrap}.fwe-legacy-tab-link i.fwe-icon{padding-right:8px;vertical-align:initial}.fwe-legacy-tab-link i.fwe-icon.fwe-icon-lg{position:relative;top:3px}.fwe-legacy-tab-panel-content{padding:48px 24px;background-color:var(--fwe-white);height:100%;overflow:auto}@media (max-width: 375px){.fwe-legacy-tab-bar{justify-content:space-between;background-color:var(--fwe-white);width:100%}.fwe-legacy-tab-item{background-color:var(--fwe-white);border-right:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{color:var(--fwe-icon-gray)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link i.fwe-icon{color:var(--fwe-icon-gray)}.fwe-legacy-tab-link.fwe-can-swap-icon{direction:rtl}.fwe-legacy-tab-link.fwe-can-swap-icon i.fwe-icon{padding-left:8px;padding-right:0}}.fng-tab-panel-content{padding:48px 24px;background-color:var(--fwe-white);height:100%;overflow:auto}.fng-tab-bar{width:100%}.fng-tab-scroller{overflow-y:hidden}.fng-tab-scroller-scroll-area{position:relative;display:flex;overflow-x:hidden}.fng-tab-scroller-scroll-area::-webkit-scrollbar{display:none}.fng-tab-scroller-scroll-area--scroll{overflow-x:scroll}.fng-tab-scroller-scroll-content{position:relative;display:flex;flex:1 0 auto;transform:none;will-change:transform;padding:0 17px 0 16px}.fng-tab-scroller-scroll-content--with-divider .fng-tab-scroller-divider-line{display:block}.fng-tab-scroller--animating .fng-tab-scroller-scroll-content{transition:.25s transform cubic-bezier(.4,0,.2,1)}.fng-tab-scroller-divider-line{display:none;position:absolute;inset:0;border-bottom:1px solid var(--fwe-control)}.fng-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.fng-tab-indicator-content{transform-origin:left;opacity:0}.fng-tab-indicator-content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.fng-tab-indicator .fng-tab-indicator-content{transition:.25s transform cubic-bezier(.4,0,.2,1)}.fng-tab-indicator .fng-tab-indicator-content--underline{border-top:4px solid var(--fwe-caerul)}.fng-tab-indicator--active .fng-tab-indicator-content{opacity:1}.fng-tab{position:relative;display:flex;flex:1 0 auto;justify-content:center;padding:0;margin:0;border:none;outline:none;background:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1;height:36px}.fng-tab:hover .fng-tab-text-label{color:var(--fwe-caerul)}.fng-tab:active .fng-tab-text-label{color:var(--fwe-btn-hero-active)}.fng-tab:not(:last-child){margin-right:32px}.fng-tab::-moz-focus-inner{padding:0;border:0}.fng-tab .fng-tab-text-label{color:var(--fwe-text)}.fng-tab--active .fng-tab-text-label{color:var(--fwe-caerul)}.fng-tab--disabled .fng-tab-text-label{color:var(--fwe-text-disabled)}.fng-tab-content{position:relative;display:flex;align-items:flex-start;justify-content:center;height:inherit;pointer-events:none}.fng-tab-text-label{display:inline-block;z-index:2}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab{flex:none}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab:not(:last-child){margin-right:64px}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab-scroller-scroll-content{padding:0 32px}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab-scroller-divider-line{padding-right:64px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngTabsComponent, decorators: [{
429
429
  type: Component,
430
- args: [{ standalone: true, imports: [CommonModule], selector: 'fng-tabs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"viewType === 'legacy'\">\r\n <div class=\"fwe-legacy-tabs\">\r\n <ul\r\n role=\"tablist\"\r\n class=\"fwe-legacy-tab-bar\"\r\n [class.fwe-legacy-tab-bar-full-width]=\"config?.tabBar?.fullWidth\"\r\n [class.fwe-legacy-tab-items-equal-width]=\"'equal' === config?.tabItems?.appearance\"\r\n [class.fwe-legacy-tab-items-fill]=\"'fill' === config?.tabItems?.appearance\"\r\n >\r\n <li\r\n *ngFor=\"let tab of tabs; let i = index\"\r\n class=\"fwe-legacy-tab-item\"\r\n [ngClass]=\"{ 'fwe-active': tab?.active, 'fwe-disabled': tab?.disabled }\"\r\n >\r\n <ng-container *ngIf=\"null == tab?.icon\">\r\n <a\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\r\n role=\"tab\"\r\n class=\"fwe-legacy-tab-link\"\r\n (click)=\"showTabPane(tab.paneId)\"\r\n >{{ tab.name }}</a\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"null != tab?.icon\">\r\n <a\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\r\n role=\"tab\"\r\n class=\"fwe-legacy-tab-link\"\r\n (click)=\"showTabPane(tab.paneId)\"\r\n [class.fwe-can-swap-icon]=\"2 === tabs.length && 1 === i\"\r\n >\r\n <i [class]=\"'fwe-icon ' + tab.icon\"></i>\r\n <span>{{ tab.name }}</span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <div class=\"fwe-legacy-tab-panel-content\">\r\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"viewType !== 'legacy'\">\r\n <div class=\"fng-tab-bar\" role=\"tablist\">\r\n <div class=\"fng-tab-scroller\" #scroller>\r\n <div\r\n class=\"fng-tab-scroller-scroll-area fng-tab-scroller-scroll-area--scroll\"\r\n [class.fng-tab-scroller-scroll-area--compact]=\"useCompactDensity\"\r\n #scrollAera\r\n >\r\n <div class=\"fng-tab-scroller-scroll-content\" [class.fng-tab-scroller-scroll-content--with-divider]=\"showDivider\" #scrollContent>\r\n <button\r\n *ngFor=\"let tab of tabs; let i = index\"\r\n role=\"tab\"\r\n class=\"fng-tab\"\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [tabindex]=\"i === 0 ? 0 : -1\"\r\n [class.fng-tab--active]=\"tab?.active\"\r\n [class.fng-tab--disabled]=\"tab?.disabled\"\r\n (click)=\"handleTabScroll($event, i); showTabPane(tab.paneId)\"\r\n >\r\n <span class=\"fng-tab-content\">\r\n <span class=\"fng-tab-text-label\">{{ tab.name }}</span>\r\n </span>\r\n <span class=\"fng-tab-indicator\" [class.fng-tab-indicator--active]=\"tab?.active\">\r\n <span class=\"fng-tab-indicator-content fng-tab-indicator-content--underline\"></span>\r\n </span>\r\n </button>\r\n <div class=\"fng-tab-scroller-divider-line\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"fng-tab-panel-content\">\r\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #tabPanelContent>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n", styles: [".fwe-legacy-tabs{margin:48px 0;width:100%;height:100%}.fwe-legacy-tab-bar{display:flex;flex-wrap:nowrap;width:75%;padding-left:0;margin-bottom:0;margin-top:0;list-style:none;font-size:var(--fwe-font-size-base)}.fwe-legacy-tab-bar.fwe-legacy-tab-bar-full-width{width:100%}.fwe-legacy-tab-bar.fwe-legacy-tab-items-fill .fwe-legacy-tab-item{flex:1 1 auto}.fwe-legacy-tab-bar.fwe-legacy-tab-items-equal-width .fwe-legacy-tab-item{flex:1 1 0}.fwe-legacy-tab-item{height:48px;max-height:48px;background-color:var(--fwe-gray-300);border-right:2px solid var(--fwe-gray-100);text-align:center}.fwe-legacy-tab-item:last-child{border-right:none}.fwe-legacy-tab-item.fwe-active{background-color:var(--fwe-white)}.fwe-legacy-tab-item.fwe-active .fwe-legacy-tab-link{color:var(--fwe-caerul)}.fwe-legacy-tab-item.fwe-disabled{background-color:var(--fwe-control-disabled)}.fwe-legacy-tab-item.fwe-disabled .fwe-legacy-tab-link{color:var(--fwe-text-disabled)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-gray-100)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{padding:11px 16px}.fwe-legacy-tab-link{display:inline-block;width:100%;height:48px;padding:11px 16px 13px;line-height:24px;cursor:pointer;color:var(--fwe-black);white-space:nowrap}.fwe-legacy-tab-link i.fwe-icon{padding-right:8px;vertical-align:initial}.fwe-legacy-tab-link i.fwe-icon.fwe-icon-lg{position:relative;top:3px}.fwe-legacy-tab-link:hover{color:var(--fwe-caerul)}.fwe-legacy-tab-link:active{background-color:var(--fwe-white);color:var(--fwe-caerul)}.fwe-legacy-tab-panel-content{padding:48px 24px;background-color:var(--fwe-white);height:100%;overflow:auto}@media (max-width: 375px){.fwe-legacy-tab-bar{justify-content:space-between;background-color:var(--fwe-white);width:100%}.fwe-legacy-tab-item{background-color:var(--fwe-white);border-right:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{color:var(--fwe-icon-gray)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link i.fwe-icon{color:var(--fwe-icon-gray)}.fwe-legacy-tab-link.fwe-can-swap-icon{direction:rtl}.fwe-legacy-tab-link.fwe-can-swap-icon i.fwe-icon{padding-left:8px;padding-right:0}}.fng-tab-panel-content{padding:48px 24px;background-color:var(--fwe-white);height:100%;overflow:auto}.fng-tab-bar{width:100%}.fng-tab-scroller{overflow-y:hidden}.fng-tab-scroller-scroll-area{position:relative;display:flex;overflow-x:hidden}.fng-tab-scroller-scroll-area::-webkit-scrollbar{display:none}.fng-tab-scroller-scroll-area--scroll{overflow-x:scroll}.fng-tab-scroller-scroll-content{position:relative;display:flex;flex:1 0 auto;transform:none;will-change:transform;padding:0 17px 0 16px}.fng-tab-scroller-scroll-content--with-divider .fng-tab-scroller-divider-line{display:block}.fng-tab-scroller--animating .fng-tab-scroller-scroll-content{transition:.25s transform cubic-bezier(.4,0,.2,1)}.fng-tab-scroller-divider-line{display:none;position:absolute;inset:0;border-bottom:1px solid var(--fwe-control)}.fng-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.fng-tab-indicator-content{transform-origin:left;opacity:0}.fng-tab-indicator-content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.fng-tab-indicator .fng-tab-indicator-content{transition:.25s transform cubic-bezier(.4,0,.2,1)}.fng-tab-indicator .fng-tab-indicator-content--underline{border-top:4px solid var(--fwe-caerul)}.fng-tab-indicator--active .fng-tab-indicator-content{opacity:1}.fng-tab{position:relative;display:flex;flex:1 0 auto;justify-content:center;padding:0;margin:0;border:none;outline:none;background:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1;height:36px}.fng-tab:not(:last-child){margin-right:32px}.fng-tab::-moz-focus-inner{padding:0;border:0}.fng-tab .fng-tab-text-label{color:var(--fwe-text)}.fng-tab--active .fng-tab-text-label{color:var(--fwe-caerul)}.fng-tab--disabled .fng-tab-text-label{color:var(--fwe-text-disabled)}.fng-tab-content{position:relative;display:flex;align-items:flex-start;justify-content:center;height:inherit;pointer-events:none}.fng-tab-text-label{display:inline-block;z-index:2}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab{flex:none}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab:not(:last-child){margin-right:64px}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab-scroller-scroll-content{padding:0 32px}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab-scroller-divider-line{padding-right:64px}\n"] }]
430
+ args: [{ standalone: true, imports: [CommonModule], selector: 'fng-tabs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"viewType === 'legacy'\">\r\n <div class=\"fwe-legacy-tabs\">\r\n <ul\r\n role=\"tablist\"\r\n class=\"fwe-legacy-tab-bar\"\r\n [class.fwe-legacy-tab-bar-full-width]=\"config?.tabBar?.fullWidth\"\r\n [class.fwe-legacy-tab-items-equal-width]=\"'equal' === config?.tabItems?.appearance\"\r\n [class.fwe-legacy-tab-items-fill]=\"'fill' === config?.tabItems?.appearance\"\r\n >\r\n <li\r\n *ngFor=\"let tab of tabs; let i = index\"\r\n class=\"fwe-legacy-tab-item\"\r\n [ngClass]=\"{ 'fwe-active': tab?.active, 'fwe-disabled': tab?.disabled }\"\r\n >\r\n <ng-container *ngIf=\"null == tab?.icon\">\r\n <a\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\r\n role=\"tab\"\r\n class=\"fwe-legacy-tab-link\"\r\n (click)=\"showTabPane(tab.paneId)\"\r\n >{{ tab.name }}</a\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"null != tab?.icon\">\r\n <a\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\r\n role=\"tab\"\r\n class=\"fwe-legacy-tab-link\"\r\n (click)=\"showTabPane(tab.paneId)\"\r\n [class.fwe-can-swap-icon]=\"2 === tabs.length && 1 === i\"\r\n >\r\n <i [class]=\"'fwe-icon ' + tab.icon\"></i>\r\n <span>{{ tab.name }}</span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <div class=\"fwe-legacy-tab-panel-content\">\r\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"viewType !== 'legacy'\">\r\n <div class=\"fng-tab-bar\" role=\"tablist\">\r\n <div class=\"fng-tab-scroller\" #scroller>\r\n <div\r\n class=\"fng-tab-scroller-scroll-area fng-tab-scroller-scroll-area--scroll\"\r\n [class.fng-tab-scroller-scroll-area--compact]=\"useCompactDensity\"\r\n #scrollAera\r\n >\r\n <div class=\"fng-tab-scroller-scroll-content\" [class.fng-tab-scroller-scroll-content--with-divider]=\"showDivider\" #scrollContent>\r\n <button\r\n *ngFor=\"let tab of tabs; let i = index\"\r\n role=\"tab\"\r\n class=\"fng-tab\"\r\n [id]=\"componentId + '-tab-' + i\"\r\n [attr.aria-controls]=\"tab.paneId\"\r\n [attr.aria-selected]=\"true === tab?.active ? true : false\"\r\n [tabindex]=\"i === 0 ? 0 : -1\"\r\n [class.fng-tab--active]=\"tab?.active\"\r\n [class.fng-tab--disabled]=\"tab?.disabled\"\r\n (click)=\"handleTabScroll($event, i); showTabPane(tab.paneId)\"\r\n >\r\n <span class=\"fng-tab-content\">\r\n <span class=\"fng-tab-text-label\">{{ tab.name }}</span>\r\n </span>\r\n <span class=\"fng-tab-indicator\" [class.fng-tab-indicator--active]=\"tab?.active\">\r\n <span class=\"fng-tab-indicator-content fng-tab-indicator-content--underline\"></span>\r\n </span>\r\n </button>\r\n <div class=\"fng-tab-scroller-divider-line\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"fng-tab-panel-content\">\r\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #tabPanelContent>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n", styles: [".fwe-legacy-tabs{margin:48px 0;width:100%;height:100%}.fwe-legacy-tab-bar{display:flex;flex-wrap:nowrap;width:75%;padding-left:0;margin-bottom:0;margin-top:0;list-style:none;font-size:var(--fwe-font-size-base)}.fwe-legacy-tab-bar.fwe-legacy-tab-bar-full-width{width:100%}.fwe-legacy-tab-bar.fwe-legacy-tab-items-fill .fwe-legacy-tab-item{flex:1 1 auto}.fwe-legacy-tab-bar.fwe-legacy-tab-items-equal-width .fwe-legacy-tab-item{flex:1 1 0}.fwe-legacy-tab-item{height:48px;max-height:48px;background-color:var(--fwe-gray-300);border-right:2px solid var(--fwe-gray-100);text-align:center}.fwe-legacy-tab-item:last-child{border-right:none}.fwe-legacy-tab-item.fwe-active{background-color:var(--fwe-white)}.fwe-legacy-tab-item.fwe-active .fwe-legacy-tab-link{color:var(--fwe-caerul)}.fwe-legacy-tab-item.fwe-disabled{background-color:var(--fwe-control-disabled)}.fwe-legacy-tab-item.fwe-disabled .fwe-legacy-tab-link{color:var(--fwe-text-disabled)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-gray-100)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{padding:11px 16px}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link:hover{color:var(--fwe-btn-text);background-color:var(--fwe-btn-hover)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link:active{background-color:var(--fwe-btn-active)}.fwe-legacy-tab-link{display:inline-block;width:100%;height:46px;padding:11px 16px 13px;line-height:24px;cursor:pointer;color:var(--fwe-black);white-space:nowrap}.fwe-legacy-tab-link i.fwe-icon{padding-right:8px;vertical-align:initial}.fwe-legacy-tab-link i.fwe-icon.fwe-icon-lg{position:relative;top:3px}.fwe-legacy-tab-panel-content{padding:48px 24px;background-color:var(--fwe-white);height:100%;overflow:auto}@media (max-width: 375px){.fwe-legacy-tab-bar{justify-content:space-between;background-color:var(--fwe-white);width:100%}.fwe-legacy-tab-item{background-color:var(--fwe-white);border-right:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active){border-bottom:2px solid var(--fwe-white)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link{color:var(--fwe-icon-gray)}.fwe-legacy-tab-item:not(.fwe-active) .fwe-legacy-tab-link i.fwe-icon{color:var(--fwe-icon-gray)}.fwe-legacy-tab-link.fwe-can-swap-icon{direction:rtl}.fwe-legacy-tab-link.fwe-can-swap-icon i.fwe-icon{padding-left:8px;padding-right:0}}.fng-tab-panel-content{padding:48px 24px;background-color:var(--fwe-white);height:100%;overflow:auto}.fng-tab-bar{width:100%}.fng-tab-scroller{overflow-y:hidden}.fng-tab-scroller-scroll-area{position:relative;display:flex;overflow-x:hidden}.fng-tab-scroller-scroll-area::-webkit-scrollbar{display:none}.fng-tab-scroller-scroll-area--scroll{overflow-x:scroll}.fng-tab-scroller-scroll-content{position:relative;display:flex;flex:1 0 auto;transform:none;will-change:transform;padding:0 17px 0 16px}.fng-tab-scroller-scroll-content--with-divider .fng-tab-scroller-divider-line{display:block}.fng-tab-scroller--animating .fng-tab-scroller-scroll-content{transition:.25s transform cubic-bezier(.4,0,.2,1)}.fng-tab-scroller-divider-line{display:none;position:absolute;inset:0;border-bottom:1px solid var(--fwe-control)}.fng-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.fng-tab-indicator-content{transform-origin:left;opacity:0}.fng-tab-indicator-content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.fng-tab-indicator .fng-tab-indicator-content{transition:.25s transform cubic-bezier(.4,0,.2,1)}.fng-tab-indicator .fng-tab-indicator-content--underline{border-top:4px solid var(--fwe-caerul)}.fng-tab-indicator--active .fng-tab-indicator-content{opacity:1}.fng-tab{position:relative;display:flex;flex:1 0 auto;justify-content:center;padding:0;margin:0;border:none;outline:none;background:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1;height:36px}.fng-tab:hover .fng-tab-text-label{color:var(--fwe-caerul)}.fng-tab:active .fng-tab-text-label{color:var(--fwe-btn-hero-active)}.fng-tab:not(:last-child){margin-right:32px}.fng-tab::-moz-focus-inner{padding:0;border:0}.fng-tab .fng-tab-text-label{color:var(--fwe-text)}.fng-tab--active .fng-tab-text-label{color:var(--fwe-caerul)}.fng-tab--disabled .fng-tab-text-label{color:var(--fwe-text-disabled)}.fng-tab-content{position:relative;display:flex;align-items:flex-start;justify-content:center;height:inherit;pointer-events:none}.fng-tab-text-label{display:inline-block;z-index:2}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab{flex:none}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab:not(:last-child){margin-right:64px}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab-scroller-scroll-content{padding:0 32px}.fng-tab-scroller-scroll-area:not(.fng-tab-scroller-scroll-area--compact) .fng-tab-scroller-divider-line{padding-right:64px}\n"] }]
431
431
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Document, decorators: [{
432
432
  type: Inject,
433
433
  args: [DOCUMENT]
@@ -445,7 +445,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
445
445
  type: Output
446
446
  }], panes: [{
447
447
  type: ContentChildren,
448
- args: [TabPaneComponent]
448
+ args: [FngTabPaneComponent]
449
449
  }], scroller: [{
450
450
  type: ViewChild,
451
451
  args: ['scroller']
@@ -456,4 +456,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
456
456
  type: ViewChild,
457
457
  args: ['scrollContent']
458
458
  }] } });
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGFicy90YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUE0RGpFLE1BQU0sT0FBTyxhQUFhO0lBeUJ4QixZQUNVLEtBQWlCLEVBQ0MsUUFBa0IsRUFDcEMsUUFBbUIsRUFDbkIsRUFBcUI7UUFIckIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTNCTCxhQUFRLEdBQWdCLFlBQVksQ0FBQztRQUM3QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUV0RCxXQUFNLEdBQTZCLElBQUksQ0FBQztRQUN2Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUM5RCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUF5QyxDQUFDO1FBT25G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QUFpQixHQUFHLENBQUMsQ0FBQztRQUV6RSxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUVELElBQUksaUJBQWlCLEVBQUU7WUFDckIsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7O0FBemVNLG9CQUFNLEdBQUcsQ0FBQyxDQUFDOzBHQURQLGFBQWEsNENBMkJkLFFBQVE7OEZBM0JQLGFBQWEsaVRBU1AsZ0JBQWdCLCtUQzFGbkMsb3pIQTBGQSxpdkpEZlksWUFBWTsyRkFNWCxhQUFhO2tCQVJ6QixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLFVBQVUsbUJBR0gsdUJBQXVCLENBQUMsTUFBTTs7MEJBNkI1QyxNQUFNOzJCQUFDLFFBQVE7b0dBekJRLFFBQVE7c0JBQWpDLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUNVLFdBQVc7c0JBQTVDLEtBQUs7dUJBQUMseUJBQXlCO2dCQUV2QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRTRCLEtBQUs7c0JBQXZDLGVBQWU7dUJBQUMsZ0JBQWdCO2dCQUNWLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDSSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0ssYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbm9vcCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBUYWJQYW5lQ29tcG9uZW50IH0gZnJvbSAnLi90YWItcGFuZS90YWItcGFuZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWIge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBwYW5lSWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBpY29uPzogc3RyaW5nIHwgbnVsbDtcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8vIGZpbGw6IHVzZSB0aGUgcmVtYWluaW5nIHNwYWNlIGFuZCBhZGQgaW4gc2FtZSBwcm9wb3J0aW9uIHRvIGV2ZXJ5IHRhYiBpdGVtXHJcbi8vIGVxdWFsOiBtYWtlIGFsbCB0YWIgaXRlbXMgc2FtZSB3aWR0aCAoYXMgdGhlIG9uZSB3aXRoIGxhcmdlc3QgY29udGVudClcclxuZXhwb3J0IHR5cGUgVGFiSXRlbUFwcGVhcmFuY2UgPSAnZmlsbCcgfCAnZXF1YWwnIHwgJ2RlZmF1bHQnO1xyXG5cclxuLy8gbGVnYWN5OiByZWNvbW1lbmRlZCBmb3IgZGVza3RvcCBvbmx5IGFwcGxpY2F0aW9uc1xyXG4vLyByZXNwb25zaXZlOiBkZXNrdG9wLCB0YWJsZXQsIG1vYmlsZSB3aXRoIHNjcm9sbGFibGUgdGFic1xyXG5leHBvcnQgdHlwZSBUYWJWaWV3VHlwZSA9ICdsZWdhY3knIHwgJ3Jlc3BvbnNpdmUnO1xyXG5cclxuLy8gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBsZWdhY3kgdGFiIHZpZXcgdHlwZVxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYnNDb25maWd1cmF0aW9uIHtcclxuICB0YWJCYXI/OiB7XHJcbiAgICBmdWxsV2lkdGg/OiBib29sZWFuO1xyXG4gIH07XHJcbiAgdGFiSXRlbXM/OiB7XHJcbiAgICBhcHBlYXJhbmNlOiBUYWJJdGVtQXBwZWFyYW5jZTtcclxuICB9O1xyXG59XHJcblxyXG4vLyBwcm92aWRlcyBkZXRhaWxzIGFib3V0IHRoZSBsZWZ0IGFuZCByaWdodCBlZGdlcyBvZiB0aGUgdGFiIGVsZW1lbnQgYW5kIHRoZSB0YWIgY29udGVudCBlbGVtZW50XHJcbi8vIHRoZXNlIHZhbHVlcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHZpc3VhbCBwb3NpdGlvbiBvZiB0aGUgdGFiIHdpdGggcmVzcGVjdCBvZiBpdHMgcGFyZW50IGNvbnRhaW5lclxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYkRpbWVuc2lvbnMge1xyXG4gIHJvb3RMZWZ0OiBudW1iZXI7XHJcbiAgcm9vdFJpZ2h0OiBudW1iZXI7XHJcbiAgY29udGVudExlZnQ6IG51bWJlcjtcclxuICBjb250ZW50UmlnaHQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJTY3JvbGxBbmltYXRpb24ge1xyXG4gIGZpbmFsU2Nyb2xsUG9zaXRpb246IG51bWJlcjtcclxuICBzY3JvbGxEZWx0YTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYlNjcm9sbEhvcml6b250YWxFZGdlcyB7XHJcbiAgbGVmdDogbnVtYmVyO1xyXG4gIHJpZ2h0OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmVmb3JlVGFiQ2hhbmdlRXZlbnQge1xyXG4gIG9rOiAoKSA9PiB2b2lkO1xyXG4gIGNhbmNlbDogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBzZWxlY3RvcjogJ2ZuZy10YWJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFicy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBzdGF0aWMgbmV4dElkID0gMDtcclxuICBASW5wdXQoJ2ZuZ1RhYnNWaWV3VHlwZScpIHZpZXdUeXBlOiBUYWJWaWV3VHlwZSA9ICdyZXNwb25zaXZlJztcclxuICBASW5wdXQoJ2ZuZ1RhYnNVc2VCb3R0b21EaXZpZGVyJykgc2hvd0RpdmlkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnOiBUYWJzQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBmbmdCZWZvcmVUYWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEJlZm9yZVRhYkNoYW5nZUV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBmbmdUYWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcHJldmlvdXM6IHN0cmluZzsgY3VycmVudDogc3RyaW5nIH0+KCk7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiUGFuZUNvbXBvbmVudCkgcGFuZXM6IFF1ZXJ5TGlzdDxUYWJQYW5lQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcclxuICBAVmlld0NoaWxkKCdzY3JvbGxlcicpIHNjcm9sbGVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbEFlcmEnKSBzY3JvbGxBZXJhOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRlbnQnKSBzY3JvbGxDb250ZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb21wb25lbnRJZCA9IGB0YWJzLSR7KytUYWJzQ29tcG9uZW50Lm5leHRJZH1gO1xyXG4gIHRhYnM6IFRhYltdID0gW107XHJcbiAgdXNlQ29tcGFjdERlbnNpdHk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgYWN0aXZlVGFiOiBUYWIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBlbGVtU2Nyb2xsZXI6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgZWxlbVNjcm9sbEFyZWE6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgZWxlbVNjcm9sbENvbnRlbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0ZWRXaW5kb3c6IFdpbmRvdyB8IG51bGw7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xyXG4gIHByaXZhdGUgY29tcGxldGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmluamVjdGVkV2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdFRhYnMoKTtcclxuICAgIGlmIChudWxsID09IHRoaXMuYWN0aXZlVGFiKSB7XHJcbiAgICAgIHRoaXMucGFuZXM/Lm1hcCgocGFuZSwgaSkgPT4ge1xyXG4gICAgICAgIGlmICgwID09PSBpKSB7XHJcbiAgICAgICAgICBwYW5lLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHBhbmUgPSB0aGlzLnBhbmVzPy5maW5kKHBhbmUgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVRhYikge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVGFiLnBhbmVJZCAhPSBudWxsICYmIHBhbmUudGFiUGFuZUlkID09PSB0aGlzLmFjdGl2ZVRhYi5wYW5lSWQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAocGFuZSkge1xyXG4gICAgICAgIHBhbmUuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbGVtU2Nyb2xsZXIgPSB0aGlzLnNjcm9sbGVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5lbGVtU2Nyb2xsQXJlYSA9IHRoaXMuc2Nyb2xsQWVyYT8ubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuZWxlbVNjcm9sbENvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5lbGVtU2Nyb2xsZXIgPT0gbnVsbCB8fCB0aGlzLmVsZW1TY3JvbGxBcmVhID09IG51bGwgfHwgdGhpcy5lbGVtU2Nyb2xsQ29udGVudCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRoaXMuZWxlbVNjcm9sbEFyZWEub2Zmc2V0V2lkdGg7XHJcbiAgICBpZiAoaW5pdGlhbFdpZHRoICE9IG51bGwgJiYgaW5pdGlhbFdpZHRoID4gNzY4KSB7XHJcbiAgICAgIHRoaXMudXNlQ29tcGFjdERlbnNpdHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVsZW1TY3JvbGxBcmVhID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmVsZW1TY3JvbGxBcmVhLm9mZnNldFdpZHRoO1xyXG4gICAgICBpZiAod2lkdGggIT0gbnVsbCAmJiB3aWR0aCA+IDc2OCAmJiB0aGlzLnVzZUNvbXBhY3REZW5zaXR5ID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy51c2VDb21wYWN0RGVuc2l0eSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGVsc2UgaWYgKHdpZHRoICE9IG51bGwgJiYgd2lkdGggPD0gNzY4ICYmIHRoaXMudXNlQ29tcGFjdERlbnNpdHkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy51c2VDb21wYWN0RGVuc2l0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmVsZW1TY3JvbGxBcmVhICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbVNjcm9sbEFyZWEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaGFuZGxlVGFiUGFuZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wbGV0ZS5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5jb21wbGV0ZS51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RhYlBhbmUoaWQ6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIGlmIChpZCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYW5lID0gdGhpcy5wYW5lcz8uZmluZChwID0+IHAudGFiUGFuZUlkID09PSBpZCk7XHJcbiAgICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoaWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAocGFuZSAhPSBudWxsICYmIHBhbmUuZGlzYWJsZWQgIT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnBhbmVzPy5tYXAocCA9PiB7XHJcbiAgICAgICAgICBwLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHBhbmUuaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy50YWJzLm1hcCh0YWIgPT4ge1xyXG4gICAgICAgICAgaWYgKHRhYi5wYW5lSWQgIT09IHBhbmUudGFiUGFuZUlkKSB7XHJcbiAgICAgICAgICAgIHRhYi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRhYi5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZm5nVGFiQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgcHJldmlvdXM6IHRoaXMuYWN0aXZlVGFiPy5wYW5lSWQgfHwgJycsXHJcbiAgICAgICAgICBjdXJyZW50OiBpZFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzLmZpbmQodGFiID0+ICEhdGFiLmFjdGl2ZSk7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuZm5nQmVmb3JlVGFiQ2hhbmdlPy5vYnNlcnZlcnM/Lmxlbmd0aCA+IDAgJiYgcGFuZT8uZGlzYWJsZWQgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy5mbmdCZWZvcmVUYWJDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgb2s6ICgpID0+IHtcclxuICAgICAgICAgIGhhbmRsZVRhYkNoYW5nZShpZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYW5jZWw6ICgpID0+IHtcclxuICAgICAgICAgIG5vb3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaGFuZGxlVGFiQ2hhbmdlKGlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVRhYlNjcm9sbChldmVudDogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5lbGVtU2Nyb2xsQ29udGVudCA9PSBudWxsIHx8IHRoaXMuZWxlbVNjcm9sbEFyZWEgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxDb250ZW50V2lkdGggPSB0aGlzLmVsZW1TY3JvbGxDb250ZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgY29uc3Qgc2Nyb2xsQXJlYVdpZHRoID0gdGhpcy5lbGVtU2Nyb2xsQXJlYS5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAvLyBjaGVjayBpZiBubyBzY3JvbGwgaXMgbmVlZGVkXHJcbiAgICBpZiAoc2Nyb2xsQXJlYVdpZHRoID4gc2Nyb2xsQ29udGVudFdpZHRoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayBpbmRleFxyXG4gICAgaWYgKCF0aGlzLmluZGV4SXNJblJhbmdlKGluZGV4KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWx3YXlzIHNjcm9sbCB0byAwIGlmIHNjcm9sbGluZyB0byB0aGUgZmlyc3QgdGFiXHJcbiAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgdGhpcy5zY3JvbGxUbygwKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFsd2F5cyBzY3JvbGwgdG8gdGhlIG1heCB2YWx1ZSBpZiBzY3JvbGxpbmcgdG8gdGhlIGxhc3QgdGFiXHJcbiAgICBpZiAoaW5kZXggPT09IHRoaXMudGFicy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG8odGhpcy5lbGVtU2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdXJyZW50VGFiOiBIVE1MRWxlbWVudCA9IGV2ZW50LnRhcmdldDtcclxuICAgIHRoaXMuc2Nyb2xsSW50b1ZpZXcoaW5kZXgsIGN1cnJlbnRUYWIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0VGFicygpIHtcclxuICAgIHRoaXMudGFicyA9IFtdO1xyXG4gICAgdGhpcy5wYW5lcz8ubWFwKChwYW5lLCBpKSA9PiB7XHJcbiAgICAgIHBhbmUudGFiSWQgPSB0aGlzLmNvbXBvbmVudElkICsgJy10YWItJyArIGk7XHJcbiAgICAgIGNvbnN0IHRhYjogVGFiID0ge1xyXG4gICAgICAgIG5hbWU6IG51bGwgIT0gcGFuZS5uYW1lID8gcGFuZS5uYW1lIDogJycsXHJcbiAgICAgICAgcGFuZUlkOiBudWxsICE9IHBhbmUudGFiUGFuZUlkID8gcGFuZS50YWJQYW5lSWQgOiBudWxsLFxyXG4gICAgICAgIGljb246IG51bGwgIT0gcGFuZS5pY29uID8gcGFuZS5pY29uIDogbnVsbCxcclxuICAgICAgICBhY3RpdmU6IG51bGwgIT0gcGFuZS5hY3RpdmUgPyBwYW5lLmFjdGl2ZSA6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiBudWxsICE9IHBhbmUuZGlzYWJsZWQgPyBwYW5lLmRpc2FibGVkIDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgdGhpcy50YWJzLnB1c2godGFiKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaW5pdEFjdGl2ZVRhYigpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRBY3RpdmVUYWIoKSB7XHJcbiAgICBjb25zdCBhY3RpdmVUYWI6IFRhYiB8IHVuZGVmaW5lZCA9IHRoaXMudGFicy5maW5kKCh0YWI6IFRhYikgPT4gISF0YWIuYWN0aXZlKTtcclxuICAgIGlmICghYWN0aXZlVGFiICYmIDAgPCB0aGlzLnRhYnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudGFic1swXSA9IHsgLi4udGhpcy50YWJzWzBdLCBhY3RpdmU6IHRydWUgfTtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnNbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2ZVRhYiA9IGFjdGl2ZVRhYjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVGFiUGFuZUNoYW5nZXMoKSB7XHJcbiAgICAvLyBmaXJzdCBzdWJzY3JpYmUgdG8gYW55IGNoYW5nZXMgaW4gdGFiIHBhbmUsIHNvIHRoYXQgdGhlIHRhYnMgaW4gdGhpcyB2aWV3IHdpaWwgYmUgdXBkYXRlZFxyXG4gICAgdGhpcy5wYW5lcz8uZm9yRWFjaChwYW5lID0+IHtcclxuICAgICAgcGFuZS5jaGFuZ2VzJC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAvLyBvbiBjaGFuZ2VzIGluIGEgdGFiIHBhbmUsIHdlIGluaXQgdGhlIHRhYnMgYWdhaW5cclxuICAgICAgICB0aGlzLmluaXRUYWJzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjcm9sbFRvKHNjcm9sbFg6IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHNjcm9sbFggPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsWCA9IHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKTtcclxuICAgIGNvbnN0IHNhZmVTY3JvbGxYID0gdGhpcy5jbGFtcFNjcm9sbFZhbHVlKHNjcm9sbFgpO1xyXG4gICAgaWYgKHNhZmVTY3JvbGxYID09IG51bGwgfHwgY3VycmVudFNjcm9sbFggPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxEZWx0YSA9IHNhZmVTY3JvbGxYIC0gY3VycmVudFNjcm9sbFg7XHJcbiAgICB0aGlzLmFuaW1hdGUoe1xyXG4gICAgICBmaW5hbFNjcm9sbFBvc2l0aW9uOiBzYWZlU2Nyb2xsWCxcclxuICAgICAgc2Nyb2xsRGVsdGFcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxJbnRvVmlldyhpbmRleDogbnVtYmVyLCB0YWI6IEhUTUxFbGVtZW50KSB7XHJcbiAgICBpZiAodGhpcy5lbGVtU2Nyb2xsQXJlYSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKTtcclxuICAgIGNvbnN0IGJhcldpZHRoID0gdGhpcy5lbGVtU2Nyb2xsQXJlYS5vZmZzZXRXaWR0aDtcclxuICAgIGlmIChiYXJXaWR0aCA9PSBudWxsIHx8IHNjcm9sbFBvc2l0aW9uID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRhYkRpbWVuc2lvbnMgPSB0aGlzLmNvbXB1dGVEaW1lbnNpb25zKHRhYik7XHJcbiAgICBpZiAodGFiRGltZW5zaW9ucyA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLmZpbmRBZGphY2VudFRhYkluZGV4Q2xvc2VzdFRvRWRnZShpbmRleCwgdGFiRGltZW5zaW9ucywgc2Nyb2xsUG9zaXRpb24sIGJhcldpZHRoKTtcclxuICAgIGlmICghdGhpcy5pbmRleElzSW5SYW5nZShuZXh0SW5kZXgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzY3JvbGxJbmNyZW1lbnQgPSB0aGlzLmNhbGN1bGF0ZVNjcm9sbEluY3JlbWVudChpbmRleCwgbmV4dEluZGV4LCBzY3JvbGxQb3NpdGlvbiwgYmFyV2lkdGgpO1xyXG4gICAgaWYgKHNjcm9sbEluY3JlbWVudCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluY3JlbWVudFNjcm9sbChzY3JvbGxJbmNyZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbmNyZW1lbnRTY3JvbGwoc2Nyb2xsWEluY3JlbWVudDogbnVtYmVyKSB7XHJcbiAgICAvLyBubyBzY3JvbGwgbmVlZGVkXHJcbiAgICBpZiAoc2Nyb2xsWEluY3JlbWVudCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxPcGVyYXRpb24gPSB0aGlzLmdldEluY3JlbWVudFNjcm9sbE9wZXJhdGlvbihzY3JvbGxYSW5jcmVtZW50KTtcclxuICAgIGlmIChzY3JvbGxPcGVyYXRpb24gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFuaW1hdGUoc2Nyb2xsT3BlcmF0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYW5pbWF0ZShhbmltYXRpb246IFRhYlNjcm9sbEFuaW1hdGlvbikge1xyXG4gICAgLy8gbm8gYW5pbWF0aW9uIG5lZWRlZFxyXG4gICAgaWYgKGFuaW1hdGlvbi5zY3JvbGxEZWx0YSA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gbm8gYW5pbWF0aW9uIHBvc3NpYmxlXHJcbiAgICBpZiAodGhpcy5lbGVtU2Nyb2xsQXJlYSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0b3BTY3JvbGxBbmltYXRpb24oKTtcclxuXHJcbiAgICAvLyB0aGlzIGFuaW1hdGlvbiB1c2VzIHRoZSBmbGlwIGFwcHJvYWNoXHJcbiAgICAvLyBodHRwczovL2Flcm90d2lzdC5jb20vYmxvZy9mbGlwLXlvdXItYW5pbWF0aW9ucy9cclxuICAgIC8vIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vYW5pbWF0aW5nLWxheW91dHMtd2l0aC10aGUtZmxpcC10ZWNobmlxdWUvXHJcbiAgICB0aGlzLmVsZW1TY3JvbGxBcmVhLnNjcm9sbExlZnQgPSBhbmltYXRpb24uZmluYWxTY3JvbGxQb3NpdGlvbjtcclxuICAgIHRoaXMuc2V0U2Nyb2xsQ29udGVudFN0eWxlUHJvcGVydHkoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGVYKCR7YW5pbWF0aW9uLnNjcm9sbERlbHRhfXB4KWApO1xyXG4gICAgLy8gZm9yY2UgcmVwYWludFxyXG4gICAgdGhpcy5lbGVtU2Nyb2xsQXJlYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbVNjcm9sbGVyLCAnZm5nLXRhYi1zY3JvbGxlci0tYW5pbWF0aW5nJyk7XHJcbiAgICAgIHRoaXMuc2V0U2Nyb2xsQ29udGVudFN0eWxlUHJvcGVydHkoJ3RyYW5zZm9ybScsICdub25lJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RvcFNjcm9sbEFuaW1hdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmVsZW1TY3JvbGxBcmVhID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3VycmVudFNjcm9sbFBvc2l0aW9uID0gdGhpcy5nZXRBbmltYXRpbmdTY3JvbGxQb3NpdGlvbigpO1xyXG4gICAgaWYgKGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbVNjcm9sbGVyLCAnZm5nLXRhYi1zY3JvbGxlci0tYW5pbWF0aW5nJyk7XHJcbiAgICB0aGlzLnNldFNjcm9sbENvbnRlbnRTdHlsZVByb3BlcnR5KCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlWCgwcHgpJyk7XHJcbiAgICB0aGlzLmVsZW1TY3JvbGxBcmVhLnNjcm9sbExlZnQgPSBjdXJyZW50U2Nyb2xsUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEFuaW1hdGluZ1Njcm9sbFBvc2l0aW9uKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZWxlbVNjcm9sbEFyZWEgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGN1cnJlbnRUcmFuc2xhdGVYID0gdGhpcy5jYWxjdWxhdGVDdXJyZW50VHJhbnNsYXRlWCgpO1xyXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuZWxlbVNjcm9sbEFyZWEuc2Nyb2xsTGVmdDtcclxuICAgIHJldHVybiBzY3JvbGxMZWZ0IC0gY3VycmVudFRyYW5zbGF0ZVg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEluY3JlbWVudFNjcm9sbE9wZXJhdGlvbihzY3JvbGxYOiBudW1iZXIpOiBUYWJTY3JvbGxBbmltYXRpb24gfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGxYID0gdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpO1xyXG4gICAgaWYgKGN1cnJlbnRTY3JvbGxYID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0U2Nyb2xsWCA9IHNjcm9sbFggKyBjdXJyZW50U2Nyb2xsWDtcclxuICAgIGNvbnN0IHNhZmVTY3JvbGxYID0gdGhpcy5jbGFtcFNjcm9sbFZhbHVlKHRhcmdldFNjcm9sbFgpO1xyXG4gICAgaWYgKHNhZmVTY3JvbGxYID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxEZWx0YSA9IHNhZmVTY3JvbGxYIC0gY3VycmVudFNjcm9sbFg7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBmaW5hbFNjcm9sbFBvc2l0aW9uOiBzYWZlU2Nyb2xsWCxcclxuICAgICAgc2Nyb2xsRGVsdGFcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsYW1wU2Nyb2xsVmFsdWUoc2Nyb2xsWDogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBjb25zdCBlZGdlcyA9IHRoaXMuY2FsY3VsYXRlU2Nyb2xsRWRnZXMoKTtcclxuICAgIGlmIChlZGdlcyA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGVkZ2VzLmxlZnQsIHNjcm9sbFgpLCBlZGdlcy5yaWdodCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZVNjcm9sbEVkZ2VzKCk6IFRhYlNjcm9sbEhvcml6b250YWxFZGdlcyB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZWxlbVNjcm9sbEFyZWEgPT0gbnVsbCB8fCB0aGlzLmVsZW1TY3JvbGxDb250ZW50ID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxDb250ZW50V2lkdGggPSB0aGlzLmVsZW1TY3JvbGxDb250ZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgY29uc3Qgc2Nyb2xsQXJlYVdpZHRoID0gdGhpcy5lbGVtU2Nyb2xsQXJlYS5vZmZzZXRXaWR0aDtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxlZnQ6IDAsXHJcbiAgICAgIHJpZ2h0OiBzY3JvbGxDb250ZW50V2lkdGggLSBzY3JvbGxBcmVhV2lkdGhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVEaW1lbnNpb25zKHRhYjogSFRNTEVsZW1lbnQpOiBUYWJEaW1lbnNpb25zIHwgbnVsbCB7XHJcbiAgICBjb25zdCByb290V2lkdGggPSB0YWIub2Zmc2V0V2lkdGg7XHJcbiAgICBjb25zdCByb290TGVmdCA9IHRhYi5vZmZzZXRMZWZ0O1xyXG5cclxuICAgIGNvbnN0IHRhYkNvbnRlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IHRhYi5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLmZuZy10YWItY29udGVudCcpO1xyXG4gICAgaWYgKHRhYkNvbnRlbnQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSB0YWJDb250ZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgY29uc3QgY29udGVudExlZnQgPSB0YWJDb250ZW50Lm9mZnNldExlZnQ7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udGVudExlZnQ6IHJvb3RMZWZ0ICsgY29udGVudExlZnQsXHJcbiAgICAgIGNvbnRlbnRSaWdodDogcm9vdExlZnQgKyBjb250ZW50TGVmdCArIGNvbnRlbnRXaWR0aCxcclxuICAgICAgcm9vdExlZnQsXHJcbiAgICAgIHJvb3RSaWdodDogcm9vdExlZnQgKyByb290V2lkdGhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZVNjcm9sbEluY3JlbWVudChpbmRleDogbnVtYmVyLCBuZXh0SW5kZXg6IG51bWJlciwgc2Nyb2xsUG9zaXRpb246IG51bWJlciwgYmFyV2lkdGg6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xyXG4gICAgY29uc3QgbmV4dFRhYjogSFRNTEVsZW1lbnQgfCBudWxsID0gKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXHJcbiAgICAgIGAjJHt0aGlzLmNvbXBvbmVudElkfS10YWItJHtuZXh0SW5kZXh9YFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAobmV4dFRhYiA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5leHRUYWJEaW1lbnNpb25zID0gdGhpcy5jb21wdXRlRGltZW5zaW9ucyhuZXh0VGFiKTtcclxuXHJcbiAgICBpZiAobmV4dFRhYkRpbWVuc2lvbnMgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZWxhdGl2ZUNvbnRlbnRMZWZ0ID0gbmV4dFRhYkRpbWVuc2lvbnMuY29udGVudExlZnQgLSBzY3JvbGxQb3NpdGlvbiAtIGJhcldpZHRoO1xyXG4gICAgY29uc3QgcmVsYXRpdmVDb250ZW50UmlnaHQgPSBuZXh0VGFiRGltZW5zaW9ucy5jb250ZW50UmlnaHQgLSBzY3JvbGxQb3NpdGlvbjtcclxuICAgIGNvbnN0IGxlZnRJbmNyZW1lbnQgPSByZWxhdGl2ZUNvbnRlbnRSaWdodCAtIDQ4O1xyXG4gICAgY29uc3QgcmlnaHRJbmNyZW1lbnQgPSByZWxhdGl2ZUNvbnRlbnRMZWZ0ICsgNDg7XHJcblxyXG4gICAgaWYgKG5leHRJbmRleCA8IGluZGV4KSB7XHJcbiAgICAgIHJldHVybiBNYXRoLm1pbihsZWZ0SW5jcmVtZW50LCAwKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gTWF0aC5tYXgocmlnaHRJbmNyZW1lbnQsIDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbmRleElzSW5SYW5nZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMudGFicy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNjcm9sbFBvc2l0aW9uKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZWxlbVNjcm9sbEFyZWEgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGN1cnJlbnRUcmFuc2xhdGVYID0gdGhpcy5jYWxjdWxhdGVDdXJyZW50VHJhbnNsYXRlWCgpO1xyXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuZWxlbVNjcm9sbEFyZWEuc2Nyb2xsTGVmdDtcclxuXHJcbiAgICByZXR1cm4gc2Nyb2xsTGVmdCAtIGN1cnJlbnRUcmFuc2xhdGVYO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVDdXJyZW50VHJhbnNsYXRlWCgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgdHJhbnNmb3JtVmFsdWUgPSB0aGlzLmdldFNjcm9sbENvbnRlbnRTdHlsZVZhbHVlKCd0cmFuc2Zvcm0nKTtcclxuICAgIGlmICh0cmFuc2Zvcm1WYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0cmFuc2Zvcm1WYWx1ZSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoZSB0cmFuc2Zvcm0gdmFsdWUgaXMgaW4gZm9ybSBvZiAnbWF0cml4KGEsIGIsIGMsIGQsIHR4LCB0eSknXHJcbiAgICAvLyBnZXQgYWxsIHRoZSBwYXJlbnRoZXNpemVkIHZhbHVlc1xyXG4gICAgY29uc3QgbWF0Y2ggPSAvXFwoKC4rPylcXCkvLmV4ZWModHJhbnNmb3JtVmFsdWUpO1xyXG4gICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYXRyaXhQYXJhbXMgPSBtYXRjaFsxXTtcclxuICAgIC8vIHdlIG5lZWQgdmFsdWUgb2YgdHggLT4gdHJhbnNsYXRlWFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgY29uc3QgW2EsIGIsIGMsIGQsIHR4LCB0eV0gPSBtYXRyaXhQYXJhbXMuc3BsaXQoJywnKTtcclxuICAgIHJldHVybiBwYXJzZUZsb2F0KHR4KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2Nyb2xsQ29udGVudFN0eWxlVmFsdWUocHJvcE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZWxlbVNjcm9sbENvbnRlbnQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5pbmplY3RlZFdpbmRvdz8uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1TY3JvbGxDb250ZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHByb3BOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2Nyb2xsQ29udGVudFN0eWxlUHJvcGVydHkocHJvcE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1TY3JvbGxDb250ZW50LCBwcm9wTmFtZSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kQWRqYWNlbnRUYWJJbmRleENsb3Nlc3RUb0VkZ2UoaW5kZXg6IG51bWJlciwgdGFiRGltZW5zaW9uczogVGFiRGltZW5zaW9ucywgc2Nyb2xsUG9zaXRpb246IG51bWJlciwgYmFyV2lkdGg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAvKipcclxuICAgICAqIHRhYnMgYXJlIGxhaWQgb3V0IGluIHRoZSB0YWIgc2Nyb2xsZXIgbGlrZSB0aGlzOlxyXG4gICAgICpcclxuICAgICAqICAgIHNjcm9sbCBwb3NpdGlvblxyXG4gICAgICogICAgKy0tLStcclxuICAgICAqICAgIHwgICB8ICAgYmFyIHdpZHRoXHJcbiAgICAgKiAgICB8ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xyXG4gICAgICogICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICAgICAqICAgIHwgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2XHJcbiAgICAgKiAgICB8ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xyXG4gICAgICogICAgdiAgIHwgICAgICAgICAgICAgdGFiIHNjcm9sbGVyICAgICAgICAgIHxcclxuICAgICAqICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLStcclxuICAgICAqICAgIHwgICAgdGFiICAgICB8ICAgICAgdGFiICAgICB8ICAgICAgICB0YWIgICAgICAgIHxcclxuICAgICAqICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLStcclxuICAgICAqICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XHJcbiAgICAgKiAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xyXG4gICAgICpcclxuICAgICAqIHRvIGRldGVybWluZSB0aGUgbmV4dCBhZGphY2VudCBpbmRleCwgd2UgbG9vayBhdCB0aGUgdGFiIHJvb3QgbGVmdCBhbmRcclxuICAgICAqIHRhYiByb290IHJpZ2h0LCBib3RoIHJlbGF0aXZlIHRvIHRoZSBzY3JvbGwgcG9zaXRpb24uIGlmIHRoZSB0YWIgcm9vdFxyXG4gICAgICogbGVmdCBpcyBsZXNzIHRoYW4gMCwgdGhlbiB3ZSBrbm93IGl0J3Mgb3V0IG9mIHZpZXcgdG8gdGhlIGxlZnQuIGlmIHRoZVxyXG4gICAgICogdGFiIHJvb3QgcmlnaHQgbWludXMgdGhlIGJhciB3aWR0aCBpcyBncmVhdGVyIHRoYW4gMCwgd2Uga25vdyB0aGUgdGFiIGlzXHJcbiAgICAgKiBvdXQgb2YgdmlldyB0byB0aGUgcmlnaHQuIGZyb20gdGhlcmUsIHdlIGVpdGhlciBpbmNyZW1lbnQgb3IgZGVjcmVtZW50XHJcbiAgICAgKiB0aGUgaW5kZXguXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHJlbGF0aXZlUm9vdExlZnQgPSB0YWJEaW1lbnNpb25zLnJvb3RMZWZ0IC0gc2Nyb2xsUG9zaXRpb247XHJcbiAgICBjb25zdCByZWxhdGl2ZVJvb3RSaWdodCA9IHRhYkRpbWVuc2lvbnMucm9vdFJpZ2h0IC0gc2Nyb2xsUG9zaXRpb24gLSBiYXJXaWR0aDtcclxuICAgIGNvbnN0IHJlbGF0aXZlUm9vdERlbHRhID0gcmVsYXRpdmVSb290TGVmdCArIHJlbGF0aXZlUm9vdFJpZ2h0O1xyXG4gICAgY29uc3QgbGVmdEVkZ2VJc0Nsb3NlciA9IHJlbGF0aXZlUm9vdExlZnQgPCAwIHx8IHJlbGF0aXZlUm9vdERlbHRhIDwgMDtcclxuICAgIGNvbnN0IHJpZ2h0RWRnZUlzQ2xvc2VyID0gcmVsYXRpdmVSb290UmlnaHQgPiAwIHx8IHJlbGF0aXZlUm9vdERlbHRhID4gMDtcclxuXHJcbiAgICBpZiAobGVmdEVkZ2VJc0Nsb3Nlcikge1xyXG4gICAgICByZXR1cm4gaW5kZXggLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyaWdodEVkZ2VJc0Nsb3Nlcikge1xyXG4gICAgICByZXR1cm4gaW5kZXggKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdUeXBlID09PSAnbGVnYWN5J1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJmd2UtbGVnYWN5LXRhYnNcIj5cclxuICAgIDx1bFxyXG4gICAgICByb2xlPVwidGFibGlzdFwiXHJcbiAgICAgIGNsYXNzPVwiZndlLWxlZ2FjeS10YWItYmFyXCJcclxuICAgICAgW2NsYXNzLmZ3ZS1sZWdhY3ktdGFiLWJhci1mdWxsLXdpZHRoXT1cImNvbmZpZz8udGFiQmFyPy5mdWxsV2lkdGhcIlxyXG4gICAgICBbY2xhc3MuZndlLWxlZ2FjeS10YWItaXRlbXMtZXF1YWwtd2lkdGhdPVwiJ2VxdWFsJyA9PT0gY29uZmlnPy50YWJJdGVtcz8uYXBwZWFyYW5jZVwiXHJcbiAgICAgIFtjbGFzcy5md2UtbGVnYWN5LXRhYi1pdGVtcy1maWxsXT1cIidmaWxsJyA9PT0gY29uZmlnPy50YWJJdGVtcz8uYXBwZWFyYW5jZVwiXHJcbiAgICA+XHJcbiAgICAgIDxsaVxyXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgY2xhc3M9XCJmd2UtbGVnYWN5LXRhYi1pdGVtXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdmd2UtYWN0aXZlJzogdGFiPy5hY3RpdmUsICdmd2UtZGlzYWJsZWQnOiB0YWI/LmRpc2FibGVkIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm51bGwgPT0gdGFiPy5pY29uXCI+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQgKyAnLXRhYi0nICsgaVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVJZFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJ1ZSA9PT0gdGFiPy5hY3RpdmUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRydWUgPT09IHRhYj8uZGlzYWJsZWQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICByb2xlPVwidGFiXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmd2UtbGVnYWN5LXRhYi1saW5rXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUYWJQYW5lKHRhYi5wYW5lSWQpXCJcclxuICAgICAgICAgICAgPnt7IHRhYi5uYW1lIH19PC9hXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm51bGwgIT0gdGFiPy5pY29uXCI+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQgKyAnLXRhYi0nICsgaVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVJZFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJ1ZSA9PT0gdGFiPy5hY3RpdmUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRydWUgPT09IHRhYj8uZGlzYWJsZWQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICByb2xlPVwidGFiXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmd2UtbGVnYWN5LXRhYi1saW5rXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUYWJQYW5lKHRhYi5wYW5lSWQpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZ3ZS1jYW4tc3dhcC1pY29uXT1cIjIgPT09IHRhYnMubGVuZ3RoICYmIDEgPT09IGlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2Z3ZS1pY29uICcgKyB0YWIuaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4+e3sgdGFiLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1sZWdhY3ktdGFiLXBhbmVsLWNvbnRlbnRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYlBhbmVsQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdUeXBlICE9PSAnbGVnYWN5J1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJmbmctdGFiLWJhclwiIHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm5nLXRhYi1zY3JvbGxlclwiICNzY3JvbGxlcj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZm5nLXRhYi1zY3JvbGxlci1zY3JvbGwtYXJlYSBmbmctdGFiLXNjcm9sbGVyLXNjcm9sbC1hcmVhLS1zY3JvbGxcIlxyXG4gICAgICAgIFtjbGFzcy5mbmctdGFiLXNjcm9sbGVyLXNjcm9sbC1hcmVhLS1jb21wYWN0XT1cInVzZUNvbXBhY3REZW5zaXR5XCJcclxuICAgICAgICAjc2Nyb2xsQWVyYVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZuZy10YWItc2Nyb2xsZXItc2Nyb2xsLWNvbnRlbnRcIiBbY2xhc3MuZm5nLXRhYi1zY3JvbGxlci1zY3JvbGwtY29udGVudC0td2l0aC1kaXZpZGVyXT1cInNob3dEaXZpZGVyXCIgI3Njcm9sbENvbnRlbnQ+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZuZy10YWJcIlxyXG4gICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQgKyAnLXRhYi0nICsgaVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVJZFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJ1ZSA9PT0gdGFiPy5hY3RpdmUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiaSA9PT0gMCA/IDAgOiAtMVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5mbmctdGFiLS1hY3RpdmVdPVwidGFiPy5hY3RpdmVcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZm5nLXRhYi0tZGlzYWJsZWRdPVwidGFiPy5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVUYWJTY3JvbGwoJGV2ZW50LCBpKTsgc2hvd1RhYlBhbmUodGFiLnBhbmVJZClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZuZy10YWItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm5nLXRhYi10ZXh0LWxhYmVsXCI+e3sgdGFiLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbmctdGFiLWluZGljYXRvclwiIFtjbGFzcy5mbmctdGFiLWluZGljYXRvci0tYWN0aXZlXT1cInRhYj8uYWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbmctdGFiLWluZGljYXRvci1jb250ZW50IGZuZy10YWItaW5kaWNhdG9yLWNvbnRlbnQtLXVuZGVybGluZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm5nLXRhYi1zY3JvbGxlci1kaXZpZGVyLWxpbmVcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbmctdGFiLXBhbmVsLWNvbnRlbnRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYlBhbmVsQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJQYW5lbENvbnRlbnQ+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
459
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvdGFicy90YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUE0RHBFLE1BQU0sT0FBTyxnQkFBZ0I7SUF5QjNCLFlBQ1UsS0FBaUIsRUFDQyxRQUFrQixFQUNwQyxRQUFtQixFQUNuQixFQUFxQjtRQUhyQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ0MsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBM0JMLGFBQVEsR0FBbUIsWUFBWSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXRELFdBQU0sR0FBZ0MsSUFBSSxDQUFDO1FBQzFDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FBQ2pFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXlDLENBQUM7UUFP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QUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBRXpFLElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxpQkFBaUIsRUFBRTtZQUNyQixPQUFPLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDbEI7UUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQzs7QUF6ZU0sdUJBQU0sR0FBRyxDQUFDLENBQUM7NkdBRFAsZ0JBQWdCLDRDQTJCakIsUUFBUTtpR0EzQlAsZ0JBQWdCLGlUQVNWLG1CQUFtQiwrVEMxRnRDLG96SEEwRkEsazlKRGZZLFlBQVk7MkZBTVgsZ0JBQWdCO2tCQVI1QixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLFVBQVUsbUJBR0gsdUJBQXVCLENBQUMsTUFBTTs7MEJBNkI1QyxNQUFNOzJCQUFDLFFBQVE7b0dBekJRLFFBQVE7c0JBQWpDLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUNVLFdBQVc7c0JBQTVDLEtBQUs7dUJBQUMseUJBQXlCO2dCQUV2QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRStCLEtBQUs7c0JBQTFDLGVBQWU7dUJBQUMsbUJBQW1CO2dCQUNiLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDSSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0ssYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbm9vcCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBGbmdUYWJQYW5lQ29tcG9uZW50IH0gZnJvbSAnLi90YWItcGFuZS90YWItcGFuZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGbmdUYWIge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBwYW5lSWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgYWN0aXZlPzogYm9vbGVhbjtcclxuICBpY29uPzogc3RyaW5nIHwgbnVsbDtcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8vIGZpbGw6IHVzZSB0aGUgcmVtYWluaW5nIHNwYWNlIGFuZCBhZGQgaW4gc2FtZSBwcm9wb3J0aW9uIHRvIGV2ZXJ5IHRhYiBpdGVtXHJcbi8vIGVxdWFsOiBtYWtlIGFsbCB0YWIgaXRlbXMgc2FtZSB3aWR0aCAoYXMgdGhlIG9uZSB3aXRoIGxhcmdlc3QgY29udGVudClcclxuZXhwb3J0IHR5cGUgRm5nVGFiSXRlbUFwcGVhcmFuY2UgPSAnZmlsbCcgfCAnZXF1YWwnIHwgJ2RlZmF1bHQnO1xyXG5cclxuLy8gbGVnYWN5OiByZWNvbW1lbmRlZCBmb3IgZGVza3RvcCBvbmx5IGFwcGxpY2F0aW9uc1xyXG4vLyByZXNwb25zaXZlOiBkZXNrdG9wLCB0YWJsZXQsIG1vYmlsZSB3aXRoIHNjcm9sbGFibGUgdGFic1xyXG5leHBvcnQgdHlwZSBGbmdUYWJWaWV3VHlwZSA9ICdsZWdhY3knIHwgJ3Jlc3BvbnNpdmUnO1xyXG5cclxuLy8gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBsZWdhY3kgdGFiIHZpZXcgdHlwZVxyXG5leHBvcnQgaW50ZXJmYWNlIEZuZ1RhYnNDb25maWd1cmF0aW9uIHtcclxuICB0YWJCYXI/OiB7XHJcbiAgICBmdWxsV2lkdGg/OiBib29sZWFuO1xyXG4gIH07XHJcbiAgdGFiSXRlbXM/OiB7XHJcbiAgICBhcHBlYXJhbmNlOiBGbmdUYWJJdGVtQXBwZWFyYW5jZTtcclxuICB9O1xyXG59XHJcblxyXG4vLyBwcm92aWRlcyBkZXRhaWxzIGFib3V0IHRoZSBsZWZ0IGFuZCByaWdodCBlZGdlcyBvZiB0aGUgdGFiIGVsZW1lbnQgYW5kIHRoZSB0YWIgY29udGVudCBlbGVtZW50XHJcbi8vIHRoZXNlIHZhbHVlcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHZpc3VhbCBwb3NpdGlvbiBvZiB0aGUgdGFiIHdpdGggcmVzcGVjdCBvZiBpdHMgcGFyZW50IGNvbnRhaW5lclxyXG5leHBvcnQgaW50ZXJmYWNlIEZuZ1RhYkRpbWVuc2lvbnMge1xyXG4gIHJvb3RMZWZ0OiBudW1iZXI7XHJcbiAgcm9vdFJpZ2h0OiBudW1iZXI7XHJcbiAgY29udGVudExlZnQ6IG51bWJlcjtcclxuICBjb250ZW50UmlnaHQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGbmdUYWJTY3JvbGxBbmltYXRpb24ge1xyXG4gIGZpbmFsU2Nyb2xsUG9zaXRpb246IG51bWJlcjtcclxuICBzY3JvbGxEZWx0YTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZuZ1RhYlNjcm9sbEhvcml6b250YWxFZGdlcyB7XHJcbiAgbGVmdDogbnVtYmVyO1xyXG4gIHJpZ2h0OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm5nQmVmb3JlVGFiQ2hhbmdlRXZlbnQge1xyXG4gIG9rOiAoKSA9PiB2b2lkO1xyXG4gIGNhbmNlbDogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBzZWxlY3RvcjogJ2ZuZy10YWJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFicy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbmdUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBzdGF0aWMgbmV4dElkID0gMDtcclxuICBASW5wdXQoJ2ZuZ1RhYnNWaWV3VHlwZScpIHZpZXdUeXBlOiBGbmdUYWJWaWV3VHlwZSA9ICdyZXNwb25zaXZlJztcclxuICBASW5wdXQoJ2ZuZ1RhYnNVc2VCb3R0b21EaXZpZGVyJykgc2hvd0RpdmlkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnOiBGbmdUYWJzQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIEBPdXRwdXQoKSBmbmdCZWZvcmVUYWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZuZ0JlZm9yZVRhYkNoYW5nZUV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBmbmdUYWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcHJldmlvdXM6IHN0cmluZzsgY3VycmVudDogc3RyaW5nIH0+KCk7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oRm5nVGFiUGFuZUNvbXBvbmVudCkgcGFuZXM6IFF1ZXJ5TGlzdDxGbmdUYWJQYW5lQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcclxuICBAVmlld0NoaWxkKCdzY3JvbGxlcicpIHNjcm9sbGVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbEFlcmEnKSBzY3JvbGxBZXJhOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRlbnQnKSBzY3JvbGxDb250ZW50OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb21wb25lbnRJZCA9IGB0YWJzLSR7KytGbmdUYWJzQ29tcG9uZW50Lm5leHRJZH1gO1xyXG4gIHRhYnM6IEZuZ1RhYltdID0gW107XHJcbiAgdXNlQ29tcGFjdERlbnNpdHk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgYWN0aXZlVGFiOiBGbmdUYWIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBlbGVtU2Nyb2xsZXI6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgZWxlbVNjcm9sbEFyZWE6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgZWxlbVNjcm9sbENvbnRlbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0ZWRXaW5kb3c6IFdpbmRvdyB8IG51bGw7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xyXG4gIHByaXZhdGUgY29tcGxldGU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmluamVjdGVkV2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdFRhYnMoKTtcclxuICAgIGlmIChudWxsID09IHRoaXMuYWN0aXZlVGFiKSB7XHJcbiAgICAgIHRoaXMucGFuZXM/Lm1hcCgocGFuZSwgaSkgPT4ge1xyXG4gICAgICAgIGlmICgwID09PSBpKSB7XHJcbiAgICAgICAgICBwYW5lLmlzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHBhbmUgPSB0aGlzLnBhbmVzPy5maW5kKHBhbmUgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVRhYikge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVGFiLnBhbmVJZCAhPSBudWxsICYmIHBhbmUudGFiUGFuZUlkID09PSB0aGlzLmFjdGl2ZVRhYi5wYW5lSWQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAocGFuZSkge1xyXG4gICAgICAgIHBhbmUuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbGVtU2Nyb2xsZXIgPSB0aGlzLnNjcm9sbGVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5lbGVtU2Nyb2xsQXJlYSA9IHRoaXMuc2Nyb2xsQWVyYT8ubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuZWxlbVNjcm9sbENvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5lbGVtU2Nyb2xsZXIgPT0gbnVsbCB8fCB0aGlzLmVsZW1TY3JvbGxBcmVhID09IG51bGwgfHwgdGhpcy5lbGVtU2Nyb2xsQ29udGVudCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGluaXRpYWxXaWR0aCA9IHRoaXMuZWxlbVNjcm9sbEFyZWEub2Zmc2V0V2lkdGg7XHJcbiAgICBpZiAoaW5pdGlhbFdpZHRoICE9IG51bGwgJiYgaW5pdGlhbFdpZHRoID4gNzY4KSB7XHJcbiAgICAgIHRoaXMudXNlQ29tcGFjdERlbnNpdHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVsZW1TY3JvbGxBcmVhID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmVsZW1TY3JvbGxBcmVhLm9mZnNldFdpZHRoO1xyXG4gICAgICBpZiAod2lkdGggIT0gbnVsbCAmJiB3aWR0aCA+IDc2OCAmJiB0aGlzLnVzZUNvbXBhY3REZW5zaXR5ID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy51c2VDb21wYWN0RGVuc2l0eSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGVsc2UgaWYgKHdpZHRoICE9IG51bGwgJiYgd2lkdGggPD0gNzY4ICYmIHRoaXMudXNlQ29tcGFjdERlbnNpdHkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy51c2VDb21wYWN0RGVuc2l0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmVsZW1TY3JvbGxBcmVhICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbVNjcm9sbEFyZWEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaGFuZGxlVGFiUGFuZUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wbGV0ZS5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5jb21wbGV0ZS51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RhYlBhbmUoaWQ6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIGlmIChpZCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYW5lID0gdGhpcy5wYW5lcz8uZmluZChwID0+IHAudGFiUGFuZUlkID09PSBpZCk7XHJcbiAgICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoaWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAocGFuZSAhPSBudWxsICYmIHBhbmUuZGlzYWJsZWQgIT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnBhbmVzPy5tYXAocCA9PiB7XHJcbiAgICAgICAgICBwLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHBhbmUuaXNWaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy50YWJzLm1hcCh0YWIgPT4ge1xyXG4gICAgICAgICAgaWYgKHRhYi5wYW5lSWQgIT09IHBhbmUudGFiUGFuZUlkKSB7XHJcbiAgICAgICAgICAgIHRhYi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRhYi5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZm5nVGFiQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgcHJldmlvdXM6IHRoaXMuYWN0aXZlVGFiPy5wYW5lSWQgfHwgJycsXHJcbiAgICAgICAgICBjdXJyZW50OiBpZFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzLmZpbmQodGFiID0+ICEhdGFiLmFjdGl2ZSk7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuZm5nQmVmb3JlVGFiQ2hhbmdlPy5vYnNlcnZlcnM/Lmxlbmd0aCA+IDAgJiYgcGFuZT8uZGlzYWJsZWQgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy5mbmdCZWZvcmVUYWJDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgb2s6ICgpID0+IHtcclxuICAgICAgICAgIGhhbmRsZVRhYkNoYW5nZShpZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYW5jZWw6ICgpID0+IHtcclxuICAgICAgICAgIG5vb3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaGFuZGxlVGFiQ2hhbmdlKGlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVRhYlNjcm9sbChldmVudDogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5lbGVtU2Nyb2xsQ29udGVudCA9PSBudWxsIHx8IHRoaXMuZWxlbVNjcm9sbEFyZWEgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxDb250ZW50V2lkdGggPSB0aGlzLmVsZW1TY3JvbGxDb250ZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgY29uc3Qgc2Nyb2xsQXJlYVdpZHRoID0gdGhpcy5lbGVtU2Nyb2xsQXJlYS5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAvLyBjaGVjayBpZiBubyBzY3JvbGwgaXMgbmVlZGVkXHJcbiAgICBpZiAoc2Nyb2xsQXJlYVdpZHRoID4gc2Nyb2xsQ29udGVudFdpZHRoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayBpbmRleFxyXG4gICAgaWYgKCF0aGlzLmluZGV4SXNJblJhbmdlKGluZGV4KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWx3YXlzIHNjcm9sbCB0byAwIGlmIHNjcm9sbGluZyB0byB0aGUgZmlyc3QgdGFiXHJcbiAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgdGhpcy5zY3JvbGxUbygwKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFsd2F5cyBzY3JvbGwgdG8gdGhlIG1heCB2YWx1ZSBpZiBzY3JvbGxpbmcgdG8gdGhlIGxhc3QgdGFiXHJcbiAgICBpZiAoaW5kZXggPT09IHRoaXMudGFicy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG8odGhpcy5lbGVtU2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdXJyZW50VGFiOiBIVE1MRWxlbWVudCA9IGV2ZW50LnRhcmdldDtcclxuICAgIHRoaXMuc2Nyb2xsSW50b1ZpZXcoaW5kZXgsIGN1cnJlbnRUYWIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0VGFicygpIHtcclxuICAgIHRoaXMudGFicyA9IFtdO1xyXG4gICAgdGhpcy5wYW5lcz8ubWFwKChwYW5lLCBpKSA9PiB7XHJcbiAgICAgIHBhbmUudGFiSWQgPSB0aGlzLmNvbXBvbmVudElkICsgJy10YWItJyArIGk7XHJcbiAgICAgIGNvbnN0IHRhYjogRm5nVGFiID0ge1xyXG4gICAgICAgIG5hbWU6IG51bGwgIT0gcGFuZS5uYW1lID8gcGFuZS5uYW1lIDogJycsXHJcbiAgICAgICAgcGFuZUlkOiBudWxsICE9IHBhbmUudGFiUGFuZUlkID8gcGFuZS50YWJQYW5lSWQgOiBudWxsLFxyXG4gICAgICAgIGljb246IG51bGwgIT0gcGFuZS5pY29uID8gcGFuZS5pY29uIDogbnVsbCxcclxuICAgICAgICBhY3RpdmU6IG51bGwgIT0gcGFuZS5hY3RpdmUgPyBwYW5lLmFjdGl2ZSA6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiBudWxsICE9IHBhbmUuZGlzYWJsZWQgPyBwYW5lLmRpc2FibGVkIDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgdGhpcy50YWJzLnB1c2godGFiKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaW5pdEFjdGl2ZVRhYigpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRBY3RpdmVUYWIoKSB7XHJcbiAgICBjb25zdCBhY3RpdmVUYWI6IEZuZ1RhYiB8IHVuZGVmaW5lZCA9IHRoaXMudGFicy5maW5kKCh0YWI6IEZuZ1RhYikgPT4gISF0YWIuYWN0aXZlKTtcclxuICAgIGlmICghYWN0aXZlVGFiICYmIDAgPCB0aGlzLnRhYnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudGFic1swXSA9IHsgLi4udGhpcy50YWJzWzBdLCBhY3RpdmU6IHRydWUgfTtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnNbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2ZVRhYiA9IGFjdGl2ZVRhYjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVGFiUGFuZUNoYW5nZXMoKSB7XHJcbiAgICAvLyBmaXJzdCBzdWJzY3JpYmUgdG8gYW55IGNoYW5nZXMgaW4gdGFiIHBhbmUsIHNvIHRoYXQgdGhlIHRhYnMgaW4gdGhpcyB2aWV3IHdpaWwgYmUgdXBkYXRlZFxyXG4gICAgdGhpcy5wYW5lcz8uZm9yRWFjaChwYW5lID0+IHtcclxuICAgICAgcGFuZS5jaGFuZ2VzJC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBsZXRlKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAvLyBvbiBjaGFuZ2VzIGluIGEgdGFiIHBhbmUsIHdlIGluaXQgdGhlIHRhYnMgYWdhaW5cclxuICAgICAgICB0aGlzLmluaXRUYWJzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjcm9sbFRvKHNjcm9sbFg6IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHNjcm9sbFggPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsWCA9IHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKTtcclxuICAgIGNvbnN0IHNhZmVTY3JvbGxYID0gdGhpcy5jbGFtcFNjcm9sbFZhbHVlKHNjcm9sbFgpO1xyXG4gICAgaWYgKHNhZmVTY3JvbGxYID09IG51bGwgfHwgY3VycmVudFNjcm9sbFggPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxEZWx0YSA9IHNhZmVTY3JvbGxYIC0gY3VycmVudFNjcm9sbFg7XHJcbiAgICB0aGlzLmFuaW1hdGUoe1xyXG4gICAgICBmaW5hbFNjcm9sbFBvc2l0aW9uOiBzYWZlU2Nyb2xsWCxcclxuICAgICAgc2Nyb2xsRGVsdGFcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxJbnRvVmlldyhpbmRleDogbnVtYmVyLCB0YWI6IEhUTUxFbGVtZW50KSB7XHJcbiAgICBpZiAodGhpcy5lbGVtU2Nyb2xsQXJlYSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKTtcclxuICAgIGNvbnN0IGJhcldpZHRoID0gdGhpcy5lbGVtU2Nyb2xsQXJlYS5vZmZzZXRXaWR0aDtcclxuICAgIGlmIChiYXJXaWR0aCA9PSBudWxsIHx8IHNjcm9sbFBvc2l0aW9uID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRhYkRpbWVuc2lvbnMgPSB0aGlzLmNvbXB1dGVEaW1lbnNpb25zKHRhYik7XHJcbiAgICBpZiAodGFiRGltZW5zaW9ucyA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLmZpbmRBZGphY2VudFRhYkluZGV4Q2xvc2VzdFRvRWRnZShpbmRleCwgdGFiRGltZW5zaW9ucywgc2Nyb2xsUG9zaXRpb24sIGJhcldpZHRoKTtcclxuICAgIGlmICghdGhpcy5pbmRleElzSW5SYW5nZShuZXh0SW5kZXgpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzY3JvbGxJbmNyZW1lbnQgPSB0aGlzLmNhbGN1bGF0ZVNjcm9sbEluY3JlbWVudChpbmRleCwgbmV4dEluZGV4LCBzY3JvbGxQb3NpdGlvbiwgYmFyV2lkdGgpO1xyXG4gICAgaWYgKHNjcm9sbEluY3JlbWVudCA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluY3JlbWVudFNjcm9sbChzY3JvbGxJbmNyZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbmNyZW1lbnRTY3JvbGwoc2Nyb2xsWEluY3JlbWVudDogbnVtYmVyKSB7XHJcbiAgICAvLyBubyBzY3JvbGwgbmVlZGVkXHJcbiAgICBpZiAoc2Nyb2xsWEluY3JlbWVudCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxPcGVyYXRpb24gPSB0aGlzLmdldEluY3JlbWVudFNjcm9sbE9wZXJhdGlvbihzY3JvbGxYSW5jcmVtZW50KTtcclxuICAgIGlmIChzY3JvbGxPcGVyYXRpb24gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFuaW1hdGUoc2Nyb2xsT3BlcmF0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYW5pbWF0ZShhbmltYXRpb246IEZuZ1RhYlNjcm9sbEFuaW1hdGlvbikge1xyXG4gICAgLy8gbm8gYW5pbWF0aW9uIG5lZWRlZFxyXG4gICAgaWYgKGFuaW1hdGlvbi5zY3JvbGxEZWx0YSA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gbm8gYW5pbWF0aW9uIHBvc3NpYmxlXHJcbiAgICBpZiAodGhpcy5lbGVtU2Nyb2xsQXJlYSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0b3BTY3JvbGxBbmltYXRpb24oKTtcclxuXHJcbiAgICAvLyB0aGlzIGFuaW1hdGlvbiB1c2VzIHRoZSBmbGlwIGFwcHJvYWNoXHJcbiAgICAvLyBodHRwczovL2Flcm90d2lzdC5jb20vYmxvZy9mbGlwLXlvdXItYW5pbWF0aW9ucy9cclxuICAgIC8vIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vYW5pbWF0aW5nLWxheW91dHMtd2l0aC10aGUtZmxpcC10ZWNobmlxdWUvXHJcbiAgICB0aGlzLmVsZW1TY3JvbGxBcmVhLnNjcm9sbExlZnQgPSBhbmltYXRpb24uZmluYWxTY3JvbGxQb3NpdGlvbjtcclxuICAgIHRoaXMuc2V0U2Nyb2xsQ29udGVudFN0eWxlUHJvcGVydHkoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGVYKCR7YW5pbWF0aW9uLnNjcm9sbERlbHRhfXB4KWApO1xyXG4gICAgLy8gZm9yY2UgcmVwYWludFxyXG4gICAgdGhpcy5lbGVtU2Nyb2xsQXJlYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbVNjcm9sbGVyLCAnZm5nLXRhYi1zY3JvbGxlci0tYW5pbWF0aW5nJyk7XHJcbiAgICAgIHRoaXMuc2V0U2Nyb2xsQ29udGVudFN0eWxlUHJvcGVydHkoJ3RyYW5zZm9ybScsICdub25lJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RvcFNjcm9sbEFuaW1hdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmVsZW1TY3JvbGxBcmVhID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3VycmVudFNjcm9sbFBvc2l0aW9uID0gdGhpcy5nZXRBbmltYXRpbmdTY3JvbGxQb3NpdGlvbigpO1xyXG4gICAgaWYgKGN1cnJlbnRTY3JvbGxQb3NpdGlvbiA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbVNjcm9sbGVyLCAnZm5nLXRhYi1zY3JvbGxlci0tYW5pbWF0aW5nJyk7XHJcbiAgICB0aGlzLnNldFNjcm9sbENvbnRlbnRTdHlsZVByb3BlcnR5KCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlWCgwcHgpJyk7XHJcbiAgICB0aGlzLmVsZW1TY3JvbGxBcmVhLnNjcm9sbExlZnQgPSBjdXJyZW50U2Nyb2xsUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEFuaW1hdGluZ1Njcm9sbFBvc2l0aW9uKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZWxlbVNjcm9sbEFyZWEgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGN1cnJlbnRUcmFuc2xhdGVYID0gdGhpcy5jYWxjdWxhdGVDdXJyZW50VHJhbnNsYXRlWCgpO1xyXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuZWxlbVNjcm9sbEFyZWEuc2Nyb2xsTGVmdDtcclxuICAgIHJldHVybiBzY3JvbGxMZWZ0IC0gY3VycmVudFRyYW5zbGF0ZVg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEluY3JlbWVudFNjcm9sbE9wZXJhdGlvbihzY3JvbGxYOiBudW1iZXIpOiBGbmdUYWJTY3JvbGxBbmltYXRpb24gfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGxYID0gdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpO1xyXG4gICAgaWYgKGN1cnJlbnRTY3JvbGxYID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0U2Nyb2xsWCA9IHNjcm9sbFggKyBjdXJyZW50U2Nyb2xsWDtcclxuICAgIGNvbnN0IHNhZmVTY3JvbGxYID0gdGhpcy5jbGFtcFNjcm9sbFZhbHVlKHRhcmdldFNjcm9sbFgpO1xyXG4gICAgaWYgKHNhZmVTY3JvbGxYID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxEZWx0YSA9IHNhZmVTY3JvbGxYIC0gY3VycmVudFNjcm9sbFg7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBmaW5hbFNjcm9sbFBvc2l0aW9uOiBzYWZlU2Nyb2xsWCxcclxuICAgICAgc2Nyb2xsRGVsdGFcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsYW1wU2Nyb2xsVmFsdWUoc2Nyb2xsWDogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBjb25zdCBlZGdlcyA9IHRoaXMuY2FsY3VsYXRlU2Nyb2xsRWRnZXMoKTtcclxuICAgIGlmIChlZGdlcyA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGVkZ2VzLmxlZnQsIHNjcm9sbFgpLCBlZGdlcy5yaWdodCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZVNjcm9sbEVkZ2VzKCk6IEZuZ1RhYlNjcm9sbEhvcml6b250YWxFZGdlcyB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZWxlbVNjcm9sbEFyZWEgPT0gbnVsbCB8fCB0aGlzLmVsZW1TY3JvbGxDb250ZW50ID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzY3JvbGxDb250ZW50V2lkdGggPSB0aGlzLmVsZW1TY3JvbGxDb250ZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgY29uc3Qgc2Nyb2xsQXJlYVdpZHRoID0gdGhpcy5lbGVtU2Nyb2xsQXJlYS5vZmZzZXRXaWR0aDtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxlZnQ6IDAsXHJcbiAgICAgIHJpZ2h0OiBzY3JvbGxDb250ZW50V2lkdGggLSBzY3JvbGxBcmVhV2lkdGhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVEaW1lbnNpb25zKHRhYjogSFRNTEVsZW1lbnQpOiBGbmdUYWJEaW1lbnNpb25zIHwgbnVsbCB7XHJcbiAgICBjb25zdCByb290V2lkdGggPSB0YWIub2Zmc2V0V2lkdGg7XHJcbiAgICBjb25zdCByb290TGVmdCA9IHRhYi5vZmZzZXRMZWZ0O1xyXG5cclxuICAgIGNvbnN0IHRhYkNvbnRlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IHRhYi5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLmZuZy10YWItY29udGVudCcpO1xyXG4gICAgaWYgKHRhYkNvbnRlbnQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSB0YWJDb250ZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgY29uc3QgY29udGVudExlZnQgPSB0YWJDb250ZW50Lm9mZnNldExlZnQ7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udGVudExlZnQ6IHJvb3RMZWZ0ICsgY29udGVudExlZnQsXHJcbiAgICAgIGNvbnRlbnRSaWdodDogcm9vdExlZnQgKyBjb250ZW50TGVmdCArIGNvbnRlbnRXaWR0aCxcclxuICAgICAgcm9vdExlZnQsXHJcbiAgICAgIHJvb3RSaWdodDogcm9vdExlZnQgKyByb290V2lkdGhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZVNjcm9sbEluY3JlbWVudChpbmRleDogbnVtYmVyLCBuZXh0SW5kZXg6IG51bWJlciwgc2Nyb2xsUG9zaXRpb246IG51bWJlciwgYmFyV2lkdGg6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xyXG4gICAgY29uc3QgbmV4dFRhYjogSFRNTEVsZW1lbnQgfCBudWxsID0gKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXHJcbiAgICAgIGAjJHt0aGlzLmNvbXBvbmVudElkfS10YWItJHtuZXh0SW5kZXh9YFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAobmV4dFRhYiA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5leHRUYWJEaW1lbnNpb25zID0gdGhpcy5jb21wdXRlRGltZW5zaW9ucyhuZXh0VGFiKTtcclxuXHJcbiAgICBpZiAobmV4dFRhYkRpbWVuc2lvbnMgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZWxhdGl2ZUNvbnRlbnRMZWZ0ID0gbmV4dFRhYkRpbWVuc2lvbnMuY29udGVudExlZnQgLSBzY3JvbGxQb3NpdGlvbiAtIGJhcldpZHRoO1xyXG4gICAgY29uc3QgcmVsYXRpdmVDb250ZW50UmlnaHQgPSBuZXh0VGFiRGltZW5zaW9ucy5jb250ZW50UmlnaHQgLSBzY3JvbGxQb3NpdGlvbjtcclxuICAgIGNvbnN0IGxlZnRJbmNyZW1lbnQgPSByZWxhdGl2ZUNvbnRlbnRSaWdodCAtIDQ4O1xyXG4gICAgY29uc3QgcmlnaHRJbmNyZW1lbnQgPSByZWxhdGl2ZUNvbnRlbnRMZWZ0ICsgNDg7XHJcblxyXG4gICAgaWYgKG5leHRJbmRleCA8IGluZGV4KSB7XHJcbiAgICAgIHJldHVybiBNYXRoLm1pbihsZWZ0SW5jcmVtZW50LCAwKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gTWF0aC5tYXgocmlnaHRJbmNyZW1lbnQsIDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbmRleElzSW5SYW5nZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMudGFicy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNjcm9sbFBvc2l0aW9uKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZWxlbVNjcm9sbEFyZWEgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGN1cnJlbnRUcmFuc2xhdGVYID0gdGhpcy5jYWxjdWxhdGVDdXJyZW50VHJhbnNsYXRlWCgpO1xyXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuZWxlbVNjcm9sbEFyZWEuc2Nyb2xsTGVmdDtcclxuXHJcbiAgICByZXR1cm4gc2Nyb2xsTGVmdCAtIGN1cnJlbnRUcmFuc2xhdGVYO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVDdXJyZW50VHJhbnNsYXRlWCgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgdHJhbnNmb3JtVmFsdWUgPSB0aGlzLmdldFNjcm9sbENvbnRlbnRTdHlsZVZhbHVlKCd0cmFuc2Zvcm0nKTtcclxuICAgIGlmICh0cmFuc2Zvcm1WYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0cmFuc2Zvcm1WYWx1ZSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoZSB0cmFuc2Zvcm0gdmFsdWUgaXMgaW4gZm9ybSBvZiAnbWF0cml4KGEsIGIsIGMsIGQsIHR4LCB0eSknXHJcbiAgICAvLyBnZXQgYWxsIHRoZSBwYXJlbnRoZXNpemVkIHZhbHVlc1xyXG4gICAgY29uc3QgbWF0Y2ggPSAvXFwoKC4rPylcXCkvLmV4ZWModHJhbnNmb3JtVmFsdWUpO1xyXG4gICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtYXRyaXhQYXJhbXMgPSBtYXRjaFsxXTtcclxuICAgIC8vIHdlIG5lZWQgdmFsdWUgb2YgdHggLT4gdHJhbnNsYXRlWFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgY29uc3QgW2EsIGIsIGMsIGQsIHR4LCB0eV0gPSBtYXRyaXhQYXJhbXMuc3BsaXQoJywnKTtcclxuICAgIHJldHVybiBwYXJzZUZsb2F0KHR4KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2Nyb2xsQ29udGVudFN0eWxlVmFsdWUocHJvcE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZWxlbVNjcm9sbENvbnRlbnQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5pbmplY3RlZFdpbmRvdz8uZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1TY3JvbGxDb250ZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHByb3BOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2Nyb2xsQ29udGVudFN0eWxlUHJvcGVydHkocHJvcE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1TY3JvbGxDb250ZW50LCBwcm9wTmFtZSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kQWRqYWNlbnRUYWJJbmRleENsb3Nlc3RUb0VkZ2UoaW5kZXg6IG51bWJlciwgdGFiRGltZW5zaW9uczogRm5nVGFiRGltZW5zaW9ucywgc2Nyb2xsUG9zaXRpb246IG51bWJlciwgYmFyV2lkdGg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAvKipcclxuICAgICAqIHRhYnMgYXJlIGxhaWQgb3V0IGluIHRoZSB0YWIgc2Nyb2xsZXIgbGlrZSB0aGlzOlxyXG4gICAgICpcclxuICAgICAqICAgIHNjcm9sbCBwb3NpdGlvblxyXG4gICAgICogICAgKy0tLStcclxuICAgICAqICAgIHwgICB8ICAgYmFyIHdpZHRoXHJcbiAgICAgKiAgICB8ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xyXG4gICAgICogICAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICAgICAqICAgIHwgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2XHJcbiAgICAgKiAgICB8ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xyXG4gICAgICogICAgdiAgIHwgICAgICAgICAgICAgdGFiIHNjcm9sbGVyICAgICAgICAgIHxcclxuICAgICAqICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLStcclxuICAgICAqICAgIHwgICAgdGFiICAgICB8ICAgICAgdGFiICAgICB8ICAgICAgICB0YWIgICAgICAgIHxcclxuICAgICAqICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLStcclxuICAgICAqICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XHJcbiAgICAgKiAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xyXG4gICAgICpcclxuICAgICAqIHRvIGRldGVybWluZSB0aGUgbmV4dCBhZGphY2VudCBpbmRleCwgd2UgbG9vayBhdCB0aGUgdGFiIHJvb3QgbGVmdCBhbmRcclxuICAgICAqIHRhYiByb290IHJpZ2h0LCBib3RoIHJlbGF0aXZlIHRvIHRoZSBzY3JvbGwgcG9zaXRpb24uIGlmIHRoZSB0YWIgcm9vdFxyXG4gICAgICogbGVmdCBpcyBsZXNzIHRoYW4gMCwgdGhlbiB3ZSBrbm93IGl0J3Mgb3V0IG9mIHZpZXcgdG8gdGhlIGxlZnQuIGlmIHRoZVxyXG4gICAgICogdGFiIHJvb3QgcmlnaHQgbWludXMgdGhlIGJhciB3aWR0aCBpcyBncmVhdGVyIHRoYW4gMCwgd2Uga25vdyB0aGUgdGFiIGlzXHJcbiAgICAgKiBvdXQgb2YgdmlldyB0byB0aGUgcmlnaHQuIGZyb20gdGhlcmUsIHdlIGVpdGhlciBpbmNyZW1lbnQgb3IgZGVjcmVtZW50XHJcbiAgICAgKiB0aGUgaW5kZXguXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHJlbGF0aXZlUm9vdExlZnQgPSB0YWJEaW1lbnNpb25zLnJvb3RMZWZ0IC0gc2Nyb2xsUG9zaXRpb247XHJcbiAgICBjb25zdCByZWxhdGl2ZVJvb3RSaWdodCA9IHRhYkRpbWVuc2lvbnMucm9vdFJpZ2h0IC0gc2Nyb2xsUG9zaXRpb24gLSBiYXJXaWR0aDtcclxuICAgIGNvbnN0IHJlbGF0aXZlUm9vdERlbHRhID0gcmVsYXRpdmVSb290TGVmdCArIHJlbGF0aXZlUm9vdFJpZ2h0O1xyXG4gICAgY29uc3QgbGVmdEVkZ2VJc0Nsb3NlciA9IHJlbGF0aXZlUm9vdExlZnQgPCAwIHx8IHJlbGF0aXZlUm9vdERlbHRhIDwgMDtcclxuICAgIGNvbnN0IHJpZ2h0RWRnZUlzQ2xvc2VyID0gcmVsYXRpdmVSb290UmlnaHQgPiAwIHx8IHJlbGF0aXZlUm9vdERlbHRhID4gMDtcclxuXHJcbiAgICBpZiAobGVmdEVkZ2VJc0Nsb3Nlcikge1xyXG4gICAgICByZXR1cm4gaW5kZXggLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyaWdodEVkZ2VJc0Nsb3Nlcikge1xyXG4gICAgICByZXR1cm4gaW5kZXggKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdUeXBlID09PSAnbGVnYWN5J1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJmd2UtbGVnYWN5LXRhYnNcIj5cclxuICAgIDx1bFxyXG4gICAgICByb2xlPVwidGFibGlzdFwiXHJcbiAgICAgIGNsYXNzPVwiZndlLWxlZ2FjeS10YWItYmFyXCJcclxuICAgICAgW2NsYXNzLmZ3ZS1sZWdhY3ktdGFiLWJhci1mdWxsLXdpZHRoXT1cImNvbmZpZz8udGFiQmFyPy5mdWxsV2lkdGhcIlxyXG4gICAgICBbY2xhc3MuZndlLWxlZ2FjeS10YWItaXRlbXMtZXF1YWwtd2lkdGhdPVwiJ2VxdWFsJyA9PT0gY29uZmlnPy50YWJJdGVtcz8uYXBwZWFyYW5jZVwiXHJcbiAgICAgIFtjbGFzcy5md2UtbGVnYWN5LXRhYi1pdGVtcy1maWxsXT1cIidmaWxsJyA9PT0gY29uZmlnPy50YWJJdGVtcz8uYXBwZWFyYW5jZVwiXHJcbiAgICA+XHJcbiAgICAgIDxsaVxyXG4gICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgY2xhc3M9XCJmd2UtbGVnYWN5LXRhYi1pdGVtXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdmd2UtYWN0aXZlJzogdGFiPy5hY3RpdmUsICdmd2UtZGlzYWJsZWQnOiB0YWI/LmRpc2FibGVkIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm51bGwgPT0gdGFiPy5pY29uXCI+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQgKyAnLXRhYi0nICsgaVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVJZFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJ1ZSA9PT0gdGFiPy5hY3RpdmUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRydWUgPT09IHRhYj8uZGlzYWJsZWQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICByb2xlPVwidGFiXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmd2UtbGVnYWN5LXRhYi1saW5rXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUYWJQYW5lKHRhYi5wYW5lSWQpXCJcclxuICAgICAgICAgICAgPnt7IHRhYi5uYW1lIH19PC9hXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm51bGwgIT0gdGFiPy5pY29uXCI+XHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQgKyAnLXRhYi0nICsgaVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVJZFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJ1ZSA9PT0gdGFiPy5hY3RpdmUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRydWUgPT09IHRhYj8uZGlzYWJsZWQgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICByb2xlPVwidGFiXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmd2UtbGVnYWN5LXRhYi1saW5rXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUYWJQYW5lKHRhYi5wYW5lSWQpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZ3ZS1jYW4tc3dhcC1pY29uXT1cIjIgPT09IHRhYnMubGVuZ3RoICYmIDEgPT09IGlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aSBbY2xhc3NdPVwiJ2Z3ZS1pY29uICcgKyB0YWIuaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4+e3sgdGFiLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1sZWdhY3ktdGFiLXBhbmVsLWNvbnRlbnRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYlBhbmVsQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdUeXBlICE9PSAnbGVnYWN5J1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJmbmctdGFiLWJhclwiIHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm5nLXRhYi1zY3JvbGxlclwiICNzY3JvbGxlcj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZm5nLXRhYi1zY3JvbGxlci1zY3JvbGwtYXJlYSBmbmctdGFiLXNjcm9sbGVyLXNjcm9sbC1hcmVhLS1zY3JvbGxcIlxyXG4gICAgICAgIFtjbGFzcy5mbmctdGFiLXNjcm9sbGVyLXNjcm9sbC1hcmVhLS1jb21wYWN0XT1cInVzZUNvbXBhY3REZW5zaXR5XCJcclxuICAgICAgICAjc2Nyb2xsQWVyYVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZuZy10YWItc2Nyb2xsZXItc2Nyb2xsLWNvbnRlbnRcIiBbY2xhc3MuZm5nLXRhYi1zY3JvbGxlci1zY3JvbGwtY29udGVudC0td2l0aC1kaXZpZGVyXT1cInNob3dEaXZpZGVyXCIgI3Njcm9sbENvbnRlbnQ+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZuZy10YWJcIlxyXG4gICAgICAgICAgICBbaWRdPVwiY29tcG9uZW50SWQgKyAnLXRhYi0nICsgaVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwidGFiLnBhbmVJZFwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJ1ZSA9PT0gdGFiPy5hY3RpdmUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiaSA9PT0gMCA/IDAgOiAtMVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5mbmctdGFiLS1hY3RpdmVdPVwidGFiPy5hY3RpdmVcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZm5nLXRhYi0tZGlzYWJsZWRdPVwidGFiPy5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVUYWJTY3JvbGwoJGV2ZW50LCBpKTsgc2hvd1RhYlBhbmUodGFiLnBhbmVJZClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZuZy10YWItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm5nLXRhYi10ZXh0LWxhYmVsXCI+e3sgdGFiLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbmctdGFiLWluZGljYXRvclwiIFtjbGFzcy5mbmctdGFiLWluZGljYXRvci0tYWN0aXZlXT1cInRhYj8uYWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbmctdGFiLWluZGljYXRvci1jb250ZW50IGZuZy10YWItaW5kaWNhdG9yLWNvbnRlbnQtLXVuZGVybGluZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm5nLXRhYi1zY3JvbGxlci1kaXZpZGVyLWxpbmVcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbmctdGFiLXBhbmVsLWNvbnRlbnRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYlBhbmVsQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJQYW5lbENvbnRlbnQ+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Directive, Output, EventEmitter, HostListener } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export class ClickOutsideDirective {
3
+ export class FngClickOutsideDirective {
4
4
  constructor(elRef) {
5
5
  this.elRef = elRef;
6
6
  this.clickOutside = new EventEmitter();
@@ -12,9 +12,9 @@ export class ClickOutsideDirective {
12
12
  }
13
13
  }
14
14
  }
15
- ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
16
- ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: ClickOutsideDirective, isStandalone: true, selector: "[fngClickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ClickOutsideDirective, decorators: [{
15
+ FngClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
16
+ FngClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: FngClickOutsideDirective, isStandalone: true, selector: "[fngClickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngClickOutsideDirective, decorators: [{
18
18
  type: Directive,
19
19
  args: [{
20
20
  standalone: true,
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
26
26
  type: HostListener,
27
27
  args: ['document:click', ['$event.target']]
28
28
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0xRixNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFHOUIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBSEQsQ0FBQztJQU1sQyxPQUFPLENBQUMsYUFBMEI7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7O2tIQVpVLHFCQUFxQjtzR0FBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCO2lHQUtRLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsT0FBTztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tmbmdDbGlja091dHNpZGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBDbGlja091dHNpZGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xpY2tPdXRzaWRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHB1YmxpYyBvbkNsaWNrKHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgaW5zaWRlID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpO1xuICAgIGlmICghaW5zaWRlKSB7XG4gICAgICB0aGlzLmNsaWNrT3V0c2lkZS5lbWl0KG51bGwpO1xuICAgIH1cbiAgfVxufVxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0xRixNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFHOUIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBSEQsQ0FBQztJQU1sQyxPQUFPLENBQUMsYUFBMEI7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7O3FIQVpVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBSnBDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCO2lHQUtRLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsT0FBTztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tmbmdDbGlja091dHNpZGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBGbmdDbGlja091dHNpZGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xpY2tPdXRzaWRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHB1YmxpYyBvbkNsaWNrKHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgaW5zaWRlID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpO1xuICAgIGlmICghaW5zaWRlKSB7XG4gICAgICB0aGlzLmNsaWNrT3V0c2lkZS5lbWl0KG51bGwpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,21 +1,21 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { FestoAngularComponentsModule } from './components/components.module';
3
3
  import { FestoAngularFormsModule } from './forms/forms.module';
4
- import { SafeHtmlPipe } from './pipes/safe-html.pipe';
4
+ import { FngSafeHtmlPipe } from './pipes/safe-html.pipe';
5
5
  import { FestoAngularModalsModule } from './modals/modals.module';
6
6
  import { FestoAngularSnackbarModule } from './components/snackbar/snackbar.module';
7
7
  import * as i0 from "@angular/core";
8
8
  export class FestoAngularModule {
9
9
  }
10
10
  FestoAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FestoAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- FestoAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: FestoAngularModule, imports: [SafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule], exports: [SafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule] });
11
+ FestoAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: FestoAngularModule, imports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule], exports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule] });
12
12
  FestoAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FestoAngularModule, imports: [FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule] });
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FestoAngularModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  declarations: [],
17
- imports: [SafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule],
18
- exports: [SafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule]
17
+ imports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule],
18
+ exports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule]
19
19
  }]
20
20
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVzdG8tYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZmVzdG8tYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7OytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixZQUhuQixZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLGFBQ3pILFlBQVksRUFBRSw0QkFBNEIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEI7Z0hBRXhILGtCQUFrQixZQUhMLDRCQUE0QixFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQixFQUMzRyw0QkFBNEIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEI7MkZBRXhILGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLDRCQUE0QixFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQixDQUFDO29CQUNwSSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLENBQUM7aUJBQ3JJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZlc3RvQW5ndWxhckNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29tcG9uZW50cy5tb2R1bGUnO1xuaW1wb3J0IHsgRmVzdG9Bbmd1bGFyRm9ybXNNb2R1bGUgfSBmcm9tICcuL2Zvcm1zL2Zvcm1zLm1vZHVsZSc7XG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtaHRtbC5waXBlJztcbmltcG9ydCB7IEZlc3RvQW5ndWxhck1vZGFsc01vZHVsZSB9IGZyb20gJy4vbW9kYWxzL21vZGFscy5tb2R1bGUnO1xuaW1wb3J0IHsgRmVzdG9Bbmd1bGFyU25hY2tiYXJNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW1NhZmVIdG1sUGlwZSwgRmVzdG9Bbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgRmVzdG9Bbmd1bGFyRm9ybXNNb2R1bGUsIEZlc3RvQW5ndWxhck1vZGFsc01vZHVsZSwgRmVzdG9Bbmd1bGFyU25hY2tiYXJNb2R1bGVdLFxuICBleHBvcnRzOiBbU2FmZUh0bWxQaXBlLCBGZXN0b0FuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBGZXN0b0FuZ3VsYXJGb3Jtc01vZHVsZSwgRmVzdG9Bbmd1bGFyTW9kYWxzTW9kdWxlLCBGZXN0b0FuZ3VsYXJTbmFja2Jhck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRmVzdG9Bbmd1bGFyTW9kdWxlIHt9XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVzdG8tYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZmVzdG8tYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7OytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixZQUhuQixlQUFlLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLGFBQzVILGVBQWUsRUFBRSw0QkFBNEIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEI7Z0hBRTNILGtCQUFrQixZQUhGLDRCQUE0QixFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQixFQUMzRyw0QkFBNEIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEI7MkZBRTNILGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLDRCQUE0QixFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQixDQUFDO29CQUN2SSxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLENBQUM7aUJBQ3hJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZlc3RvQW5ndWxhckNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29tcG9uZW50cy5tb2R1bGUnO1xuaW1wb3J0IHsgRmVzdG9Bbmd1bGFyRm9ybXNNb2R1bGUgfSBmcm9tICcuL2Zvcm1zL2Zvcm1zLm1vZHVsZSc7XG5pbXBvcnQgeyBGbmdTYWZlSHRtbFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtaHRtbC5waXBlJztcbmltcG9ydCB7IEZlc3RvQW5ndWxhck1vZGFsc01vZHVsZSB9IGZyb20gJy4vbW9kYWxzL21vZGFscy5tb2R1bGUnO1xuaW1wb3J0IHsgRmVzdG9Bbmd1bGFyU25hY2tiYXJNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0ZuZ1NhZmVIdG1sUGlwZSwgRmVzdG9Bbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgRmVzdG9Bbmd1bGFyRm9ybXNNb2R1bGUsIEZlc3RvQW5ndWxhck1vZGFsc01vZHVsZSwgRmVzdG9Bbmd1bGFyU25hY2tiYXJNb2R1bGVdLFxuICBleHBvcnRzOiBbRm5nU2FmZUh0bWxQaXBlLCBGZXN0b0FuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBGZXN0b0FuZ3VsYXJGb3Jtc01vZHVsZSwgRmVzdG9Bbmd1bGFyTW9kYWxzTW9kdWxlLCBGZXN0b0FuZ3VsYXJTbmFja2Jhck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRmVzdG9Bbmd1bGFyTW9kdWxlIHt9XG4iXX0=
@@ -5,7 +5,7 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common";
7
7
  let nextUniqueId = 0;
8
- export class CheckboxComponent {
8
+ export class FngCheckboxComponent {
9
9
  get id() {
10
10
  return this.innerId;
11
11
  }
@@ -109,20 +109,20 @@ export class CheckboxComponent {
109
109
  }
110
110
  }
111
111
  }
112
- CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
113
- CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: CheckboxComponent, isStandalone: true, selector: "fng-checkbox", inputs: { name: "name", large: "large", valid: "valid", labelPosition: "labelPosition", id: "id", checked: "checked", disabled: "disabled", indeterminate: "indeterminate", value: "value", required: "required" }, outputs: { indeterminateChange: "indeterminateChange", change: "change" }, providers: [
112
+ FngCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
113
+ FngCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: FngCheckboxComponent, isStandalone: true, selector: "fng-checkbox", inputs: { name: "name", large: "large", valid: "valid", labelPosition: "labelPosition", id: "id", checked: "checked", disabled: "disabled", indeterminate: "indeterminate", value: "value", required: "required" }, outputs: { indeterminateChange: "indeterminateChange", change: "change" }, providers: [
114
114
  {
115
115
  provide: NG_VALUE_ACCESSOR,
116
- useExisting: forwardRef(() => CheckboxComponent),
116
+ useExisting: forwardRef(() => FngCheckboxComponent),
117
117
  multi: true
118
118
  }
119
119
  ], ngImport: i0, template: "<label\n class=\"fwe-checkbox-container\"\n [class.fng-checkbox-large]=\"large\"\n [class.fng-checkbox-invalid]=\"!valid || required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fng-checkbox-indeterminate]=\"indeterminate\"\n [class.fwe-checked]=\"checked\"\n [attr.for]=\"inputId\"\n [ngClass]=\"{\n 'fwe-label-below': labelPosition == 'below',\n 'fwe-label-before': labelPosition == 'before'\n }\"\n>\n <input\n type=\"checkbox\"\n [id]=\"inputId\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.value]=\"value\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"fwe-checkbox-indicator-container\">\n <div class=\"fwe-checkbox-indicator-background\"></div>\n <ng-container *ngIf=\"!indeterminate && checked\">\n <svg *ngIf=\"large\" width=\"24px\" height=\"24px\">\n <path d=\"M17.5 7L10 14.5 7.501 12l-1.5 1.501L10 17.5l9-9z\" fill=\"#fff\" />\n </svg>\n <svg *ngIf=\"!large\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">\n <path d=\"M6 12L3 9l1.25-1.25L6 9.5l5.75-5.75L13 5l-7 7z\" fill=\"#fff\" />\n </svg>\n </ng-container>\n <div *ngIf=\"indeterminate && !checked\" class=\"fwe-indeterminate-indicator\"></div>\n </div>\n <div class=\"fwe-checkbox-title\">\n <ng-content></ng-content>\n </div>\n</label>\n", styles: [".fwe-checkbox-container{font-family:var(--fwe-font-family-sans-serif);-webkit-user-select:none;user-select:none;cursor:pointer;display:flex;flex-direction:row;align-items:flex-start}.fwe-checkbox-container.fwe-label-below{align-items:center;flex-direction:column}.fwe-checkbox-container.fwe-label-below .fwe-checkbox-title{text-align:center;margin:8px 0 0}.fwe-checkbox-container.fwe-label-before{flex-direction:row-reverse;justify-content:flex-end}.fwe-checkbox-container.fwe-label-before .fwe-checkbox-title{margin:0 8px 0 0}.fwe-checkbox-container .fwe-checkbox-indicator-container{margin-top:4px;position:relative}.fwe-checkbox-container input{opacity:0;cursor:pointer;height:0;width:0}.fwe-checkbox-container .fwe-checkbox-title{margin-left:8px;line-height:24px;color:var(--fwe-text);-webkit-user-select:none;user-select:none}.fwe-checkbox-container .fwe-checkbox-indicator-background{box-sizing:border-box;background:var(--fwe-white);border:1px solid var(--fwe-text-light);border-radius:2px;height:16px;width:16px;transition:border-width .2s ease-out}.fwe-checkbox-container .fwe-indeterminate-indicator{position:absolute;height:2px;width:10px;top:7px;left:3px;background:white}.fwe-checkbox-container svg{display:block;position:absolute;top:0;left:0}.fwe-checkbox-container.fng-checkbox-large .fwe-checkbox-indicator-container{margin-top:0}.fwe-checkbox-container.fng-checkbox-large .fwe-checkbox-indicator-background{height:24px;width:24px;border-radius:4px}.fwe-checkbox-container.fng-checkbox-large .fwe-indeterminate-indicator{top:11px;width:14px;left:5px}.fwe-checkbox-container.fng-checkbox-large.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-large.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{border:12px solid var(--fwe-hero)}.fwe-checkbox-container:hover .fwe-checkbox-indicator-background{background-color:var(--fwe-control)}.fwe-checkbox-container:active .fwe-checkbox-indicator-background{background-color:var(--fwe-control-dark)}.fwe-checkbox-container.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{border:8px solid var(--fwe-hero)}.fwe-checkbox-container.fwe-checked:hover .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate:hover .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-dark)}.fwe-checkbox-container.fwe-checked:active .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate:active .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-darker)}.fwe-checkbox-container.fng-checkbox-invalid .fwe-checkbox-indicator-background{border:1px solid var(--fwe-red);background:var(--fwe-white)}.fwe-checkbox-container.fwe-disabled{cursor:default}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-disabled.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{background-color:var(--fwe-control);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fng-checkbox-invalid .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-title{color:var(--fwe-text-disabled)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CheckboxComponent, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngCheckboxComponent, decorators: [{
121
121
  type: Component,
122
122
  args: [{ standalone: true, imports: [CommonModule], selector: 'fng-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
123
123
  {
124
124
  provide: NG_VALUE_ACCESSOR,
125
- useExisting: forwardRef(() => CheckboxComponent),
125
+ useExisting: forwardRef(() => FngCheckboxComponent),
126
126
  multi: true
127
127
  }
128
128
  ], template: "<label\n class=\"fwe-checkbox-container\"\n [class.fng-checkbox-large]=\"large\"\n [class.fng-checkbox-invalid]=\"!valid || required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fng-checkbox-indeterminate]=\"indeterminate\"\n [class.fwe-checked]=\"checked\"\n [attr.for]=\"inputId\"\n [ngClass]=\"{\n 'fwe-label-below': labelPosition == 'below',\n 'fwe-label-before': labelPosition == 'before'\n }\"\n>\n <input\n type=\"checkbox\"\n [id]=\"inputId\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.value]=\"value\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"fwe-checkbox-indicator-container\">\n <div class=\"fwe-checkbox-indicator-background\"></div>\n <ng-container *ngIf=\"!indeterminate && checked\">\n <svg *ngIf=\"large\" width=\"24px\" height=\"24px\">\n <path d=\"M17.5 7L10 14.5 7.501 12l-1.5 1.501L10 17.5l9-9z\" fill=\"#fff\" />\n </svg>\n <svg *ngIf=\"!large\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">\n <path d=\"M6 12L3 9l1.25-1.25L6 9.5l5.75-5.75L13 5l-7 7z\" fill=\"#fff\" />\n </svg>\n </ng-container>\n <div *ngIf=\"indeterminate && !checked\" class=\"fwe-indeterminate-indicator\"></div>\n </div>\n <div class=\"fwe-checkbox-title\">\n <ng-content></ng-content>\n </div>\n</label>\n", styles: [".fwe-checkbox-container{font-family:var(--fwe-font-family-sans-serif);-webkit-user-select:none;user-select:none;cursor:pointer;display:flex;flex-direction:row;align-items:flex-start}.fwe-checkbox-container.fwe-label-below{align-items:center;flex-direction:column}.fwe-checkbox-container.fwe-label-below .fwe-checkbox-title{text-align:center;margin:8px 0 0}.fwe-checkbox-container.fwe-label-before{flex-direction:row-reverse;justify-content:flex-end}.fwe-checkbox-container.fwe-label-before .fwe-checkbox-title{margin:0 8px 0 0}.fwe-checkbox-container .fwe-checkbox-indicator-container{margin-top:4px;position:relative}.fwe-checkbox-container input{opacity:0;cursor:pointer;height:0;width:0}.fwe-checkbox-container .fwe-checkbox-title{margin-left:8px;line-height:24px;color:var(--fwe-text);-webkit-user-select:none;user-select:none}.fwe-checkbox-container .fwe-checkbox-indicator-background{box-sizing:border-box;background:var(--fwe-white);border:1px solid var(--fwe-text-light);border-radius:2px;height:16px;width:16px;transition:border-width .2s ease-out}.fwe-checkbox-container .fwe-indeterminate-indicator{position:absolute;height:2px;width:10px;top:7px;left:3px;background:white}.fwe-checkbox-container svg{display:block;position:absolute;top:0;left:0}.fwe-checkbox-container.fng-checkbox-large .fwe-checkbox-indicator-container{margin-top:0}.fwe-checkbox-container.fng-checkbox-large .fwe-checkbox-indicator-background{height:24px;width:24px;border-radius:4px}.fwe-checkbox-container.fng-checkbox-large .fwe-indeterminate-indicator{top:11px;width:14px;left:5px}.fwe-checkbox-container.fng-checkbox-large.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-large.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{border:12px solid var(--fwe-hero)}.fwe-checkbox-container:hover .fwe-checkbox-indicator-background{background-color:var(--fwe-control)}.fwe-checkbox-container:active .fwe-checkbox-indicator-background{background-color:var(--fwe-control-dark)}.fwe-checkbox-container.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{border:8px solid var(--fwe-hero)}.fwe-checkbox-container.fwe-checked:hover .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate:hover .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-dark)}.fwe-checkbox-container.fwe-checked:active .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate:active .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-darker)}.fwe-checkbox-container.fng-checkbox-invalid .fwe-checkbox-indicator-background{border:1px solid var(--fwe-red);background:var(--fwe-white)}.fwe-checkbox-container.fwe-disabled{cursor:default}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-disabled.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{background-color:var(--fwe-control);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fng-checkbox-invalid .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-title{color:var(--fwe-text-disabled)}\n"] }]
@@ -151,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
151
151
  }], change: [{
152
152
  type: Output
153
153
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2Zvcm1zL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV6RSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFrQnJCLE1BQU0sT0FBTyxpQkFBaUI7SUFPNUIsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUNJLEVBQUUsQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUN6RixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJ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V0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzs0QkFDaEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0dBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFPRixFQUFFO3NCQURMLEtBQUs7Z0JBVUYsT0FBTztzQkFEVixLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFjRixhQUFhO3NCQURoQixLQUFLO2dCQWNHLEtBQUs7c0JBQWIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBU2EsbUJBQW1CO3NCQUFyQyxNQUFNO2dCQUNZLE1BQU07c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbGFyZ2UgPSBmYWxzZTtcbiAgQElucHV0KCkgdmFsaWQgPSB0cnVlO1xuICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgfCAnYmVsb3cnID0gJ2FmdGVyJztcblxuICBwcml2YXRlIGlubmVySWQgPSBgZm5nLWNoZWNrYm94LSR7KytuZXh0VW5pcXVlSWR9YDtcbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJJZDtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaW5uZXJJZCA9IHZhbHVlID8gYCR7dmFsdWV9LSR7KytuZXh0VW5pcXVlSWR9YCA6IGBmbmctY2hlY2tib3gtJHsrK25leHRVbmlxdWVJZH1gO1xuICB9XG5cbiAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pbm5lcklkfS1pbnB1dGA7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0NoZWNrZWQ7XG4gIH1cbiAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuY2hlY2tlZCkge1xuICAgICAgdGhpcy5pc0NoZWNrZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgaXNDaGVja2VkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlzRGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5kZXRlcm1pbmF0ZTtcbiAgfVxuICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB2YWx1ZSAhPT0gdGhpcy5pc0luZGV0ZXJtaW5hdGU7XG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLmlzSW5kZXRlcm1pbmF0ZSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgcHJpdmF0ZSBpc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJ2ZhbHNlJztcblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZXF1aXJlZDtcbiAgfVxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgaXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG5cbiAgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiBudWxsO1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuY2hlY2tlZCA9ICEhdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG9uSW5wdXRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuaXNJbmRldGVybWluYXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgaWYgKHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLmNoZWNrZWQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub25Ub3VjaGVkICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxsYWJlbFxuICBjbGFzcz1cImZ3ZS1jaGVja2JveC1jb250YWluZXJcIlxuICBbY2xhc3MuZm5nLWNoZWNrYm94LWxhcmdlXT1cImxhcmdlXCJcbiAgW2NsYXNzLmZuZy1jaGVja2JveC1pbnZhbGlkXT1cIiF2YWxpZCB8fCByZXF1aXJlZFwiXG4gIFtjbGFzcy5md2UtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MuZm5nLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gIFtjbGFzcy5md2UtY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgW2F0dHIuZm9yXT1cImlucHV0SWRcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2Z3ZS1sYWJlbC1iZWxvdyc6IGxhYmVsUG9zaXRpb24gPT0gJ2JlbG93JyxcbiAgICAnZndlLWxhYmVsLWJlZm9yZSc6IGxhYmVsUG9zaXRpb24gPT0gJ2JlZm9yZSdcbiAgfVwiXG4+XG4gIDxpbnB1dFxuICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgW2lkXT1cImlucHV0SWRcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25JbnB1dENsaWNrKCRldmVudClcIlxuICAvPlxuICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LWluZGljYXRvci1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LWluZGljYXRvci1iYWNrZ3JvdW5kXCI+PC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmRldGVybWluYXRlICYmIGNoZWNrZWRcIj5cbiAgICAgIDxzdmcgKm5nSWY9XCJsYXJnZVwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xNy41IDdMMTAgMTQuNSA3LjUwMSAxMmwtMS41IDEuNTAxTDEwIDE3LjVsOS05elwiIGZpbGw9XCIjZmZmXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPHN2ZyAqbmdJZj1cIiFsYXJnZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cbiAgICAgICAgPHBhdGggZD1cIk02IDEyTDMgOWwxLjI1LTEuMjVMNiA5LjVsNS43NS01Ljc1TDEzIDVsLTcgN3pcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5kZXRlcm1pbmF0ZSAmJiAhY2hlY2tlZFwiIGNsYXNzPVwiZndlLWluZGV0ZXJtaW5hdGUtaW5kaWNhdG9yXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LXRpdGxlXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbGFiZWw+XG4iXX0=
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2Zvcm1zL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV6RSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFrQnJCLE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUNJLEVBQUUsQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUN6RixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJ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V0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0dBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFPRixFQUFFO3NCQURMLEtBQUs7Z0JBVUYsT0FBTztzQkFEVixLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFjRixhQUFhO3NCQURoQixLQUFLO2dCQWNHLEtBQUs7c0JBQWIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBU2EsbUJBQW1CO3NCQUFyQyxNQUFNO2dCQUNZLE1BQU07c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZuZ0NoZWNrYm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZuZ0NoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbGFyZ2UgPSBmYWxzZTtcbiAgQElucHV0KCkgdmFsaWQgPSB0cnVlO1xuICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgfCAnYmVsb3cnID0gJ2FmdGVyJztcblxuICBwcml2YXRlIGlubmVySWQgPSBgZm5nLWNoZWNrYm94LSR7KytuZXh0VW5pcXVlSWR9YDtcbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJJZDtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaW5uZXJJZCA9IHZhbHVlID8gYCR7dmFsdWV9LSR7KytuZXh0VW5pcXVlSWR9YCA6IGBmbmctY2hlY2tib3gtJHsrK25leHRVbmlxdWVJZH1gO1xuICB9XG5cbiAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pbm5lcklkfS1pbnB1dGA7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0NoZWNrZWQ7XG4gIH1cbiAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuY2hlY2tlZCkge1xuICAgICAgdGhpcy5pc0NoZWNrZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgaXNDaGVja2VkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlzRGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5kZXRlcm1pbmF0ZTtcbiAgfVxuICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB2YWx1ZSAhPT0gdGhpcy5pc0luZGV0ZXJtaW5hdGU7XG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLmlzSW5kZXRlcm1pbmF0ZSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgcHJpdmF0ZSBpc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJ2ZhbHNlJztcblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZXF1aXJlZDtcbiAgfVxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgaXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG5cbiAgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiBudWxsO1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuY2hlY2tlZCA9ICEhdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG9uSW5wdXRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuaXNJbmRldGVybWluYXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgaWYgKHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLmNoZWNrZWQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub25Ub3VjaGVkICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxsYWJlbFxuICBjbGFzcz1cImZ3ZS1jaGVja2JveC1jb250YWluZXJcIlxuICBbY2xhc3MuZm5nLWNoZWNrYm94LWxhcmdlXT1cImxhcmdlXCJcbiAgW2NsYXNzLmZuZy1jaGVja2JveC1pbnZhbGlkXT1cIiF2YWxpZCB8fCByZXF1aXJlZFwiXG4gIFtjbGFzcy5md2UtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MuZm5nLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gIFtjbGFzcy5md2UtY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgW2F0dHIuZm9yXT1cImlucHV0SWRcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2Z3ZS1sYWJlbC1iZWxvdyc6IGxhYmVsUG9zaXRpb24gPT0gJ2JlbG93JyxcbiAgICAnZndlLWxhYmVsLWJlZm9yZSc6IGxhYmVsUG9zaXRpb24gPT0gJ2JlZm9yZSdcbiAgfVwiXG4+XG4gIDxpbnB1dFxuICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgW2lkXT1cImlucHV0SWRcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25JbnB1dENsaWNrKCRldmVudClcIlxuICAvPlxuICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LWluZGljYXRvci1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LWluZGljYXRvci1iYWNrZ3JvdW5kXCI+PC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmRldGVybWluYXRlICYmIGNoZWNrZWRcIj5cbiAgICAgIDxzdmcgKm5nSWY9XCJsYXJnZVwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xNy41IDdMMTAgMTQuNSA3LjUwMSAxMmwtMS41IDEuNTAxTDEwIDE3LjVsOS05elwiIGZpbGw9XCIjZmZmXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPHN2ZyAqbmdJZj1cIiFsYXJnZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cbiAgICAgICAgPHBhdGggZD1cIk02IDEyTDMgOWwxLjI1LTEuMjVMNiA5LjVsNS43NS01Ljc1TDEzIDVsLTcgN3pcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5kZXRlcm1pbmF0ZSAmJiAhY2hlY2tlZFwiIGNsYXNzPVwiZndlLWluZGV0ZXJtaW5hdGUtaW5kaWNhdG9yXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LXRpdGxlXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbGFiZWw+XG4iXX0=