@ndwnu/design-system 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/components/accordion/accordion.component.d.ts +1 -0
  2. package/components/alert/alert.component.d.ts +18 -2
  3. package/components/alert/alert.model.d.ts +1 -0
  4. package/components/badge/badge.component.d.ts +8 -1
  5. package/components/card/card-footer/card-footer.component.d.ts +0 -1
  6. package/components/card/card-header/card-header.component.d.ts +0 -3
  7. package/components/card/card.component.d.ts +2 -8
  8. package/components/card/index.d.ts +3 -1
  9. package/components/collapsible/collapsible.component.d.ts +4 -3
  10. package/components/dropdown/dropdown.component.d.ts +5 -5
  11. package/components/form-field/checkbox/checkbox.component.d.ts +0 -1
  12. package/components/form-field/file-upload/file-upload-text.interface.d.ts +4 -0
  13. package/components/form-field/file-upload/file-upload.component.d.ts +44 -0
  14. package/components/form-field/file-upload/index.d.ts +2 -0
  15. package/components/form-field/form-field.component.d.ts +8 -2
  16. package/components/form-field/index.d.ts +3 -0
  17. package/components/form-field/input/input.directive.d.ts +1 -0
  18. package/components/form-field/option-group/index.d.ts +2 -0
  19. package/components/form-field/option-group/option-group.component.d.ts +18 -0
  20. package/components/form-field/option-group/option.component.d.ts +8 -0
  21. package/components/form-field/radio-button/radio-button.component.d.ts +0 -4
  22. package/components/form-field/radio-group/radio-group.component.d.ts +1 -1
  23. package/components/form-field/textarea/auto-grow.directive.d.ts +19 -0
  24. package/components/form-field/textarea/index.d.ts +1 -0
  25. package/components/icon/action-icon/action-icon.component.d.ts +33 -0
  26. package/components/icon/icon.component.d.ts +4 -6
  27. package/components/icon/index.d.ts +1 -0
  28. package/components/index.d.ts +1 -0
  29. package/components/main-navigation/main-navigation.component.d.ts +2 -1
  30. package/components/modal/index.d.ts +7 -1
  31. package/components/modal/modal-content/index.d.ts +1 -0
  32. package/components/modal/modal-content/modal-content.component.d.ts +5 -0
  33. package/components/modal/modal-footer/index.d.ts +1 -0
  34. package/components/modal/modal-footer/modal-footer.component.d.ts +5 -0
  35. package/components/modal/modal-header/index.d.ts +1 -0
  36. package/components/modal/modal-header/modal-header.component.d.ts +7 -0
  37. package/components/modal/modal.component.d.ts +11 -0
  38. package/components/modal/modal.service.d.ts +0 -1
  39. package/components/multi-select/multi-select.component.d.ts +6 -5
  40. package/components/pill/pill.component.d.ts +8 -0
  41. package/components/removable-pill/removable-pill.component.d.ts +9 -2
  42. package/components/toast/index.d.ts +2 -0
  43. package/components/toast/toast.component.d.ts +18 -0
  44. package/components/toast/toast.service.d.ts +12 -0
  45. package/components/tooltip/tooltip.directive.d.ts +4 -0
  46. package/core/styles/ndw-styles.scss +99 -31
  47. package/core/styles/nwb-styles.scss +99 -31
  48. package/esm2022/components/accordion/accordion.component.mjs +9 -5
  49. package/esm2022/components/accordion/accordion.service.mjs +3 -6
  50. package/esm2022/components/alert/alert.component.mjs +28 -4
  51. package/esm2022/components/alert/alert.model.mjs +1 -1
  52. package/esm2022/components/badge/badge.component.mjs +10 -3
  53. package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +3 -3
  54. package/esm2022/components/card/card-footer/card-footer.component.mjs +1 -4
  55. package/esm2022/components/card/card-header/card-header.component.mjs +4 -12
  56. package/esm2022/components/card/card.component.mjs +5 -22
  57. package/esm2022/components/card/index.mjs +12 -2
  58. package/esm2022/components/collapsible/collapsible.component.mjs +6 -13
  59. package/esm2022/components/dropdown/dropdown.component.mjs +8 -9
  60. package/esm2022/components/form-field/checkbox/checkbox.component.mjs +8 -17
  61. package/esm2022/components/form-field/error/error.component.mjs +3 -3
  62. package/esm2022/components/form-field/file-upload/file-upload-text.interface.mjs +2 -0
  63. package/esm2022/components/form-field/file-upload/file-upload.component.mjs +210 -0
  64. package/esm2022/components/form-field/file-upload/index.mjs +3 -0
  65. package/esm2022/components/form-field/form-field.component.mjs +30 -5
  66. package/esm2022/components/form-field/index.mjs +4 -1
  67. package/esm2022/components/form-field/info/info.component.mjs +2 -2
  68. package/esm2022/components/form-field/input/input.directive.mjs +5 -3
  69. package/esm2022/components/form-field/option-group/index.mjs +3 -0
  70. package/esm2022/components/form-field/option-group/option-group.component.mjs +53 -0
  71. package/esm2022/components/form-field/option-group/option.component.mjs +22 -0
  72. package/esm2022/components/form-field/radio-button/radio-button.component.mjs +8 -35
  73. package/esm2022/components/form-field/radio-group/radio-group.component.mjs +4 -6
  74. package/esm2022/components/form-field/textarea/auto-grow.directive.mjs +45 -0
  75. package/esm2022/components/form-field/textarea/index.mjs +2 -0
  76. package/esm2022/components/icon/action-icon/action-icon.component.mjs +39 -0
  77. package/esm2022/components/icon/icon.component.mjs +10 -24
  78. package/esm2022/components/icon/index.mjs +2 -1
  79. package/esm2022/components/index.mjs +2 -1
  80. package/esm2022/components/main-navigation/main-navigation.component.mjs +4 -3
  81. package/esm2022/components/modal/index.mjs +18 -2
  82. package/esm2022/components/modal/modal-content/index.mjs +2 -0
  83. package/esm2022/components/modal/modal-content/modal-content.component.mjs +11 -0
  84. package/esm2022/components/modal/modal-footer/index.mjs +2 -0
  85. package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +11 -0
  86. package/esm2022/components/modal/modal-header/index.mjs +2 -0
  87. package/esm2022/components/modal/modal-header/modal-header.component.mjs +19 -0
  88. package/esm2022/components/modal/modal.component.mjs +32 -0
  89. package/esm2022/components/modal/modal.service.mjs +5 -10
  90. package/esm2022/components/multi-select/multi-select.component.mjs +10 -8
  91. package/esm2022/components/pill/pill.component.mjs +17 -4
  92. package/esm2022/components/removable-pill/removable-pill.component.mjs +13 -11
  93. package/esm2022/components/toast/index.mjs +3 -0
  94. package/esm2022/components/toast/toast.component.mjs +74 -0
  95. package/esm2022/components/toast/toast.service.mjs +43 -0
  96. package/esm2022/components/tooltip/tooltip.component.mjs +5 -3
  97. package/esm2022/components/tooltip/tooltip.directive.mjs +43 -18
  98. package/fesm2022/ndwnu-design-system.mjs +884 -334
  99. package/fesm2022/ndwnu-design-system.mjs.map +1 -1
  100. package/package.json +1 -1
@@ -2,15 +2,45 @@ import { Overlay } from '@angular/cdk/overlay';
2
2
  import { ComponentPortal } from '@angular/cdk/portal';
3
3
  import { Directive, ElementRef, HostListener, inject, input, } from '@angular/core';
4
4
  import { TooltipComponent } from './tooltip.component';
5
+ import { AriaDescriber } from '@angular/cdk/a11y';
5
6
  import * as i0 from "@angular/core";
6
7
  export class TooltipDirective {
7
8
  constructor() {
8
9
  this.text = input.required({ alias: 'ndwTooltip' });
9
10
  this.elementRef = inject(ElementRef);
10
11
  this.overlay = inject(Overlay);
12
+ this.ariaDescriber = inject(AriaDescriber);
13
+ this.overlayRef = null;
11
14
  }
12
15
  ngOnInit() {
13
- const positionStrategy = this.overlay
16
+ const positionStrategy = this.getFlexibleConnectedPositionStrategy();
17
+ this.overlayRef = this.overlay.create({ positionStrategy });
18
+ this.updateAriaDescription();
19
+ }
20
+ ngOnDestroy() {
21
+ this.hide();
22
+ this.overlayRef?.dispose();
23
+ }
24
+ show() {
25
+ if (!this.text().length || this.overlayRef === null) {
26
+ return;
27
+ }
28
+ const portal = new ComponentPortal(TooltipComponent);
29
+ const tooltipRef = this.overlayRef.attach(portal);
30
+ tooltipRef.instance.text = this.text;
31
+ }
32
+ hide() {
33
+ this.overlayRef?.detach();
34
+ }
35
+ hideOnEscape() {
36
+ this.hide();
37
+ }
38
+ updateAriaDescription() {
39
+ const element = this.elementRef.nativeElement;
40
+ this.ariaDescriber.describe(element, this.text());
41
+ }
42
+ getFlexibleConnectedPositionStrategy() {
43
+ return this.overlay
14
44
  .position()
15
45
  .flexibleConnectedTo(this.elementRef.nativeElement)
16
46
  .withPositions([
@@ -31,30 +61,22 @@ export class TooltipDirective {
31
61
  overlayY: 'top',
32
62
  },
33
63
  ]);
34
- this.overlayRef = this.overlay.create({ positionStrategy });
35
- }
36
- ngOnDestroy() {
37
- this.hide();
38
- }
39
- show() {
40
- if (!this.text().length) {
41
- return;
42
- }
43
- const portal = new ComponentPortal(TooltipComponent);
44
- const tooltipRef = this.overlayRef.attach(portal);
45
- tooltipRef.instance.text = this.text;
46
- }
47
- hide() {
48
- this.overlayRef.detach();
49
64
  }
50
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.3", type: TooltipDirective, isStandalone: true, selector: "[ndwTooltip]", inputs: { text: { classPropertyName: "text", publicName: "ndwTooltip", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseenter": "show()", "mouseleave": "hide()" } }, ngImport: i0 }); }
66
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.0.3", type: TooltipDirective, isStandalone: true, selector: "[ndwTooltip]", inputs: { text: { classPropertyName: "text", publicName: "ndwTooltip", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "tabindex": "0", "aria-hidden": "false" }, listeners: { "focus": "show()", "blur": "hide()", "keydown.escape": "hide()", "mouseenter": "show()", "mouseleave": "hide()", "document:keydown.escape": "hideOnEscape()" } }, ngImport: i0 }); }
52
67
  }
53
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: TooltipDirective, decorators: [{
54
69
  type: Directive,
55
70
  args: [{
56
71
  selector: '[ndwTooltip]',
57
72
  standalone: true,
73
+ host: {
74
+ tabindex: '0',
75
+ 'aria-hidden': 'false',
76
+ '(focus)': 'show()',
77
+ '(blur)': 'hide()',
78
+ '(keydown.escape)': 'hide()',
79
+ },
58
80
  }]
59
81
  }], propDecorators: { show: [{
60
82
  type: HostListener,
@@ -62,5 +84,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
62
84
  }], hide: [{
63
85
  type: HostListener,
64
86
  args: ['mouseleave']
87
+ }], hideOnEscape: [{
88
+ type: HostListener,
89
+ args: ['document:keydown.escape']
65
90
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFHWixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU12RCxNQUFNLE9BQU8sZ0JBQWdCO0lBSjdCO1FBS1MsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUU3QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7S0FnRDVDO0lBNUNRLFFBQVE7UUFDYixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2xDLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO2FBQ2xELGFBQWEsQ0FBQztZQUNiO2dCQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQzNELE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ1gsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsUUFBUTthQUNuQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQzNELE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsUUFBUTtnQkFDakIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2FBQ2hCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBR1MsSUFBSTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sVUFBVSxHQUFtQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRixVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFHUyxJQUFJO1FBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQW5EVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQXVDVyxJQUFJO3NCQURiLFlBQVk7dUJBQUMsWUFBWTtnQkFZaEIsSUFBSTtzQkFEYixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25kd1Rvb2x0aXBdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHVibGljIHRleHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KHsgYWxpYXM6ICduZHdUb29sdGlwJyB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcblxuICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIHtcbiAgICAgICAgICBvZmZzZXRYOiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAvIDIgLSAxNixcbiAgICAgICAgICBvZmZzZXRZOiAtOCxcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldFg6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiAtIDE2LFxuICAgICAgICAgIG9mZnNldFk6IDgsXG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHsgcG9zaXRpb25TdHJhdGVneSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICBwcm90ZWN0ZWQgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGV4dCgpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoVG9vbHRpcENvbXBvbmVudCk7XG4gICAgY29uc3QgdG9vbHRpcFJlZjogQ29tcG9uZW50UmVmPFRvb2x0aXBDb21wb25lbnQ+ID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuICAgIHRvb2x0aXBSZWYuaW5zdGFuY2UudGV4dCA9IHRoaXMudGV4dDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBwcm90ZWN0ZWQgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gIH1cbn1cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFDLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBR1osTUFBTSxFQUNOLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBYWxELE1BQU0sT0FBTyxnQkFBZ0I7SUFYN0I7UUFZUyxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUvQyxlQUFVLEdBQXNCLElBQUksQ0FBQztLQThEOUM7SUE1RFEsUUFBUTtRQUNiLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFHUyxJQUFJO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsTUFBTSxVQUFVLEdBQW1DLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xGLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUdTLElBQUk7UUFDWixJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxvQ0FBb0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNoQixRQUFRLEVBQUU7YUFDVixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQzthQUNsRCxhQUFhLENBQUM7WUFDYjtnQkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUMzRCxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNYLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLFFBQVE7YUFDbkI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUMzRCxPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSzthQUNoQjtTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBcEVVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQVg1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLFFBQVEsRUFBRSxHQUFHO3dCQUNiLGFBQWEsRUFBRSxPQUFPO3dCQUN0QixTQUFTLEVBQUUsUUFBUTt3QkFDbkIsUUFBUSxFQUFFLFFBQVE7d0JBQ2xCLGtCQUFrQixFQUFFLFFBQVE7cUJBQzdCO2lCQUNGOzhCQXNCVyxJQUFJO3NCQURiLFlBQVk7dUJBQUMsWUFBWTtnQkFZaEIsSUFBSTtzQkFEYixZQUFZO3VCQUFDLFlBQVk7Z0JBTWhCLFlBQVk7c0JBRHJCLFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IEFyaWFEZXNjcmliZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZHdUb29sdGlwXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICB0YWJpbmRleDogJzAnLFxuICAgICdhcmlhLWhpZGRlbic6ICdmYWxzZScsXG4gICAgJyhmb2N1cyknOiAnc2hvdygpJyxcbiAgICAnKGJsdXIpJzogJ2hpZGUoKScsXG4gICAgJyhrZXlkb3duLmVzY2FwZSknOiAnaGlkZSgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHVibGljIHRleHQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KHsgYWxpYXM6ICduZHdUb29sdGlwJyB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBhcmlhRGVzY3JpYmVyID0gaW5qZWN0KEFyaWFEZXNjcmliZXIpO1xuXG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5nZXRGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3koKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHsgcG9zaXRpb25TdHJhdGVneSB9KTtcbiAgICB0aGlzLnVwZGF0ZUFyaWFEZXNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIHByb3RlY3RlZCBzaG93KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50ZXh0KCkubGVuZ3RoIHx8IHRoaXMub3ZlcmxheVJlZiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoVG9vbHRpcENvbXBvbmVudCk7XG4gICAgY29uc3QgdG9vbHRpcFJlZjogQ29tcG9uZW50UmVmPFRvb2x0aXBDb21wb25lbnQ+ID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuICAgIHRvb2x0aXBSZWYuaW5zdGFuY2UudGV4dCA9IHRoaXMudGV4dDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBwcm90ZWN0ZWQgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnKVxuICBwcm90ZWN0ZWQgaGlkZU9uRXNjYXBlKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBcmlhRGVzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuYXJpYURlc2NyaWJlci5kZXNjcmliZShlbGVtZW50LCB0aGlzLnRleHQoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSgpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldFg6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC8gMiAtIDE2LFxuICAgICAgICAgIG9mZnNldFk6IC04LFxuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0WDogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyAyIC0gMTYsXG4gICAgICAgICAgb2Zmc2V0WTogOCxcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICB9XG59XG4iXX0=