@acorex/components 18.14.1-next.5 → 18.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. package/comment/lib/comment-container/comment-container.component.d.ts +1 -0
  2. package/common/lib/components/value-component.class.d.ts +1 -0
  3. package/common/lib/directives/auto-focus.directive.d.ts +1 -0
  4. package/common/lib/directives/ripple.directive.d.ts +1 -0
  5. package/data-table/lib/columns/data-table-column-resizable.directive.d.ts +1 -0
  6. package/data-table/lib/data-table/data-table.component.d.ts +61 -60
  7. package/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.d.ts +7 -6
  8. package/drawer/lib/drawer/drawer-item/drawer.component.d.ts +2 -0
  9. package/esm2022/audio-wave/lib/audio-wave.component.mjs +79 -14
  10. package/esm2022/avatar/lib/avatar.component.mjs +2 -2
  11. package/esm2022/button/lib/button.component.mjs +2 -2
  12. package/esm2022/calendar/lib/calendar-range.component.mjs +2 -2
  13. package/esm2022/calendar/lib/calendar.component.mjs +3 -3
  14. package/esm2022/comment/lib/comment-container/comment-container.component.mjs +7 -3
  15. package/esm2022/common/lib/components/value-component.class.mjs +4 -2
  16. package/esm2022/common/lib/directives/auto-focus.directive.mjs +5 -3
  17. package/esm2022/common/lib/directives/inverted-color.directive.mjs +1 -1
  18. package/esm2022/common/lib/directives/ripple.directive.mjs +5 -3
  19. package/esm2022/conversation/lib/conversation-message/conversation-message.component.mjs +2 -2
  20. package/esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.mjs +2 -2
  21. package/esm2022/cron-job/lib/cron-job-container/cron-job-container.component.mjs +3 -3
  22. package/esm2022/cron-job/lib/day/day.component.mjs +3 -3
  23. package/esm2022/cron-job/lib/hours/hours.component.mjs +3 -3
  24. package/esm2022/cron-job/lib/minutes/minutes.component.mjs +3 -3
  25. package/esm2022/cron-job/lib/month/month.component.mjs +3 -3
  26. package/esm2022/cron-job/lib/seconds/seconds.component.mjs +3 -3
  27. package/esm2022/cron-job/lib/year/year.component.mjs +3 -3
  28. package/esm2022/data-table/lib/columns/data-table-column-resizable.directive.mjs +9 -7
  29. package/esm2022/data-table/lib/data-table/data-table.component.mjs +71 -67
  30. package/esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.mjs +16 -11
  31. package/esm2022/drawer/lib/drawer/drawer-item/drawer.component.mjs +5 -2
  32. package/esm2022/list/lib/list.component.mjs +17 -5
  33. package/esm2022/loading/lib/loading-spinner.component.mjs +2 -2
  34. package/esm2022/loading-dialog/lib/loading-dialog.component.mjs +2 -2
  35. package/esm2022/menu/lib/context-menu.component.mjs +28 -21
  36. package/esm2022/password-box/lib/password-box.component.mjs +13 -5
  37. package/esm2022/password-box/lib/password-box.module.mjs +19 -3
  38. package/esm2022/password-box/lib/password-strength-validation/password-strength-validation.component.mjs +36 -14
  39. package/esm2022/popover/lib/popover.component.mjs +5 -3
  40. package/esm2022/popup/lib/popup.component.mjs +2 -2
  41. package/esm2022/uploader/lib/uploader-zone.directive.mjs +7 -5
  42. package/fesm2022/acorex-components-audio-wave.mjs +78 -13
  43. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  44. package/fesm2022/acorex-components-avatar.mjs +2 -2
  45. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  46. package/fesm2022/acorex-components-button.mjs +2 -2
  47. package/fesm2022/acorex-components-calendar.mjs +4 -4
  48. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  49. package/fesm2022/acorex-components-comment.mjs +7 -4
  50. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  51. package/fesm2022/acorex-components-common.mjs +6 -3
  52. package/fesm2022/acorex-components-common.mjs.map +1 -1
  53. package/fesm2022/acorex-components-conversation.mjs +2 -2
  54. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  55. package/fesm2022/acorex-components-cron-job.mjs +14 -14
  56. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  57. package/fesm2022/acorex-components-data-table.mjs +89 -81
  58. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  59. package/fesm2022/acorex-components-drawer.mjs +4 -2
  60. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  61. package/fesm2022/acorex-components-list.mjs +16 -4
  62. package/fesm2022/acorex-components-list.mjs.map +1 -1
  63. package/fesm2022/acorex-components-loading-dialog.mjs +2 -2
  64. package/fesm2022/acorex-components-loading.mjs +2 -2
  65. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  66. package/fesm2022/acorex-components-menu.mjs +24 -18
  67. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  68. package/fesm2022/acorex-components-password-box.mjs +65 -19
  69. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  70. package/fesm2022/acorex-components-popover.mjs +4 -3
  71. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  72. package/fesm2022/acorex-components-popup.mjs +2 -2
  73. package/fesm2022/acorex-components-uploader.mjs +7 -6
  74. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  75. package/menu/lib/context-menu.component.d.ts +2 -1
  76. package/package.json +1 -1
  77. package/password-box/lib/password-box.component.d.ts +9 -1
  78. package/password-box/lib/password-box.module.d.ts +3 -1
  79. package/password-box/lib/password-strength-validation/password-strength-validation.component.d.ts +23 -1
  80. package/popover/lib/popover.component.d.ts +1 -0
  81. package/uploader/lib/uploader-zone.directive.d.ts +1 -0
@@ -1,10 +1,11 @@
1
1
  import { NXComponent, NXEvent } from '@acorex/components/common';
2
- import { afterNextRender, ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, input, output, Renderer2, signal, ViewEncapsulation, } from '@angular/core';
3
- import { AXRootMenu } from './menu.types';
4
- import { AXMenuService } from './menu.service';
2
+ import { isBrowser } from '@acorex/core/platform';
5
3
  import { AXHtmlUtil } from '@acorex/core/utils';
4
+ import { DOCUMENT } from '@angular/common';
5
+ import { afterNextRender, ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, input, output, Renderer2, signal, ViewEncapsulation, } from '@angular/core';
6
6
  import { cloneDeep } from 'lodash-es';
7
- import { isBrowser } from '@acorex/core/platform';
7
+ import { AXMenuService } from './menu.service';
8
+ import { AXRootMenu, } from './menu.types';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/common";
10
11
  import * as i2 from "@acorex/components/decorators";
@@ -28,13 +29,14 @@ export class AXContextMenuComponent extends NXComponent {
28
29
  this.orientation = input('vertical');
29
30
  this.openOn = input('hover');
30
31
  this.closeOn = input('click');
31
- this.orginalItems = input([], { alias: "items" });
32
+ this.orginalItems = input([], { alias: 'items' });
32
33
  this.target = input();
33
34
  this.onItemClick = output();
34
35
  this.onOpening = output();
35
36
  // Injected Services
36
37
  this.service = inject(AXMenuService);
37
38
  this.renderer = inject(Renderer2);
39
+ this.document = inject(DOCUMENT);
38
40
  this.items = signal([]);
39
41
  //
40
42
  afterNextRender(() => {
@@ -72,11 +74,11 @@ export class AXContextMenuComponent extends NXComponent {
72
74
  // Private Methods (Internal Logic)
73
75
  /** @ignore */
74
76
  getTargetElements() {
75
- const elements = typeof this.target() == 'string' ?
76
- Array.from(document.querySelectorAll(this.target())) :
77
- Array.isArray(this.target()) ?
78
- this.target() :
79
- [this.target()];
77
+ const elements = typeof this.target() == 'string'
78
+ ? Array.from(this.document.querySelectorAll(this.target()))
79
+ : Array.isArray(this.target())
80
+ ? this.target()
81
+ : [this.target()];
80
82
  return elements;
81
83
  }
82
84
  /** @ignore */
@@ -96,9 +98,9 @@ export class AXContextMenuComponent extends NXComponent {
96
98
  e.preventDefault();
97
99
  e.stopPropagation();
98
100
  //
99
- const elementsUnderMouse = document.elementsFromPoint(e.x, e.y);
101
+ const elementsUnderMouse = this.document.elementsFromPoint(e.x, e.y);
100
102
  const targetElements = this.getTargetElements();
101
- const targetElement = elementsUnderMouse.find(target => targetElements.includes(target));
103
+ const targetElement = elementsUnderMouse.find((target) => targetElements.includes(target));
102
104
  //
103
105
  const event = {
104
106
  sender: this,
@@ -172,9 +174,9 @@ export class AXContextMenuComponent extends NXComponent {
172
174
  const l3 = this.renderer.listen(this.backdropElement, 'contextmenu', (e) => {
173
175
  this.close();
174
176
  // Get all elements under the mouse pointer
175
- const elementsUnderMouse = document.elementsFromPoint(e.x, e.y);
177
+ const elementsUnderMouse = this.document.elementsFromPoint(e.x, e.y);
176
178
  const targetElements = this.getTargetElements();
177
- if (targetElements.some(target => elementsUnderMouse.includes(target))) {
179
+ if (targetElements.some((target) => elementsUnderMouse.includes(target))) {
178
180
  e.preventDefault();
179
181
  setTimeout(() => {
180
182
  //this.internalShowAt({ x: e.x, y: e.y });
@@ -183,7 +185,7 @@ export class AXContextMenuComponent extends NXComponent {
183
185
  }
184
186
  l3();
185
187
  });
186
- document.body.appendChild(this.backdropElement);
188
+ this.document.body.appendChild(this.backdropElement);
187
189
  }
188
190
  /** @ignore */
189
191
  removeBackdrop() {
@@ -202,15 +204,20 @@ export class AXContextMenuComponent extends NXComponent {
202
204
  }
203
205
  /** @ignore */
204
206
  get __hostClass() {
205
- return ['ax-menu-container', `ax-orientation-${this.orientation()}`, 'ax-action-list', 'ax-action-list-vertical'];
207
+ return [
208
+ 'ax-menu-container',
209
+ `ax-orientation-${this.orientation()}`,
210
+ 'ax-action-list',
211
+ 'ax-action-list-vertical',
212
+ ];
206
213
  }
207
214
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
208
215
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXContextMenuComponent, selector: "ax-context-menu", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, openOn: { classPropertyName: "openOn", publicName: "openOn", isSignal: true, isRequired: false, transformFunction: null }, closeOn: { classPropertyName: "closeOn", publicName: "closeOn", isSignal: true, isRequired: false, transformFunction: null }, orginalItems: { classPropertyName: "orginalItems", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onItemClick: "onItemClick", onOpening: "onOpening" }, host: { listeners: { "window:scroll": "onWindowEvent($event)", "window:resize": "onWindowEvent($event)" }, properties: { "class": "this.__hostClass" } }, providers: [
209
216
  AXMenuService,
210
217
  {
211
218
  provide: AXRootMenu,
212
- useExisting: AXContextMenuComponent
213
- }
219
+ useExisting: AXContextMenuComponent,
220
+ },
214
221
  ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-menu-item,ax-divider,ax-title,ng-container\"></ng-content>\n\n<ng-container\n *ngFor=\"let node of items()\"\n [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"\n>\n</ng-container>\n<ng-template #Recursion let-item>\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <ax-menu-item [name]=\"item.name\" [data]=\"item.data\" [disabled]=\"item.disabled\" [color]=\"item.color\">\n <ax-prefix>\n @if (item.icon) {\n <ax-icon [icon]=\"item.icon\"> </ax-icon>\n }\n </ax-prefix>\n @if (item.text) {\n <ax-text>{{ item.text }}</ax-text>\n }\n @if (item.suffix) {\n <ax-suffix>\n <ax-text>{{ item.suffix.text }}</ax-text>\n </ax-suffix>\n }\n <ng-container\n *ngFor=\"let child of item.items\"\n [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n ></ng-container>\n </ax-menu-item>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n</ng-template>\n", styles: ["ax-context-menu,ax-menu{width:100%;color:inherit;display:flex;width:max-content}ax-context-menu .ax-action-item,ax-menu .ax-action-item{padding-inline-end:0!important}ax-context-menu.ax-menu-container,ax-context-menu .ax-menu-items,ax-menu.ax-menu-container,ax-menu .ax-menu-items{padding-block:.5rem;display:flex;opacity:0;visibility:hidden;transition:opacity .3s;width:max-content;min-width:12rem;height:max-content;position:fixed;flex-direction:column;border-radius:0;border-width:1px;border-color:rgba(var(--ax-color-border-default));background-color:rgba(var(--ax-color-surface));--ax-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ax-shadow-colored: 0 4px 6px -1px var(--ax-shadow-color), 0 2px 4px -2px var(--ax-shadow-color);box-shadow:var(--ax-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-shadow);border-radius:var(--ax-rounded-border-default);z-index:9999;color:rgba(var(--ax-color-text-default))}ax-context-menu.ax-menu-container.ax-state-open,ax-context-menu .ax-menu-items.ax-state-open,ax-menu.ax-menu-container.ax-state-open,ax-menu .ax-menu-items.ax-state-open{opacity:1;visibility:visible}ax-context-menu.ax-menu-container .ax-action-item:hover,ax-context-menu .ax-menu-items .ax-action-item:hover,ax-menu.ax-menu-container .ax-action-item:hover,ax-menu .ax-menu-items .ax-action-item:hover{background-color:rgba(var(--ax-color-on-surface),var(--tw-bg-opacity))}ax-context-menu.ax-action-list-horizontal{padding-inline:1rem}ax-menu.ax-action-list-horizontal{min-width:12rem;gap:.875rem}ax-menu.ax-action-list-horizontal>ax-title{display:none}ax-menu.ax-action-list-horizontal>ax-menu-item{font-weight:500}ax-menu.ax-action-list-horizontal>ax-menu-item>.ax-action-item-prefix{padding-inline-start:0!important}ax-menu.ax-action-list-horizontal>ax-menu-item>.ax-action-item-suffix:not(ax-menu.ax-action-list-horizontal>ax-menu-item>.ax-action-item-suffix:empty){padding-inline-end:0!important;margin-inline-start:0!important}ax-menu.ax-action-list-horizontal>ax-menu-item:hover{background-color:transparent!important}ax-menu.ax-action-list-horizontal>ax-menu-item:hover>.ax-action-item-prefix{opacity:.5}ax-menu.ax-action-list-horizontal>ax-menu-item:hover>.ax-action-item-suffix{opacity:.5}ax-menu.ax-action-list-vertical{width:max-content;min-width:12rem}ax-menu.ax-action-list-vertical>ax-menu-item{font-weight:500}ax-menu.ax-action-list-vertical>ax-menu-item:hover{background-color:transparent!important}ax-menu.ax-action-list-vertical>ax-menu-item:hover>.ax-action-item-prefix{opacity:.5}ax-menu.ax-action-list-vertical>ax-menu-item:hover>.ax-action-item-suffix{opacity:.5}ax-menu>ax-menu-item{padding-block:.5rem}ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled){border-radius:var(--ax-rounded-border-default)}ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled)>ax-icon,ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled)>ax-text{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i3.AXMenuItemComponent, selector: "ax-menu-item", inputs: ["name", "data", "disabled", "color"], outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
215
222
  }
216
223
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXContextMenuComponent, decorators: [{
@@ -219,8 +226,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
219
226
  AXMenuService,
220
227
  {
221
228
  provide: AXRootMenu,
222
- useExisting: AXContextMenuComponent
223
- }
229
+ useExisting: AXContextMenuComponent,
230
+ },
224
231
  ], template: "<ng-content select=\"ax-menu-item,ax-divider,ax-title,ng-container\"></ng-content>\n\n<ng-container\n *ngFor=\"let node of items()\"\n [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"\n>\n</ng-container>\n<ng-template #Recursion let-item>\n @if (item.group?.title) {\n <ax-title>{{ item.group?.title }}</ax-title>\n }\n <ax-menu-item [name]=\"item.name\" [data]=\"item.data\" [disabled]=\"item.disabled\" [color]=\"item.color\">\n <ax-prefix>\n @if (item.icon) {\n <ax-icon [icon]=\"item.icon\"> </ax-icon>\n }\n </ax-prefix>\n @if (item.text) {\n <ax-text>{{ item.text }}</ax-text>\n }\n @if (item.suffix) {\n <ax-suffix>\n <ax-text>{{ item.suffix.text }}</ax-text>\n </ax-suffix>\n }\n <ng-container\n *ngFor=\"let child of item.items\"\n [ngTemplateOutlet]=\"Recursion\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n ></ng-container>\n </ax-menu-item>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n</ng-template>\n", styles: ["ax-context-menu,ax-menu{width:100%;color:inherit;display:flex;width:max-content}ax-context-menu .ax-action-item,ax-menu .ax-action-item{padding-inline-end:0!important}ax-context-menu.ax-menu-container,ax-context-menu .ax-menu-items,ax-menu.ax-menu-container,ax-menu .ax-menu-items{padding-block:.5rem;display:flex;opacity:0;visibility:hidden;transition:opacity .3s;width:max-content;min-width:12rem;height:max-content;position:fixed;flex-direction:column;border-radius:0;border-width:1px;border-color:rgba(var(--ax-color-border-default));background-color:rgba(var(--ax-color-surface));--ax-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ax-shadow-colored: 0 4px 6px -1px var(--ax-shadow-color), 0 2px 4px -2px var(--ax-shadow-color);box-shadow:var(--ax-ring-offset-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-ring-shadow, 0 0 rgba(0, 0, 0, 0)),var(--ax-shadow);border-radius:var(--ax-rounded-border-default);z-index:9999;color:rgba(var(--ax-color-text-default))}ax-context-menu.ax-menu-container.ax-state-open,ax-context-menu .ax-menu-items.ax-state-open,ax-menu.ax-menu-container.ax-state-open,ax-menu .ax-menu-items.ax-state-open{opacity:1;visibility:visible}ax-context-menu.ax-menu-container .ax-action-item:hover,ax-context-menu .ax-menu-items .ax-action-item:hover,ax-menu.ax-menu-container .ax-action-item:hover,ax-menu .ax-menu-items .ax-action-item:hover{background-color:rgba(var(--ax-color-on-surface),var(--tw-bg-opacity))}ax-context-menu.ax-action-list-horizontal{padding-inline:1rem}ax-menu.ax-action-list-horizontal{min-width:12rem;gap:.875rem}ax-menu.ax-action-list-horizontal>ax-title{display:none}ax-menu.ax-action-list-horizontal>ax-menu-item{font-weight:500}ax-menu.ax-action-list-horizontal>ax-menu-item>.ax-action-item-prefix{padding-inline-start:0!important}ax-menu.ax-action-list-horizontal>ax-menu-item>.ax-action-item-suffix:not(ax-menu.ax-action-list-horizontal>ax-menu-item>.ax-action-item-suffix:empty){padding-inline-end:0!important;margin-inline-start:0!important}ax-menu.ax-action-list-horizontal>ax-menu-item:hover{background-color:transparent!important}ax-menu.ax-action-list-horizontal>ax-menu-item:hover>.ax-action-item-prefix{opacity:.5}ax-menu.ax-action-list-horizontal>ax-menu-item:hover>.ax-action-item-suffix{opacity:.5}ax-menu.ax-action-list-vertical{width:max-content;min-width:12rem}ax-menu.ax-action-list-vertical>ax-menu-item{font-weight:500}ax-menu.ax-action-list-vertical>ax-menu-item:hover{background-color:transparent!important}ax-menu.ax-action-list-vertical>ax-menu-item:hover>.ax-action-item-prefix{opacity:.5}ax-menu.ax-action-list-vertical>ax-menu-item:hover>.ax-action-item-suffix{opacity:.5}ax-menu>ax-menu-item{padding-block:.5rem}ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled){border-radius:var(--ax-rounded-border-default)}ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled)>ax-icon,ax-menu>ax-menu-item:hover:not(ax-menu>ax-menu-item:hover.ax-state-disabled)>ax-text{opacity:.5}\n"] }]
225
232
  }], ctorParameters: () => [], propDecorators: { onWindowEvent: [{
226
233
  type: HostListener,
@@ -232,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
232
239
  type: HostBinding,
233
240
  args: ['class']
234
241
  }] } });
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQ0gsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQStFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQUdsRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsT0FBK0I7SUFBOUU7O1FBRUksYUFBUSxHQUFHLEtBQUssQ0FBQztJQUdyQixDQUFDO0NBQUE7QUFHRDs7O0dBR0c7QUFlSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsV0FBVztJQWtCbkQscUNBQXFDO0lBRXJDLGNBQWM7SUFDZDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBcEJaLHFCQUFxQjtRQUVyQixnQkFBVyxHQUFHLEtBQUssQ0FBZ0IsVUFBVSxDQUFDLENBQUM7UUFDL0MsV0FB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RUFBRSxFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDdEgsQ0FBQzs4R0FyT1Esc0JBQXNCO2tHQUF0QixzQkFBc0IscTVCQVJwQjtZQUNQLGFBQWE7WUFDYjtnQkFDSSxPQUFPLEVBQUUsVUFBVTtnQkFDbkIsV0FBVyxFQUFFLHNCQUFzQjthQUN0QztTQUNKLGlEQzdDTCx5aUNBb0NBOzsyRkRXYSxzQkFBc0I7a0JBZGxDLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1AsYUFBYTt3QkFDYjs0QkFDSSxPQUFPLEVBQUUsVUFBVTs0QkFDbkIsV0FBVyx3QkFBd0I7eUJBQ3RDO3FCQUNKO3dEQThOTyxhQUFhO3NCQUZwQixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3hDLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVFyQyxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYT3JpZW50YXRpb24sIE5YQ29tcG9uZW50LCBOWEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGFmdGVyTmV4dFJlbmRlcixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIHNpZ25hbCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWE1lbnVDbG9zZVRyaWdnZXIsIEFYTWVudUl0ZW0sIEFYTWVudUl0ZW1DbGlja0Jhc2VFdmVudCwgQVhNZW51T3BlblRyaWdnZXIsIEFYUm9vdE1lbnUgfSBmcm9tICcuL21lbnUudHlwZXMnO1xuaW1wb3J0IHsgQVhNZW51U2VydmljZSB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYUG9pbnQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5cblxuZXhwb3J0IGNsYXNzIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQgZXh0ZW5kcyBOWEV2ZW50PEFYQ29udGV4dE1lbnVDb21wb25lbnQ+IHtcbiAgICBpdGVtczogQVhNZW51SXRlbVtdO1xuICAgIGNhbmNlbGVkID0gZmFsc2U7XG4gICAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnRcblxufVxuZXhwb3J0IHR5cGUgQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCA9IEFYTWVudUl0ZW1DbGlja0Jhc2VFdmVudDxBWENvbnRleHRNZW51Q29tcG9uZW50PlxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtZW51IGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGNvbnRleHQgbWVudS5cbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXgtY29udGV4dC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEFYTWVudVNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFYUm9vdE1lbnUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogQVhDb250ZXh0TWVudUNvbXBvbmVudFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBWENvbnRleHRNZW51Q29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuXG4gICAgLy8gSW5wdXRzIGFuZCBPdXRwdXRzXG5cbiAgICBvcmllbnRhdGlvbiA9IGlucHV0PEFYT3JpZW50YXRpb24+KCd2ZXJ0aWNhbCcpO1xuICAgIG9wZW5PbiA9IGlucHV0PEFYTWVudU9wZW5UcmlnZ2VyPignaG92ZXInKTtcbiAgICBjbG9zZU9uID0gaW5wdXQ8QVhNZW51Q2xvc2VUcmlnZ2VyPignY2xpY2snKTtcbiAgICBvcmdpbmFsSXRlbXMgPSBpbnB1dDxBWE1lbnVJdGVtW10+KFtdLCB7IGFsaWFzOiBcIml0ZW1zXCIgfSk7XG4gICAgdGFyZ2V0ID0gaW5wdXQ8SFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdIHwgc3RyaW5nPigpO1xuXG4gICAgb25JdGVtQ2xpY2sgPSBvdXRwdXQ8QVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudD4oKTtcbiAgICBvbk9wZW5pbmcgPSBvdXRwdXQ8QVhDb250ZXh0TWVudU9wZW5pbmdFdmVudD4oKTtcblxuICAgIC8vIEluamVjdGVkIFNlcnZpY2VzXG5cbiAgICBwcml2YXRlIHNlcnZpY2UgPSBpbmplY3QoQVhNZW51U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpXG5cbiAgICAvLyBDb25zdHJ1Y3RvciAoRGVwZW5kZW5jeSBJbmplY3Rpb24pXG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvL1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5iaW5kQ29udGV4dEV2ZW50KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VydmljZS5jbG9zZUFsbENvbnRleHRNZW51JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VydmljZS5vcGVuQ29udGV4dE1lbnUkLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUuc2VuZGVyIGFzIGFueSA9PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNob3dBdChlLnBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIC8vIExpZmVjeWNsZSBIb29rc1xuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVDb250ZXh0RXZlbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWZyZXNoKCl7XG4gICAgICAgIHRoaXMuYmluZENvbnRleHRFdmVudCgpXG4gICAgfVxuXG4gICAgLy8gUHVibGljIE1ldGhvZHNcblxuICAgIHB1YmxpYyBzaG93QXQocG9pbnQ6IEFYUG9pbnQpIHtcbiAgICAgICAgY29uc3Qgc2VuZGVyID0gdGhpcyBhcyBhbnkgYXMgQVhSb290TWVudTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXIgfSk7XG4gICAgICAgIHRoaXMuc2VydmljZS5vcGVuQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXIsIHBvaW50IH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLW9wZW4nKTtcbiAgICAgICAgdGhpcy5yZW1vdmVCYWNrZHJvcCgpO1xuICAgIH1cblxuICAgIC8vIFByaXZhdGUgUHJvcGVydGllc1xuXG4gICAgcHJpdmF0ZSBiYWNrZHJvcEVsZW1lbnQhOiBIVE1MRWxlbWVudDtcblxuICAgIHByb3RlY3RlZCBpdGVtcyA9IHNpZ25hbDxBWE1lbnVJdGVtW10+KFtdKTtcblxuICAgIC8vIFByaXZhdGUgTWV0aG9kcyAoSW50ZXJuYWwgTG9naWMpXG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIHByaXZhdGUgZ2V0VGFyZ2V0RWxlbWVudHMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gdHlwZW9mIHRoaXMudGFyZ2V0KCkgPT0gJ3N0cmluZycgP1xuICAgICAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50Pih0aGlzLnRhcmdldCgpIGFzIHN0cmluZykpIDpcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy50YXJnZXQoKSkgP1xuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0KCkgYXMgSFRNTEVsZW1lbnRbXSA6XG4gICAgICAgICAgICAgICAgW3RoaXMudGFyZ2V0KCkgYXMgSFRNTEVsZW1lbnRdXG5cbiAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBiaW5kQ29udGV4dEV2ZW50KCkge1xuICAgICAgICB0aGlzLmdldFRhcmdldEVsZW1lbnRzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIHRoaXMuaGFuZGxlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIHJlbW92ZUNvbnRleHRFdmVudCgpIHtcbiAgICAgICAgdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCB0aGlzLmhhbmRsZUNvbnRleHRNZW51LmJpbmQodGhpcykpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBoYW5kbGVDb250ZXh0TWVudShlOiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgZWxlbWVudHNVbmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoZS54LCBlLnkpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZWxlbWVudHNVbmRlck1vdXNlLmZpbmQodGFyZ2V0ID0+IHRhcmdldEVsZW1lbnRzLmluY2x1ZGVzKHRhcmdldCkpXG4gICAgICAgIC8vXG4gICAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICAgICAgc2VuZGVyOiB0aGlzLFxuICAgICAgICAgICAgY2FuY2VsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgdGFyZ2V0RWxlbWVudDogdGFyZ2V0RWxlbWVudCxcbiAgICAgICAgICAgIGl0ZW1zOiBjbG9uZURlZXAodGhpcy5vcmdpbmFsSXRlbXMoKSksXG4gICAgICAgIH0gYXMgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudDtcbiAgICAgICAgdGhpcy5vbk9wZW5pbmcuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMuaXRlbXMuc2V0KGV2ZW50Lml0ZW1zKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKCFldmVudC5jYW5jZWxlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93QXQoeyB4OiBlLmNsaWVudFgsIHk6IGUuY2xpZW50WSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaWdub3JlICovXG4gICAgcHJpdmF0ZSBpbnRlcm5hbFNob3dBdChwb2ludDogQVhQb2ludCkge1xuICAgICAgICBjb25zdCBlbGVtZW50UmVmID0gdGhpcy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBlbGVtZW50UmVmLmNsYXNzTGlzdC5hZGQoJ2F4LXN0YXRlLW9wZW4nKTtcbiAgICAgICAgY29uc3QgaXRlbVJlY3QgPSBlbGVtZW50UmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgLy8gRGV0ZWN0IFJUTCAoUmlnaHQtVG8tTGVmdCkgbW9kZVxuICAgICAgICBjb25zdCBpc1J0bCA9IEFYSHRtbFV0aWwuaXNSdGwoZWxlbWVudFJlZik7XG5cbiAgICAgICAgbGV0IGxlZnQ6IG51bWJlcjtcbiAgICAgICAgaWYgKGlzUnRsKSB7XG4gICAgICAgICAgICBsZWZ0ID0gcG9pbnQueCAtIGl0ZW1SZWN0LndpZHRoO1xuICAgICAgICAgICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICAgICAgICAgICAgbGVmdCA9IHBvaW50Lng7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZWZ0ID0gcG9pbnQueDtcbiAgICAgICAgICAgIGlmIChsZWZ0ICsgaXRlbVJlY3Qud2lkdGggPiB3aW5kb3dXaWR0aCkge1xuICAgICAgICAgICAgICAgIGxlZnQgPSBwb2ludC54IC0gaXRlbVJlY3Qud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBib3R0b20gPSBwb2ludC55ICsgaXRlbVJlY3QuaGVpZ2h0O1xuICAgICAgICBsZXQgdG9wOiBudW1iZXI7XG5cbiAgICAgICAgaWYgKGJvdHRvbSA+IHdpbmRvd0hlaWdodCkge1xuICAgICAgICAgICAgdG9wID0gcG9pbnQueSAtIGl0ZW1SZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICAgICAgICAgICAgdG9wID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvcCA9IHBvaW50Lnk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYsICdsZWZ0JywgYCR7bGVmdH1weGApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYsICd0b3AnLCBgJHt0b3B9cHhgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50UmVmLCAncG9zaXRpb24nLCAnZml4ZWQnKTtcblxuICAgICAgICB0aGlzLmNyZWF0ZUJhY2tkcm9wKCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUJhY2tkcm9wKCkge1xuICAgICAgICB0aGlzLmJhY2tkcm9wRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsZW1lbnQsICdwb3NpdGlvbicsICdmaXhlZCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAndG9wJywgJzAnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2xlZnQnLCAnMCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnd2lkdGgnLCAnMTAwJScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnaGVpZ2h0JywgJzEwMCUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ3otaW5kZXgnLCAnOTk5Jyk7IC8vIEVuc3VyZSBpdCdzIGJlbG93IHRoZSBjb250ZXh0IG1lbnVcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2JhY2tncm91bmQnLCAndHJhbnNwYXJlbnQnKTtcblxuICAgICAgICBjb25zdCBsMSA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICBsMSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBsMiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnd2hlZWwnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICBsMigpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBsMyA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnY29udGV4dG1lbnUnLCAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgLy8gR2V0IGFsbCBlbGVtZW50cyB1bmRlciB0aGUgbW91c2UgcG9pbnRlclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNVbmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoZS54LCBlLnkpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50cyA9IHRoaXMuZ2V0VGFyZ2V0RWxlbWVudHMoKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXRFbGVtZW50cy5zb21lKHRhcmdldCA9PiBlbGVtZW50c1VuZGVyTW91c2UuaW5jbHVkZXModGFyZ2V0KSkpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5pbnRlcm5hbFNob3dBdCh7IHg6IGUueCwgeTogZS55IH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNvbnRleHRNZW51KGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbDMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmJhY2tkcm9wRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBpZ25vcmUgKi9cbiAgICBwcml2YXRlIHJlbW92ZUJhY2tkcm9wKCkge1xuICAgICAgICBpZiAodGhpcy5iYWNrZHJvcEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmJhY2tkcm9wRWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYWNrZHJvcEVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmJhY2tkcm9wRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJhY2tkcm9wRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIb3N0IExpc3RlbmVycyAoVUkgSW50ZXJhY3Rpb24gSGFuZGxpbmcpXG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICAgIHByaXZhdGUgb25XaW5kb3dFdmVudCgpIHtcbiAgICAgICAgY29uc3Qgc2VuZGVyID0gdGhpcyBhcyBhbnkgYXMgQVhSb290TWVudTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXI6IHNlbmRlciB9KTsgLy8gQ2xvc2UgYWxsIG1lbnVzIG9uIHNjcm9sbCBvciByZXNpemVcbiAgICB9XG5cbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBfX2hvc3RDbGFzcygpOiBhbnkge1xuICAgICAgICByZXR1cm4gWydheC1tZW51LWNvbnRhaW5lcicsIGBheC1vcmllbnRhdGlvbi0ke3RoaXMub3JpZW50YXRpb24oKX1gLCAnYXgtYWN0aW9uLWxpc3QnLCAnYXgtYWN0aW9uLWxpc3QtdmVydGljYWwnXTtcbiAgICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1tZW51LWl0ZW0sYXgtZGl2aWRlcixheC10aXRsZSxuZy1jb250YWluZXJcIj48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nRm9yPVwibGV0IG5vZGUgb2YgaXRlbXMoKVwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlJlY3Vyc2lvblwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCJcbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNSZWN1cnNpb24gbGV0LWl0ZW0+XG4gIEBpZiAoaXRlbS5ncm91cD8udGl0bGUpIHtcbiAgICA8YXgtdGl0bGU+e3sgaXRlbS5ncm91cD8udGl0bGUgfX08L2F4LXRpdGxlPlxuICB9XG4gIDxheC1tZW51LWl0ZW0gW25hbWVdPVwiaXRlbS5uYW1lXCIgW2RhdGFdPVwiaXRlbS5kYXRhXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiPlxuICAgIDxheC1wcmVmaXg+XG4gICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgfVxuICAgIDwvYXgtcHJlZml4PlxuICAgIEBpZiAoaXRlbS50ZXh0KSB7XG4gICAgICA8YXgtdGV4dD57eyBpdGVtLnRleHQgfX08L2F4LXRleHQ+XG4gICAgfVxuICAgIEBpZiAoaXRlbS5zdWZmaXgpIHtcbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC10ZXh0Pnt7IGl0ZW0uc3VmZml4LnRleHQgfX08L2F4LXRleHQ+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICB9XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uaXRlbXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiUmVjdXJzaW9uXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY2hpbGQgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2F4LW1lbnUtaXRlbT5cbiAgQGlmIChpdGVtLmJyZWFrKSB7XG4gICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBS0wsVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDOzs7OztBQUV0QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsT0FBK0I7SUFBOUU7O1FBRUUsYUFBUSxHQUFHLEtBQUssQ0FBQztJQUVuQixDQUFDO0NBQUE7QUFHRDs7O0dBR0c7QUFlSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsV0FBVztJQWtCckQscUNBQXFDO0lBRXJDLGNBQWM7SUFDZDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBckJWLHFCQUFxQjtRQUVyQixnQkFBVyxHQUFHLEtBQUssQ0FBZ0IsVUFBVSxDQUFDLENBQUM7UUFDL0MsV0FBTSxHQUFHLEtBQUssQ0FBb0IsT0FBTyxDQUFDLENBQUM7UUFDM0MsWUFBTyxHQUFHLEtBQUssQ0FBcUIsT0FBTyxDQUFDLENBQUM7UUFDN0MsaUJBQVksR0FBRyxLQUFLLENBQWUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0QsV0FBTSxHQUFHLEtBQUssRUFBd0MsQ0FBQztRQUV2RCxnQkFBVyxHQUFHLE1BQU0sRUFBZ0MsQ0FBQztRQUNyRCxjQUFTLEdBQUcsTUFBTSxFQUE2QixDQUFDO1FBRWhELG9CQUFvQjtRQUVaLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBcUQxQixVQUFLLEdBQUcsTUFBTSxDQUFlLEVBQUUsQ0FBQyxDQUFDO1FBOUN6QyxFQUFFO1FBQ0YsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSyxDQUFDLENBQUMsTUFBYyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO0lBRWxCLFdBQVc7UUFDVCxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQjtJQUVWLE1BQU0sQ0FBQyxLQUFjO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQXlCLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFRRCxtQ0FBbUM7SUFFbkMsY0FBYztJQUNOLGlCQUFpQjtRQUN2QixNQUFNLFFBQVEsR0FDWixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxRQUFRO1lBQzlCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQWMsSUFBSSxDQUFDLE1BQU0sRUFBWSxDQUFDLENBQUM7WUFDbEYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixDQUFDLENBQUUsSUFBSSxDQUFDLE1BQU0sRUFBb0I7Z0JBQ2xDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQWlCLENBQUMsQ0FBQztRQUV2QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsY0FBYztJQUNOLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixpQkFBaUIsQ0FBQyxDQUFhO1FBQ3JDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsRUFBRTtRQUNGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQWtCLENBQUM7UUFDdEYsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0YsRUFBRTtRQUNGLE1BQU0sS0FBSyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUk7WUFDWixRQUFRLEVBQUUsS0FBSztZQUNmLGFBQWEsRUFBRSxhQUFhO1lBQzVCLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ1QsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsRUFBRTtRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7SUFDTixjQUFjLENBQUMsS0FBYztRQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3RDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDdEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUV4QyxrQ0FBa0M7UUFDbEMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQyxJQUFJLElBQVksQ0FBQztRQUNqQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNoQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDYixJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDekMsSUFBSSxHQUFXLENBQUM7UUFFaEIsSUFBSSxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUM7WUFDMUIsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNoQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDWixHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO0lBQ04sY0FBYztRQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMscUNBQXFDO1FBQ3JHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNsRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixFQUFFLEVBQUUsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLEVBQUUsRUFBRSxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQWEsRUFBRSxFQUFFO1lBQ3JGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLDJDQUEyQztZQUMzQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFrQixDQUFDO1lBQ3RGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hELElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDekUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLDBDQUEwQztvQkFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxFQUFFLEVBQUUsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsY0FBYztJQUNOLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELDJDQUEyQztJQUUzQyxjQUFjO0lBR04sYUFBYTtRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUF5QixDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7SUFDcEcsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNJLFdBQVc7UUFDYixPQUFPO1lBQ0wsbUJBQW1CO1lBQ25CLGtCQUFrQixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDdEMsZ0JBQWdCO1lBQ2hCLHlCQUF5QjtTQUMxQixDQUFDO0lBQ0osQ0FBQzs4R0F6T1Usc0JBQXNCO2tHQUF0QixzQkFBc0IscTVCQVJ0QjtZQUNULGFBQWE7WUFDYjtnQkFDRSxPQUFPLEVBQUUsVUFBVTtnQkFDbkIsV0FBVyxFQUFFLHNCQUFzQjthQUNwQztTQUNGLGlEQ2xESCx5aUNBb0NBOzsyRkRnQmEsc0JBQXNCO2tCQWRsQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULGFBQWE7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLFVBQVU7NEJBQ25CLFdBQVcsd0JBQXdCO3lCQUNwQztxQkFDRjt3REE2Tk8sYUFBYTtzQkFGcEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN4QyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRckMsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE9yaWVudGF0aW9uLCBOWENvbXBvbmVudCwgTlhFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYUG9pbnQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhNZW51U2VydmljZSB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYTWVudUNsb3NlVHJpZ2dlcixcbiAgQVhNZW51SXRlbSxcbiAgQVhNZW51SXRlbUNsaWNrQmFzZUV2ZW50LFxuICBBWE1lbnVPcGVuVHJpZ2dlcixcbiAgQVhSb290TWVudSxcbn0gZnJvbSAnLi9tZW51LnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQgZXh0ZW5kcyBOWEV2ZW50PEFYQ29udGV4dE1lbnVDb21wb25lbnQ+IHtcbiAgaXRlbXM6IEFYTWVudUl0ZW1bXTtcbiAgY2FuY2VsZWQgPSBmYWxzZTtcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQ7XG59XG5leHBvcnQgdHlwZSBBWENvbnRleHRNZW51SXRlbXNDbGlja0V2ZW50ID0gQVhNZW51SXRlbUNsaWNrQmFzZUV2ZW50PEFYQ29udGV4dE1lbnVDb21wb25lbnQ+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtZW51IGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGNvbnRleHQgbWVudS5cbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnRleHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQVhNZW51U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFJvb3RNZW51LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb250ZXh0TWVudUNvbXBvbmVudCBleHRlbmRzIE5YQ29tcG9uZW50IHtcbiAgLy8gSW5wdXRzIGFuZCBPdXRwdXRzXG5cbiAgb3JpZW50YXRpb24gPSBpbnB1dDxBWE9yaWVudGF0aW9uPigndmVydGljYWwnKTtcbiAgb3Blbk9uID0gaW5wdXQ8QVhNZW51T3BlblRyaWdnZXI+KCdob3ZlcicpO1xuICBjbG9zZU9uID0gaW5wdXQ8QVhNZW51Q2xvc2VUcmlnZ2VyPignY2xpY2snKTtcbiAgb3JnaW5hbEl0ZW1zID0gaW5wdXQ8QVhNZW51SXRlbVtdPihbXSwgeyBhbGlhczogJ2l0ZW1zJyB9KTtcbiAgdGFyZ2V0ID0gaW5wdXQ8SFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdIHwgc3RyaW5nPigpO1xuXG4gIG9uSXRlbUNsaWNrID0gb3V0cHV0PEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQ+KCk7XG4gIG9uT3BlbmluZyA9IG91dHB1dDxBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50PigpO1xuXG4gIC8vIEluamVjdGVkIFNlcnZpY2VzXG5cbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYTWVudVNlcnZpY2UpO1xuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8vIENvbnN0cnVjdG9yIChEZXBlbmRlbmN5IEluamVjdGlvbilcblxuICAvKiogQGlnbm9yZSAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vXG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuYmluZENvbnRleHRFdmVudCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNlcnZpY2UuY2xvc2VBbGwkLm5leHQoKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VydmljZS5vcGVuQ29udGV4dE1lbnUkLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKChlLnNlbmRlciBhcyBhbnkpID09IHRoaXMpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNob3dBdChlLnBvaW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIExpZmVjeWNsZSBIb29rc1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgdGhpcy5yZW1vdmVDb250ZXh0RXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmJpbmRDb250ZXh0RXZlbnQoKTtcbiAgfVxuXG4gIC8vIFB1YmxpYyBNZXRob2RzXG5cbiAgcHVibGljIHNob3dBdChwb2ludDogQVhQb2ludCkge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMgYXMgYW55IGFzIEFYUm9vdE1lbnU7XG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXIgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9wZW5Db250ZXh0TWVudSQubmV4dCh7IHNlbmRlciwgcG9pbnQgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgdGhpcy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLW9wZW4nKTtcbiAgICB0aGlzLnJlbW92ZUJhY2tkcm9wKCk7XG4gIH1cblxuICAvLyBQcml2YXRlIFByb3BlcnRpZXNcblxuICBwcml2YXRlIGJhY2tkcm9wRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuXG4gIHByb3RlY3RlZCBpdGVtcyA9IHNpZ25hbDxBWE1lbnVJdGVtW10+KFtdKTtcblxuICAvLyBQcml2YXRlIE1ldGhvZHMgKEludGVybmFsIExvZ2ljKVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgZ2V0VGFyZ2V0RWxlbWVudHMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgY29uc3QgZWxlbWVudHM6IEhUTUxFbGVtZW50W10gPVxuICAgICAgdHlwZW9mIHRoaXMudGFyZ2V0KCkgPT0gJ3N0cmluZydcbiAgICAgICAgPyBBcnJheS5mcm9tKHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4odGhpcy50YXJnZXQoKSBhcyBzdHJpbmcpKVxuICAgICAgICA6IEFycmF5LmlzQXJyYXkodGhpcy50YXJnZXQoKSlcbiAgICAgICAgICA/ICh0aGlzLnRhcmdldCgpIGFzIEhUTUxFbGVtZW50W10pXG4gICAgICAgICAgOiBbdGhpcy50YXJnZXQoKSBhcyBIVE1MRWxlbWVudF07XG5cbiAgICByZXR1cm4gZWxlbWVudHM7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGJpbmRDb250ZXh0RXZlbnQoKSB7XG4gICAgdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCB0aGlzLmhhbmRsZUNvbnRleHRNZW51LmJpbmQodGhpcykpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZW1vdmVDb250ZXh0RXZlbnQoKSB7XG4gICAgdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCB0aGlzLmhhbmRsZUNvbnRleHRNZW51LmJpbmQodGhpcykpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBoYW5kbGVDb250ZXh0TWVudShlOiBNb3VzZUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgLy9cbiAgICBjb25zdCBlbGVtZW50c1VuZGVyTW91c2UgPSB0aGlzLmRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KGUueCwgZS55KSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpO1xuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBlbGVtZW50c1VuZGVyTW91c2UuZmluZCgodGFyZ2V0KSA9PiB0YXJnZXRFbGVtZW50cy5pbmNsdWRlcyh0YXJnZXQpKTtcbiAgICAvL1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgc2VuZGVyOiB0aGlzLFxuICAgICAgY2FuY2VsZWQ6IGZhbHNlLFxuICAgICAgdGFyZ2V0RWxlbWVudDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIGl0ZW1zOiBjbG9uZURlZXAodGhpcy5vcmdpbmFsSXRlbXMoKSksXG4gICAgfSBhcyBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50O1xuICAgIHRoaXMub25PcGVuaW5nLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMuaXRlbXMuc2V0KGV2ZW50Lml0ZW1zKTtcbiAgICAvL1xuICAgIGlmICghZXZlbnQuY2FuY2VsZWQpIHtcbiAgICAgIHRoaXMuc2hvd0F0KHsgeDogZS5jbGllbnRYLCB5OiBlLmNsaWVudFkgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBpbnRlcm5hbFNob3dBdChwb2ludDogQVhQb2ludCkge1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgZWxlbWVudFJlZi5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1vcGVuJyk7XG4gICAgY29uc3QgaXRlbVJlY3QgPSBlbGVtZW50UmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgLy8gRGV0ZWN0IFJUTCAoUmlnaHQtVG8tTGVmdCkgbW9kZVxuICAgIGNvbnN0IGlzUnRsID0gQVhIdG1sVXRpbC5pc1J0bChlbGVtZW50UmVmKTtcblxuICAgIGxldCBsZWZ0OiBudW1iZXI7XG4gICAgaWYgKGlzUnRsKSB7XG4gICAgICBsZWZ0ID0gcG9pbnQueCAtIGl0ZW1SZWN0LndpZHRoO1xuICAgICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICAgIGxlZnQgPSBwb2ludC54O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gcG9pbnQueDtcbiAgICAgIGlmIChsZWZ0ICsgaXRlbVJlY3Qud2lkdGggPiB3aW5kb3dXaWR0aCkge1xuICAgICAgICBsZWZ0ID0gcG9pbnQueCAtIGl0ZW1SZWN0LndpZHRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJvdHRvbSA9IHBvaW50LnkgKyBpdGVtUmVjdC5oZWlnaHQ7XG4gICAgbGV0IHRvcDogbnVtYmVyO1xuXG4gICAgaWYgKGJvdHRvbSA+IHdpbmRvd0hlaWdodCkge1xuICAgICAgdG9wID0gcG9pbnQueSAtIGl0ZW1SZWN0LmhlaWdodDtcbiAgICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICAgIHRvcCA9IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvcCA9IHBvaW50Lnk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50UmVmLCAnbGVmdCcsIGAke2xlZnR9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYsICd0b3AnLCBgJHt0b3B9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYsICdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgdGhpcy5jcmVhdGVCYWNrZHJvcCgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBjcmVhdGVCYWNrZHJvcCgpIHtcbiAgICB0aGlzLmJhY2tkcm9wRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ3RvcCcsICcwJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2xlZnQnLCAnMCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsZW1lbnQsICd3aWR0aCcsICcxMDAlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2hlaWdodCcsICcxMDAlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ3otaW5kZXgnLCAnOTk5Jyk7IC8vIEVuc3VyZSBpdCdzIGJlbG93IHRoZSBjb250ZXh0IG1lbnVcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnYmFja2dyb3VuZCcsICd0cmFuc3BhcmVudCcpO1xuXG4gICAgY29uc3QgbDEgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgbDEoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGwyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5iYWNrZHJvcEVsZW1lbnQsICd3aGVlbCcsICgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIGwyKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBsMyA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnY29udGV4dG1lbnUnLCAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgLy8gR2V0IGFsbCBlbGVtZW50cyB1bmRlciB0aGUgbW91c2UgcG9pbnRlclxuICAgICAgY29uc3QgZWxlbWVudHNVbmRlck1vdXNlID0gdGhpcy5kb2N1bWVudC5lbGVtZW50c0Zyb21Qb2ludChlLngsIGUueSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpO1xuICAgICAgaWYgKHRhcmdldEVsZW1lbnRzLnNvbWUoKHRhcmdldCkgPT4gZWxlbWVudHNVbmRlck1vdXNlLmluY2x1ZGVzKHRhcmdldCkpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgLy90aGlzLmludGVybmFsU2hvd0F0KHsgeDogZS54LCB5OiBlLnkgfSk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVDb250ZXh0TWVudShlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsMygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuYmFja2Ryb3BFbGVtZW50KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVtb3ZlQmFja2Ryb3AoKSB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3BFbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5iYWNrZHJvcEVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICB0aGlzLmJhY2tkcm9wRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuYmFja2Ryb3BFbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYmFja2Ryb3BFbGVtZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3N0IExpc3RlbmVycyAoVUkgSW50ZXJhY3Rpb24gSGFuZGxpbmcpXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBwcml2YXRlIG9uV2luZG93RXZlbnQoKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gdGhpcyBhcyBhbnkgYXMgQVhSb290TWVudTtcbiAgICB0aGlzLnNlcnZpY2UuY2xvc2VBbGxDb250ZXh0TWVudSQubmV4dCh7IHNlbmRlcjogc2VuZGVyIH0pOyAvLyBDbG9zZSBhbGwgbWVudXMgb24gc2Nyb2xsIG9yIHJlc2l6ZVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBhbnkge1xuICAgIHJldHVybiBbXG4gICAgICAnYXgtbWVudS1jb250YWluZXInLFxuICAgICAgYGF4LW9yaWVudGF0aW9uLSR7dGhpcy5vcmllbnRhdGlvbigpfWAsXG4gICAgICAnYXgtYWN0aW9uLWxpc3QnLFxuICAgICAgJ2F4LWFjdGlvbi1saXN0LXZlcnRpY2FsJyxcbiAgICBdO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1tZW51LWl0ZW0sYXgtZGl2aWRlcixheC10aXRsZSxuZy1jb250YWluZXJcIj48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nRm9yPVwibGV0IG5vZGUgb2YgaXRlbXMoKVwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlJlY3Vyc2lvblwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCJcbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNSZWN1cnNpb24gbGV0LWl0ZW0+XG4gIEBpZiAoaXRlbS5ncm91cD8udGl0bGUpIHtcbiAgICA8YXgtdGl0bGU+e3sgaXRlbS5ncm91cD8udGl0bGUgfX08L2F4LXRpdGxlPlxuICB9XG4gIDxheC1tZW51LWl0ZW0gW25hbWVdPVwiaXRlbS5uYW1lXCIgW2RhdGFdPVwiaXRlbS5kYXRhXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiPlxuICAgIDxheC1wcmVmaXg+XG4gICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgfVxuICAgIDwvYXgtcHJlZml4PlxuICAgIEBpZiAoaXRlbS50ZXh0KSB7XG4gICAgICA8YXgtdGV4dD57eyBpdGVtLnRleHQgfX08L2F4LXRleHQ+XG4gICAgfVxuICAgIEBpZiAoaXRlbS5zdWZmaXgpIHtcbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC10ZXh0Pnt7IGl0ZW0uc3VmZml4LnRleHQgfX08L2F4LXRleHQ+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICB9XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uaXRlbXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiUmVjdXJzaW9uXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY2hpbGQgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2F4LW1lbnUtaXRlbT5cbiAgQGlmIChpdGVtLmJyZWFrKSB7XG4gICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,5 +1,5 @@
1
1
  import { AXClearableComponent, AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/components/common';
2
- import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, ViewEncapsulation, forwardRef, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, ViewEncapsulation, forwardRef, input, } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { classes } from 'polytype';
5
5
  import * as i0 from "@angular/core";
@@ -24,6 +24,14 @@ export class AXPasswordBoxComponent extends classes((MXInputBaseValueComponent),
24
24
  * A flag for showing or hiding password button.
25
25
  */
26
26
  this.showToggleButton = true;
27
+ /**
28
+ * Hint status.
29
+ */
30
+ this.showHint = input(false);
31
+ /**
32
+ * Progress status.
33
+ */
34
+ this.showProgress = input(false);
27
35
  }
28
36
  /** @ignore */
29
37
  _handleModelChange(value) {
@@ -43,7 +51,7 @@ export class AXPasswordBoxComponent extends classes((MXInputBaseValueComponent),
43
51
  }
44
52
  }
45
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPasswordBoxComponent, selector: "ax-password-box", inputs: { readonly: "readonly", disabled: "disabled", tabIndex: "tabIndex", placeholder: "placeholder", value: "value", state: "state", name: "name", id: "id", look: "look", autoComplete: "autoComplete", showToggleButton: "showToggleButton", classNames: ["class", "classNames"] }, outputs: { valueChange: "valueChange", stateChange: "stateChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", readonlyChange: "readonlyChange", disabledChange: "disabledChange", onKeyDown: "onKeyDown", onKeyUp: "onKeyUp", onKeyPress: "onKeyPress" }, providers: [
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPasswordBoxComponent, selector: "ax-password-box", inputs: { readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: false, isRequired: false, transformFunction: null }, autoComplete: { classPropertyName: "autoComplete", publicName: "autoComplete", isSignal: false, isRequired: false, transformFunction: null }, showToggleButton: { classPropertyName: "showToggleButton", publicName: "showToggleButton", isSignal: false, isRequired: false, transformFunction: null }, classNames: { classPropertyName: "classNames", publicName: "class", isSignal: false, isRequired: false, transformFunction: null }, showHint: { classPropertyName: "showHint", publicName: "showHint", isSignal: true, isRequired: false, transformFunction: null }, showProgress: { classPropertyName: "showProgress", publicName: "showProgress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", stateChange: "stateChange", onValueChanged: "onValueChanged", onBlur: "onBlur", onFocus: "onFocus", readonlyChange: "readonlyChange", disabledChange: "disabledChange", onKeyDown: "onKeyDown", onKeyUp: "onKeyUp", onKeyPress: "onKeyPress" }, providers: [
47
55
  { provide: AXComponent, useExisting: AXPasswordBoxComponent },
48
56
  { provide: AXFocusableComponent, useExisting: AXPasswordBoxComponent },
49
57
  { provide: AXClearableComponent, useExisting: AXPasswordBoxComponent },
@@ -53,7 +61,7 @@ export class AXPasswordBoxComponent extends classes((MXInputBaseValueComponent),
53
61
  useExisting: forwardRef(() => AXPasswordBoxComponent),
54
62
  multi: true,
55
63
  },
56
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-editor-container ax-look-{{ look }} {{ classNames }}\" [class.ax-state-disabled]=\"disabled\">\n <ng-content select=\"ax-prefix\"> </ng-content>\n <input\n #input\n class=\"ax-input\"\n [name]=\"name\"\n [type]=\"_type\"\n [id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n [attr.autocomplete]=\"autoComplete\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n />\n @if (value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n @if (showToggleButton) {\n <button type=\"button\" class=\"ax-general-button ax-button-icon\" (click)=\"toggleType()\" [tabIndex]=\"-1\">\n <span class=\"ax-icon {{ _icon }}\"></span>\n </button>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n\n<div class=\"ax-strength-validation-container\">\n <ng-content select=\"ax-password-strength-validation\"></ng-content>\n</div>\n", styles: [".ax-strength-validation-container{margin-top:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
64
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-editor-container ax-look-{{ look }} {{ classNames }}\" [class.ax-state-disabled]=\"disabled\">\n <ng-content select=\"ax-prefix\"> </ng-content>\n <input\n #input\n class=\"ax-input\"\n [name]=\"name\"\n [type]=\"_type\"\n [id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n [attr.autocomplete]=\"autoComplete\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n />\n @if (value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n @if (showToggleButton) {\n <button type=\"button\" class=\"ax-general-button ax-button-icon\" (click)=\"toggleType()\" [tabIndex]=\"-1\">\n <span class=\"ax-icon {{ _icon }}\"></span>\n </button>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n\n<div class=\"ax-strength-validation-container\">\n <ng-content select=\"ax-password-strength-validation\" [showHint]=\"showStrength()\"></ng-content>\n</div>\n", styles: [".ax-strength-validation-container{margin-top:.25rem}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
57
65
  }
58
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordBoxComponent, decorators: [{
59
67
  type: Component,
@@ -78,7 +86,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
78
86
  useExisting: forwardRef(() => AXPasswordBoxComponent),
79
87
  multi: true,
80
88
  },
81
- ], template: "<div class=\"ax-editor-container ax-look-{{ look }} {{ classNames }}\" [class.ax-state-disabled]=\"disabled\">\n <ng-content select=\"ax-prefix\"> </ng-content>\n <input\n #input\n class=\"ax-input\"\n [name]=\"name\"\n [type]=\"_type\"\n [id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n [attr.autocomplete]=\"autoComplete\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n />\n @if (value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n @if (showToggleButton) {\n <button type=\"button\" class=\"ax-general-button ax-button-icon\" (click)=\"toggleType()\" [tabIndex]=\"-1\">\n <span class=\"ax-icon {{ _icon }}\"></span>\n </button>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n\n<div class=\"ax-strength-validation-container\">\n <ng-content select=\"ax-password-strength-validation\"></ng-content>\n</div>\n", styles: [".ax-strength-validation-container{margin-top:.5rem}\n"] }]
89
+ ], template: "<div class=\"ax-editor-container ax-look-{{ look }} {{ classNames }}\" [class.ax-state-disabled]=\"disabled\">\n <ng-content select=\"ax-prefix\"> </ng-content>\n <input\n #input\n class=\"ax-input\"\n [name]=\"name\"\n [type]=\"_type\"\n [id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n [attr.autocomplete]=\"autoComplete\"\n (ngModelChange)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n />\n @if (value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n @if (showToggleButton) {\n <button type=\"button\" class=\"ax-general-button ax-button-icon\" (click)=\"toggleType()\" [tabIndex]=\"-1\">\n <span class=\"ax-icon {{ _icon }}\"></span>\n </button>\n }\n <ng-content select=\"ax-suffix\"> </ng-content>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n\n<div class=\"ax-strength-validation-container\">\n <ng-content select=\"ax-password-strength-validation\" [showHint]=\"showStrength()\"></ng-content>\n</div>\n", styles: [".ax-strength-validation-container{margin-top:.25rem}\n"] }]
82
90
  }], propDecorators: { input: [{
83
91
  type: ViewChild,
84
92
  args: ['input']
@@ -90,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
90
98
  type: Input,
91
99
  args: ['class']
92
100
  }] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bhc3N3b3JkLWJveC9zcmMvbGliL3Bhc3N3b3JkLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFFbkM7Ozs7R0FJRztBQXFDSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsT0FBTyxDQUFDLENBQUEseUJBQWlDLENBQUEsRUFBRSxlQUFlLENBQUM7SUFwQ3ZHOztRQXdDRSxjQUFjO1FBQ0osVUFBSyxHQUF3QixVQUFVLENBQUM7UUFFbEQsY0FBYztRQUNKLFVBQUssR0FBb0Qsb0JBQW9CLENBQUM7UUFFeEY7O1dBRUc7UUFFSCxpQkFBWSxHQUFrRSxlQUFlLENBQUM7UUFFOUY7O1dBRUc7UUFFSCxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7S0E4QnpCO0lBdEJDLGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyx3QkFBd0IsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7OEdBNUNVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBsQkFadEI7WUFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQzdELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUN0RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7WUFDdEUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQ3JFO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpSkMzREgsbTZDQXVDQTs7MkZEc0JhLHNCQUFzQjtrQkFwQ2xDLFNBQVM7K0JBQ0UsaUJBQWlCLFVBRW5CLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsV0FNMUY7d0JBQ1AsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsWUFBWTtxQkFDYixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBRXBDO3dCQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUM3RCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUN0RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUN0RSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUNyRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBSW1CLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFZbEIsWUFBWTtzQkFEWCxLQUFLO2dCQU9OLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLFVBQVU7c0JBRFQsS0FBSzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhDbGVhcmFibGVDb21wb25lbnQsXG4gIEFYQ29tcG9uZW50LFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudCxcbiAgTVhMb29rQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcblxuLyoqXG4gKiBUaGUgVGV4dGJveCBpcyBhIGNvbXBvbmVudCB3aGljaCBkZXRlY3RzIHVzZXIgaW50ZXJhY3Rpb24gYW5kIHRyaWdnZXJzIGEgY29ycmVzcG9uZGluZyBldmVudFxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXBhc3N3b3JkLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAncGFzc3dvcmQtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgaW5wdXRzOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJywgJ3RhYkluZGV4JywgJ3BsYWNlaG9sZGVyJywgJ3ZhbHVlJywgJ3N0YXRlJywgJ25hbWUnLCAnaWQnLCAnbG9vayddLFxuICBzdHlsZXM6IGBcbiAgICAuYXgtc3RyZW5ndGgtdmFsaWRhdGlvbi1jb250YWluZXIge1xuICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgIH1cbiAgYCxcbiAgb3V0cHV0czogW1xuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ3N0YXRlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAncmVhZG9ubHlDaGFuZ2UnLFxuICAgICdkaXNhYmxlZENoYW5nZScsXG4gICAgJ29uS2V5RG93bicsXG4gICAgJ29uS2V5VXAnLFxuICAgICdvbktleVByZXNzJyxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUGFzc3dvcmRCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQYXNzd29yZEJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhDbGVhcmFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBhc3N3b3JkQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQYXNzd29yZEJveENvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhQYXNzd29yZEJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBhc3N3b3JkQm94Q29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50PHN0cmluZz4sIE1YTG9va0NvbXBvbmVudCkge1xuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfdHlwZTogJ3Bhc3N3b3JkJyB8ICd0ZXh0JyA9ICdwYXNzd29yZCc7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF9pY29uOiAnYXgtaWNvbi12aXNpYmlsaXR5JyB8ICdheC1pY29uLXZpc2liaWxpdHktb2ZmJyA9ICdheC1pY29uLXZpc2liaWxpdHknO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhdXRvY29tcGxldGUgYmVoYXZpb3IgZm9yIHRoZSBpbnB1dCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGF1dG9Db21wbGV0ZTogJ2N1cnJlbnQtcGFzc3dvcmQnIHwgJ25ldy1wYXNzd29yZCcgfCAnb25lLXRpbWUtY29kZScgfCAnb2ZmJyA9ICdvbmUtdGltZS1jb2RlJztcblxuICAvKipcbiAgICogIEEgZmxhZyBmb3Igc2hvd2luZyBvciBoaWRpbmcgcGFzc3dvcmQgYnV0dG9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd1RvZ2dsZUJ1dHRvbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgY3VzdG9tIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoJ2NsYXNzJylcbiAgY2xhc3NOYW1lczogc3RyaW5nO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIF9oYW5kbGVNb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb21taXRWYWx1ZSh2YWx1ZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgaW5wdXQgdHlwZSBiZXR3ZWVuICdwYXNzd29yZCcgYW5kICd0ZXh0JyB0byBzaG93IG9yIGhpZGUgdGhlIHBhc3N3b3JkLlxuICAgKi9cbiAgdG9nZ2xlVHlwZSgpIHtcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgdGhpcy5fdHlwZSA9ICd0ZXh0JztcbiAgICAgIHRoaXMuX2ljb24gPSAnYXgtaWNvbi12aXNpYmlsaXR5LW9mZic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3R5cGUgPSAncGFzc3dvcmQnO1xuICAgICAgdGhpcy5faWNvbiA9ICdheC1pY29uLXZpc2liaWxpdHknO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAvLyBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nW10ge1xuICAvLyAgIHJldHVybiBbJ2F4LWVkaXRvci1jb250YWluZXInLCBgYXgtbG9vay0ke3RoaXMubG9va31gLCBgJHt0aGlzLmRpc2FibGVkID8gJ2F4LXN0YXRlLWRpc2FibGVkJyA6ICcnfWBdO1xuICAvLyB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtZWRpdG9yLWNvbnRhaW5lciBheC1sb29rLXt7IGxvb2sgfX0ge3sgY2xhc3NOYW1lcyB9fVwiIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj4gPC9uZy1jb250ZW50PlxuICA8aW5wdXRcbiAgICAjaW5wdXRcbiAgICBjbGFzcz1cImF4LWlucHV0XCJcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICBbdHlwZV09XCJfdHlwZVwiXG4gICAgW2lkXT1cImlkXCJcbiAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbY2xhc3MuYXgtc3RhdGUtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICBbYXR0ci5hdXRvY29tcGxldGVdPVwiYXV0b0NvbXBsZXRlXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJfaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwiZW1pdE9uS2V5ZG93bkV2ZW50KCRldmVudClcIlxuICAgIChrZXl1cCk9XCJlbWl0T25LZXl1cEV2ZW50KCRldmVudClcIlxuICAgIChrZXlwcmVzcyk9XCJlbWl0T25LZXlwcmVzc0V2ZW50KCRldmVudClcIlxuICAgIChmb2N1cyk9XCJlbWl0T25Gb2N1c0V2ZW50KCRldmVudClcIlxuICAgIChibHVyKT1cImVtaXRPbkJsdXJFdmVudCgkZXZlbnQpXCJcbiAgLz5cbiAgQGlmICh2YWx1ZSAmJiAhZGlzYWJsZWQgJiYgIXJlYWRvbmx5KSB7XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY2xlYXItYnV0dG9uXCI+PC9uZy1jb250ZW50PlxuICB9XG4gIEBpZiAoc2hvd1RvZ2dsZUJ1dHRvbikge1xuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYXgtZ2VuZXJhbC1idXR0b24gYXgtYnV0dG9uLWljb25cIiAoY2xpY2spPVwidG9nZ2xlVHlwZSgpXCIgW3RhYkluZGV4XT1cIi0xXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImF4LWljb24ge3sgX2ljb24gfX1cIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIH1cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+IDwvbmctY29udGVudD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdmFsaWRhdGlvbi1ydWxlXCI+IDwvbmctY29udGVudD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImF4LWVycm9yLWNvbnRhaW5lclwiPjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiYXgtc3RyZW5ndGgtdmFsaWRhdGlvbi1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtcGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvblwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bhc3N3b3JkLWJveC9zcmMvbGliL3Bhc3N3b3JkLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBRW5DOzs7O0dBSUc7QUFxQ0gsTUFBTSxPQUFPLHNCQUF1QixTQUFRLE9BQU8sQ0FBQyxDQUFBLHlCQUFpQyxDQUFBLEVBQUUsZUFBZSxDQUFDO0lBcEN2Rzs7UUF3Q0UsY0FBYztRQUNKLFVBQUssR0FBd0IsVUFBVSxDQUFDO1FBRWxELGNBQWM7UUFDSixVQUFLLEdBQW9ELG9CQUFvQixDQUFDO1FBRXhGOztXQUVHO1FBRUgsaUJBQVksR0FBa0UsZUFBZSxDQUFDO1FBRTlGOztXQUVHO1FBRUgscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBUXhCOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4Qjs7V0FFRztRQUNILGlCQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBd0I3QjtJQXRCQyxjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsd0JBQXdCLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLG9CQUFvQixDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDOzhHQXREVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixxbUVBWnRCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUM3RCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7WUFDdEUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQ3RFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNyRTtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUNyRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaUpDNURILGk4Q0F1Q0E7OzJGRHVCYSxzQkFBc0I7a0JBcENsQyxTQUFTOytCQUNFLGlCQUFpQixVQUVuQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBTTFGO3dCQUNQLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1IsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxTQUFTO3dCQUNULFlBQVk7cUJBQ2IsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUVwQzt3QkFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDN0QsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDdEUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDdEUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDckU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUltQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBWWxCLFlBQVk7c0JBRFgsS0FBSztnQkFPTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xlYXJhYmxlQ29tcG9uZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQsXG4gIE1YTG9va0NvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuXG4vKipcbiAqIFRoZSBUZXh0Ym94IGlzIGEgY29tcG9uZW50IHdoaWNoIGRldGVjdHMgdXNlciBpbnRlcmFjdGlvbiBhbmQgdHJpZ2dlcnMgYSBjb3JyZXNwb25kaW5nIGV2ZW50XG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcGFzc3dvcmQtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICdwYXNzd29yZC1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBpbnB1dHM6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAndGFiSW5kZXgnLCAncGxhY2Vob2xkZXInLCAndmFsdWUnLCAnc3RhdGUnLCAnbmFtZScsICdpZCcsICdsb29rJ10sXG4gIHN0eWxlczogYFxuICAgIC5heC1zdHJlbmd0aC12YWxpZGF0aW9uLWNvbnRhaW5lciB7XG4gICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgIH1cbiAgYCxcbiAgb3V0cHV0czogW1xuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ3N0YXRlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAncmVhZG9ubHlDaGFuZ2UnLFxuICAgICdkaXNhYmxlZENoYW5nZScsXG4gICAgJ29uS2V5RG93bicsXG4gICAgJ29uS2V5VXAnLFxuICAgICdvbktleVByZXNzJyxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUGFzc3dvcmRCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQYXNzd29yZEJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhDbGVhcmFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBhc3N3b3JkQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQYXNzd29yZEJveENvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhQYXNzd29yZEJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBhc3N3b3JkQm94Q29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50PHN0cmluZz4sIE1YTG9va0NvbXBvbmVudCkge1xuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfdHlwZTogJ3Bhc3N3b3JkJyB8ICd0ZXh0JyA9ICdwYXNzd29yZCc7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF9pY29uOiAnYXgtaWNvbi12aXNpYmlsaXR5JyB8ICdheC1pY29uLXZpc2liaWxpdHktb2ZmJyA9ICdheC1pY29uLXZpc2liaWxpdHknO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhdXRvY29tcGxldGUgYmVoYXZpb3IgZm9yIHRoZSBpbnB1dCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGF1dG9Db21wbGV0ZTogJ2N1cnJlbnQtcGFzc3dvcmQnIHwgJ25ldy1wYXNzd29yZCcgfCAnb25lLXRpbWUtY29kZScgfCAnb2ZmJyA9ICdvbmUtdGltZS1jb2RlJztcblxuICAvKipcbiAgICogIEEgZmxhZyBmb3Igc2hvd2luZyBvciBoaWRpbmcgcGFzc3dvcmQgYnV0dG9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd1RvZ2dsZUJ1dHRvbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgY3VzdG9tIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoJ2NsYXNzJylcbiAgY2xhc3NOYW1lczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIaW50IHN0YXR1cy5cbiAgICovXG4gIHNob3dIaW50ID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBQcm9ncmVzcyBzdGF0dXMuXG4gICAqL1xuICBzaG93UHJvZ3Jlc3MgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2hhbmRsZU1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbW1pdFZhbHVlKHZhbHVlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBpbnB1dCB0eXBlIGJldHdlZW4gJ3Bhc3N3b3JkJyBhbmQgJ3RleHQnIHRvIHNob3cgb3IgaGlkZSB0aGUgcGFzc3dvcmQuXG4gICAqL1xuICB0b2dnbGVUeXBlKCkge1xuICAgIGlmICh0aGlzLl90eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICB0aGlzLl90eXBlID0gJ3RleHQnO1xuICAgICAgdGhpcy5faWNvbiA9ICdheC1pY29uLXZpc2liaWxpdHktb2ZmJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdHlwZSA9ICdwYXNzd29yZCc7XG4gICAgICB0aGlzLl9pY29uID0gJ2F4LWljb24tdmlzaWJpbGl0eSc7XG4gICAgfVxuICB9XG5cbiAgLy8gQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIC8vIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmdbXSB7XG4gIC8vICAgcmV0dXJuIFsnYXgtZWRpdG9yLWNvbnRhaW5lcicsIGBheC1sb29rLSR7dGhpcy5sb29rfWAsIGAke3RoaXMuZGlzYWJsZWQgPyAnYXgtc3RhdGUtZGlzYWJsZWQnIDogJyd9YF07XG4gIC8vIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1lZGl0b3ItY29udGFpbmVyIGF4LWxvb2ste3sgbG9vayB9fSB7eyBjbGFzc05hbWVzIH19XCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXByZWZpeFwiPiA8L25nLWNvbnRlbnQ+XG4gIDxpbnB1dFxuICAgICNpbnB1dFxuICAgIGNsYXNzPVwiYXgtaW5wdXRcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFt0eXBlXT1cIl90eXBlXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtjbGFzcy5heC1zdGF0ZS1yZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4gICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGVcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9oYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJlbWl0T25LZXlkb3duRXZlbnQoJGV2ZW50KVwiXG4gICAgKGtleXVwKT1cImVtaXRPbktleXVwRXZlbnQoJGV2ZW50KVwiXG4gICAgKGtleXByZXNzKT1cImVtaXRPbktleXByZXNzRXZlbnQoJGV2ZW50KVwiXG4gICAgKGZvY3VzKT1cImVtaXRPbkZvY3VzRXZlbnQoJGV2ZW50KVwiXG4gICAgKGJsdXIpPVwiZW1pdE9uQmx1ckV2ZW50KCRldmVudClcIlxuICAvPlxuICBAaWYgKHZhbHVlICYmICFkaXNhYmxlZCAmJiAhcmVhZG9ubHkpIHtcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jbGVhci1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gIH1cbiAgQGlmIChzaG93VG9nZ2xlQnV0dG9uKSB7XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiIChjbGljayk9XCJ0b2dnbGVUeXBlKClcIiBbdGFiSW5kZXhdPVwiLTFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXgtaWNvbiB7eyBfaWNvbiB9fVwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zdWZmaXhcIj4gPC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC12YWxpZGF0aW9uLXJ1bGVcIj4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXgtZXJyb3ItY29udGFpbmVyXCI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJheC1zdHJlbmd0aC12YWxpZGF0aW9uLWNvbnRhaW5lclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uXCIgW3Nob3dIaW50XT1cInNob3dTdHJlbmd0aCgpXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -1,6 +1,8 @@
1
+ import { AXBadgeModule } from '@acorex/components/badge';
1
2
  import { AXButtonModule } from '@acorex/components/button';
2
3
  import { AXDecoratorModule } from '@acorex/components/decorators';
3
4
  import { AXProgressBarModule } from '@acorex/components/progress-bar';
5
+ import { AXTranslationModule } from '@acorex/core/translation';
4
6
  import { CommonModule } from '@angular/common';
5
7
  import { NgModule } from '@angular/core';
6
8
  import { FormsModule } from '@angular/forms';
@@ -8,10 +10,24 @@ import { AXPasswordBoxComponent } from './password-box.component';
8
10
  import { AXPasswordStrengthValidationComponent } from './password-strength-validation/password-strength-validation.component';
9
11
  import * as i0 from "@angular/core";
10
12
  const COMPONENT = [AXPasswordBoxComponent, AXPasswordStrengthValidationComponent];
11
- const MODULES = [CommonModule, FormsModule, AXButtonModule, AXDecoratorModule, AXProgressBarModule];
13
+ const MODULES = [
14
+ CommonModule,
15
+ FormsModule,
16
+ AXButtonModule,
17
+ AXDecoratorModule,
18
+ AXProgressBarModule,
19
+ AXBadgeModule,
20
+ AXTranslationModule,
21
+ ];
12
22
  export class AXPasswordBoxModule {
13
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordBoxModule, declarations: [AXPasswordBoxComponent, AXPasswordStrengthValidationComponent], imports: [CommonModule, FormsModule, AXButtonModule, AXDecoratorModule, AXProgressBarModule], exports: [AXPasswordBoxComponent, AXPasswordStrengthValidationComponent] }); }
24
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordBoxModule, declarations: [AXPasswordBoxComponent, AXPasswordStrengthValidationComponent], imports: [CommonModule,
25
+ FormsModule,
26
+ AXButtonModule,
27
+ AXDecoratorModule,
28
+ AXProgressBarModule,
29
+ AXBadgeModule,
30
+ AXTranslationModule], exports: [AXPasswordBoxComponent, AXPasswordStrengthValidationComponent] }); }
15
31
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordBoxModule, imports: [MODULES] }); }
16
32
  }
17
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordBoxModule, decorators: [{
@@ -23,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
23
39
  providers: [],
24
40
  }]
25
41
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtYm94Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1ib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7O0FBRTlILE1BQU0sU0FBUyxHQUFHLENBQUMsc0JBQXNCLEVBQUUscUNBQXFDLENBQUMsQ0FBQztBQUNsRixNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFRcEcsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsaUJBVGIsc0JBQXNCLEVBQUUscUNBQXFDLGFBQy9ELFlBQVksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixhQUQvRSxzQkFBc0IsRUFBRSxxQ0FBcUM7K0dBU25FLG1CQUFtQixZQUpqQixPQUFPOzsyRkFJVCxtQkFBbUI7a0JBTi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO29CQUNyQixPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztvQkFDdkIsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQVhQYXNzd29yZEJveENvbXBvbmVudCB9IGZyb20gJy4vcGFzc3dvcmQtYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBhc3N3b3JkU3RyZW5ndGhWYWxpZGF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uL3Bhc3N3b3JkLXN0cmVuZ3RoLXZhbGlkYXRpb24uY29tcG9uZW50JztcblxuY29uc3QgQ09NUE9ORU5UID0gW0FYUGFzc3dvcmRCb3hDb21wb25lbnQsIEFYUGFzc3dvcmRTdHJlbmd0aFZhbGlkYXRpb25Db21wb25lbnRdO1xuY29uc3QgTU9EVUxFUyA9IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBBWEJ1dHRvbk1vZHVsZSwgQVhEZWNvcmF0b3JNb2R1bGUsIEFYUHJvZ3Jlc3NCYXJNb2R1bGVdO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRdLFxuICBpbXBvcnRzOiBbLi4uTU9EVUxFU10sXG4gIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBhc3N3b3JkQm94TW9kdWxlIHt9XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtYm94Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1ib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOztBQUU5SCxNQUFNLFNBQVMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLHFDQUFxQyxDQUFDLENBQUM7QUFDbEYsTUFBTSxPQUFPLEdBQUc7SUFDZCxZQUFZO0lBQ1osV0FBVztJQUNYLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixtQkFBbUI7Q0FDcEIsQ0FBQztBQVFGLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLGlCQWpCYixzQkFBc0IsRUFBRSxxQ0FBcUMsYUFFOUUsWUFBWTtZQUNaLFdBQVc7WUFDWCxjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2IsbUJBQW1CLGFBUkYsc0JBQXNCLEVBQUUscUNBQXFDOytHQWlCbkUsbUJBQW1CLFlBSmpCLE9BQU87OzJGQUlULG1CQUFtQjtrQkFOL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztvQkFDNUIsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ3JCLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQVhQYXNzd29yZEJveENvbXBvbmVudCB9IGZyb20gJy4vcGFzc3dvcmQtYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBhc3N3b3JkU3RyZW5ndGhWYWxpZGF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uL3Bhc3N3b3JkLXN0cmVuZ3RoLXZhbGlkYXRpb24uY29tcG9uZW50JztcblxuY29uc3QgQ09NUE9ORU5UID0gW0FYUGFzc3dvcmRCb3hDb21wb25lbnQsIEFYUGFzc3dvcmRTdHJlbmd0aFZhbGlkYXRpb25Db21wb25lbnRdO1xuY29uc3QgTU9EVUxFUyA9IFtcbiAgQ29tbW9uTW9kdWxlLFxuICBGb3Jtc01vZHVsZSxcbiAgQVhCdXR0b25Nb2R1bGUsXG4gIEFYRGVjb3JhdG9yTW9kdWxlLFxuICBBWFByb2dyZXNzQmFyTW9kdWxlLFxuICBBWEJhZGdlTW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbLi4uQ09NUE9ORU5UXSxcbiAgaW1wb3J0czogWy4uLk1PRFVMRVNdLFxuICBleHBvcnRzOiBbLi4uQ09NUE9ORU5UXSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQYXNzd29yZEJveE1vZHVsZSB7fVxuIl19
@@ -2,40 +2,62 @@ import { afterNextRender, ChangeDetectionStrategy, Component, inject, signal, Vi
2
2
  import { AXPasswordBoxComponent } from '../password-box.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@acorex/components/progress-bar";
5
+ import * as i2 from "@acorex/components/badge";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@acorex/core/translation";
5
8
  export class AXPasswordStrengthValidationComponent {
6
9
  constructor() {
7
10
  this.passwordStrength = signal(0);
8
- this.strengthLabel = signal('week');
11
+ this.updatedPassword = signal('');
12
+ this.strengthLabel = signal('fragile');
9
13
  this.strengthLabelColor = signal('danger');
10
14
  this.parent = inject(AXPasswordBoxComponent);
15
+ this.isLenghtgraterThan8 = signal({ regex: /.{8,}/, state: false });
16
+ this.isUseUpperCase = signal({ regex: /[A-Z]/, state: false });
17
+ this.isUseLowerCase = signal({ regex: /[a-z]/, state: false });
18
+ this.isUseNumber = signal({ regex: /\d/, state: false });
19
+ this.isUseSpecialCharacter = signal({
20
+ regex: /[!@#$%^&*(),.?":{}|<>]/,
21
+ state: false,
22
+ });
11
23
  this.#onComponentInit = afterNextRender(() => {
12
24
  this.parent.onValueChanged.subscribe((v) => {
13
25
  if (v.value) {
14
- this.checkPasswordStrength(v.value);
26
+ this.updatedPassword.set(v.value);
15
27
  }
16
28
  else {
17
- this.passwordStrength.set(0);
29
+ this.updatedPassword.set('');
18
30
  }
31
+ this.checkPasswordStrength();
19
32
  });
20
33
  });
21
34
  }
22
35
  #onComponentInit;
23
- checkPasswordStrength(password) {
36
+ checkRegexHandler(inter) {
37
+ if (inter().regex.test(this.updatedPassword())) {
38
+ inter.update((prev) => ({ ...prev, state: true }));
39
+ return true;
40
+ }
41
+ inter.update((prev) => ({ ...prev, state: false }));
42
+ return false;
43
+ }
44
+ checkPasswordStrength() {
24
45
  let strength = 0;
25
- const criteria = [/.{8,}/, /[A-Z]/, /[a-z]/, /\d/, /[!@#$%^&*(),.?":{}|<>]/];
26
- criteria.forEach((regex) => {
27
- if (regex.test(password))
28
- strength++;
29
- });
30
- this.strengthLabel.set(strength <= 2 ? 'Week' : strength == 3 ? 'So-so' : strength == 4 ? 'Good' : 'Great');
46
+ this.checkRegexHandler(this.isLenghtgraterThan8) && strength++;
47
+ this.checkRegexHandler(this.isUseUpperCase) && strength++;
48
+ this.checkRegexHandler(this.isUseLowerCase) && strength++;
49
+ this.checkRegexHandler(this.isUseNumber) && strength++;
50
+ this.checkRegexHandler(this.isUseSpecialCharacter) && strength++;
51
+ const strengthLabels = ['fragile', 'fragile', 'weak', 'good', 'strong', 'unbreakable'];
52
+ this.strengthLabel.set(strengthLabels[strength]);
31
53
  this.strengthLabelColor.set(strength <= 2 ? 'danger' : strength <= 3 ? 'warning' : 'success');
32
- this.passwordStrength.set((strength * 100) / criteria.length);
54
+ this.passwordStrength.set((strength * 100) / 5);
33
55
  }
34
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordStrengthValidationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPasswordStrengthValidationComponent, selector: "ax-password-strength-validation", ngImport: i0, template: "<ax-progress-bar\n [color]=\"strengthLabelColor()\"\n [progress]=\"passwordStrength()\"\n [height]=\"4\"\n></ax-progress-bar>\n<small\n class=\"ax-whitespace-nowrap ax-px-3 ax-text-center\"\n [class.ax-text-danger]=\"strengthLabelColor() === 'danger'\"\n [class.ax-text-warning]=\"strengthLabelColor() === 'warning'\"\n [class.ax-text-success]=\"strengthLabelColor() === 'success'\"\n >{{ strengthLabel() }}\n</small>\n", dependencies: [{ kind: "component", type: i1.AXProgressBarComponent, selector: "ax-progress-bar", inputs: ["color", "mode", "progress", "height"], outputs: ["ValueChange", "sizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPasswordStrengthValidationComponent, selector: "ax-password-strength-validation", ngImport: i0, template: "@if (parent.showProgress()) {\n <small\n class=\"ax-state-password\"\n [class.ax-text-red]=\"strengthLabelColor() === 'danger'\"\n [class.ax-text-orange]=\"strengthLabelColor() === 'warning'\"\n [class.ax-text-green]=\"strengthLabelColor() === 'success'\"\n >\n {{ strengthLabel() | translate | async }}\n </small>\n\n <ax-progress-bar\n [color]=\"strengthLabelColor()\"\n [progress]=\"passwordStrength()\"\n [height]=\"4\"\n ></ax-progress-bar>\n}\n@if (parent.showHint()) {\n <div class=\"ax-hint-container\">\n <small class=\"ax-hint-state\">\n <ax-badge [color]=\"isLenghtgraterThan8().state ? 'success' : 'danger'\"></ax-badge>\n <span [class.ax-line]=\"isLenghtgraterThan8().state\">\n {{ 'at-least-8-characters' | translate | async }}\n </span>\n </small>\n <small class=\"ax-hint-state\" [class.ax-line]=\"isUseUpperCase().state\">\n <ax-badge [color]=\"isUseUpperCase().state ? 'success' : 'danger'\"></ax-badge>\n <span>\n {{ 'english-upper-case-letter' | translate | async }}\n </span>\n </small>\n <small class=\"ax-hint-state\" [class.ax-line]=\"isUseLowerCase().state\">\n <ax-badge [color]=\"isUseLowerCase().state ? 'success' : 'danger'\"></ax-badge>\n <span>\n {{ 'english-lower-case-letter' | translate | async }}\n </span>\n </small>\n <small class=\"ax-hint-state\" [class.ax-line]=\"isUseNumber().state\">\n <ax-badge [color]=\"isUseNumber().state ? 'success' : 'danger'\"></ax-badge\n ><span> {{ 'digits' | translate | async }} </span>\n </small>\n <small class=\"ax-hint-state\" [class.ax-line]=\"isUseSpecialCharacter().state\">\n <ax-badge [color]=\"isUseSpecialCharacter().state ? 'success' : 'danger'\"></ax-badge>\n <span>\n {{ 'special-character' | translate | async }}\n </span>\n </small>\n </div>\n}\n", styles: [".ax-state-password.ax-text-red{color:rgb(var(--ax-color-danger-500))}.ax-state-password.ax-text-orange{color:rgb(var(--ax-color-warning-500))}.ax-state-password.ax-text-green{color:rgb(var(--ax-color-success-500))}.ax-hint-container{display:flex;flex-direction:column;gap:.5rem;padding-top:.5rem}.ax-hint-container .ax-line{text-decoration:line-through}\n"], dependencies: [{ kind: "component", type: i1.AXProgressBarComponent, selector: "ax-progress-bar", inputs: ["color", "mode", "progress", "height"], outputs: ["ValueChange", "sizeChange"] }, { kind: "component", type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
36
58
  }
37
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordStrengthValidationComponent, decorators: [{
38
60
  type: Component,
39
- args: [{ selector: 'ax-password-strength-validation', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ax-progress-bar\n [color]=\"strengthLabelColor()\"\n [progress]=\"passwordStrength()\"\n [height]=\"4\"\n></ax-progress-bar>\n<small\n class=\"ax-whitespace-nowrap ax-px-3 ax-text-center\"\n [class.ax-text-danger]=\"strengthLabelColor() === 'danger'\"\n [class.ax-text-warning]=\"strengthLabelColor() === 'warning'\"\n [class.ax-text-success]=\"strengthLabelColor() === 'success'\"\n >{{ strengthLabel() }}\n</small>\n" }]
61
+ args: [{ selector: 'ax-password-strength-validation', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if (parent.showProgress()) {\n <small\n class=\"ax-state-password\"\n [class.ax-text-red]=\"strengthLabelColor() === 'danger'\"\n [class.ax-text-orange]=\"strengthLabelColor() === 'warning'\"\n [class.ax-text-green]=\"strengthLabelColor() === 'success'\"\n >\n {{ strengthLabel() | translate | async }}\n </small>\n\n <ax-progress-bar\n [color]=\"strengthLabelColor()\"\n [progress]=\"passwordStrength()\"\n [height]=\"4\"\n ></ax-progress-bar>\n}\n@if (parent.showHint()) {\n <div class=\"ax-hint-container\">\n <small class=\"ax-hint-state\">\n <ax-badge [color]=\"isLenghtgraterThan8().state ? 'success' : 'danger'\"></ax-badge>\n <span [class.ax-line]=\"isLenghtgraterThan8().state\">\n {{ 'at-least-8-characters' | translate | async }}\n </span>\n </small>\n <small class=\"ax-hint-state\" [class.ax-line]=\"isUseUpperCase().state\">\n <ax-badge [color]=\"isUseUpperCase().state ? 'success' : 'danger'\"></ax-badge>\n <span>\n {{ 'english-upper-case-letter' | translate | async }}\n </span>\n </small>\n <small class=\"ax-hint-state\" [class.ax-line]=\"isUseLowerCase().state\">\n <ax-badge [color]=\"isUseLowerCase().state ? 'success' : 'danger'\"></ax-badge>\n <span>\n {{ 'english-lower-case-letter' | translate | async }}\n </span>\n </small>\n <small class=\"ax-hint-state\" [class.ax-line]=\"isUseNumber().state\">\n <ax-badge [color]=\"isUseNumber().state ? 'success' : 'danger'\"></ax-badge\n ><span> {{ 'digits' | translate | async }} </span>\n </small>\n <small class=\"ax-hint-state\" [class.ax-line]=\"isUseSpecialCharacter().state\">\n <ax-badge [color]=\"isUseSpecialCharacter().state ? 'success' : 'danger'\"></ax-badge>\n <span>\n {{ 'special-character' | translate | async }}\n </span>\n </small>\n </div>\n}\n", styles: [".ax-state-password.ax-text-red{color:rgb(var(--ax-color-danger-500))}.ax-state-password.ax-text-orange{color:rgb(var(--ax-color-warning-500))}.ax-state-password.ax-text-green{color:rgb(var(--ax-color-success-500))}.ax-hint-container{display:flex;flex-direction:column;gap:.5rem;padding-top:.5rem}.ax-hint-container .ax-line{text-decoration:line-through}\n"] }]
40
62
  }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGFzc3dvcmQtYm94L3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvbi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uL3Bhc3N3b3JkLXN0cmVuZ3RoLXZhbGlkYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFRbkUsTUFBTSxPQUFPLHFDQUFxQztJQU5sRDtRQU9ZLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQix1QkFBa0IsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRWxELHFCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztLQWNKO0lBdEJDLGdCQUFnQixDQVFiO0lBRU8scUJBQXFCLENBQUMsUUFBZ0I7UUFDOUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFDN0UsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQUUsUUFBUSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNwRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs4R0EzQlUscUNBQXFDO2tHQUFyQyxxQ0FBcUMsdUVDaEJsRCw2YUFZQTs7MkZESWEscUNBQXFDO2tCQU5qRCxTQUFTOytCQUNFLGlDQUFpQyxtQkFFMUIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUGFzc3dvcmRCb3hDb21wb25lbnQgfSBmcm9tICcuLi9wYXNzd29yZC1ib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFYUGFzc3dvcmRTdHJlbmd0aFZhbGlkYXRpb25Db21wb25lbnQge1xuICBwcm90ZWN0ZWQgcGFzc3dvcmRTdHJlbmd0aCA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHN0cmVuZ3RoTGFiZWwgPSBzaWduYWwoJ3dlZWsnKTtcbiAgcHJvdGVjdGVkIHN0cmVuZ3RoTGFiZWxDb2xvciA9IHNpZ25hbCgnZGFuZ2VyJyk7XG4gIHByb3RlY3RlZCBwYXJlbnQgPSBpbmplY3QoQVhQYXNzd29yZEJveENvbXBvbmVudCk7XG5cbiAgI29uQ29tcG9uZW50SW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgdGhpcy5wYXJlbnQub25WYWx1ZUNoYW5nZWQuc3Vic2NyaWJlKCh2KSA9PiB7XG4gICAgICBpZiAodi52YWx1ZSkge1xuICAgICAgICB0aGlzLmNoZWNrUGFzc3dvcmRTdHJlbmd0aCh2LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aC5zZXQoMCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBjaGVja1Bhc3N3b3JkU3RyZW5ndGgocGFzc3dvcmQ6IHN0cmluZykge1xuICAgIGxldCBzdHJlbmd0aCA9IDA7XG4gICAgY29uc3QgY3JpdGVyaWEgPSBbLy57OCx9LywgL1tBLVpdLywgL1thLXpdLywgL1xcZC8sIC9bIUAjJCVeJiooKSwuP1wiOnt9fDw+XS9dO1xuICAgIGNyaXRlcmlhLmZvckVhY2goKHJlZ2V4KSA9PiB7XG4gICAgICBpZiAocmVnZXgudGVzdChwYXNzd29yZCkpIHN0cmVuZ3RoKys7XG4gICAgfSk7XG4gICAgdGhpcy5zdHJlbmd0aExhYmVsLnNldChcbiAgICAgIHN0cmVuZ3RoIDw9IDIgPyAnV2VlaycgOiBzdHJlbmd0aCA9PSAzID8gJ1NvLXNvJyA6IHN0cmVuZ3RoID09IDQgPyAnR29vZCcgOiAnR3JlYXQnLFxuICAgICk7XG4gICAgdGhpcy5zdHJlbmd0aExhYmVsQ29sb3Iuc2V0KHN0cmVuZ3RoIDw9IDIgPyAnZGFuZ2VyJyA6IHN0cmVuZ3RoIDw9IDMgPyAnd2FybmluZycgOiAnc3VjY2VzcycpO1xuICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aC5zZXQoKHN0cmVuZ3RoICogMTAwKSAvIGNyaXRlcmlhLmxlbmd0aCk7XG4gIH1cbn1cbiIsIjxheC1wcm9ncmVzcy1iYXJcbiAgW2NvbG9yXT1cInN0cmVuZ3RoTGFiZWxDb2xvcigpXCJcbiAgW3Byb2dyZXNzXT1cInBhc3N3b3JkU3RyZW5ndGgoKVwiXG4gIFtoZWlnaHRdPVwiNFwiXG4+PC9heC1wcm9ncmVzcy1iYXI+XG48c21hbGxcbiAgY2xhc3M9XCJheC13aGl0ZXNwYWNlLW5vd3JhcCBheC1weC0zIGF4LXRleHQtY2VudGVyXCJcbiAgW2NsYXNzLmF4LXRleHQtZGFuZ2VyXT1cInN0cmVuZ3RoTGFiZWxDb2xvcigpID09PSAnZGFuZ2VyJ1wiXG4gIFtjbGFzcy5heC10ZXh0LXdhcm5pbmddPVwic3RyZW5ndGhMYWJlbENvbG9yKCkgPT09ICd3YXJuaW5nJ1wiXG4gIFtjbGFzcy5heC10ZXh0LXN1Y2Nlc3NdPVwic3RyZW5ndGhMYWJlbENvbG9yKCkgPT09ICdzdWNjZXNzJ1wiXG4gID57eyBzdHJlbmd0aExhYmVsKCkgfX1cbjwvc21hbGw+XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGFzc3dvcmQtYm94L3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvbi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uL3Bhc3N3b3JkLXN0cmVuZ3RoLXZhbGlkYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFTbkUsTUFBTSxPQUFPLHFDQUFxQztJQVBsRDtRQVFZLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXhDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsbUJBQWMsR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFF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QUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FqRFUscUNBQXFDO2tHQUFyQyxxQ0FBcUMsdUVDakJsRCxzMkRBZ0RBOzsyRkQvQmEscUNBQXFDO2tCQVBqRCxTQUFTOytCQUNFLGlDQUFpQyxtQkFFMUIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUGFzc3dvcmRCb3hDb21wb25lbnQgfSBmcm9tICcuLi9wYXNzd29yZC1ib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0eWxlVXJsOiAnLi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQYXNzd29yZFN0cmVuZ3RoVmFsaWRhdGlvbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBwYXNzd29yZFN0cmVuZ3RoID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgdXBkYXRlZFBhc3N3b3JkID0gc2lnbmFsKCcnKTtcbiAgcHJvdGVjdGVkIHN0cmVuZ3RoTGFiZWwgPSBzaWduYWwoJ2ZyYWdpbGUnKTtcbiAgcHJvdGVjdGVkIHN0cmVuZ3RoTGFiZWxDb2xvciA9IHNpZ25hbCgnZGFuZ2VyJyk7XG4gIHByb3RlY3RlZCBwYXJlbnQgPSBpbmplY3QoQVhQYXNzd29yZEJveENvbXBvbmVudCk7XG5cbiAgcHJvdGVjdGVkIGlzTGVuZ2h0Z3JhdGVyVGhhbjggPSBzaWduYWwoeyByZWdleDogLy57OCx9Lywgc3RhdGU6IGZhbHNlIH0pO1xuICBwcm90ZWN0ZWQgaXNVc2VVcHBlckNhc2UgPSBzaWduYWwoeyByZWdleDogL1tBLVpdLywgc3RhdGU6IGZhbHNlIH0pO1xuICBwcm90ZWN0ZWQgaXNVc2VMb3dlckNhc2UgPSBzaWduYWwoeyByZWdleDogL1thLXpdLywgc3RhdGU6IGZhbHNlIH0pO1xuICBwcm90ZWN0ZWQgaXNVc2VOdW1iZXIgPSBzaWduYWwoeyByZWdleDogL1xcZC8sIHN0YXRlOiBmYWxzZSB9KTtcbiAgcHJvdGVjdGVkIGlzVXNlU3BlY2lhbENoYXJhY3RlciA9IHNpZ25hbCh7XG4gICAgcmVnZXg6IC9bIUAjJCVeJiooKSwuP1wiOnt9fDw+XS8sXG4gICAgc3RhdGU6IGZhbHNlLFxuICB9KTtcblxuICAjb25Db21wb25lbnRJbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICB0aGlzLnBhcmVudC5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnZhbHVlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlZFBhc3N3b3JkLnNldCh2LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlZFBhc3N3b3JkLnNldCgnJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrUGFzc3dvcmRTdHJlbmd0aCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBwcml2YXRlIGNoZWNrUmVnZXhIYW5kbGVyKGludGVyKSB7XG4gICAgaWYgKGludGVyKCkucmVnZXgudGVzdCh0aGlzLnVwZGF0ZWRQYXNzd29yZCgpKSkge1xuICAgICAgaW50ZXIudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzdGF0ZTogdHJ1ZSB9KSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaW50ZXIudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzdGF0ZTogZmFsc2UgfSkpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja1Bhc3N3b3JkU3RyZW5ndGgoKSB7XG4gICAgbGV0IHN0cmVuZ3RoID0gMDtcblxuICAgIHRoaXMuY2hlY2tSZWdleEhhbmRsZXIodGhpcy5pc0xlbmdodGdyYXRlclRoYW44KSAmJiBzdHJlbmd0aCsrO1xuICAgIHRoaXMuY2hlY2tSZWdleEhhbmRsZXIodGhpcy5pc1VzZVVwcGVyQ2FzZSkgJiYgc3RyZW5ndGgrKztcbiAgICB0aGlzLmNoZWNrUmVnZXhIYW5kbGVyKHRoaXMuaXNVc2VMb3dlckNhc2UpICYmIHN0cmVuZ3RoKys7XG4gICAgdGhpcy5jaGVja1JlZ2V4SGFuZGxlcih0aGlzLmlzVXNlTnVtYmVyKSAmJiBzdHJlbmd0aCsrO1xuICAgIHRoaXMuY2hlY2tSZWdleEhhbmRsZXIodGhpcy5pc1VzZVNwZWNpYWxDaGFyYWN0ZXIpICYmIHN0cmVuZ3RoKys7XG5cbiAgICBjb25zdCBzdHJlbmd0aExhYmVscyA9IFsnZnJhZ2lsZScsICdmcmFnaWxlJywgJ3dlYWsnLCAnZ29vZCcsICdzdHJvbmcnLCAndW5icmVha2FibGUnXTtcbiAgICB0aGlzLnN0cmVuZ3RoTGFiZWwuc2V0KHN0cmVuZ3RoTGFiZWxzW3N0cmVuZ3RoXSk7XG4gICAgdGhpcy5zdHJlbmd0aExhYmVsQ29sb3Iuc2V0KHN0cmVuZ3RoIDw9IDIgPyAnZGFuZ2VyJyA6IHN0cmVuZ3RoIDw9IDMgPyAnd2FybmluZycgOiAnc3VjY2VzcycpO1xuICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aC5zZXQoKHN0cmVuZ3RoICogMTAwKSAvIDUpO1xuICB9XG59XG4iLCJAaWYgKHBhcmVudC5zaG93UHJvZ3Jlc3MoKSkge1xuICA8c21hbGxcbiAgICBjbGFzcz1cImF4LXN0YXRlLXBhc3N3b3JkXCJcbiAgICBbY2xhc3MuYXgtdGV4dC1yZWRdPVwic3RyZW5ndGhMYWJlbENvbG9yKCkgPT09ICdkYW5nZXInXCJcbiAgICBbY2xhc3MuYXgtdGV4dC1vcmFuZ2VdPVwic3RyZW5ndGhMYWJlbENvbG9yKCkgPT09ICd3YXJuaW5nJ1wiXG4gICAgW2NsYXNzLmF4LXRleHQtZ3JlZW5dPVwic3RyZW5ndGhMYWJlbENvbG9yKCkgPT09ICdzdWNjZXNzJ1wiXG4gID5cbiAgICB7eyBzdHJlbmd0aExhYmVsKCkgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICA8L3NtYWxsPlxuXG4gIDxheC1wcm9ncmVzcy1iYXJcbiAgICBbY29sb3JdPVwic3RyZW5ndGhMYWJlbENvbG9yKClcIlxuICAgIFtwcm9ncmVzc109XCJwYXNzd29yZFN0cmVuZ3RoKClcIlxuICAgIFtoZWlnaHRdPVwiNFwiXG4gID48L2F4LXByb2dyZXNzLWJhcj5cbn1cbkBpZiAocGFyZW50LnNob3dIaW50KCkpIHtcbiAgPGRpdiBjbGFzcz1cImF4LWhpbnQtY29udGFpbmVyXCI+XG4gICAgPHNtYWxsIGNsYXNzPVwiYXgtaGludC1zdGF0ZVwiPlxuICAgICAgPGF4LWJhZGdlIFtjb2xvcl09XCJpc0xlbmdodGdyYXRlclRoYW44KCkuc3RhdGUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJ1wiPjwvYXgtYmFkZ2U+XG4gICAgICA8c3BhbiBbY2xhc3MuYXgtbGluZV09XCJpc0xlbmdodGdyYXRlclRoYW44KCkuc3RhdGVcIj5cbiAgICAgICAge3sgJ2F0LWxlYXN0LTgtY2hhcmFjdGVycycgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvc21hbGw+XG4gICAgPHNtYWxsIGNsYXNzPVwiYXgtaGludC1zdGF0ZVwiIFtjbGFzcy5heC1saW5lXT1cImlzVXNlVXBwZXJDYXNlKCkuc3RhdGVcIj5cbiAgICAgIDxheC1iYWRnZSBbY29sb3JdPVwiaXNVc2VVcHBlckNhc2UoKS5zdGF0ZSA/ICdzdWNjZXNzJyA6ICdkYW5nZXInXCI+PC9heC1iYWRnZT5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7eyAnZW5nbGlzaC11cHBlci1jYXNlLWxldHRlcicgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvc21hbGw+XG4gICAgPHNtYWxsIGNsYXNzPVwiYXgtaGludC1zdGF0ZVwiIFtjbGFzcy5heC1saW5lXT1cImlzVXNlTG93ZXJDYXNlKCkuc3RhdGVcIj5cbiAgICAgIDxheC1iYWRnZSBbY29sb3JdPVwiaXNVc2VMb3dlckNhc2UoKS5zdGF0ZSA/ICdzdWNjZXNzJyA6ICdkYW5nZXInXCI+PC9heC1iYWRnZT5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7eyAnZW5nbGlzaC1sb3dlci1jYXNlLWxldHRlcicgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvc21hbGw+XG4gICAgPHNtYWxsIGNsYXNzPVwiYXgtaGludC1zdGF0ZVwiIFtjbGFzcy5heC1saW5lXT1cImlzVXNlTnVtYmVyKCkuc3RhdGVcIj5cbiAgICAgIDxheC1iYWRnZSBbY29sb3JdPVwiaXNVc2VOdW1iZXIoKS5zdGF0ZSA/ICdzdWNjZXNzJyA6ICdkYW5nZXInXCI+PC9heC1iYWRnZVxuICAgICAgPjxzcGFuPiB7eyAnZGlnaXRzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19IDwvc3Bhbj5cbiAgICA8L3NtYWxsPlxuICAgIDxzbWFsbCBjbGFzcz1cImF4LWhpbnQtc3RhdGVcIiBbY2xhc3MuYXgtbGluZV09XCJpc1VzZVNwZWNpYWxDaGFyYWN0ZXIoKS5zdGF0ZVwiPlxuICAgICAgPGF4LWJhZGdlIFtjb2xvcl09XCJpc1VzZVNwZWNpYWxDaGFyYWN0ZXIoKS5zdGF0ZSA/ICdzdWNjZXNzJyA6ICdkYW5nZXInXCI+PC9heC1iYWRnZT5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7eyAnc3BlY2lhbC1jaGFyYWN0ZXInIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NtYWxsPlxuICA8L2Rpdj5cbn1cbiJdfQ==