@acorex/components 18.16.0-next.0 → 18.16.0-next.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. package/audio-wave/lib/audio-wave.component.d.ts +1 -0
  2. package/comment/lib/comment-container/comment-container.component.d.ts +1 -0
  3. package/common/lib/components/value-component.class.d.ts +1 -0
  4. package/common/lib/directives/auto-focus.directive.d.ts +1 -0
  5. package/common/lib/directives/inverted-color.directive.d.ts +1 -0
  6. package/common/lib/directives/ripple.directive.d.ts +1 -0
  7. package/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.d.ts +1 -0
  8. package/data-table/lib/columns/data-table-column-resizable.directive.d.ts +1 -0
  9. package/data-table/lib/data-table/data-table.component.d.ts +1 -0
  10. package/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.d.ts +1 -0
  11. package/drawer/lib/drawer/drawer-item/drawer.component.d.ts +1 -0
  12. package/esm2022/audio-wave/lib/audio-wave.component.mjs +18 -14
  13. package/esm2022/button/lib/button-item-list.component.mjs +2 -2
  14. package/esm2022/calendar/lib/calendar.component.mjs +17 -14
  15. package/esm2022/comment/lib/comment-container/comment-container.component.mjs +18 -15
  16. package/esm2022/common/lib/components/value-component.class.mjs +5 -4
  17. package/esm2022/common/lib/directives/auto-focus.directive.mjs +8 -5
  18. package/esm2022/common/lib/directives/inverted-color.directive.mjs +23 -19
  19. package/esm2022/common/lib/directives/ripple.directive.mjs +18 -15
  20. package/esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.mjs +13 -9
  21. package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +19 -5
  22. package/esm2022/data-pager/lib/data-pager.component.mjs +3 -3
  23. package/esm2022/data-table/lib/columns/data-table-column-resizable.directive.mjs +13 -13
  24. package/esm2022/data-table/lib/data-table/data-table.component.mjs +14 -9
  25. package/esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.mjs +13 -10
  26. package/esm2022/drawer/lib/drawer/drawer-item/drawer.component.mjs +5 -4
  27. package/esm2022/list/lib/list.component.mjs +14 -9
  28. package/esm2022/menu/lib/context-menu.component.mjs +40 -32
  29. package/esm2022/password-box/lib/password-box.component.mjs +3 -11
  30. package/esm2022/password-box/lib/password-strength-validation/password-strength-validation.component.mjs +12 -4
  31. package/esm2022/picker/lib/picker.component.mjs +11 -4
  32. package/esm2022/popover/lib/popover.component.mjs +7 -6
  33. package/esm2022/range-slider/lib/range-slider.component.mjs +15 -9
  34. package/esm2022/rate-picker/lib/rate-picker.component.mjs +8 -2
  35. package/esm2022/select-box/lib/select-box.component.mjs +2 -5
  36. package/esm2022/tree-view/acorex-components-tree-view.mjs +5 -0
  37. package/esm2022/tree-view/index.mjs +4 -0
  38. package/esm2022/tree-view/lib/tree-view-item.component.mjs +86 -0
  39. package/esm2022/tree-view/lib/tree-view.class.mjs +4 -0
  40. package/esm2022/tree-view/lib/tree-view.component.mjs +299 -0
  41. package/esm2022/tree-view/lib/tree-view.component.module.mjs +50 -0
  42. package/esm2022/uploader/lib/uploader-zone.directive.mjs +21 -16
  43. package/fesm2022/acorex-components-audio-wave.mjs +18 -15
  44. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  45. package/fesm2022/acorex-components-button.mjs +2 -2
  46. package/fesm2022/acorex-components-button.mjs.map +1 -1
  47. package/fesm2022/acorex-components-calendar.mjs +16 -14
  48. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  49. package/fesm2022/acorex-components-comment.mjs +17 -14
  50. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  51. package/fesm2022/acorex-components-common.mjs +44 -34
  52. package/fesm2022/acorex-components-common.mjs.map +1 -1
  53. package/fesm2022/acorex-components-conversation.mjs +12 -9
  54. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  55. package/fesm2022/acorex-components-data-pager.mjs +20 -6
  56. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  57. package/fesm2022/acorex-components-data-table.mjs +33 -25
  58. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  59. package/fesm2022/acorex-components-drawer.mjs +4 -3
  60. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  61. package/fesm2022/acorex-components-list.mjs +14 -10
  62. package/fesm2022/acorex-components-list.mjs.map +1 -1
  63. package/fesm2022/acorex-components-menu.mjs +39 -31
  64. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  65. package/fesm2022/acorex-components-password-box.mjs +12 -12
  66. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  67. package/fesm2022/acorex-components-picker.mjs +10 -4
  68. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  69. package/fesm2022/acorex-components-popover.mjs +6 -5
  70. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  71. package/fesm2022/acorex-components-range-slider.mjs +14 -8
  72. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  73. package/fesm2022/acorex-components-rate-picker.mjs +7 -1
  74. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  75. package/fesm2022/acorex-components-select-box.mjs +1 -4
  76. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  77. package/fesm2022/acorex-components-tree-view.mjs +433 -0
  78. package/fesm2022/acorex-components-tree-view.mjs.map +1 -0
  79. package/fesm2022/acorex-components-uploader.mjs +20 -15
  80. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  81. package/menu/lib/context-menu.component.d.ts +1 -0
  82. package/package.json +7 -1
  83. package/password-box/lib/password-box.component.d.ts +1 -9
  84. package/password-box/lib/password-strength-validation/password-strength-validation.component.d.ts +9 -1
  85. package/picker/lib/picker.component.d.ts +1 -0
  86. package/popover/lib/popover.component.d.ts +1 -0
  87. package/rate-picker/lib/rate-picker.component.d.ts +1 -0
  88. package/tree-view/README.md +3 -0
  89. package/tree-view/index.d.ts +3 -0
  90. package/tree-view/lib/tree-view-item.component.d.ts +23 -0
  91. package/tree-view/lib/tree-view.class.d.ts +20 -0
  92. package/tree-view/lib/tree-view.component.d.ts +80 -0
  93. package/tree-view/lib/tree-view.component.module.d.ts +16 -0
  94. package/uploader/lib/uploader-zone.directive.d.ts +1 -0
@@ -1,5 +1,6 @@
1
1
  import { AXComponent, AXDataSource, AXFocusableComponent, AXListDataSource, AXValuableComponent, AX_SELECTION_DATA_TOKEN, MXSelectionBridgeService, MXSelectionValueComponent, convertArrayToDataSource, } from '@acorex/components/common';
2
2
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
3
+ import { isPlatformBrowser } from '@angular/common';
3
4
  import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Optional, Output, SkipSelf, TemplateRef, ViewChild, ViewEncapsulation, forwardRef, signal, } from '@angular/core';
4
5
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
6
  import * as i0 from "@angular/core";
@@ -126,8 +127,10 @@ export class AXListComponent extends MXSelectionValueComponent {
126
127
  e.stopPropagation();
127
128
  return;
128
129
  }
129
- const id = this.document.activeElement?.closest('li')?.dataset['id'];
130
- this.toggleSelect(id);
130
+ if (isPlatformBrowser(this.platformID)) {
131
+ const id = this.document.activeElement?.closest('li')?.dataset['id'];
132
+ this.toggleSelect(id);
133
+ }
131
134
  e.preventDefault();
132
135
  e.stopPropagation();
133
136
  }
@@ -136,12 +139,14 @@ export class AXListComponent extends MXSelectionValueComponent {
136
139
  * @ignore
137
140
  */
138
141
  focusItemByNav(sign) {
139
- const list = this.getHostElement().querySelector('ul');
140
- const fn = (s) => list.querySelector(s);
141
- const itemDiv = this.document.activeElement?.closest('li') || fn(`li.ax-state-selected`) || fn(`li`);
142
- const next = (sign == 1 ? itemDiv.nextElementSibling : itemDiv.previousElementSibling);
143
- if (next) {
144
- next.focus();
142
+ if (isPlatformBrowser(this.platformID)) {
143
+ const list = this.getHostElement().querySelector('ul');
144
+ const fn = (s) => list.querySelector(s);
145
+ const itemDiv = this.document.activeElement?.closest('li') || fn(`li.ax-state-selected`) || fn(`li`);
146
+ const next = (sign == 1 ? itemDiv.nextElementSibling : itemDiv.previousElementSibling);
147
+ if (next) {
148
+ next.focus();
149
+ }
145
150
  }
146
151
  }
147
152
  /**
@@ -287,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
287
292
  type: HostBinding,
288
293
  args: ['class']
289
294
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdC9zcmMvbGliL2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3Qvc3JjL2xpYi9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUVaLG9CQUFvQixFQUVwQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHdCQUF3QixHQUN6QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU1uRDs7OztHQUlHO0FBc0NILE1BQU0sT0FBTyxlQUFnQixTQUFRLHlCQUF5QjtJQXJDOUQ7O1FBc0NFOzs7O1dBSUc7UUFFSCxnQkFBVyxHQUF3QyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUU3Rjs7OztXQUlHO1FBRUgsZUFBVSxHQUEwQix3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVqRTs7V0FFRztRQUNILHFCQUFnQixHQUFvQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUE0Qi9EOzs7O1dBSUc7UUFFSCwyQkFBc0IsR0FDcEIsSUFBSSxZ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QkFEcEIsS0FBSztnQkFTTixZQUFZO3NCQURYLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQU9OLGVBQWU7c0JBRGQsS0FBSztnQkFTTixzQkFBc0I7c0JBRHJCLE1BQU07Z0JBVVAsUUFBUTtzQkFEUCxLQUFLO2dCQWdDRSxRQUFRO3NCQURmLFNBQVM7dUJBQUMsd0JBQXdCO2dCQW1EbkMsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE2Ry9CLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhDb21wb25lbnQsXG4gIEFYRGF0YVNvdXJjZSxcbiAgQVhFdmVudCxcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXG4gIEFYSXRlbUNsaWNrRXZlbnQsXG4gIEFYTGlzdERhdGFTb3VyY2UsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIEFYX1NFTEVDVElPTl9EQVRBX1RPS0VOLFxuICBNWFNlbGVjdGlvbkJyaWRnZVNlcnZpY2UsXG4gIE1YU2VsZWN0aW9uVmFsdWVDb21wb25lbnQsXG4gIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2tpcFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgZm9yd2FyZFJlZixcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTGlzdFNjcm9sbEluZGV4Q2hhbmdlZCBleHRlbmRzIEFYRXZlbnQge1xuICBpbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIHByb3ZpZGVzIGEgbGlzdCBjb250cm9sIHdpdGggdmFyaW91cyBpbnB1dCBvcHRpb25zIGFuZCBldmVudHMgZm9yIHVzZXIgaW50ZXJhY3Rpb24uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW5wdXRzOiBbXG4gICAgJ2lkJyxcbiAgICAnbmFtZScsXG4gICAgJ2Rpc2FibGVkJyxcbiAgICAncmVhZG9ubHknLFxuICAgICd2YWx1ZUZpZWxkJyxcbiAgICAndGV4dEZpZWxkJyxcbiAgICAndGV4dFRlbXBsYXRlJyxcbiAgICAnZGlzYWJsZWRGaWVsZCcsXG4gICAgJ211bHRpcGxlJyxcbiAgICAnc2VsZWN0aW9uTW9kZScsXG4gIF0sXG4gIG91dHB1dHM6IFsnb25WYWx1ZUNoYW5nZWQnLCAnZGlzYWJsZWRDaGFuZ2UnLCAncmVhZE9ubHlDaGFuZ2UnLCAnb25CbHVyJywgJ29uRm9jdXMnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYTGlzdENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWExpc3RDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWExpc3RDb21wb25lbnQgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYX1NFTEVDVElPTl9EQVRBX1RPS0VOLFxuICAgICAgdXNlRmFjdG9yeTogKGV4aXN0aW5nU2VydmljZTogTVhTZWxlY3Rpb25CcmlkZ2VTZXJ2aWNlKSA9PiB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1NlcnZpY2UgfHwgbmV3IE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZSgpO1xuICAgICAgfSxcbiAgICAgIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBBWF9TRUxFQ1RJT05fREFUQV9UT0tFTl1dLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTGlzdENvbXBvbmVudCBleHRlbmRzIE1YU2VsZWN0aW9uVmFsdWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGl0ZW0gaW4gdGhlIGxpc3QgaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25JdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWEl0ZW1DbGlja0V2ZW50PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEl0ZW1DbGlja0V2ZW50PGFueT4+KCk7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGRhdGEgc291cmNlIGZvciB0aGUgbGlzdC5cbiAgICpcbiAgICogIEBkZWZhdWx0VmFsdWUgY29udmVydEFycmF5VG9EYXRhU291cmNlKFtdKVxuICAgKi9cbiAgQElucHV0KClcbiAgZGF0YVNvdXJjZTogQVhEYXRhU291cmNlPHVua25vd24+ID0gY29udmVydEFycmF5VG9EYXRhU291cmNlKFtdKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIGl0ZW1IZWlnaHRTaWduYWw6IFdyaXRhYmxlU2lnbmFsPG51bWJlciB8ICdhdXRvJz4gPSBzaWduYWwoNDApO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBoZWlnaHQgb2YgZWFjaCBpdGVtIGluIHRoZSBsaXN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpdGVtSGVpZ2h0KHY6IG51bWJlciB8ICdhdXRvJykge1xuICAgIHRoaXMuaXRlbUhlaWdodFNpZ25hbC5zZXQodik7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgZm9yIHJlbmRlcmluZyBpbmRpdmlkdWFsIGl0ZW1zIGluIHRoZSBsaXN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogVGVtcGxhdGUgdG8gZGlzcGxheSB3aGVuIHRoZSBsaXN0IGlzIGVtcHR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHRvIHNob3cgd2hpbGUgdGhlIGxpc3QgaXMgbG9hZGluZy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5kZXggb2YgdGhlIHNjcm9sbGVkIGl0ZW0gY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TY3JvbGxlZEluZGV4Q2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYTGlzdFNjcm9sbEluZGV4Q2hhbmdlZD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhMaXN0U2Nyb2xsSW5kZXhDaGFuZ2VkPigpO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgZW5hYmxlZC5cbiAgICpcbiAgICogIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgY2hlY2tib3ggPSB0cnVlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGxpc3REYXRhU291cmNlOiBBWExpc3REYXRhU291cmNlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYXNJdGVtcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBsYXN0SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBwb3N0cG9uZUZvY3VzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydClcbiAgcHJpdmF0ZSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIHRyYWNrQnlJZHgoaSkge1xuICAgIHJldHVybiBpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMubGlzdERhdGFTb3VyY2UgPSBuZXcgQVhMaXN0RGF0YVNvdXJjZTx1bmtub3duPih7XG4gICAgICBzb3VyY2U6IHRoaXMuZGF0YVNvdXJjZSxcbiAgICB9KTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnNvdXJjZS5vbkxvYWRpbmdDaGFuZ2VkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGRhdGEpO1xuICAgIH0pO1xuICAgIHRoaXMubGlzdERhdGFTb3VyY2Uuc291cmNlLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuaGFzSXRlbXMgPSBkYXRhLnRvdGFsQ291bnQgPiAwO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgX2hhbmRsZU9uSXRlbUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzSXRlbURpc2FibGVkKGl0ZW0pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW0pO1xuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBpdGVtLFxuICAgICAgaHRtbEVsZW1lbnQ6IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBuYXRpdmVFdmVudDogZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIF9oYW5kbGVLZXlkb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoKGUuY29kZSA9PT0gJ0Fycm93RG93bicgfHwgZS5jb2RlID09PSAnQXJyb3dVcCcpICYmIHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuZm9jdXNJdGVtQnlOYXYoZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKChlLmNvZGUgPT09ICdTcGFjZScgfHwgZS5jb2RlID09PSAnRW50ZXInKSAmJiB0aGlzLmhhc0l0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaWQgPSB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ2xpJyk/LmRhdGFzZXRbJ2lkJ107XG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdChpZCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmb2N1c0l0ZW1CeU5hdihzaWduOiAtMSB8IDEpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJ3VsJyk7XG4gICAgY29uc3QgZm4gPSAocykgPT4gbGlzdC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihzKTtcbiAgICBjb25zdCBpdGVtRGl2OiBIVE1MRWxlbWVudCA9XG4gICAgICB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ2xpJykgfHwgZm4oYGxpLmF4LXN0YXRlLXNlbGVjdGVkYCkgfHwgZm4oYGxpYCk7XG4gICAgY29uc3QgbmV4dCA9IChzaWduID09IDEgPyBpdGVtRGl2Lm5leHRFbGVtZW50U2libGluZyA6IGl0ZW1EaXYucHJldmlvdXNFbGVtZW50U2libGluZykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKG5leHQpIHtcbiAgICAgIG5leHQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBfaGFuZGxlT25zY3JvbGxlZEluZGV4Q2hhbmdlKGU6IG51bWJlcikge1xuICAgIHRoaXMubGFzdEluZGV4ID0gZTtcbiAgICB0aGlzLm9uU2Nyb2xsZWRJbmRleENoYW5nZWQuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBpbmRleDogdGhpcy5sYXN0SW5kZXgsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhIHNvdXJjZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdXNlZCB0byBpZGVudGlmeSB0aGUgaXRlbS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0SXRlbUJ5S2V5KGtleTogdW5rbm93bik6IFByb21pc2U8dW5rbm93bj4gfCB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlLmZpbmQoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBjb21wb25lbnQgYnkgdXBkYXRpbmcgdGhlIHZpZXdwb3J0IHNpemUsIHNjcm9sbGluZyB0byB0aGUgbGFzdCBpbmRleCwgYW5kIG9wdGlvbmFsbHkgZm9jdXNpbmcgdGhlIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIHRoaXMudmlld3BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvSW5kZXgodGhpcy5sYXN0SW5kZXgpO1xuICAgIGlmICh0aGlzLnBvc3Rwb25lRm9jdXMpIHtcbiAgICAgIHRoaXMucG9zdHBvbmVGb2N1cyA9IGZhbHNlO1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgdGhlIGxpc3QgYnkgY2xlYXJpbmcgdGhlIHNlbGVjdGlvbiBjYWNoZSBhbmQgcmVsb2FkaW5nIHRoZSBkYXRhIHNvdXJjZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbkNhY2hlKCk7XG4gICAgdGhpcy5saXN0RGF0YVNvdXJjZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xscyB0aGUgdmlld3BvcnQgdG8gdGhlIHNwZWNpZmllZCBpdGVtIGluZGV4LlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRvIHNjcm9sbCB0by5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIHNjcm9sbFRvSW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9JbmRleChpbmRleCk7XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgdG8gdGhlIGZpcnN0IHNlbGVjdGFibGUgbGlzdCBpdGVtLiBJZiBubyBpdGVtIGlzIGF2YWlsYWJsZSwgcG9zdHBvbmVzIGZvY3VzLlxuICAgKi9cbiAgb3ZlcnJpZGUgZm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCd1bCcpO1xuICAgIGNvbnN0IGZvY3VzYWJsZSA9XG4gICAgICBsaXN0LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCdsaS5heC1zdGF0ZS1zZWxlY3RlZCcpID8/XG4gICAgICBsaXN0LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCdsaS5saXN0LWl0ZW0nKTtcbiAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICBmb2N1c2FibGUuZm9jdXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3N0cG9uZUZvY3VzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIGVtcHR5IHRlbXBsYXRlIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBpdGVtcyBhbmQgbG9hZGluZyBzdGF0ZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc2hvd0VtcHR5VGVtcGxhdGUgPSAoKSA9PiB0aGlzLmVtcHR5VGVtcGxhdGUgJiYgdGhpcy5oYXNJdGVtcyA9PT0gZmFsc2UgJiYgdGhpcy5pc0xvYWRpbmcoKSA9PT0gZmFsc2U7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgX2NsYXNzID0gYGF4LWRlZmF1bHQgJHt0aGlzLnNob3dFbXB0eVRlbXBsYXRlKCkgPyAnYXgtc3RhdGUtZW1wdHknIDogJyd9YDtcbiAgICByZXR1cm4gdGhpcy5pdGVtVGVtcGxhdGUgPyAnJyA6IF9jbGFzcztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCIgY2RrVmlydHVhbFNjcm9sbGluZ0VsZW1lbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtSGVpZ2h0U2lnbmFsKClcIlxuICAgIFtzdHlsZS4tLWl0ZW0taGVpZ2h0XT1cIml0ZW1IZWlnaHRTaWduYWwoKSArICdweCdcIlxuICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIl9oYW5kbGVPbnNjcm9sbGVkSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gID5cbiAgICA8dWw+XG4gICAgICA8IS0tICBJdGVtIFRlbXBsYXRlICAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBsaXN0RGF0YVNvdXJjZTsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUlkeFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQ7IGVsc2UgbG9hZGluZ1RwbFwiPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLXNlbGVjdGVkXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGlzdC1pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChpdGVtKVwiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlT25JdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cImdldFZhbHVlKGl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tICBDdXN0b20gSXRlbSBUZW1wbGF0ZSAgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRJdGVtVHBsXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IGRhdGE6IGl0ZW0gfSB9XCI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8IS0tICBEZWZhdWx0IEl0ZW0gVGVtcGxhdGUgIC0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRwbD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0gIT09IG51bGwgJiYgaXRlbSAhPT0gdW5kZWZpbmVkOyBlbHNlIGxvYWRpbmdUcGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibXVsdGlwbGUgJiYgY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmF4LWNoZWNrYm94LWxhYmVsXT1cIm11bHRpcGxlICYmIGNoZWNrYm94XCI+e3sgZ2V0RGlzcGxheVRleHQoaXRlbSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGVjayBheC1zZWxlY3RlZC1pY29uXCIgKm5nSWY9XCJpc0l0ZW1TZWxlY3RlZChpdGVtKSBcIj48L2k+IC0tPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48IS0tICBMb2FkaW5nIFRlbXBsYXRlICAtLT5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgPCEtLSAgQ3VzdG9tIExvYWRpbmcgVGVtcGxhdGUgIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1RlbXBsYXRlOyBlbHNlIGRlZmF1bHRMb2FkaW5nVHBsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gIERlZmF1bHQgTG9hZGluZyBUZW1wbGF0ZSAgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExvYWRpbmdUcGw+XG4gICAgPGxpPnt7ICdsb2FkaW5nJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9saT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG48IS0tICBFbXB0eSBUZW1wbGF0ZSAgLS0+XG5AaWYgKHNob3dFbXB0eVRlbXBsYXRlKCkpIHtcbiAgPGRpdiBjbGFzcz1cImVtcHR5LWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxufVxuIl19
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdC9zcmMvbGliL2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3Qvc3JjL2xpYi9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUVaLG9CQUFvQixFQUVwQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHdCQUF3QixHQUN6QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU1uRDs7OztHQUlHO0FBc0NILE1BQU0sT0FBTyxlQUFnQixTQUFRLHlCQUF5QjtJQXJDOUQ7O1FBc0NFOzs7O1dBSUc7UUFFSCxnQkFBVyxHQUF3QyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUU3Rjs7OztXQUlHO1FBRUgsZUFBVSxHQUEwQix3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVqRTs7V0FFRztRQUNILHFCQUFnQixHQUFvQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUE0Qi9EOzs7O1dBSUc7UUFFSCwyQkFBc0IsR0FDcEIsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFFL0M7Ozs7V0FJRztRQUVILGFBQVEsR0FBRyxJQUFJLENBQUM7UUFPaEI7O1dBRUc7UUFDTyxjQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DOztXQUVHO1FBQ08sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUzQjs7V0FFRztRQUNLLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFFdEI7O1dBRUc7UUFDSyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQThKOUI7OztXQUdHO1FBQ0gsc0JBQWlCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssS0FBSyxDQUFDO0tBVXZHO0lBOU9DOztPQUVHO0lBQ0gsSUFDVyxVQUFVLENBQUMsQ0FBa0I7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBb0VELFVBQVUsQ0FBQyxDQUFDO1FBQ1YsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQ7O09BRUc7SUFDTSxRQUFRO1FBQ2YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBVTtZQUNsRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNwQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNILGtCQUFrQixDQUFDLENBQWEsRUFBRSxJQUFTO1FBQ3pDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUk7WUFDSixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQXFCO1lBQ3BDLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFFSCxjQUFjLENBQUMsQ0FBZ0I7UUFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoRSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7WUFDRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQUMsSUFBWTtRQUNqQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sT0FBTyxHQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBZ0IsQ0FBQztZQUN0RyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sNEJBQTRCLENBQUMsQ0FBUztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDO1lBQy9CLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLEdBQVk7UUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksYUFBYSxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNEOztPQUVHO0lBQ00sS0FBSztRQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBYyxzQkFBc0IsQ0FBQztZQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFjLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFDSSxXQUFXO1FBQ2IsTUFBTSxNQUFNLEdBQUcsY0FBYyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekMsQ0FBQzs4R0FuUVUsZUFBZTtrR0FBZixlQUFlLHN4QkFsQmY7WUFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRTtZQUN0RCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFO1lBQy9ELEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUU7WUFDOUQ7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQzlDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsdUJBQXVCO2dCQUNoQyxVQUFVLEVBQUUsQ0FBQyxlQUF5QyxFQUFFLEVBQUU7b0JBQ3hELE9BQU8sZUFBZSxJQUFJLElBQUksd0JBQXdCLEVBQUUsQ0FBQztnQkFDM0QsQ0FBQztnQkFDRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO2FBQ2xFO1NBQ0Ysb0VBK0ZVLHdCQUF3Qix1RUM5S3JDLGt1RkFpRUE7OzJGRGdCYSxlQUFlO2tCQXJDM0IsU0FBUzsrQkFDRSxTQUFTLG1CQUdGLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksVUFDN0I7d0JBQ04sSUFBSTt3QkFDSixNQUFNO3dCQUNOLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsZUFBZTtxQkFDaEIsV0FDUSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsYUFDekU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsaUJBQWlCLEVBQUU7d0JBQ3RELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsaUJBQWlCLEVBQUU7d0JBQy9ELEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsaUJBQWlCLEVBQUU7d0JBQzlEOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxVQUFVLEVBQUUsQ0FBQyxlQUF5QyxFQUFFLEVBQUU7Z0NBQ3hELE9BQU8sZUFBZSxJQUFJLElBQUksd0JBQXdCLEVBQUUsQ0FBQzs0QkFDM0QsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO3lCQUNsRTtxQkFDRjs4QkFTRCxXQUFXO3NCQURWLE1BQU07Z0JBU1AsVUFBVTtzQkFEVCxLQUFLO2dCQVlLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBU04sWUFBWTtzQkFEWCxLQUFLO2dCQU9OLGFBQWE7c0JBRFosS0FBSztnQkFPTixlQUFlO3NCQURkLEtBQUs7Z0JBU04sc0JBQXNCO3NCQURyQixNQUFNO2dCQVVQLFFBQVE7c0JBRFAsS0FBSztnQkFnQ0UsUUFBUTtzQkFEZixTQUFTO3VCQUFDLHdCQUF3QjtnQkFtRG5DLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUgvQixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ29tcG9uZW50LFxuICBBWERhdGFTb3VyY2UsXG4gIEFYRXZlbnQsXG4gIEFYRm9jdXNhYmxlQ29tcG9uZW50LFxuICBBWEl0ZW1DbGlja0V2ZW50LFxuICBBWExpc3REYXRhU291cmNlLFxuICBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICBBWF9TRUxFQ1RJT05fREFUQV9UT0tFTixcbiAgTVhTZWxlY3Rpb25CcmlkZ2VTZXJ2aWNlLFxuICBNWFNlbGVjdGlvblZhbHVlQ29tcG9uZW50LFxuICBjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG4gIGZvcndhcmRSZWYsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGludGVyZmFjZSBBWExpc3RTY3JvbGxJbmRleENoYW5nZWQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgaW5kZXg6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBwcm92aWRlcyBhIGxpc3QgY29udHJvbCB3aXRoIHZhcmlvdXMgaW5wdXQgb3B0aW9ucyBhbmQgZXZlbnRzIGZvciB1c2VyIGludGVyYWN0aW9uLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGlucHV0czogW1xuICAgICdpZCcsXG4gICAgJ25hbWUnLFxuICAgICdkaXNhYmxlZCcsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAndmFsdWVGaWVsZCcsXG4gICAgJ3RleHRGaWVsZCcsXG4gICAgJ3RleHRUZW1wbGF0ZScsXG4gICAgJ2Rpc2FibGVkRmllbGQnLFxuICAgICdtdWx0aXBsZScsXG4gICAgJ3NlbGVjdGlvbk1vZGUnLFxuICBdLFxuICBvdXRwdXRzOiBbJ29uVmFsdWVDaGFuZ2VkJywgJ2Rpc2FibGVkQ2hhbmdlJywgJ3JlYWRPbmx5Q2hhbmdlJywgJ29uQmx1cicsICdvbkZvY3VzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWExpc3RDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhMaXN0Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhMaXN0Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWExpc3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWF9TRUxFQ1RJT05fREFUQV9UT0tFTixcbiAgICAgIHVzZUZhY3Rvcnk6IChleGlzdGluZ1NlcnZpY2U6IE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZSkgPT4ge1xuICAgICAgICByZXR1cm4gZXhpc3RpbmdTZXJ2aWNlIHx8IG5ldyBNWFNlbGVjdGlvbkJyaWRnZVNlcnZpY2UoKTtcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU5dXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWExpc3RDb21wb25lbnQgZXh0ZW5kcyBNWFNlbGVjdGlvblZhbHVlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBpdGVtIGluIHRoZSBsaXN0IGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhJdGVtQ2xpY2tFdmVudDxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhJdGVtQ2xpY2tFdmVudDxhbnk+PigpO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBkYXRhIHNvdXJjZSBmb3IgdGhlIGxpc3QuXG4gICAqXG4gICAqICBAZGVmYXVsdFZhbHVlIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZShbXSlcbiAgICovXG4gIEBJbnB1dCgpXG4gIGRhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZTx1bmtub3duPiA9IGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZShbXSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBpdGVtSGVpZ2h0U2lnbmFsOiBXcml0YWJsZVNpZ25hbDxudW1iZXIgfCAnYXV0byc+ID0gc2lnbmFsKDQwKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgaGVpZ2h0IG9mIGVhY2ggaXRlbSBpbiB0aGUgbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaXRlbUhlaWdodCh2OiBudW1iZXIgfCAnYXV0bycpIHtcbiAgICB0aGlzLml0ZW1IZWlnaHRTaWduYWwuc2V0KHYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIGZvciByZW5kZXJpbmcgaW5kaXZpZHVhbCBpdGVtcyBpbiB0aGUgbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHRvIGRpc3BsYXkgd2hlbiB0aGUgbGlzdCBpcyBlbXB0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSB0byBzaG93IHdoaWxlIHRoZSBsaXN0IGlzIGxvYWRpbmcuXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkaW5nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGluZGV4IG9mIHRoZSBzY3JvbGxlZCBpdGVtIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uU2Nyb2xsZWRJbmRleENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWExpc3RTY3JvbGxJbmRleENoYW5nZWQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYTGlzdFNjcm9sbEluZGV4Q2hhbmdlZD4oKTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGVuYWJsZWQuXG4gICAqXG4gICAqICBAZGVmYXVsdFZhbHVlIHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNoZWNrYm94ID0gdHJ1ZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBsaXN0RGF0YVNvdXJjZTogQVhMaXN0RGF0YVNvdXJjZTx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFzSXRlbXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbGFzdEluZGV4ID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcG9zdHBvbmVGb2N1cyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpXG4gIHByaXZhdGUgdmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICB0cmFja0J5SWR4KGkpIHtcbiAgICByZXR1cm4gaTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlID0gbmV3IEFYTGlzdERhdGFTb3VyY2U8dW5rbm93bj4oe1xuICAgICAgc291cmNlOiB0aGlzLmRhdGFTb3VyY2UsXG4gICAgfSk7XG4gICAgdGhpcy5saXN0RGF0YVNvdXJjZS5zb3VyY2Uub25Mb2FkaW5nQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChkYXRhKTtcbiAgICB9KTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnNvdXJjZS5vbkNoYW5nZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmhhc0l0ZW1zID0gZGF0YS50b3RhbENvdW50ID4gMDtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIF9oYW5kbGVPbkl0ZW1DbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0l0ZW1EaXNhYmxlZChpdGVtKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZVNlbGVjdChpdGVtKTtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXRlbSxcbiAgICAgIGh0bWxFbGVtZW50OiBlLnRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBfaGFuZGxlS2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKChlLmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGUuY29kZSA9PT0gJ0Fycm93VXAnKSAmJiB0aGlzLmhhc0l0ZW1zKSB7XG4gICAgICB0aGlzLmZvY3VzSXRlbUJ5TmF2KGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMSk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICgoZS5jb2RlID09PSAnU3BhY2UnIHx8IGUuY29kZSA9PT0gJ0VudGVyJykgJiYgdGhpcy5oYXNJdGVtcykge1xuICAgICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50Py5jbG9zZXN0KCdsaScpPy5kYXRhc2V0WydpZCddO1xuICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdChpZCk7XG4gICAgICB9XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmb2N1c0l0ZW1CeU5hdihzaWduOiAtMSB8IDEpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgY29uc3QgbGlzdCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCd1bCcpO1xuICAgICAgY29uc3QgZm4gPSAocykgPT4gbGlzdC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihzKTtcbiAgICAgIGNvbnN0IGl0ZW1EaXY6IEhUTUxFbGVtZW50ID1cbiAgICAgICAgdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50Py5jbG9zZXN0KCdsaScpIHx8IGZuKGBsaS5heC1zdGF0ZS1zZWxlY3RlZGApIHx8IGZuKGBsaWApO1xuICAgICAgY29uc3QgbmV4dCA9IChzaWduID09IDEgPyBpdGVtRGl2Lm5leHRFbGVtZW50U2libGluZyA6IGl0ZW1EaXYucHJldmlvdXNFbGVtZW50U2libGluZykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAobmV4dCkge1xuICAgICAgICBuZXh0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU9uc2Nyb2xsZWRJbmRleENoYW5nZShlOiBudW1iZXIpIHtcbiAgICB0aGlzLmxhc3RJbmRleCA9IGU7XG4gICAgdGhpcy5vblNjcm9sbGVkSW5kZXhDaGFuZ2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaW5kZXg6IHRoaXMubGFzdEluZGV4LFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuIGl0ZW0gZnJvbSB0aGUgZGF0YSBzb3VyY2UgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGtleS5cbiAgICpcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IHVzZWQgdG8gaWRlbnRpZnkgdGhlIGl0ZW0uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdldEl0ZW1CeUtleShrZXk6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHwgdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5maW5kKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgY29tcG9uZW50IGJ5IHVwZGF0aW5nIHRoZSB2aWV3cG9ydCBzaXplLCBzY3JvbGxpbmcgdG8gdGhlIGxhc3QgaW5kZXgsIGFuZCBvcHRpb25hbGx5IGZvY3VzaW5nIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpIHtcbiAgICB0aGlzLnZpZXdwb3J0LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb0luZGV4KHRoaXMubGFzdEluZGV4KTtcbiAgICBpZiAodGhpcy5wb3N0cG9uZUZvY3VzKSB7XG4gICAgICB0aGlzLnBvc3Rwb25lRm9jdXMgPSBmYWxzZTtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBsaXN0IGJ5IGNsZWFyaW5nIHRoZSBzZWxlY3Rpb24gY2FjaGUgYW5kIHJlbG9hZGluZyB0aGUgZGF0YSBzb3VyY2UuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyByZWZyZXNoKCkge1xuICAgIHRoaXMuY2xlYXJTZWxlY3Rpb25DYWNoZSgpO1xuICAgIHRoaXMubGlzdERhdGFTb3VyY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgdGhlIHZpZXdwb3J0IHRvIHRoZSBzcGVjaWZpZWQgaXRlbSBpbmRleC5cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byBzY3JvbGwgdG8uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvSW5kZXgoaW5kZXgpO1xuICB9XG4gIC8qKlxuICAgKiBTZXRzIGZvY3VzIHRvIHRoZSBmaXJzdCBzZWxlY3RhYmxlIGxpc3QgaXRlbS4gSWYgbm8gaXRlbSBpcyBhdmFpbGFibGUsIHBvc3Rwb25lcyBmb2N1cy5cbiAgICovXG4gIG92ZXJyaWRlIGZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcigndWwnKTtcbiAgICBjb25zdCBmb2N1c2FibGUgPVxuICAgICAgbGlzdC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignbGkuYXgtc3RhdGUtc2VsZWN0ZWQnKSA/P1xuICAgICAgbGlzdC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignbGkubGlzdC1pdGVtJyk7XG4gICAgaWYgKGZvY3VzYWJsZSkge1xuICAgICAgZm9jdXNhYmxlLmZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9zdHBvbmVGb2N1cyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IHRoZSBlbXB0eSB0ZW1wbGF0ZSBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgaXRlbXMgYW5kIGxvYWRpbmcgc3RhdGUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHNob3dFbXB0eVRlbXBsYXRlID0gKCkgPT4gdGhpcy5lbXB0eVRlbXBsYXRlICYmIHRoaXMuaGFzSXRlbXMgPT09IGZhbHNlICYmIHRoaXMuaXNMb2FkaW5nKCkgPT09IGZhbHNlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IF9jbGFzcyA9IGBheC1kZWZhdWx0ICR7dGhpcy5zaG93RW1wdHlUZW1wbGF0ZSgpID8gJ2F4LXN0YXRlLWVtcHR5JyA6ICcnfWA7XG4gICAgcmV0dXJuIHRoaXMuaXRlbVRlbXBsYXRlID8gJycgOiBfY2xhc3M7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsaXN0LWNvbnRhaW5lclwiIGNka1ZpcnR1YWxTY3JvbGxpbmdFbGVtZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICBbaXRlbVNpemVdPVwiaXRlbUhlaWdodFNpZ25hbCgpXCJcbiAgICBbc3R5bGUuLS1pdGVtLWhlaWdodF09XCJpdGVtSGVpZ2h0U2lnbmFsKCkgKyAncHgnXCJcbiAgICAoc2Nyb2xsZWRJbmRleENoYW5nZSk9XCJfaGFuZGxlT25zY3JvbGxlZEluZGV4Q2hhbmdlKCRldmVudClcIlxuICA+XG4gICAgPHVsPlxuICAgICAgPCEtLSAgSXRlbSBUZW1wbGF0ZSAgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IGl0ZW0gb2YgbGlzdERhdGFTb3VyY2U7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZHhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0gIT09IG51bGwgJiYgaXRlbSAhPT0gdW5kZWZpbmVkOyBlbHNlIGxvYWRpbmdUcGxcIj5cbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1zZWxlY3RlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtaXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQoaXRlbSlcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZU9uSXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJnZXRWYWx1ZShpdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSAgQ3VzdG9tIEl0ZW0gVGVtcGxhdGUgIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0SXRlbVRwbFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBkYXRhOiBpdGVtIH0gfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLSAgRGVmYXVsdCBJdGVtIFRlbXBsYXRlICAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UcGw+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZDsgZWxzZSBsb2FkaW5nVHBsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm11bHRpcGxlICYmIGNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5heC1jaGVja2JveC1sYWJlbF09XCJtdWx0aXBsZSAmJiBjaGVja2JveFwiPnt7IGdldERpc3BsYXlUZXh0KGl0ZW0pIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hlY2sgYXgtc2VsZWN0ZWQtaWNvblwiICpuZ0lmPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSkgXCI+PC9pPiAtLT5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuPCEtLSAgTG9hZGluZyBUZW1wbGF0ZSAgLS0+XG48bmctdGVtcGxhdGUgI2xvYWRpbmdUcGw+XG4gIDwhLS0gIEN1c3RvbSBMb2FkaW5nIFRlbXBsYXRlICAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TG9hZGluZ1RwbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8IS0tICBEZWZhdWx0IExvYWRpbmcgVGVtcGxhdGUgIC0tPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkaW5nVHBsPlxuICAgIDxsaT57eyAnbG9hZGluZycgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvbGk+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuPCEtLSAgRW1wdHkgVGVtcGxhdGUgIC0tPlxuQGlmIChzaG93RW1wdHlUZW1wbGF0ZSgpKSB7XG4gIDxkaXYgY2xhc3M9XCJlbXB0eS1jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  import { NXComponent, NXEvent } from '@acorex/components/common';
2
2
  import { isBrowser } from '@acorex/core/platform';
3
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';
4
+ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
5
+ import { afterNextRender, ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, input, output, PLATFORM_ID, Renderer2, signal, ViewEncapsulation, } from '@angular/core';
6
6
  import { cloneDeep } from 'lodash-es';
7
7
  import { AXMenuService } from './menu.service';
8
8
  import { AXRootMenu, } from './menu.types';
@@ -37,6 +37,7 @@ export class AXContextMenuComponent extends NXComponent {
37
37
  this.service = inject(AXMenuService);
38
38
  this.renderer = inject(Renderer2);
39
39
  this.document = inject(DOCUMENT);
40
+ this.platformID = inject(PLATFORM_ID);
40
41
  this.items = signal([]);
41
42
  //
42
43
  afterNextRender(() => {
@@ -74,12 +75,15 @@ export class AXContextMenuComponent extends NXComponent {
74
75
  // Private Methods (Internal Logic)
75
76
  /** @ignore */
76
77
  getTargetElements() {
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()];
82
- return elements;
78
+ if (isPlatformBrowser(this.platformID)) {
79
+ const elements = typeof this.target() == 'string'
80
+ ? Array.from(this.document.querySelectorAll(this.target()))
81
+ : Array.isArray(this.target())
82
+ ? this.target()
83
+ : [this.target()];
84
+ return elements;
85
+ }
86
+ return null;
83
87
  }
84
88
  /** @ignore */
85
89
  bindContextEvent() {
@@ -98,21 +102,23 @@ export class AXContextMenuComponent extends NXComponent {
98
102
  e.preventDefault();
99
103
  e.stopPropagation();
100
104
  //
101
- const elementsUnderMouse = this.document.elementsFromPoint(e.x, e.y);
102
- const targetElements = this.getTargetElements();
103
- const targetElement = elementsUnderMouse.find((target) => targetElements.includes(target));
104
- //
105
- const event = {
106
- sender: this,
107
- canceled: false,
108
- targetElement: targetElement,
109
- items: cloneDeep(this.orginalItems()),
110
- };
111
- this.onOpening.emit(event);
112
- this.items.set(event.items);
113
- //
114
- if (!event.canceled) {
115
- this.showAt({ x: e.clientX, y: e.clientY });
105
+ if (isPlatformBrowser(this.platformID)) {
106
+ const elementsUnderMouse = this.document.elementsFromPoint(e.x, e.y);
107
+ const targetElements = this.getTargetElements();
108
+ const targetElement = elementsUnderMouse.find((target) => targetElements.includes(target));
109
+ //
110
+ const event = {
111
+ sender: this,
112
+ canceled: false,
113
+ targetElement: targetElement,
114
+ items: cloneDeep(this.orginalItems()),
115
+ };
116
+ this.onOpening.emit(event);
117
+ this.items.set(event.items);
118
+ //
119
+ if (!event.canceled) {
120
+ this.showAt({ x: e.clientX, y: e.clientY });
121
+ }
116
122
  }
117
123
  }
118
124
  /** @ignore */
@@ -174,14 +180,16 @@ export class AXContextMenuComponent extends NXComponent {
174
180
  const l3 = this.renderer.listen(this.backdropElement, 'contextmenu', (e) => {
175
181
  this.close();
176
182
  // Get all elements under the mouse pointer
177
- const elementsUnderMouse = this.document.elementsFromPoint(e.x, e.y);
178
- const targetElements = this.getTargetElements();
179
- if (targetElements.some((target) => elementsUnderMouse.includes(target))) {
180
- e.preventDefault();
181
- setTimeout(() => {
182
- //this.internalShowAt({ x: e.x, y: e.y });
183
- this.handleContextMenu(e);
184
- });
183
+ if (isPlatformBrowser(this.platformID)) {
184
+ const elementsUnderMouse = this.document.elementsFromPoint(e.x, e.y);
185
+ const targetElements = this.getTargetElements();
186
+ if (targetElements.some((target) => elementsUnderMouse.includes(target))) {
187
+ e.preventDefault();
188
+ setTimeout(() => {
189
+ //this.internalShowAt({ x: e.x, y: e.y });
190
+ this.handleContextMenu(e);
191
+ });
192
+ }
185
193
  }
186
194
  l3();
187
195
  });
@@ -239,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
239
247
  type: HostBinding,
240
248
  args: ['class']
241
249
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBS0wsVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDOzs7OztBQUV0QixNQUFNLE9BQU8seUJBQTBCLFNBQVEsT0FBK0I7SUFBOUU7O1FBRUUsYUFBUSxHQUFHLEtBQUssQ0FBQztJQUVuQixDQUFDO0NBQUE7QUFHRDs7O0dBR0c7QUFlSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsV0FBVztJQWtCckQscUNBQXFDO0lBRXJDLGNBQWM7SUFDZDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBckJWLHFCQUFxQjtRQUVyQixnQkFB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TUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7SUFDcEcsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNJLFdBQVc7UUFDYixPQUFPO1lBQ0wsbUJBQW1CO1lBQ25CLGtCQUFrQixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDdEMsZ0JBQWdCO1lBQ2hCLHlCQUF5QjtTQUMxQixDQUFDO0lBQ0osQ0FBQzs4R0F6T1Usc0JBQXNCO2tHQUF0QixzQkFBc0IscTVCQVJ0QjtZQUNULGFBQWE7WUFDYjtnQkFDRSxPQUFPLEVBQUUsVUFBVTtnQkFDbkIsV0FBVyxFQUFFLHNCQUFzQjthQUNwQztTQUNGLGlEQ2xESCx5aUNBb0NBOzsyRkRnQmEsc0JBQXNCO2tCQWRsQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULGFBQWE7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLFVBQVU7NEJBQ25CLFdBQVcsd0JBQXdCO3lCQUNwQztxQkFDRjt3REE2Tk8sYUFBYTtzQkFGcEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN4QyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRckMsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE9yaWVudGF0aW9uLCBOWENvbXBvbmVudCwgTlhFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYUG9pbnQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhNZW51U2VydmljZSB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYTWVudUNsb3NlVHJpZ2dlcixcbiAgQVhNZW51SXRlbSxcbiAgQVhNZW51SXRlbUNsaWNrQmFzZUV2ZW50LFxuICBBWE1lbnVPcGVuVHJpZ2dlcixcbiAgQVhSb290TWVudSxcbn0gZnJvbSAnLi9tZW51LnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQgZXh0ZW5kcyBOWEV2ZW50PEFYQ29udGV4dE1lbnVDb21wb25lbnQ+IHtcbiAgaXRlbXM6IEFYTWVudUl0ZW1bXTtcbiAgY2FuY2VsZWQgPSBmYWxzZTtcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQ7XG59XG5leHBvcnQgdHlwZSBBWENvbnRleHRNZW51SXRlbXNDbGlja0V2ZW50ID0gQVhNZW51SXRlbUNsaWNrQmFzZUV2ZW50PEFYQ29udGV4dE1lbnVDb21wb25lbnQ+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtZW51IGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGNvbnRleHQgbWVudS5cbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnRleHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQVhNZW51U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFJvb3RNZW51LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb250ZXh0TWVudUNvbXBvbmVudCBleHRlbmRzIE5YQ29tcG9uZW50IHtcbiAgLy8gSW5wdXRzIGFuZCBPdXRwdXRzXG5cbiAgb3JpZW50YXRpb24gPSBpbnB1dDxBWE9yaWVudGF0aW9uPigndmVydGljYWwnKTtcbiAgb3Blbk9uID0gaW5wdXQ8QVhNZW51T3BlblRyaWdnZXI+KCdob3ZlcicpO1xuICBjbG9zZU9uID0gaW5wdXQ8QVhNZW51Q2xvc2VUcmlnZ2VyPignY2xpY2snKTtcbiAgb3JnaW5hbEl0ZW1zID0gaW5wdXQ8QVhNZW51SXRlbVtdPihbXSwgeyBhbGlhczogJ2l0ZW1zJyB9KTtcbiAgdGFyZ2V0ID0gaW5wdXQ8SFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdIHwgc3RyaW5nPigpO1xuXG4gIG9uSXRlbUNsaWNrID0gb3V0cHV0PEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQ+KCk7XG4gIG9uT3BlbmluZyA9IG91dHB1dDxBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50PigpO1xuXG4gIC8vIEluamVjdGVkIFNlcnZpY2VzXG5cbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYTWVudVNlcnZpY2UpO1xuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8vIENvbnN0cnVjdG9yIChEZXBlbmRlbmN5IEluamVjdGlvbilcblxuICAvKiogQGlnbm9yZSAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vXG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuYmluZENvbnRleHRFdmVudCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNlcnZpY2UuY2xvc2VBbGwkLm5leHQoKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VydmljZS5vcGVuQ29udGV4dE1lbnUkLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKChlLnNlbmRlciBhcyBhbnkpID09IHRoaXMpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNob3dBdChlLnBvaW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIExpZmVjeWNsZSBIb29rc1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgdGhpcy5yZW1vdmVDb250ZXh0RXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmJpbmRDb250ZXh0RXZlbnQoKTtcbiAgfVxuXG4gIC8vIFB1YmxpYyBNZXRob2RzXG5cbiAgcHVibGljIHNob3dBdChwb2ludDogQVhQb2ludCkge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMgYXMgYW55IGFzIEFYUm9vdE1lbnU7XG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXIgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9wZW5Db250ZXh0TWVudSQubmV4dCh7IHNlbmRlciwgcG9pbnQgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgdGhpcy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLW9wZW4nKTtcbiAgICB0aGlzLnJlbW92ZUJhY2tkcm9wKCk7XG4gIH1cblxuICAvLyBQcml2YXRlIFByb3BlcnRpZXNcblxuICBwcml2YXRlIGJhY2tkcm9wRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuXG4gIHByb3RlY3RlZCBpdGVtcyA9IHNpZ25hbDxBWE1lbnVJdGVtW10+KFtdKTtcblxuICAvLyBQcml2YXRlIE1ldGhvZHMgKEludGVybmFsIExvZ2ljKVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgZ2V0VGFyZ2V0RWxlbWVudHMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgY29uc3QgZWxlbWVudHM6IEhUTUxFbGVtZW50W10gPVxuICAgICAgdHlwZW9mIHRoaXMudGFyZ2V0KCkgPT0gJ3N0cmluZydcbiAgICAgICAgPyBBcnJheS5mcm9tKHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4odGhpcy50YXJnZXQoKSBhcyBzdHJpbmcpKVxuICAgICAgICA6IEFycmF5LmlzQXJyYXkodGhpcy50YXJnZXQoKSlcbiAgICAgICAgICA/ICh0aGlzLnRhcmdldCgpIGFzIEhUTUxFbGVtZW50W10pXG4gICAgICAgICAgOiBbdGhpcy50YXJnZXQoKSBhcyBIVE1MRWxlbWVudF07XG5cbiAgICByZXR1cm4gZWxlbWVudHM7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGJpbmRDb250ZXh0RXZlbnQoKSB7XG4gICAgdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGUuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCB0aGlzLmhhbmRsZUNvbnRleHRNZW51LmJpbmQodGhpcykpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZW1vdmVDb250ZXh0RXZlbnQoKSB7XG4gICAgdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCB0aGlzLmhhbmRsZUNvbnRleHRNZW51LmJpbmQodGhpcykpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBoYW5kbGVDb250ZXh0TWVudShlOiBNb3VzZUV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgLy9cbiAgICBjb25zdCBlbGVtZW50c1VuZGVyTW91c2UgPSB0aGlzLmRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KGUueCwgZS55KSBhcyBIVE1MRWxlbWVudFtdO1xuICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpO1xuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBlbGVtZW50c1VuZGVyTW91c2UuZmluZCgodGFyZ2V0KSA9PiB0YXJnZXRFbGVtZW50cy5pbmNsdWRlcyh0YXJnZXQpKTtcbiAgICAvL1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgc2VuZGVyOiB0aGlzLFxuICAgICAgY2FuY2VsZWQ6IGZhbHNlLFxuICAgICAgdGFyZ2V0RWxlbWVudDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIGl0ZW1zOiBjbG9uZURlZXAodGhpcy5vcmdpbmFsSXRlbXMoKSksXG4gICAgfSBhcyBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50O1xuICAgIHRoaXMub25PcGVuaW5nLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMuaXRlbXMuc2V0KGV2ZW50Lml0ZW1zKTtcbiAgICAvL1xuICAgIGlmICghZXZlbnQuY2FuY2VsZWQpIHtcbiAgICAgIHRoaXMuc2hvd0F0KHsgeDogZS5jbGllbnRYLCB5OiBlLmNsaWVudFkgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBpbnRlcm5hbFNob3dBdChwb2ludDogQVhQb2ludCkge1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgZWxlbWVudFJlZi5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1vcGVuJyk7XG4gICAgY29uc3QgaXRlbVJlY3QgPSBlbGVtZW50UmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuXG4gICAgLy8gRGV0ZWN0IFJUTCAoUmlnaHQtVG8tTGVmdCkgbW9kZVxuICAgIGNvbnN0IGlzUnRsID0gQVhIdG1sVXRpbC5pc1J0bChlbGVtZW50UmVmKTtcblxuICAgIGxldCBsZWZ0OiBudW1iZXI7XG4gICAgaWYgKGlzUnRsKSB7XG4gICAgICBsZWZ0ID0gcG9pbnQueCAtIGl0ZW1SZWN0LndpZHRoO1xuICAgICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICAgIGxlZnQgPSBwb2ludC54O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gcG9pbnQueDtcbiAgICAgIGlmIChsZWZ0ICsgaXRlbVJlY3Qud2lkdGggPiB3aW5kb3dXaWR0aCkge1xuICAgICAgICBsZWZ0ID0gcG9pbnQueCAtIGl0ZW1SZWN0LndpZHRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJvdHRvbSA9IHBvaW50LnkgKyBpdGVtUmVjdC5oZWlnaHQ7XG4gICAgbGV0IHRvcDogbnVtYmVyO1xuXG4gICAgaWYgKGJvdHRvbSA+IHdpbmRvd0hlaWdodCkge1xuICAgICAgdG9wID0gcG9pbnQueSAtIGl0ZW1SZWN0LmhlaWdodDtcbiAgICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICAgIHRvcCA9IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvcCA9IHBvaW50Lnk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50UmVmLCAnbGVmdCcsIGAke2xlZnR9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYsICd0b3AnLCBgJHt0b3B9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnRSZWYsICdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgdGhpcy5jcmVhdGVCYWNrZHJvcCgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBjcmVhdGVCYWNrZHJvcCgpIHtcbiAgICB0aGlzLmJhY2tkcm9wRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ3RvcCcsICcwJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2xlZnQnLCAnMCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsZW1lbnQsICd3aWR0aCcsICcxMDAlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2hlaWdodCcsICcxMDAlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ3otaW5kZXgnLCAnOTk5Jyk7IC8vIEVuc3VyZSBpdCdzIGJlbG93IHRoZSBjb250ZXh0IG1lbnVcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnYmFja2dyb3VuZCcsICd0cmFuc3BhcmVudCcpO1xuXG4gICAgY29uc3QgbDEgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgbDEoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGwyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5iYWNrZHJvcEVsZW1lbnQsICd3aGVlbCcsICgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIGwyKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBsMyA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnY29udGV4dG1lbnUnLCAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgLy8gR2V0IGFsbCBlbGVtZW50cyB1bmRlciB0aGUgbW91c2UgcG9pbnRlclxuICAgICAgY29uc3QgZWxlbWVudHNVbmRlck1vdXNlID0gdGhpcy5kb2N1bWVudC5lbGVtZW50c0Zyb21Qb2ludChlLngsIGUueSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpO1xuICAgICAgaWYgKHRhcmdldEVsZW1lbnRzLnNvbWUoKHRhcmdldCkgPT4gZWxlbWVudHNVbmRlck1vdXNlLmluY2x1ZGVzKHRhcmdldCkpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgLy90aGlzLmludGVybmFsU2hvd0F0KHsgeDogZS54LCB5OiBlLnkgfSk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVDb250ZXh0TWVudShlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsMygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuYmFja2Ryb3BFbGVtZW50KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVtb3ZlQmFja2Ryb3AoKSB7XG4gICAgaWYgKHRoaXMuYmFja2Ryb3BFbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5iYWNrZHJvcEVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICB0aGlzLmJhY2tkcm9wRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuYmFja2Ryb3BFbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYmFja2Ryb3BFbGVtZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3N0IExpc3RlbmVycyAoVUkgSW50ZXJhY3Rpb24gSGFuZGxpbmcpXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBwcml2YXRlIG9uV2luZG93RXZlbnQoKSB7XG4gICAgY29uc3Qgc2VuZGVyID0gdGhpcyBhcyBhbnkgYXMgQVhSb290TWVudTtcbiAgICB0aGlzLnNlcnZpY2UuY2xvc2VBbGxDb250ZXh0TWVudSQubmV4dCh7IHNlbmRlcjogc2VuZGVyIH0pOyAvLyBDbG9zZSBhbGwgbWVudXMgb24gc2Nyb2xsIG9yIHJlc2l6ZVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfX2hvc3RDbGFzcygpOiBhbnkge1xuICAgIHJldHVybiBbXG4gICAgICAnYXgtbWVudS1jb250YWluZXInLFxuICAgICAgYGF4LW9yaWVudGF0aW9uLSR7dGhpcy5vcmllbnRhdGlvbigpfWAsXG4gICAgICAnYXgtYWN0aW9uLWxpc3QnLFxuICAgICAgJ2F4LWFjdGlvbi1saXN0LXZlcnRpY2FsJyxcbiAgICBdO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1tZW51LWl0ZW0sYXgtZGl2aWRlcixheC10aXRsZSxuZy1jb250YWluZXJcIj48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nRm9yPVwibGV0IG5vZGUgb2YgaXRlbXMoKVwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlJlY3Vyc2lvblwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCJcbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNSZWN1cnNpb24gbGV0LWl0ZW0+XG4gIEBpZiAoaXRlbS5ncm91cD8udGl0bGUpIHtcbiAgICA8YXgtdGl0bGU+e3sgaXRlbS5ncm91cD8udGl0bGUgfX08L2F4LXRpdGxlPlxuICB9XG4gIDxheC1tZW51LWl0ZW0gW25hbWVdPVwiaXRlbS5uYW1lXCIgW2RhdGFdPVwiaXRlbS5kYXRhXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiPlxuICAgIDxheC1wcmVmaXg+XG4gICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgfVxuICAgIDwvYXgtcHJlZml4PlxuICAgIEBpZiAoaXRlbS50ZXh0KSB7XG4gICAgICA8YXgtdGV4dD57eyBpdGVtLnRleHQgfX08L2F4LXRleHQ+XG4gICAgfVxuICAgIEBpZiAoaXRlbS5zdWZmaXgpIHtcbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC10ZXh0Pnt7IGl0ZW0uc3VmZml4LnRleHQgfX08L2F4LXRleHQ+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICB9XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uaXRlbXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiUmVjdXJzaW9uXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY2hpbGQgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2F4LW1lbnUtaXRlbT5cbiAgQGlmIChpdGVtLmJyZWFrKSB7XG4gICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9tZW51L3NyYy9saWIvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUtMLFVBQVUsR0FDWCxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFFdEIsTUFBTSxPQUFPLHlCQUEwQixTQUFRLE9BQStCO0lBQTlFOztRQUVFLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFFbkIsQ0FBQztDQUFBO0FBR0Q7OztHQUdHO0FBZUgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQVc7SUFtQnJELHFDQUFxQztJQUVyQyxjQUFjO0lBQ2Q7UUFDRSxLQUFLLEVBQUUsQ0FBQztR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bnQiOlsiaW1wb3J0IHsgQVhPcmllbnRhdGlvbiwgTlhDb21wb25lbnQsIE5YRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBBWEh0bWxVdGlsLCBBWFBvaW50IH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhNZW51U2VydmljZSB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYTWVudUNsb3NlVHJpZ2dlcixcbiAgQVhNZW51SXRlbSxcbiAgQVhNZW51SXRlbUNsaWNrQmFzZUV2ZW50LFxuICBBWE1lbnVPcGVuVHJpZ2dlcixcbiAgQVhSb290TWVudSxcbn0gZnJvbSAnLi9tZW51LnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQgZXh0ZW5kcyBOWEV2ZW50PEFYQ29udGV4dE1lbnVDb21wb25lbnQ+IHtcbiAgaXRlbXM6IEFYTWVudUl0ZW1bXTtcbiAgY2FuY2VsZWQgPSBmYWxzZTtcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQ7XG59XG5leHBvcnQgdHlwZSBBWENvbnRleHRNZW51SXRlbXNDbGlja0V2ZW50ID0gQVhNZW51SXRlbUNsaWNrQmFzZUV2ZW50PEFYQ29udGV4dE1lbnVDb21wb25lbnQ+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtZW51IGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGNvbnRleHQgbWVudS5cbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbnRleHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQVhNZW51U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFJvb3RNZW51LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhDb250ZXh0TWVudUNvbXBvbmVudCBleHRlbmRzIE5YQ29tcG9uZW50IHtcbiAgLy8gSW5wdXRzIGFuZCBPdXRwdXRzXG5cbiAgb3JpZW50YXRpb24gPSBpbnB1dDxBWE9yaWVudGF0aW9uPigndmVydGljYWwnKTtcbiAgb3Blbk9uID0gaW5wdXQ8QVhNZW51T3BlblRyaWdnZXI+KCdob3ZlcicpO1xuICBjbG9zZU9uID0gaW5wdXQ8QVhNZW51Q2xvc2VUcmlnZ2VyPignY2xpY2snKTtcbiAgb3JnaW5hbEl0ZW1zID0gaW5wdXQ8QVhNZW51SXRlbVtdPihbXSwgeyBhbGlhczogJ2l0ZW1zJyB9KTtcbiAgdGFyZ2V0ID0gaW5wdXQ8SFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdIHwgc3RyaW5nPigpO1xuXG4gIG9uSXRlbUNsaWNrID0gb3V0cHV0PEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQ+KCk7XG4gIG9uT3BlbmluZyA9IG91dHB1dDxBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50PigpO1xuXG4gIC8vIEluamVjdGVkIFNlcnZpY2VzXG5cbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYTWVudVNlcnZpY2UpO1xuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIC8vIENvbnN0cnVjdG9yIChEZXBlbmRlbmN5IEluamVjdGlvbilcblxuICAvKiogQGlnbm9yZSAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vXG4gICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgIHRoaXMuYmluZENvbnRleHRFdmVudCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNlcnZpY2UuY2xvc2VBbGwkLm5leHQoKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VydmljZS5vcGVuQ29udGV4dE1lbnUkLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKChlLnNlbmRlciBhcyBhbnkpID09IHRoaXMpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNob3dBdChlLnBvaW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIExpZmVjeWNsZSBIb29rc1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgdGhpcy5yZW1vdmVDb250ZXh0RXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmJpbmRDb250ZXh0RXZlbnQoKTtcbiAgfVxuXG4gIC8vIFB1YmxpYyBNZXRob2RzXG5cbiAgcHVibGljIHNob3dBdChwb2ludDogQVhQb2ludCkge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMgYXMgYW55IGFzIEFYUm9vdE1lbnU7XG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlQWxsQ29udGV4dE1lbnUkLm5leHQoeyBzZW5kZXIgfSk7XG4gICAgdGhpcy5zZXJ2aWNlLm9wZW5Db250ZXh0TWVudSQubmV4dCh7IHNlbmRlciwgcG9pbnQgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgdGhpcy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLW9wZW4nKTtcbiAgICB0aGlzLnJlbW92ZUJhY2tkcm9wKCk7XG4gIH1cblxuICAvLyBQcml2YXRlIFByb3BlcnRpZXNcblxuICBwcml2YXRlIGJhY2tkcm9wRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuXG4gIHByb3RlY3RlZCBpdGVtcyA9IHNpZ25hbDxBWE1lbnVJdGVtW10+KFtdKTtcblxuICAvLyBQcml2YXRlIE1ldGhvZHMgKEludGVybmFsIExvZ2ljKVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgZ2V0VGFyZ2V0RWxlbWVudHMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID1cbiAgICAgICAgdHlwZW9mIHRoaXMudGFyZ2V0KCkgPT0gJ3N0cmluZydcbiAgICAgICAgICA/IEFycmF5LmZyb20odGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50Pih0aGlzLnRhcmdldCgpIGFzIHN0cmluZykpXG4gICAgICAgICAgOiBBcnJheS5pc0FycmF5KHRoaXMudGFyZ2V0KCkpXG4gICAgICAgICAgICA/ICh0aGlzLnRhcmdldCgpIGFzIEhUTUxFbGVtZW50W10pXG4gICAgICAgICAgICA6IFt0aGlzLnRhcmdldCgpIGFzIEhUTUxFbGVtZW50XTtcblxuICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgYmluZENvbnRleHRFdmVudCgpIHtcbiAgICB0aGlzLmdldFRhcmdldEVsZW1lbnRzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgZS5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIHRoaXMuaGFuZGxlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIHJlbW92ZUNvbnRleHRFdmVudCgpIHtcbiAgICB0aGlzLmdldFRhcmdldEVsZW1lbnRzKCkuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIHRoaXMuaGFuZGxlQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGhhbmRsZUNvbnRleHRNZW51KGU6IE1vdXNlRXZlbnQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAvL1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBjb25zdCBlbGVtZW50c1VuZGVyTW91c2UgPSB0aGlzLmRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KGUueCwgZS55KSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudHMgPSB0aGlzLmdldFRhcmdldEVsZW1lbnRzKCk7XG4gICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZWxlbWVudHNVbmRlck1vdXNlLmZpbmQoKHRhcmdldCkgPT4gdGFyZ2V0RWxlbWVudHMuaW5jbHVkZXModGFyZ2V0KSk7XG4gICAgICAvL1xuICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgICAgY2FuY2VsZWQ6IGZhbHNlLFxuICAgICAgICB0YXJnZXRFbGVtZW50OiB0YXJnZXRFbGVtZW50LFxuICAgICAgICBpdGVtczogY2xvbmVEZWVwKHRoaXMub3JnaW5hbEl0ZW1zKCkpLFxuICAgICAgfSBhcyBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50O1xuICAgICAgdGhpcy5vbk9wZW5pbmcuZW1pdChldmVudCk7XG4gICAgICB0aGlzLml0ZW1zLnNldChldmVudC5pdGVtcyk7XG4gICAgICAvL1xuICAgICAgaWYgKCFldmVudC5jYW5jZWxlZCkge1xuICAgICAgICB0aGlzLnNob3dBdCh7IHg6IGUuY2xpZW50WCwgeTogZS5jbGllbnRZIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgaW50ZXJuYWxTaG93QXQocG9pbnQ6IEFYUG9pbnQpIHtcbiAgICBjb25zdCBlbGVtZW50UmVmID0gdGhpcy5uYXRpdmVFbGVtZW50O1xuICAgIGVsZW1lbnRSZWYuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtb3BlbicpO1xuICAgIGNvbnN0IGl0ZW1SZWN0ID0gZWxlbWVudFJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuICAgIC8vIERldGVjdCBSVEwgKFJpZ2h0LVRvLUxlZnQpIG1vZGVcbiAgICBjb25zdCBpc1J0bCA9IEFYSHRtbFV0aWwuaXNSdGwoZWxlbWVudFJlZik7XG5cbiAgICBsZXQgbGVmdDogbnVtYmVyO1xuICAgIGlmIChpc1J0bCkge1xuICAgICAgbGVmdCA9IHBvaW50LnggLSBpdGVtUmVjdC53aWR0aDtcbiAgICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgICBsZWZ0ID0gcG9pbnQueDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVmdCA9IHBvaW50Lng7XG4gICAgICBpZiAobGVmdCArIGl0ZW1SZWN0LndpZHRoID4gd2luZG93V2lkdGgpIHtcbiAgICAgICAgbGVmdCA9IHBvaW50LnggLSBpdGVtUmVjdC53aWR0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBib3R0b20gPSBwb2ludC55ICsgaXRlbVJlY3QuaGVpZ2h0O1xuICAgIGxldCB0b3A6IG51bWJlcjtcblxuICAgIGlmIChib3R0b20gPiB3aW5kb3dIZWlnaHQpIHtcbiAgICAgIHRvcCA9IHBvaW50LnkgLSBpdGVtUmVjdC5oZWlnaHQ7XG4gICAgICBpZiAodG9wIDwgMCkge1xuICAgICAgICB0b3AgPSAwO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0b3AgPSBwb2ludC55O1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudFJlZiwgJ2xlZnQnLCBgJHtsZWZ0fXB4YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50UmVmLCAndG9wJywgYCR7dG9wfXB4YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50UmVmLCAncG9zaXRpb24nLCAnZml4ZWQnKTtcblxuICAgIHRoaXMuY3JlYXRlQmFja2Ryb3AoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgY3JlYXRlQmFja2Ryb3AoKSB7XG4gICAgdGhpcy5iYWNrZHJvcEVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsZW1lbnQsICdwb3NpdGlvbicsICdmaXhlZCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsZW1lbnQsICd0b3AnLCAnMCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsZW1lbnQsICdsZWZ0JywgJzAnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnd2lkdGgnLCAnMTAwJScpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsZW1lbnQsICdoZWlnaHQnLCAnMTAwJScpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5iYWNrZHJvcEVsZW1lbnQsICd6LWluZGV4JywgJzk5OScpOyAvLyBFbnN1cmUgaXQncyBiZWxvdyB0aGUgY29udGV4dCBtZW51XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2JhY2tncm91bmQnLCAndHJhbnNwYXJlbnQnKTtcblxuICAgIGNvbnN0IGwxID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5iYWNrZHJvcEVsZW1lbnQsICdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIGwxKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBsMiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuYmFja2Ryb3BFbGVtZW50LCAnd2hlZWwnLCAoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICBsMigpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbDMgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmJhY2tkcm9wRWxlbWVudCwgJ2NvbnRleHRtZW51JywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIC8vIEdldCBhbGwgZWxlbWVudHMgdW5kZXIgdGhlIG1vdXNlIHBvaW50ZXJcbiAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzVW5kZXJNb3VzZSA9IHRoaXMuZG9jdW1lbnQuZWxlbWVudHNGcm9tUG9pbnQoZS54LCBlLnkpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gdGhpcy5nZXRUYXJnZXRFbGVtZW50cygpO1xuICAgICAgICBpZiAodGFyZ2V0RWxlbWVudHMuc29tZSgodGFyZ2V0KSA9PiBlbGVtZW50c1VuZGVyTW91c2UuaW5jbHVkZXModGFyZ2V0KSkpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvL3RoaXMuaW50ZXJuYWxTaG93QXQoeyB4OiBlLngsIHk6IGUueSB9KTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29udGV4dE1lbnUoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGwzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5iYWNrZHJvcEVsZW1lbnQpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZW1vdmVCYWNrZHJvcCgpIHtcbiAgICBpZiAodGhpcy5iYWNrZHJvcEVsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLmJhY2tkcm9wRWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgIHRoaXMuYmFja2Ryb3BFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5iYWNrZHJvcEVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5iYWNrZHJvcEVsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhvc3QgTGlzdGVuZXJzIChVSSBJbnRlcmFjdGlvbiBIYW5kbGluZylcblxuICAvKiogQGlnbm9yZSAqL1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25XaW5kb3dFdmVudCgpIHtcbiAgICBjb25zdCBzZW5kZXIgPSB0aGlzIGFzIGFueSBhcyBBWFJvb3RNZW51O1xuICAgIHRoaXMuc2VydmljZS5jbG9zZUFsbENvbnRleHRNZW51JC5uZXh0KHsgc2VuZGVyOiBzZW5kZXIgfSk7IC8vIENsb3NlIGFsbCBtZW51cyBvbiBzY3JvbGwgb3IgcmVzaXplXG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9faG9zdENsYXNzKCk6IGFueSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdheC1tZW51LWNvbnRhaW5lcicsXG4gICAgICBgYXgtb3JpZW50YXRpb24tJHt0aGlzLm9yaWVudGF0aW9uKCl9YCxcbiAgICAgICdheC1hY3Rpb24tbGlzdCcsXG4gICAgICAnYXgtYWN0aW9uLWxpc3QtdmVydGljYWwnLFxuICAgIF07XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImF4LW1lbnUtaXRlbSxheC1kaXZpZGVyLGF4LXRpdGxlLG5nLWNvbnRhaW5lclwiPjwvbmctY29udGVudD5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBpdGVtcygpXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwiUmVjdXJzaW9uXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIlxuPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI1JlY3Vyc2lvbiBsZXQtaXRlbT5cbiAgQGlmIChpdGVtLmdyb3VwPy50aXRsZSkge1xuICAgIDxheC10aXRsZT57eyBpdGVtLmdyb3VwPy50aXRsZSB9fTwvYXgtdGl0bGU+XG4gIH1cbiAgPGF4LW1lbnUtaXRlbSBbbmFtZV09XCJpdGVtLm5hbWVcIiBbZGF0YV09XCJpdGVtLmRhdGFcIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiIFtjb2xvcl09XCJpdGVtLmNvbG9yXCI+XG4gICAgPGF4LXByZWZpeD5cbiAgICAgIEBpZiAoaXRlbS5pY29uKSB7XG4gICAgICAgIDxheC1pY29uIFtpY29uXT1cIml0ZW0uaWNvblwiPiA8L2F4LWljb24+XG4gICAgICB9XG4gICAgPC9heC1wcmVmaXg+XG4gICAgQGlmIChpdGVtLnRleHQpIHtcbiAgICAgIDxheC10ZXh0Pnt7IGl0ZW0udGV4dCB9fTwvYXgtdGV4dD5cbiAgICB9XG4gICAgQGlmIChpdGVtLnN1ZmZpeCkge1xuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGF4LXRleHQ+e3sgaXRlbS5zdWZmaXgudGV4dCB9fTwvYXgtdGV4dD5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIH1cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5pdGVtc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJSZWN1cnNpb25cIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjaGlsZCB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvYXgtbWVudS1pdGVtPlxuICBAaWYgKGl0ZW0uYnJlYWspIHtcbiAgICA8YXgtZGl2aWRlcj48L2F4LWRpdmlkZXI+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -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, input, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, ViewEncapsulation, forwardRef, } 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,14 +24,6 @@ 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);
35
27
  }
36
28
  /** @ignore */
37
29
  _handleModelChange(value) {
@@ -51,7 +43,7 @@ export class AXPasswordBoxComponent extends classes((MXInputBaseValueComponent),
51
43
  }
52
44
  }
53
45
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
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: [
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: [
55
47
  { provide: AXComponent, useExisting: AXPasswordBoxComponent },
56
48
  { provide: AXFocusableComponent, useExisting: AXPasswordBoxComponent },
57
49
  { provide: AXClearableComponent, useExisting: AXPasswordBoxComponent },
@@ -98,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
98
90
  type: Input,
99
91
  args: ['class']
100
92
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bhc3N3b3JkLWJveC9zcmMvbGliL3Bhc3N3b3JkLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBRW5DOzs7O0dBSUc7QUFxQ0gsTUFBTSxPQUFPLHNCQUF1QixTQUFRLE9BQU8sQ0FBQyxDQUFBLHlCQUFpQyxDQUFBLEVBQUUsZUFBZSxDQUFDO0lBcEN2Rzs7UUF3Q0UsY0FBYztRQUNKLFVBQUssR0FBd0IsVUFBVSxDQUFDO1FBRWxELGNBQWM7UUFDSixVQUFLLEdBQW9ELG9CQUFvQixDQUFDO1FBRXhGOztXQUVHO1FBRUgsaUJBQVksR0FBa0UsZUFBZSxDQUFDO1FBRTlGOztXQUVHO1FBRUgscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBUXhCOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4Qjs7V0FFRztRQUNILGlCQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBd0I3QjtJQXRCQyxjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsd0JBQXdCLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLG9CQUFvQixDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDOzhHQXREVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixxbUVBWnRCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUM3RCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7WUFDdEUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQ3RFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUNyRTtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUNyRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaUpDNURILGk4Q0F1Q0E7OzJGRHVCYSxzQkFBc0I7a0JBcENsQyxTQUFTOytCQUNFLGlCQUFpQixVQUVuQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBTTFGO3dCQUNQLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1IsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxTQUFTO3dCQUNULFlBQVk7cUJBQ2IsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUVwQzt3QkFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDN0QsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDdEUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDdEUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyx3QkFBd0IsRUFBRTt3QkFDckU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUltQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBWWxCLFlBQVk7c0JBRFgsS0FBSztnQkFPTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xlYXJhYmxlQ29tcG9uZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQsXG4gIE1YTG9va0NvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuXG4vKipcbiAqIFRoZSBUZXh0Ym94IGlzIGEgY29tcG9uZW50IHdoaWNoIGRldGVjdHMgdXNlciBpbnRlcmFjdGlvbiBhbmQgdHJpZ2dlcnMgYSBjb3JyZXNwb25kaW5nIGV2ZW50XG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcGFzc3dvcmQtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICdwYXNzd29yZC1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBpbnB1dHM6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAndGFiSW5kZXgnLCAncGxhY2Vob2xkZXInLCAndmFsdWUnLCAnc3RhdGUnLCAnbmFtZScsICdpZCcsICdsb29rJ10sXG4gIHN0eWxlczogYFxuICAgIC5heC1zdHJlbmd0aC12YWxpZGF0aW9uLWNvbnRhaW5lciB7XG4gICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgIH1cbiAgYCxcbiAgb3V0cHV0czogW1xuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ3N0YXRlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAncmVhZG9ubHlDaGFuZ2UnLFxuICAgICdkaXNhYmxlZENoYW5nZScsXG4gICAgJ29uS2V5RG93bicsXG4gICAgJ29uS2V5VXAnLFxuICAgICdvbktleVByZXNzJyxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUGFzc3dvcmRCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQYXNzd29yZEJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhDbGVhcmFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBhc3N3b3JkQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQYXNzd29yZEJveENvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhQYXNzd29yZEJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBhc3N3b3JkQm94Q29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50PHN0cmluZz4sIE1YTG9va0NvbXBvbmVudCkge1xuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfdHlwZTogJ3Bhc3N3b3JkJyB8ICd0ZXh0JyA9ICdwYXNzd29yZCc7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF9pY29uOiAnYXgtaWNvbi12aXNpYmlsaXR5JyB8ICdheC1pY29uLXZpc2liaWxpdHktb2ZmJyA9ICdheC1pY29uLXZpc2liaWxpdHknO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhdXRvY29tcGxldGUgYmVoYXZpb3IgZm9yIHRoZSBpbnB1dCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGF1dG9Db21wbGV0ZTogJ2N1cnJlbnQtcGFzc3dvcmQnIHwgJ25ldy1wYXNzd29yZCcgfCAnb25lLXRpbWUtY29kZScgfCAnb2ZmJyA9ICdvbmUtdGltZS1jb2RlJztcblxuICAvKipcbiAgICogIEEgZmxhZyBmb3Igc2hvd2luZyBvciBoaWRpbmcgcGFzc3dvcmQgYnV0dG9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd1RvZ2dsZUJ1dHRvbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgY3VzdG9tIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoJ2NsYXNzJylcbiAgY2xhc3NOYW1lczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIaW50IHN0YXR1cy5cbiAgICovXG4gIHNob3dIaW50ID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBQcm9ncmVzcyBzdGF0dXMuXG4gICAqL1xuICBzaG93UHJvZ3Jlc3MgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2hhbmRsZU1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbW1pdFZhbHVlKHZhbHVlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBpbnB1dCB0eXBlIGJldHdlZW4gJ3Bhc3N3b3JkJyBhbmQgJ3RleHQnIHRvIHNob3cgb3IgaGlkZSB0aGUgcGFzc3dvcmQuXG4gICAqL1xuICB0b2dnbGVUeXBlKCkge1xuICAgIGlmICh0aGlzLl90eXBlID09PSAncGFzc3dvcmQnKSB7XG4gICAgICB0aGlzLl90eXBlID0gJ3RleHQnO1xuICAgICAgdGhpcy5faWNvbiA9ICdheC1pY29uLXZpc2liaWxpdHktb2ZmJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdHlwZSA9ICdwYXNzd29yZCc7XG4gICAgICB0aGlzLl9pY29uID0gJ2F4LWljb24tdmlzaWJpbGl0eSc7XG4gICAgfVxuICB9XG5cbiAgLy8gQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIC8vIGdldCBfX2hvc3RDbGFzcygpOiBzdHJpbmdbXSB7XG4gIC8vICAgcmV0dXJuIFsnYXgtZWRpdG9yLWNvbnRhaW5lcicsIGBheC1sb29rLSR7dGhpcy5sb29rfWAsIGAke3RoaXMuZGlzYWJsZWQgPyAnYXgtc3RhdGUtZGlzYWJsZWQnIDogJyd9YF07XG4gIC8vIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1lZGl0b3ItY29udGFpbmVyIGF4LWxvb2ste3sgbG9vayB9fSB7eyBjbGFzc05hbWVzIH19XCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXByZWZpeFwiPiA8L25nLWNvbnRlbnQ+XG4gIDxpbnB1dFxuICAgICNpbnB1dFxuICAgIGNsYXNzPVwiYXgtaW5wdXRcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFt0eXBlXT1cIl90eXBlXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtjbGFzcy5heC1zdGF0ZS1yZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4gICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGVcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9oYW5kbGVNb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJlbWl0T25LZXlkb3duRXZlbnQoJGV2ZW50KVwiXG4gICAgKGtleXVwKT1cImVtaXRPbktleXVwRXZlbnQoJGV2ZW50KVwiXG4gICAgKGtleXByZXNzKT1cImVtaXRPbktleXByZXNzRXZlbnQoJGV2ZW50KVwiXG4gICAgKGZvY3VzKT1cImVtaXRPbkZvY3VzRXZlbnQoJGV2ZW50KVwiXG4gICAgKGJsdXIpPVwiZW1pdE9uQmx1ckV2ZW50KCRldmVudClcIlxuICAvPlxuICBAaWYgKHZhbHVlICYmICFkaXNhYmxlZCAmJiAhcmVhZG9ubHkpIHtcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jbGVhci1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gIH1cbiAgQGlmIChzaG93VG9nZ2xlQnV0dG9uKSB7XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJheC1nZW5lcmFsLWJ1dHRvbiBheC1idXR0b24taWNvblwiIChjbGljayk9XCJ0b2dnbGVUeXBlKClcIiBbdGFiSW5kZXhdPVwiLTFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXgtaWNvbiB7eyBfaWNvbiB9fVwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1zdWZmaXhcIj4gPC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC12YWxpZGF0aW9uLXJ1bGVcIj4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXgtZXJyb3ItY29udGFpbmVyXCI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJheC1zdHJlbmd0aC12YWxpZGF0aW9uLWNvbnRhaW5lclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uXCIgW3Nob3dIaW50XT1cInNob3dTdHJlbmd0aCgpXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Bhc3N3b3JkLWJveC9zcmMvbGliL3Bhc3N3b3JkLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFFbkM7Ozs7R0FJRztBQXFDSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsT0FBTyxDQUFDLENBQUEseUJBQWlDLENBQUEsRUFBRSxlQUFlLENBQUM7SUFwQ3ZHOztRQXdDRSxjQUFjO1FBQ0osVUFBSyxHQUF3QixVQUFVLENBQUM7UUFFbEQsY0FBYztRQUNKLFVBQUssR0FBb0Qsb0JBQW9CLENBQUM7UUFFeEY7O1dBRUc7UUFFSCxpQkFBWSxHQUFrRSxlQUFlLENBQUM7UUFFOUY7O1dBRUc7UUFFSCxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7S0E4QnpCO0lBdEJDLGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyx3QkFBd0IsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7OEdBNUNVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBsQkFadEI7WUFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQzdELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRTtZQUN0RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7WUFDdEUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFO1lBQ3JFO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpSkMzREgsaThDQXVDQTs7MkZEc0JhLHNCQUFzQjtrQkFwQ2xDLFNBQVM7K0JBQ0UsaUJBQWlCLFVBRW5CLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsV0FNMUY7d0JBQ1AsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsWUFBWTtxQkFDYixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBRXBDO3dCQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUM3RCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUN0RSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUN0RSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUNyRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBSW1CLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFZbEIsWUFBWTtzQkFEWCxLQUFLO2dCQU9OLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLFVBQVU7c0JBRFQsS0FBSzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhDbGVhcmFibGVDb21wb25lbnQsXG4gIEFYQ29tcG9uZW50LFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudCxcbiAgTVhMb29rQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcblxuLyoqXG4gKiBUaGUgVGV4dGJveCBpcyBhIGNvbXBvbmVudCB3aGljaCBkZXRlY3RzIHVzZXIgaW50ZXJhY3Rpb24gYW5kIHRyaWdnZXJzIGEgY29ycmVzcG9uZGluZyBldmVudFxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXBhc3N3b3JkLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAncGFzc3dvcmQtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgaW5wdXRzOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJywgJ3RhYkluZGV4JywgJ3BsYWNlaG9sZGVyJywgJ3ZhbHVlJywgJ3N0YXRlJywgJ25hbWUnLCAnaWQnLCAnbG9vayddLFxuICBzdHlsZXM6IGBcbiAgICAuYXgtc3RyZW5ndGgtdmFsaWRhdGlvbi1jb250YWluZXIge1xuICAgICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgICB9XG4gIGAsXG4gIG91dHB1dHM6IFtcbiAgICAndmFsdWVDaGFuZ2UnLFxuICAgICdzdGF0ZUNoYW5nZScsXG4gICAgJ29uVmFsdWVDaGFuZ2VkJyxcbiAgICAnb25CbHVyJyxcbiAgICAnb25Gb2N1cycsXG4gICAgJ3JlYWRvbmx5Q2hhbmdlJyxcbiAgICAnZGlzYWJsZWRDaGFuZ2UnLFxuICAgICdvbktleURvd24nLFxuICAgICdvbktleVVwJyxcbiAgICAnb25LZXlQcmVzcycsXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBhc3N3b3JkQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWEZvY3VzYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUGFzc3dvcmRCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ2xlYXJhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQYXNzd29yZEJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUGFzc3dvcmRCb3hDb21wb25lbnQgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYUGFzc3dvcmRCb3hDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQYXNzd29yZEJveENvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudDxzdHJpbmc+LCBNWExvb2tDb21wb25lbnQpIHtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX3R5cGU6ICdwYXNzd29yZCcgfCAndGV4dCcgPSAncGFzc3dvcmQnO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfaWNvbjogJ2F4LWljb24tdmlzaWJpbGl0eScgfCAnYXgtaWNvbi12aXNpYmlsaXR5LW9mZicgPSAnYXgtaWNvbi12aXNpYmlsaXR5JztcblxuICAvKipcbiAgICogU2V0cyB0aGUgYXV0b2NvbXBsZXRlIGJlaGF2aW9yIGZvciB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKVxuICBhdXRvQ29tcGxldGU6ICdjdXJyZW50LXBhc3N3b3JkJyB8ICduZXctcGFzc3dvcmQnIHwgJ29uZS10aW1lLWNvZGUnIHwgJ29mZicgPSAnb25lLXRpbWUtY29kZSc7XG5cbiAgLyoqXG4gICAqICBBIGZsYWcgZm9yIHNob3dpbmcgb3IgaGlkaW5nIHBhc3N3b3JkIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNob3dUb2dnbGVCdXR0b24gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGN1c3RvbSBDU1MgY2xhc3NlcyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCdjbGFzcycpXG4gIGNsYXNzTmFtZXM6IHN0cmluZztcblxuICAvKiogQGlnbm9yZSAqL1xuICBfaGFuZGxlTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuY29tbWl0VmFsdWUodmFsdWUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGlucHV0IHR5cGUgYmV0d2VlbiAncGFzc3dvcmQnIGFuZCAndGV4dCcgdG8gc2hvdyBvciBoaWRlIHRoZSBwYXNzd29yZC5cbiAgICovXG4gIHRvZ2dsZVR5cGUoKSB7XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSAndGV4dCc7XG4gICAgICB0aGlzLl9pY29uID0gJ2F4LWljb24tdmlzaWJpbGl0eS1vZmYnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90eXBlID0gJ3Bhc3N3b3JkJztcbiAgICAgIHRoaXMuX2ljb24gPSAnYXgtaWNvbi12aXNpYmlsaXR5JztcbiAgICB9XG4gIH1cblxuICAvLyBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgLy8gZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZ1tdIHtcbiAgLy8gICByZXR1cm4gWydheC1lZGl0b3ItY29udGFpbmVyJywgYGF4LWxvb2stJHt0aGlzLmxvb2t9YCwgYCR7dGhpcy5kaXNhYmxlZCA/ICdheC1zdGF0ZS1kaXNhYmxlZCcgOiAnJ31gXTtcbiAgLy8gfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWVkaXRvci1jb250YWluZXIgYXgtbG9vay17eyBsb29rIH19IHt7IGNsYXNzTmFtZXMgfX1cIiBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtcHJlZml4XCI+IDwvbmctY29udGVudD5cbiAgPGlucHV0XG4gICAgI2lucHV0XG4gICAgY2xhc3M9XCJheC1pbnB1dFwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW3R5cGVdPVwiX3R5cGVcIlxuICAgIFtpZF09XCJpZFwiXG4gICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2NsYXNzLmF4LXN0YXRlLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgW3RhYmluZGV4XT1cInRhYkluZGV4XCJcbiAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9Db21wbGV0ZVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiX2hhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cImVtaXRPbktleWRvd25FdmVudCgkZXZlbnQpXCJcbiAgICAoa2V5dXApPVwiZW1pdE9uS2V5dXBFdmVudCgkZXZlbnQpXCJcbiAgICAoa2V5cHJlc3MpPVwiZW1pdE9uS2V5cHJlc3NFdmVudCgkZXZlbnQpXCJcbiAgICAoZm9jdXMpPVwiZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJlbWl0T25CbHVyRXZlbnQoJGV2ZW50KVwiXG4gIC8+XG4gIEBpZiAodmFsdWUgJiYgIWRpc2FibGVkICYmICFyZWFkb25seSkge1xuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWNsZWFyLWJ1dHRvblwiPjwvbmctY29udGVudD5cbiAgfVxuICBAaWYgKHNob3dUb2dnbGVCdXR0b24pIHtcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF4LWdlbmVyYWwtYnV0dG9uIGF4LWJ1dHRvbi1pY29uXCIgKGNsaWNrKT1cInRvZ2dsZVR5cGUoKVwiIFt0YWJJbmRleF09XCItMVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJheC1pY29uIHt7IF9pY29uIH19XCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICB9XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXN1ZmZpeFwiPiA8L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXZhbGlkYXRpb24tcnVsZVwiPiA8L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1lcnJvci1jb250YWluZXJcIj48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImF4LXN0cmVuZ3RoLXZhbGlkYXRpb24tY29udGFpbmVyXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXBhc3N3b3JkLXN0cmVuZ3RoLXZhbGlkYXRpb25cIiBbc2hvd0hpbnRdPVwic2hvd1N0cmVuZ3RoKClcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation, } from '@angular/core';
1
+ import { afterNextRender, ChangeDetectionStrategy, Component, inject, input, signal, ViewEncapsulation, } from '@angular/core';
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";
@@ -12,6 +12,14 @@ export class AXPasswordStrengthValidationComponent {
12
12
  this.strengthLabel = signal('fragile');
13
13
  this.strengthLabelColor = signal('danger');
14
14
  this.parent = inject(AXPasswordBoxComponent);
15
+ /**
16
+ * Hint status.
17
+ */
18
+ this.showHint = input(false);
19
+ /**
20
+ * Progress status.
21
+ */
22
+ this.showProgress = input(true);
15
23
  this.isLenghtgraterThan8 = signal({ regex: /.{8,}/, state: false });
16
24
  this.isUseUpperCase = signal({ regex: /[A-Z]/, state: false });
17
25
  this.isUseLowerCase = signal({ regex: /[a-z]/, state: false });
@@ -54,10 +62,10 @@ export class AXPasswordStrengthValidationComponent {
54
62
  this.passwordStrength.set((strength * 100) / 5);
55
63
  }
56
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordStrengthValidationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
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 }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPasswordStrengthValidationComponent, selector: "ax-password-strength-validation", inputs: { showHint: { classPropertyName: "showHint", publicName: "showHint", isSignal: true, isRequired: false, transformFunction: null }, showProgress: { classPropertyName: "showProgress", publicName: "showProgress", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (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 (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 }); }
58
66
  }
59
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPasswordStrengthValidationComponent, decorators: [{
60
68
  type: Component,
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"] }]
69
+ args: [{ selector: 'ax-password-strength-validation', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if (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 (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"] }]
62
70
  }] });
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==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcGFzc3dvcmQtYm94L3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgtdmFsaWRhdGlvbi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wYXNzd29yZC1ib3gvc3JjL2xpYi9wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uL3Bhc3N3b3JkLXN0cmVuZ3RoLXZhbGlkYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBU25FLE1BQU0sT0FBTyxxQ0FBcUM7SUFQbEQ7UUFRWSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0Isb0JBQWUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0Isa0JBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLFdBQU0sR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVsRDs7V0FFRztRQUNILGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEI7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQix3QkFBbUIsR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELG1CQUFjLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUQsZ0JBQVcsR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELDBCQUFxQixHQUFHLE1BQU0sQ0FBQztZQUN2QyxLQUFLLEVBQUUsd0JBQXdCO1lBQy9CLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBRUgscUJBQWdCLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztLQXlCSjtJQWxDQyxnQkFBZ0IsQ0FTYjtJQUVLLGlCQUFpQixDQUFDLEtBQUs7UUFDN0IsSUFBSSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVMscUJBQXFCO1FBQzdCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBRWpFLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7OEdBM0RVLHFDQUFxQztrR0FBckMscUNBQXFDLGlXQ2xCbEQsdzFEQWdEQTs7MkZEOUJhLHFDQUFxQztrQkFQakQsU0FBUzsrQkFDRSxpQ0FBaUMsbUJBRTFCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQYXNzd29yZEJveENvbXBvbmVudCB9IGZyb20gJy4uL3Bhc3N3b3JkLWJveC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1wYXNzd29yZC1zdHJlbmd0aC12YWxpZGF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bhc3N3b3JkLXN0cmVuZ3RoLXZhbGlkYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3R5bGVVcmw6ICcuL3Bhc3N3b3JkLXN0cmVuZ3RoLXZhbGlkYXRpb24uY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBhc3N3b3JkU3RyZW5ndGhWYWxpZGF0aW9uQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHBhc3N3b3JkU3RyZW5ndGggPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCB1cGRhdGVkUGFzc3dvcmQgPSBzaWduYWwoJycpO1xuICBwcm90ZWN0ZWQgc3RyZW5ndGhMYWJlbCA9IHNpZ25hbCgnZnJhZ2lsZScpO1xuICBwcm90ZWN0ZWQgc3RyZW5ndGhMYWJlbENvbG9yID0gc2lnbmFsKCdkYW5nZXInKTtcbiAgcHJvdGVjdGVkIHBhcmVudCA9IGluamVjdChBWFBhc3N3b3JkQm94Q29tcG9uZW50KTtcblxuICAvKipcbiAgICogSGludCBzdGF0dXMuXG4gICAqL1xuICBzaG93SGludCA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogUHJvZ3Jlc3Mgc3RhdHVzLlxuICAgKi9cbiAgc2hvd1Byb2dyZXNzID0gaW5wdXQodHJ1ZSk7XG5cbiAgcHJvdGVjdGVkIGlzTGVuZ2h0Z3JhdGVyVGhhbjggPSBzaWduYWwoeyByZWdleDogLy57OCx9Lywgc3RhdGU6IGZhbHNlIH0pO1xuICBwcm90ZWN0ZWQgaXNVc2VVcHBlckNhc2UgPSBzaWduYWwoeyByZWdleDogL1tBLVpdLywgc3RhdGU6IGZhbHNlIH0pO1xuICBwcm90ZWN0ZWQgaXNVc2VMb3dlckNhc2UgPSBzaWduYWwoeyByZWdleDogL1thLXpdLywgc3RhdGU6IGZhbHNlIH0pO1xuICBwcm90ZWN0ZWQgaXNVc2VOdW1iZXIgPSBzaWduYWwoeyByZWdleDogL1xcZC8sIHN0YXRlOiBmYWxzZSB9KTtcbiAgcHJvdGVjdGVkIGlzVXNlU3BlY2lhbENoYXJhY3RlciA9IHNpZ25hbCh7XG4gICAgcmVnZXg6IC9bIUAjJCVeJiooKSwuP1wiOnt9fDw+XS8sXG4gICAgc3RhdGU6IGZhbHNlLFxuICB9KTtcblxuICAjb25Db21wb25lbnRJbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICB0aGlzLnBhcmVudC5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgIGlmICh2LnZhbHVlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlZFBhc3N3b3JkLnNldCh2LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlZFBhc3N3b3JkLnNldCgnJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrUGFzc3dvcmRTdHJlbmd0aCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBwcml2YXRlIGNoZWNrUmVnZXhIYW5kbGVyKGludGVyKSB7XG4gICAgaWYgKGludGVyKCkucmVnZXgudGVzdCh0aGlzLnVwZGF0ZWRQYXNzd29yZCgpKSkge1xuICAgICAgaW50ZXIudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzdGF0ZTogdHJ1ZSB9KSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaW50ZXIudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBzdGF0ZTogZmFsc2UgfSkpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja1Bhc3N3b3JkU3RyZW5ndGgoKSB7XG4gICAgbGV0IHN0cmVuZ3RoID0gMDtcblxuICAgIHRoaXMuY2hlY2tSZWdleEhhbmRsZXIodGhpcy5pc0xlbmdodGdyYXRlclRoYW44KSAmJiBzdHJlbmd0aCsrO1xuICAgIHRoaXMuY2hlY2tSZWdleEhhbmRsZXIodGhpcy5pc1VzZVVwcGVyQ2FzZSkgJiYgc3RyZW5ndGgrKztcbiAgICB0aGlzLmNoZWNrUmVnZXhIYW5kbGVyKHRoaXMuaXNVc2VMb3dlckNhc2UpICYmIHN0cmVuZ3RoKys7XG4gICAgdGhpcy5jaGVja1JlZ2V4SGFuZGxlcih0aGlzLmlzVXNlTnVtYmVyKSAmJiBzdHJlbmd0aCsrO1xuICAgIHRoaXMuY2hlY2tSZWdleEhhbmRsZXIodGhpcy5pc1VzZVNwZWNpYWxDaGFyYWN0ZXIpICYmIHN0cmVuZ3RoKys7XG5cbiAgICBjb25zdCBzdHJlbmd0aExhYmVscyA9IFsnZnJhZ2lsZScsICdmcmFnaWxlJywgJ3dlYWsnLCAnZ29vZCcsICdzdHJvbmcnLCAndW5icmVha2FibGUnXTtcbiAgICB0aGlzLnN0cmVuZ3RoTGFiZWwuc2V0KHN0cmVuZ3RoTGFiZWxzW3N0cmVuZ3RoXSk7XG4gICAgdGhpcy5zdHJlbmd0aExhYmVsQ29sb3Iuc2V0KHN0cmVuZ3RoIDw9IDIgPyAnZGFuZ2VyJyA6IHN0cmVuZ3RoIDw9IDMgPyAnd2FybmluZycgOiAnc3VjY2VzcycpO1xuICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aC5zZXQoKHN0cmVuZ3RoICogMTAwKSAvIDUpO1xuICB9XG59XG4iLCJAaWYgKHNob3dQcm9ncmVzcygpKSB7XG4gIDxzbWFsbFxuICAgIGNsYXNzPVwiYXgtc3RhdGUtcGFzc3dvcmRcIlxuICAgIFtjbGFzcy5heC10ZXh0LXJlZF09XCJzdHJlbmd0aExhYmVsQ29sb3IoKSA9PT0gJ2RhbmdlcidcIlxuICAgIFtjbGFzcy5heC10ZXh0LW9yYW5nZV09XCJzdHJlbmd0aExhYmVsQ29sb3IoKSA9PT0gJ3dhcm5pbmcnXCJcbiAgICBbY2xhc3MuYXgtdGV4dC1ncmVlbl09XCJzdHJlbmd0aExhYmVsQ29sb3IoKSA9PT0gJ3N1Y2Nlc3MnXCJcbiAgPlxuICAgIHt7IHN0cmVuZ3RoTGFiZWwoKSB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gIDwvc21hbGw+XG5cbiAgPGF4LXByb2dyZXNzLWJhclxuICAgIFtjb2xvcl09XCJzdHJlbmd0aExhYmVsQ29sb3IoKVwiXG4gICAgW3Byb2dyZXNzXT1cInBhc3N3b3JkU3RyZW5ndGgoKVwiXG4gICAgW2hlaWdodF09XCI0XCJcbiAgPjwvYXgtcHJvZ3Jlc3MtYmFyPlxufVxuQGlmIChzaG93SGludCgpKSB7XG4gIDxkaXYgY2xhc3M9XCJheC1oaW50LWNvbnRhaW5lclwiPlxuICAgIDxzbWFsbCBjbGFzcz1cImF4LWhpbnQtc3RhdGVcIj5cbiAgICAgIDxheC1iYWRnZSBbY29sb3JdPVwiaXNMZW5naHRncmF0ZXJUaGFuOCgpLnN0YXRlID8gJ3N1Y2Nlc3MnIDogJ2RhbmdlcidcIj48L2F4LWJhZGdlPlxuICAgICAgPHNwYW4gW2NsYXNzLmF4LWxpbmVdPVwiaXNMZW5naHRncmF0ZXJUaGFuOCgpLnN0YXRlXCI+XG4gICAgICAgIHt7ICdhdC1sZWFzdC04LWNoYXJhY3RlcnMnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NtYWxsPlxuICAgIDxzbWFsbCBjbGFzcz1cImF4LWhpbnQtc3RhdGVcIiBbY2xhc3MuYXgtbGluZV09XCJpc1VzZVVwcGVyQ2FzZSgpLnN0YXRlXCI+XG4gICAgICA8YXgtYmFkZ2UgW2NvbG9yXT1cImlzVXNlVXBwZXJDYXNlKCkuc3RhdGUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJ1wiPjwvYXgtYmFkZ2U+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3sgJ2VuZ2xpc2gtdXBwZXItY2FzZS1sZXR0ZXInIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NtYWxsPlxuICAgIDxzbWFsbCBjbGFzcz1cImF4LWhpbnQtc3RhdGVcIiBbY2xhc3MuYXgtbGluZV09XCJpc1VzZUxvd2VyQ2FzZSgpLnN0YXRlXCI+XG4gICAgICA8YXgtYmFkZ2UgW2NvbG9yXT1cImlzVXNlTG93ZXJDYXNlKCkuc3RhdGUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJ1wiPjwvYXgtYmFkZ2U+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3sgJ2VuZ2xpc2gtbG93ZXItY2FzZS1sZXR0ZXInIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NtYWxsPlxuICAgIDxzbWFsbCBjbGFzcz1cImF4LWhpbnQtc3RhdGVcIiBbY2xhc3MuYXgtbGluZV09XCJpc1VzZU51bWJlcigpLnN0YXRlXCI+XG4gICAgICA8YXgtYmFkZ2UgW2NvbG9yXT1cImlzVXNlTnVtYmVyKCkuc3RhdGUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJ1wiPjwvYXgtYmFkZ2VcbiAgICAgID48c3Bhbj4ge3sgJ2RpZ2l0cycgfCB0cmFuc2xhdGUgfCBhc3luYyB9fSA8L3NwYW4+XG4gICAgPC9zbWFsbD5cbiAgICA8c21hbGwgY2xhc3M9XCJheC1oaW50LXN0YXRlXCIgW2NsYXNzLmF4LWxpbmVdPVwiaXNVc2VTcGVjaWFsQ2hhcmFjdGVyKCkuc3RhdGVcIj5cbiAgICAgIDxheC1iYWRnZSBbY29sb3JdPVwiaXNVc2VTcGVjaWFsQ2hhcmFjdGVyKCkuc3RhdGUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJ1wiPjwvYXgtYmFkZ2U+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3sgJ3NwZWNpYWwtY2hhcmFjdGVyJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9zbWFsbD5cbiAgPC9kaXY+XG59XG4iXX0=