@agorapulse/ui-components 2.5.1 → 13.0.2

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 (180) hide show
  1. package/agorapulse-ui-components-13.0.2.tgz +0 -0
  2. package/agorapulse-ui-components.d.ts +1 -6
  3. package/esm2020/agorapulse-ui-components.mjs +5 -0
  4. package/esm2020/index.mjs +58 -0
  5. package/esm2020/src/lib/add-comment/add-comment.component.mjs +62 -0
  6. package/esm2020/src/lib/agorapulse-ui-components.module.mjs +532 -0
  7. package/esm2020/src/lib/avatar/avatar.component.mjs +92 -0
  8. package/{esm2015/src/lib/confirm-modal/confirm-modal-texts.model.js → esm2020/src/lib/confirm-modal/confirm-modal-texts.model.mjs} +0 -0
  9. package/esm2020/src/lib/confirm-modal/confirm-modal.component.mjs +61 -0
  10. package/esm2020/src/lib/datepicker/datepicker.component.mjs +219 -0
  11. package/esm2020/src/lib/directives/autosize-textarea.directive.mjs +43 -0
  12. package/esm2020/src/lib/directives/default-image.directive.mjs +29 -0
  13. package/esm2020/src/lib/directives/ellipsis.directive.mjs +87 -0
  14. package/esm2020/src/lib/directives/equal-validator.directive.mjs +64 -0
  15. package/esm2020/src/lib/directives/frozen-gif.directive.mjs +116 -0
  16. package/esm2020/src/lib/directives/multi-style-text.directive.mjs +101 -0
  17. package/esm2020/src/lib/directives/truncate-tooltip.directive.mjs +33 -0
  18. package/esm2020/src/lib/dots-stepper/dots-stepper.component.mjs +43 -0
  19. package/esm2020/src/lib/edit-tag-modal/edit-tags-modal.component.mjs +147 -0
  20. package/{esm2015/src/lib/edit-tag-modal/model/edit-tags-modal.model.js → esm2020/src/lib/edit-tag-modal/model/edit-tags-modal.model.mjs} +0 -0
  21. package/esm2020/src/lib/feature-onboarding/feature-onboarding.component.mjs +35 -0
  22. package/esm2020/src/lib/image-carousel/image-carousel.component.mjs +152 -0
  23. package/{esm2015/src/lib/lead-modal/lead-info.model.js → esm2020/src/lib/lead-modal/lead-info.model.mjs} +0 -0
  24. package/esm2020/src/lib/lead-modal/lead-modal.component.mjs +49 -0
  25. package/esm2020/src/lib/media-display-overlay/media-display-overlay-dialog.component.mjs +87 -0
  26. package/esm2020/src/lib/modal/modal.component.mjs +96 -0
  27. package/esm2020/src/lib/neo-timepicker/neo-timepicker.component.mjs +388 -0
  28. package/esm2020/src/lib/notification/notification.component.mjs +17 -0
  29. package/esm2020/src/lib/overlay/overlay-dialog-service.component.mjs +61 -0
  30. package/esm2020/src/lib/overlay/overlay-dialog.component.mjs +33 -0
  31. package/esm2020/src/lib/overlay-in-div/overlay-in-div.component.mjs +27 -0
  32. package/esm2020/src/lib/paginator/paginator-button/paginator-button.component.mjs +23 -0
  33. package/esm2020/src/lib/paginator/paginator.component.mjs +54 -0
  34. package/esm2020/src/lib/password-input/password-input.component.mjs +68 -0
  35. package/esm2020/src/lib/password-strength-bar/password-strength-bar.component.mjs +83 -0
  36. package/esm2020/src/lib/password-strength-display-bar/password-strength-display-bar.component.mjs +45 -0
  37. package/esm2020/src/lib/phone-number-input/phone-number-input.component.mjs +144 -0
  38. package/esm2020/src/lib/places/place-list.component.mjs +11 -0
  39. package/esm2020/src/lib/places/place.component.mjs +14 -0
  40. package/{esm2015/src/lib/popmenu/options.js → esm2020/src/lib/popmenu/options.mjs} +0 -0
  41. package/{esm2015/src/lib/popmenu/popmenu-options.interface.js → esm2020/src/lib/popmenu/popmenu-options.interface.mjs} +0 -0
  42. package/{esm2015/src/lib/popmenu/popmenu-options.service.js → esm2020/src/lib/popmenu/popmenu-options.service.mjs} +0 -0
  43. package/esm2020/src/lib/popmenu/popmenu.component.mjs +344 -0
  44. package/esm2020/src/lib/popmenu/popmenu.directive.mjs +235 -0
  45. package/esm2020/src/lib/popmenu/popmenu.module.mjs +45 -0
  46. package/esm2020/src/lib/slide-toggle/slide-toggle.component.mjs +66 -0
  47. package/esm2020/src/lib/snackbar/snackbar.component.mjs +21 -0
  48. package/esm2020/src/lib/snackbars-thread/component/snackbars-thread.component.mjs +70 -0
  49. package/{esm2015/src/lib/snackbars-thread/model/snackbars-thread.model.js → esm2020/src/lib/snackbars-thread/model/snackbars-thread.model.mjs} +0 -0
  50. package/esm2020/src/lib/snackbars-thread/service/snackbars-thread.service.mjs +41 -0
  51. package/{esm2015/src/lib/snackbars-thread/utils/const/snackbars-thread.const.js → esm2020/src/lib/snackbars-thread/utils/const/snackbars-thread.const.mjs} +0 -0
  52. package/esm2020/src/lib/splashscreen/splashscreen.component.mjs +43 -0
  53. package/esm2020/src/lib/star-rating/star-rating.component.mjs +43 -0
  54. package/{esm2015/src/lib/stepper/step.model.js → esm2020/src/lib/stepper/step.model.mjs} +0 -0
  55. package/esm2020/src/lib/stepper/stepper.component.mjs +36 -0
  56. package/esm2020/src/lib/tags/tag-list.component.mjs +11 -0
  57. package/esm2020/src/lib/tags/tag.component.mjs +20 -0
  58. package/esm2020/src/lib/tags-selector/tags-selector.component.mjs +81 -0
  59. package/esm2020/src/lib/timepicker/timepicker.component.mjs +383 -0
  60. package/esm2020/src/lib/tooltip-neo/tooltip-neo.component.mjs +49 -0
  61. package/{esm2015/src/lib/tooltip-neo/tooltip-neo.const.js → esm2020/src/lib/tooltip-neo/tooltip-neo.const.mjs} +0 -0
  62. package/esm2020/src/lib/tooltip-neo/tooltip-neo.directive.mjs +114 -0
  63. package/{esm2015/src/lib/tooltip-neo/tooltip-neo.model.js → esm2020/src/lib/tooltip-neo/tooltip-neo.model.mjs} +0 -0
  64. package/esm2020/src/lib/tooltip-neo/tooltip-neo.service.mjs +17 -0
  65. package/{esm2015/src/lib/try-popup/try-popup-texts.model.js → esm2020/src/lib/try-popup/try-popup-texts.model.mjs} +0 -0
  66. package/esm2020/src/lib/try-popup/try-popup.component.mjs +37 -0
  67. package/fesm2015/agorapulse-ui-components.mjs +4581 -0
  68. package/fesm2015/agorapulse-ui-components.mjs.map +1 -0
  69. package/fesm2020/agorapulse-ui-components.mjs +4554 -0
  70. package/fesm2020/agorapulse-ui-components.mjs.map +1 -0
  71. package/index.d.ts +1 -0
  72. package/package.json +31 -20
  73. package/src/lib/add-comment/add-comment.component.d.ts +3 -0
  74. package/src/lib/agorapulse-ui-components.module.d.ts +80 -0
  75. package/src/lib/avatar/avatar.component.d.ts +3 -0
  76. package/src/lib/confirm-modal/confirm-modal.component.d.ts +3 -0
  77. package/src/lib/datepicker/datepicker.component.d.ts +3 -0
  78. package/src/lib/directives/autosize-textarea.directive.d.ts +3 -0
  79. package/src/lib/directives/default-image.directive.d.ts +3 -0
  80. package/src/lib/directives/ellipsis.directive.d.ts +3 -0
  81. package/src/lib/directives/equal-validator.directive.d.ts +3 -0
  82. package/src/lib/directives/frozen-gif.directive.d.ts +3 -0
  83. package/src/lib/directives/multi-style-text.directive.d.ts +3 -0
  84. package/src/lib/directives/truncate-tooltip.directive.d.ts +3 -0
  85. package/src/lib/dots-stepper/dots-stepper.component.d.ts +3 -0
  86. package/src/lib/edit-tag-modal/edit-tags-modal.component.d.ts +3 -0
  87. package/src/lib/feature-onboarding/feature-onboarding.component.d.ts +3 -0
  88. package/src/lib/image-carousel/image-carousel.component.d.ts +3 -0
  89. package/src/lib/lead-modal/lead-modal.component.d.ts +3 -0
  90. package/src/lib/media-display-overlay/media-display-overlay-dialog.component.d.ts +3 -0
  91. package/src/lib/modal/modal.component.d.ts +3 -0
  92. package/src/lib/neo-timepicker/neo-timepicker.component.d.ts +3 -0
  93. package/src/lib/notification/notification.component.d.ts +3 -0
  94. package/src/lib/overlay/overlay-dialog-service.component.d.ts +3 -0
  95. package/src/lib/overlay/overlay-dialog.component.d.ts +3 -0
  96. package/src/lib/overlay-in-div/overlay-in-div.component.d.ts +3 -0
  97. package/src/lib/paginator/paginator-button/paginator-button.component.d.ts +3 -0
  98. package/src/lib/paginator/paginator.component.d.ts +3 -0
  99. package/src/lib/password-input/password-input.component.d.ts +3 -0
  100. package/src/lib/password-strength-bar/password-strength-bar.component.d.ts +3 -0
  101. package/src/lib/password-strength-display-bar/password-strength-display-bar.component.d.ts +3 -0
  102. package/src/lib/phone-number-input/phone-number-input.component.d.ts +3 -0
  103. package/src/lib/places/place-list.component.d.ts +3 -0
  104. package/src/lib/places/place.component.d.ts +3 -0
  105. package/src/lib/popmenu/popmenu.component.d.ts +3 -0
  106. package/src/lib/popmenu/popmenu.directive.d.ts +3 -0
  107. package/src/lib/popmenu/popmenu.module.d.ts +8 -0
  108. package/src/lib/slide-toggle/slide-toggle.component.d.ts +3 -0
  109. package/src/lib/snackbar/snackbar.component.d.ts +3 -0
  110. package/src/lib/snackbars-thread/component/snackbars-thread.component.d.ts +3 -0
  111. package/src/lib/snackbars-thread/service/snackbars-thread.service.d.ts +3 -0
  112. package/src/lib/splashscreen/splashscreen.component.d.ts +3 -0
  113. package/src/lib/star-rating/star-rating.component.d.ts +3 -0
  114. package/src/lib/stepper/stepper.component.d.ts +3 -0
  115. package/src/lib/tags/tag-list.component.d.ts +3 -0
  116. package/src/lib/tags/tag.component.d.ts +3 -0
  117. package/src/lib/tags-selector/tags-selector.component.d.ts +3 -0
  118. package/src/lib/timepicker/timepicker.component.d.ts +3 -0
  119. package/src/lib/tooltip-neo/tooltip-neo.component.d.ts +3 -0
  120. package/src/lib/tooltip-neo/tooltip-neo.directive.d.ts +20 -17
  121. package/src/lib/tooltip-neo/tooltip-neo.service.d.ts +3 -0
  122. package/src/lib/try-popup/try-popup.component.d.ts +3 -0
  123. package/agorapulse-ui-components-2.5.1.tgz +0 -0
  124. package/agorapulse-ui-components.metadata.json +0 -1
  125. package/bundles/agorapulse-ui-components.umd.js +0 -4825
  126. package/bundles/agorapulse-ui-components.umd.js.map +0 -1
  127. package/esm2015/agorapulse-ui-components.js +0 -11
  128. package/esm2015/index.js +0 -57
  129. package/esm2015/src/lib/add-comment/add-comment.component.js +0 -54
  130. package/esm2015/src/lib/agorapulse-ui-components.module.js +0 -285
  131. package/esm2015/src/lib/avatar/avatar.component.js +0 -82
  132. package/esm2015/src/lib/confirm-modal/confirm-modal.component.js +0 -59
  133. package/esm2015/src/lib/datepicker/datepicker.component.js +0 -213
  134. package/esm2015/src/lib/directives/autosize-textarea.directive.js +0 -43
  135. package/esm2015/src/lib/directives/default-image.directive.js +0 -25
  136. package/esm2015/src/lib/directives/ellipsis.directive.js +0 -82
  137. package/esm2015/src/lib/directives/equal-validator.directive.js +0 -53
  138. package/esm2015/src/lib/directives/frozen-gif.directive.js +0 -113
  139. package/esm2015/src/lib/directives/multi-style-text.directive.js +0 -103
  140. package/esm2015/src/lib/directives/truncate-tooltip.directive.js +0 -36
  141. package/esm2015/src/lib/dots-stepper/dots-stepper.component.js +0 -41
  142. package/esm2015/src/lib/edit-tag-modal/edit-tags-modal.component.js +0 -129
  143. package/esm2015/src/lib/feature-onboarding/feature-onboarding.component.js +0 -35
  144. package/esm2015/src/lib/image-carousel/image-carousel.component.js +0 -143
  145. package/esm2015/src/lib/lead-modal/lead-modal.component.js +0 -47
  146. package/esm2015/src/lib/media-display-overlay/media-display-overlay-dialog.component.js +0 -87
  147. package/esm2015/src/lib/modal/modal.component.js +0 -88
  148. package/esm2015/src/lib/neo-timepicker/neo-timepicker.component.js +0 -371
  149. package/esm2015/src/lib/notification/notification.component.js +0 -18
  150. package/esm2015/src/lib/overlay/overlay-dialog-service.component.js +0 -62
  151. package/esm2015/src/lib/overlay/overlay-dialog.component.js +0 -33
  152. package/esm2015/src/lib/overlay-in-div/overlay-in-div.component.js +0 -23
  153. package/esm2015/src/lib/paginator/paginator-button/paginator-button.component.js +0 -22
  154. package/esm2015/src/lib/paginator/paginator.component.js +0 -47
  155. package/esm2015/src/lib/password-input/password-input.component.js +0 -65
  156. package/esm2015/src/lib/password-strength-bar/password-strength-bar.component.js +0 -82
  157. package/esm2015/src/lib/password-strength-display-bar/password-strength-display-bar.component.js +0 -41
  158. package/esm2015/src/lib/phone-number-input/phone-number-input.component.js +0 -123
  159. package/esm2015/src/lib/places/place-list.component.js +0 -12
  160. package/esm2015/src/lib/places/place.component.js +0 -15
  161. package/esm2015/src/lib/popmenu/popmenu.component.js +0 -322
  162. package/esm2015/src/lib/popmenu/popmenu.directive.js +0 -215
  163. package/esm2015/src/lib/popmenu/popmenu.module.js +0 -38
  164. package/esm2015/src/lib/slide-toggle/slide-toggle.component.js +0 -59
  165. package/esm2015/src/lib/snackbar/snackbar.component.js +0 -22
  166. package/esm2015/src/lib/snackbars-thread/component/snackbars-thread.component.js +0 -50
  167. package/esm2015/src/lib/snackbars-thread/service/snackbars-thread.service.js +0 -44
  168. package/esm2015/src/lib/splashscreen/splashscreen.component.js +0 -37
  169. package/esm2015/src/lib/star-rating/star-rating.component.js +0 -38
  170. package/esm2015/src/lib/stepper/stepper.component.js +0 -37
  171. package/esm2015/src/lib/tags/tag-list.component.js +0 -12
  172. package/esm2015/src/lib/tags/tag.component.js +0 -20
  173. package/esm2015/src/lib/tags-selector/tags-selector.component.js +0 -73
  174. package/esm2015/src/lib/timepicker/timepicker.component.js +0 -375
  175. package/esm2015/src/lib/tooltip-neo/tooltip-neo.component.js +0 -46
  176. package/esm2015/src/lib/tooltip-neo/tooltip-neo.directive.js +0 -107
  177. package/esm2015/src/lib/tooltip-neo/tooltip-neo.service.js +0 -15
  178. package/esm2015/src/lib/try-popup/try-popup.component.js +0 -33
  179. package/fesm2015/agorapulse-ui-components.js +0 -4176
  180. package/fesm2015/agorapulse-ui-components.js.map +0 -1
@@ -1,371 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
2
- import format from "date-fns/format";
3
- import parse from "date-fns/parse";
4
- import IMask from "imask";
5
- import { fromEvent, Subject } from "rxjs";
6
- import { debounceTime, distinctUntilChanged, map, takeUntil, } from "rxjs/operators";
7
- // FIXME Move these models when we remove the old timepicker
8
- import { TimeFormat } from "../timepicker/timepicker.component";
9
- export class NeoTimepickerComponent {
10
- constructor(changeDetectorRef) {
11
- this.changeDetectorRef = changeDetectorRef;
12
- this.i18n = {
13
- hourLabel: 'Hour',
14
- minuteLabel: 'Minute',
15
- meridianLabel: 'AM/PM',
16
- doneLabel: 'Done',
17
- cancelLabel: 'Cancel',
18
- };
19
- this.disabled = false;
20
- this.format = TimeFormat.Default;
21
- this.invalid = false;
22
- this.placement = 'bottom';
23
- this.timeModelChange = new EventEmitter();
24
- this.meridians = ['AM', 'PM'];
25
- this.imaskDefault = {
26
- mask: 'HH:MM',
27
- blocks: {
28
- HH: {
29
- mask: IMask.MaskedRange,
30
- from: 0,
31
- to: 23,
32
- autofix: 'pad',
33
- },
34
- MM: {
35
- mask: IMask.MaskedRange,
36
- from: 0,
37
- to: 59,
38
- autofix: 'pad',
39
- },
40
- },
41
- };
42
- this.imaskMeridian = {
43
- mask: 'HH:MM AMPM',
44
- blocks: {
45
- HH: {
46
- mask: IMask.MaskedRange,
47
- from: 1,
48
- to: 12,
49
- autofix: 'pad',
50
- },
51
- MM: {
52
- mask: IMask.MaskedRange,
53
- from: 0,
54
- to: 59,
55
- autofix: 'pad',
56
- },
57
- AMPM: {
58
- mask: IMask.MaskedEnum,
59
- enum: ['AM', 'PM']
60
- }
61
- },
62
- lazy: false,
63
- prepare: function (str) {
64
- return str.toUpperCase();
65
- },
66
- };
67
- this.ENTER_KEY = 'Enter';
68
- this.ESCAPE_KEY = 'Escape';
69
- this.FIX_NUMBER = 10;
70
- this.HOURS_MAX = 24;
71
- this.HOURS_MERIDIAN_MAX = 12;
72
- this.MARGIN = 8;
73
- this.MINUTES_MAX = 60;
74
- this.TIME_OPTION_HEIGHT = 387;
75
- this.TIME_PICKER_DEFAULT_WIDTH = 96;
76
- this.TIME_PICKER_MERIDIAN_WIDTH = 152;
77
- this.ROW_HEIGHT = 36;
78
- this.hours = [];
79
- this.minutes = [];
80
- this.position = null;
81
- this.TimeFormat = TimeFormat;
82
- }
83
- onKeypress(event) {
84
- if (this.timepickerOpened) {
85
- if (event.code === this.ENTER_KEY) {
86
- this.onSaveSelection();
87
- }
88
- if (event.code === this.ESCAPE_KEY) {
89
- this.onCancelSelection();
90
- }
91
- }
92
- }
93
- ngOnInit() {
94
- this.generateTimeSlots();
95
- this.onTimeModelChange();
96
- }
97
- ngOnChanges(changes) {
98
- var _a, _b, _c;
99
- this.generateTimeSlots();
100
- if ((_a = changes.format) === null || _a === void 0 ? void 0 : _a.currentValue) {
101
- this.timeFormat = this.format === TimeFormat.Default ? 'HH:mm' : 'hh:mm a';
102
- if (this.format === TimeFormat.Default && this.meridians.some(meridian => { var _a; return (_a = this.timeModel) === null || _a === void 0 ? void 0 : _a.endsWith(meridian); })) {
103
- this.timeModel = NeoTimepickerComponent.convert12To24(this.timeModel);
104
- }
105
- else if (this.format === TimeFormat.Meridian && this.meridians.every(meridian => { var _a; return !((_a = this.timeModel) === null || _a === void 0 ? void 0 : _a.endsWith(meridian)); })) {
106
- this.timeModel = NeoTimepickerComponent.convert24To12(this.timeModel);
107
- }
108
- setTimeout(() => this.changeDetectorRef.markForCheck());
109
- }
110
- if ((_b = changes.placement) === null || _b === void 0 ? void 0 : _b.currentValue) {
111
- this.updateTimePickerPosition();
112
- }
113
- if ((_c = changes.format) === null || _c === void 0 ? void 0 : _c.currentValue) {
114
- this.updateTimePickerPosition();
115
- }
116
- }
117
- onOpenTimepicker() {
118
- this.destroy$ = new Subject();
119
- this.previousValue = this.timeModel;
120
- this.timepickerOpened = true;
121
- this.timepickerClosed = false;
122
- this.updateTimePickerPosition();
123
- setTimeout(() => {
124
- this.updateElementPosition('minute', this.selectedMinute, 'auto');
125
- this.updateElementPosition('hour', this.selectedHour, 'auto');
126
- this.updateElementPosition('meridian', this.selectedMeridian, 'auto');
127
- this.inputBox.nativeElement.focus();
128
- this.inputBox.nativeElement.select();
129
- }, 1);
130
- this.changeDetectorRef.markForCheck();
131
- }
132
- onTimepickerOpened() {
133
- this.hoursScrollObserver$ = this.onObserveElementScroll(this.hourOptions.nativeElement);
134
- this.minutesScrollObserver$ = this.onObserveElementScroll(this.minutesOptions.nativeElement);
135
- this.hoursScrollObserver$.subscribe((indexToScroll) => {
136
- this.updateTimeModel(this.hours[indexToScroll], this.selectedMinute, this.selectedMeridian);
137
- });
138
- this.minutesScrollObserver$.subscribe((indexToScroll) => {
139
- this.updateTimeModel(this.selectedHour, this.minutes[indexToScroll], this.selectedMeridian);
140
- });
141
- if (this.format === TimeFormat.Meridian) {
142
- this.meridiansScrollObserver$ = this.onObserveElementScroll(this.meridiansOptions.nativeElement);
143
- this.meridiansScrollObserver$.subscribe((indexToScroll) => {
144
- this.updateTimeModel(this.selectedHour, this.selectedMinute, this.meridians[indexToScroll]);
145
- });
146
- }
147
- }
148
- onObserveElementScroll(element) {
149
- return fromEvent(element, 'scroll').pipe(debounceTime(150), distinctUntilChanged(), takeUntil(this.destroy$), map(() => {
150
- return Math.round(element.scrollTop / this.ROW_HEIGHT);
151
- }));
152
- }
153
- onTimePickerClosed() {
154
- this.onCancelSelection();
155
- this.destroy$.next();
156
- this.destroy$.complete();
157
- }
158
- onTimeModelChange() {
159
- let date = new Date();
160
- if (this.timeModel) {
161
- date = parse(this.timeModel, this.timeFormat, new Date());
162
- }
163
- this.timeModel = format(date, this.timeFormat);
164
- if (!this.previousValue) {
165
- this.previousValue = this.timeModel;
166
- }
167
- let jsHour = date.getHours();
168
- if (this.format === TimeFormat.Meridian) {
169
- if (jsHour > 12) {
170
- jsHour = jsHour - 12;
171
- }
172
- // JS doesn't handle well AM/PM hour so 12:53 PM will be 00:53 ...
173
- if (jsHour == 0) {
174
- jsHour = 12;
175
- }
176
- }
177
- const hour = NeoTimepickerComponent.toFixed(jsHour.toString(), 10);
178
- if (hour != this.selectedHour) {
179
- this.selectedHour = hour;
180
- this.updateElementPosition('hour', this.selectedHour, 'auto');
181
- }
182
- const minute = NeoTimepickerComponent.toFixed(date.getMinutes().toString(), 10);
183
- if (minute != this.selectedMinute) {
184
- this.selectedMinute = minute;
185
- this.updateElementPosition('minute', this.selectedMinute, 'auto');
186
- }
187
- if (this.format === TimeFormat.Meridian && this.selectedMeridian !== this.timeModel.split(' ')[1]) {
188
- this.selectedMeridian = this.timeModel.split(' ')[1];
189
- this.updateElementPosition('meridian', this.selectedMeridian, 'auto');
190
- }
191
- this.changeDetectorRef.markForCheck();
192
- }
193
- onSelectHour(hour) {
194
- this.updateTimeModel(hour, this.selectedMinute, this.selectedMeridian);
195
- }
196
- onSelectMinute(minute) {
197
- this.updateTimeModel(this.selectedHour, minute, this.selectedMeridian);
198
- }
199
- onSelectMeridian(meridian) {
200
- this.updateTimeModel(this.selectedHour, this.selectedMinute, meridian);
201
- }
202
- onSaveSelection() {
203
- this.previousValue = this.timeModel;
204
- this.timepickerClosed = true;
205
- this.timepickerOpened = false;
206
- const timeModelValue = parse(this.timeModel, this.timeFormat, new Date());
207
- this.timeModelChange.emit({
208
- hours: timeModelValue.getHours(),
209
- minutes: timeModelValue.getMinutes(),
210
- });
211
- this.changeDetectorRef.markForCheck();
212
- }
213
- onCancelSelection() {
214
- this.timepickerClosed = true;
215
- this.timepickerOpened = false;
216
- this.timeModel = this.previousValue;
217
- this.changeDetectorRef.markForCheck();
218
- }
219
- onMaskValidateComplete(value) {
220
- if (this.timeModel !== value) {
221
- this.timeModel = value;
222
- }
223
- this.onTimeModelChange();
224
- }
225
- updateTimeModel(hour, minute, meridian) {
226
- if (this.format === TimeFormat.Meridian) {
227
- this.timeModel = `${hour}:${minute} ${meridian}`;
228
- }
229
- else {
230
- this.timeModel = `${hour}:${minute}`;
231
- }
232
- this.changeDetectorRef.markForCheck();
233
- }
234
- updateElementPosition(elementType, id, scrollBehavior) {
235
- const element = document.getElementById(`${elementType}-${id}`);
236
- this.scrollToElement(element, scrollBehavior);
237
- }
238
- scrollToElement(element, behavior = 'auto') {
239
- if (element) {
240
- setTimeout(() => {
241
- element.scrollIntoView({
242
- behavior,
243
- block: 'center',
244
- inline: 'center'
245
- });
246
- }, 1);
247
- }
248
- }
249
- /**
250
- * Fullfill minutes and hours arrays like [0, 1, 2 ... 12] and [0, 1, 2, ... 59]
251
- */
252
- generateTimeSlots() {
253
- this.hours = [];
254
- this.minutes = [NeoTimepickerComponent.toFixed(0, this.FIX_NUMBER)];
255
- for (let i = 1; i <= this.HOURS_MERIDIAN_MAX; i++) {
256
- const indexToAdd = NeoTimepickerComponent.toFixed(i, this.FIX_NUMBER);
257
- this.hours.push(indexToAdd);
258
- this.minutes.push(indexToAdd);
259
- }
260
- if (this.format === TimeFormat.Default) {
261
- this.hours = [NeoTimepickerComponent.toFixed(0, this.FIX_NUMBER), ...this.hours];
262
- for (let i = 13; i < this.HOURS_MAX; i++) {
263
- this.hours.push(NeoTimepickerComponent.toFixed(i, this.FIX_NUMBER));
264
- }
265
- }
266
- for (let i = 13; i < this.MINUTES_MAX; i++) {
267
- this.minutes.push(NeoTimepickerComponent.toFixed(i, this.FIX_NUMBER));
268
- }
269
- this.changeDetectorRef.markForCheck();
270
- }
271
- updateTimePickerPosition() {
272
- var _a;
273
- if ((_a = this.inputBox) === null || _a === void 0 ? void 0 : _a.nativeElement) {
274
- const inputBoxBounds = this.inputBox.nativeElement.getBoundingClientRect();
275
- const topPosition = inputBoxBounds.top - this.TIME_OPTION_HEIGHT - this.MARGIN;
276
- const bottomPosition = inputBoxBounds.top + inputBoxBounds.height;
277
- const timePickerWidth = this.format === TimeFormat.Meridian ? this.TIME_PICKER_MERIDIAN_WIDTH : this.TIME_PICKER_DEFAULT_WIDTH;
278
- const shift = (timePickerWidth - inputBoxBounds.width) / 2;
279
- if (this.placement === 'top') {
280
- this.position = {
281
- top: topPosition < 0 ? bottomPosition : topPosition,
282
- left: inputBoxBounds.left - shift,
283
- };
284
- }
285
- else {
286
- this.position = {
287
- top: bottomPosition + this.TIME_OPTION_HEIGHT + this.MARGIN > window.innerHeight ? topPosition : bottomPosition,
288
- left: inputBoxBounds.left - shift,
289
- };
290
- }
291
- this.changeDetectorRef.markForCheck();
292
- }
293
- }
294
- static convert12To24(time) {
295
- const terms = time.split(':');
296
- const minutes = terms[1].substring(0, 2);
297
- const meridian = terms[1].trim().slice(-2).toUpperCase();
298
- let hour = parseInt(terms[0]);
299
- if (!isNaN(parseInt(terms[0]))) {
300
- if (meridian === 'PM' && hour < 12) {
301
- hour = hour + 12;
302
- }
303
- if (meridian === 'AM' && hour === 12) {
304
- hour = 0;
305
- }
306
- }
307
- return `${hour}:${minutes}`;
308
- }
309
- static convert24To12(time) {
310
- const terms = time.split(':');
311
- let meridian = 'AM';
312
- let hour = parseInt(terms[0]);
313
- let minute = parseInt(terms[1]);
314
- if (!isNaN(parseInt(terms[0]))) {
315
- if (hour >= 12) {
316
- meridian = 'PM';
317
- if (hour > 12) {
318
- hour = hour - 12;
319
- }
320
- }
321
- if (hour === 0) {
322
- hour = 12;
323
- }
324
- }
325
- const hourStr = NeoTimepickerComponent.toFixed(hour, 10);
326
- const minuteStr = NeoTimepickerComponent.toFixed(minute, 10);
327
- return `${hourStr}:${minuteStr} ${meridian}`;
328
- }
329
- /**
330
- * Return 08 for 8, 06 for 6
331
- * @param num
332
- * @param fix
333
- * @private
334
- */
335
- static toFixed(num, fix) {
336
- let fixedNum = num.toString();
337
- if (num < fix) {
338
- fixedNum = `0${fixedNum}`;
339
- }
340
- return fixedNum;
341
- }
342
- }
343
- NeoTimepickerComponent.decorators = [
344
- { type: Component, args: [{
345
- changeDetection: ChangeDetectionStrategy.OnPush,
346
- selector: 'ap-neo-timepicker',
347
- template: "<div class=\"time-picker-container\">\n <ng-template #timeOptionsTemplate>\n <div class=\"time-picker-options\"\n [class.meridian]=\"format === TimeFormat.Meridian\"\n *ngIf=\"timepickerOpened\"\n #timepicker\n >\n <div class=\"header\">\n <span> {{ i18n.hourLabel }} </span>\n <span> {{ i18n.minuteLabel }} </span>\n <span *ngIf=\"format === TimeFormat.Meridian\"> {{ i18n.meridianLabel }} </span>\n </div>\n <div class=\"content\">\n <div class=\"selector\">\n <span>:</span>\n <span *ngIf=\"format === TimeFormat.Meridian\"></span>\n </div>\n <div class=\"options\"\n #hourOptions>\n <div class=\"invisible-block\"></div>\n <div *ngFor=\"let hour of hours;\"\n class=\"option\"\n [id]=\"'hour-' + hour\"\n [class.selected]=\"hour === selectedHour\"\n (click)=\"onSelectHour(hour)\">\n {{ hour }}\n </div>\n <div class=\"invisible-block\"></div>\n </div>\n <div class=\"divider\"></div>\n <div class=\"options\"\n #minutesOptions>\n <div class=\"invisible-block\"></div>\n <div *ngFor=\"let minute of minutes;\"\n class=\"option\"\n [id]=\"'minute-' + minute\"\n [class.selected]=\"minute === selectedMinute\"\n (click)=\"onSelectMinute(minute)\">\n {{ minute }}\n </div>\n <div class=\"invisible-block\"></div>\n </div>\n <div *ngIf=\"format === TimeFormat.Meridian\"\n class=\"divider\"></div>\n <div *ngIf=\"format === TimeFormat.Meridian\"\n class=\"options\"\n #meridiansOptions>\n <div class=\"invisible-block\"></div>\n <div *ngFor=\"let meridian of meridians;\"\n class=\"option\"\n [id]=\"'meridian-' + meridian\"\n [class.selected]=\"selectedMeridian === meridian\"\n (click)=\"onSelectMeridian(meridian)\">\n {{ meridian }}\n </div>\n <div class=\"invisible-block\"></div>\n </div>\n </div>\n <div class=\"buttons\">\n <button mat-flat-button\n class=\"full-width\"\n color=\"primary\"\n (click)=\"onSaveSelection()\">\n {{ i18n.doneLabel }}\n </button>\n <button mat-flat-button\n class=\"full-width\"\n (click)=\"onCancelSelection()\">\n {{ i18n.cancelLabel }}\n </button>\n </div>\n </div>\n </ng-template>\n <input #inputBox\n class=\"time-input\"\n placement=\"bottom right\"\n color=\"secondary\"\n [class.active]=\"timepickerOpened\"\n [class.invalid]=\"invalid\"\n [apPopmenu]=\"timeOptionsTemplate\"\n [apPopmenuBackground]=\"false\"\n [apPopmenuBorder]=\"false\"\n [apPopmenuDisabled]=\"timepickerOpened\"\n [apTooltipNeo]=\"{content: invalidationMessage, display: invalidationMessage && invalid}\"\n [close]=\"timepickerClosed\"\n [disabled]=\"disabled\"\n [imask]=\"format === TimeFormat.Meridian ? imaskMeridian : imaskDefault\"\n [(ngModel)]=\"timeModel\"\n [pointer]=\"true\"\n [position]=\"position\"\n [rounded]=\"true\"\n [shadow]=\"false\"\n (click)=\"onOpenTimepicker()\"\n (complete)=\"onMaskValidateComplete($event)\"\n (menuClosed)=\"onTimePickerClosed()\"\n (menuOpened)=\"onTimepickerOpened()\">\n</div>\n",
348
- styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid red}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #fff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:#0000}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:initial}[border=transparent]{border:1px solid #0000}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.time-picker-container{display:flex}.time-input{width:80px;max-width:80px;text-align:center;padding:0;margin:0;height:36px;line-height:24px}.time-input.active{border-color:#178dfe}.time-picker-options{display:flex;flex-direction:column;width:96px;margin-top:8px;max-width:96px;height:379px;background:#fff;border-radius:4px;overflow:hidden;box-shadow:0 3px 10px #00000014}.time-picker-options.meridian{width:152px;max-width:152px}.time-picker-options .header{display:flex;align-items:center;min-height:29px;border-bottom:1px solid #eaecef;color:#344563;font-size:12px;line-height:18px}.time-picker-options .header>span{flex:1;text-align:center}.time-picker-options .content{display:flex;position:relative;min-height:252px;overflow:hidden}.time-picker-options .content .selector{display:flex;justify-content:space-evenly;align-items:center;background-color:#f9f9fa;border-top:1px solid #eaecef;border-bottom:1px solid #eaecef;width:100%;height:34px;position:absolute;top:50%;transform:translateY(-50%);z-index:4;box-sizing:border-box}.time-picker-options .content .divider{height:100%;width:1px;background:#eaecef}.time-picker-options .content .options{flex:1;height:100%;overflow-y:scroll;z-index:5;scroll-snap-type:y mandatory;-ms-overflow-style:none;scrollbar-width:none}.time-picker-options .content .options::-webkit-scrollbar{display:none}.time-picker-options .content .options .invisible-block{min-height:109px;max-height:109px;width:100%}.time-picker-options .content .options .option{min-height:34px;display:flex;z-index:5;justify-content:center;align-items:center;font-size:14px;line-height:17px;color:#aeb5c1;scroll-snap-align:center;padding-block:1px}.time-picker-options .content .options .option:hover{color:#178dfe;cursor:pointer}.time-picker-options .content .options .option.selected{color:#344563!important}.time-picker-options .content .meridian{flex:1;display:flex;flex-direction:column;justify-content:center}.time-picker-options .content .meridian>div{min-height:34px;display:flex;justify-content:center;align-items:center;font-size:14px;line-height:17px;color:#aeb5c1;scroll-snap-align:center}.time-picker-options .buttons{display:flex;flex-direction:column;padding:8px;min-height:96px;border-top:1px solid #eaecef;grid-gap:8px;gap:8px}.time-picker-options .buttons button{font-weight:700;min-width:80px}"]
349
- },] }
350
- ];
351
- /** @nocollapse */
352
- NeoTimepickerComponent.ctorParameters = () => [
353
- { type: ChangeDetectorRef }
354
- ];
355
- NeoTimepickerComponent.propDecorators = {
356
- inputBox: [{ type: ViewChild, args: ['inputBox',] }],
357
- hourOptions: [{ type: ViewChild, args: ['hourOptions',] }],
358
- minutesOptions: [{ type: ViewChild, args: ['minutesOptions',] }],
359
- meridiansOptions: [{ type: ViewChild, args: ['meridiansOptions',] }],
360
- timepicker: [{ type: ViewChild, args: ['timepicker',] }],
361
- i18n: [{ type: Input }],
362
- disabled: [{ type: Input }],
363
- format: [{ type: Input }],
364
- invalid: [{ type: Input }],
365
- invalidationMessage: [{ type: Input }],
366
- placement: [{ type: Input }],
367
- timeModel: [{ type: Input }],
368
- timeModelChange: [{ type: Output }],
369
- onKeypress: [{ type: HostListener, args: ['window:keydown', ['$event'],] }]
370
- };
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVvLXRpbWVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL3NyYy9saWIvbmVvLXRpbWVwaWNrZXIvbmVvLXRpbWVwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUNILFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFNBQVMsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLDREQUE0RDtBQUM1RCxPQUFPLEVBQVEsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFnQnRFLE1BQU0sT0FBTyxzQkFBc0I7SUE2Ry9CLFlBQW1CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBckc5QyxTQUFJLEdBQWdDO1lBQ3pDLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFdBQVcsRUFBRSxRQUFRO1NBQ3hCLENBQUM7UUFDTyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFdBQU0sR0FBZSxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3hDLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFekIsY0FBUyxHQUFxQixRQUFRLENBQUM7UUFHdEMsb0JBQWUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVoRSxjQUFTLEdBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkMsaUJBQVksR0FBRztZQUNwQixJQUFJLEVBQUUsT0FBTztZQUNiLE1BQU0sRUFBRTtnQkFDSixFQUFFLEVBQUU7b0JBQ0EsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUN2QixJQUFJLEVBQUUsQ0FBQztvQkFDUCxFQUFFLEVBQUUsRUFBRTtvQkFDTixPQUFPLEVBQUUsS0FBSztpQkFDakI7Z0JBQ0QsRUFBRSxFQUFFO29CQUNBLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDdkIsSUFBSSxFQUFFLENBQUM7b0JBQ1AsRUFBRSxFQUFFLEVBQUU7b0JBQ04sT0FBTyxFQUFFLEtBQUs7aUJBQ2pCO2FBQ0o7U0FDSixDQUFDO1FBQ08sa0JBQWEsR0FBRztZQUNyQixJQUFJLEVBQUUsWUFBWTtZQUNsQixNQUFNLEVBQUU7Z0JBQ0osRUFBRSxFQUFFO29CQUNBLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDdkIsSUFBSSxFQUFFLENBQUM7b0JBQ1AsRUFBRSxFQUFFLEVBQUU7b0JBQ04sT0FBTyxFQUFFLEtBQUs7aUJBQ2pCO2dCQUNELEVBQUUsRUFBRTtvQkFDQSxJQUFJLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQ3ZCLElBQUksRUFBRSxDQUFDO29CQUNQLEVBQUUsRUFBRSxFQUFFO29CQUNOLE9BQU8sRUFBRSxLQUFLO2lCQUNqQjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVO29CQUN0QixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2lCQUNyQjthQUNKO1lBQ0QsSUFBSSxFQUFFLEtBQUs7WUFDWCxPQUFPLEVBQUUsVUFBVSxHQUFHO2dCQUNsQixPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixDQUFDO1NBQ0osQ0FBQztRQUVPLGNBQVMsR0FBVyxPQUFPLENBQUM7UUFDNUIsZUFBVSxHQUFXLFFBQVEsQ0FBQztRQUM5QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsdUJBQWtCLEdBQVcsR0FBRyxDQUFDO1FBQ2pDLDhCQUF5QixHQUFXLEVBQUUsQ0FBQztRQUN2QywrQkFBMEIsR0FBVyxHQUFHLENBQUM7UUFDekMsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUdqQyxVQUFLLEdBQWEsRUFBRSxDQUFDO1FBSXJCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFrQyxJQUFJLENBQUM7UUFPL0MsZUFBVSxHQUFHLFVBQVUsQ0FBQztJQWdCa0MsQ0FBQztJQVozRCxVQUFVLENBQUMsS0FBb0I7UUFDM0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMxQjtZQUVELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM1QjtTQUNKO0lBQ0wsQ0FBQztJQUlELFFBQVE7UUFDSixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7O1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksTUFBQSxPQUFPLENBQUMsTUFBTSwwQ0FBRSxZQUFZLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFdBQUMsT0FBQSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQSxFQUFBLENBQUMsRUFBRTtnQkFDM0csSUFBSSxDQUFDLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3pFO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFdBQUMsT0FBQSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQSxFQUFBLENBQUMsRUFBRTtnQkFDckgsSUFBSSxDQUFDLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3pFO1lBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxNQUFBLE9BQU8sQ0FBQyxTQUFTLDBDQUFFLFlBQVksRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUNuQztRQUNELElBQUksTUFBQSxPQUFPLENBQUMsTUFBTSwwQ0FBRSxZQUFZLEVBQUU7WUFDOUIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTdGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRyxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRyxDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLENBQUMsQ0FBQyxDQUFBO1NBQ0w7SUFFTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsT0FBb0I7UUFDdkMsT0FBTyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDcEMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDN0Q7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN2QztRQUNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUNyQyxJQUFJLE1BQU0sR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7YUFDeEI7WUFDRCxrRUFBa0U7WUFDbEUsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNiLE1BQU0sR0FBRyxFQUFFLENBQUM7YUFDZjtTQUNKO1FBRUQsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNqRTtRQUVELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEYsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztZQUM3QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDckU7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDL0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDdEIsS0FBSyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUU7WUFDaEMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxVQUFVLEVBQUU7U0FDdkMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBSztRQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZLEVBQUUsTUFBYyxFQUFFLFFBQWlCO1FBQzNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxJQUFJLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO1NBQ3BEO2FBQU07WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxXQUEyQyxFQUFFLEVBQVUsRUFBRSxjQUFpQztRQUNwSCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsV0FBVyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGVBQWUsQ0FDaEIsT0FBTyxFQUNQLGNBQWMsQ0FDakIsQ0FBQztJQUNOLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBb0IsRUFBRSxXQUE4QixNQUFNO1FBQzlFLElBQUksT0FBTyxFQUFFO1lBQ1QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixPQUFPLENBQUMsY0FBYyxDQUFDO29CQUNuQixRQUFRO29CQUNSLEtBQUssRUFBRSxRQUFRO29CQUNmLE1BQU0sRUFBRSxRQUFRO2lCQUNuQixDQUFDLENBQUM7WUFDUCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7U0FDUjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNwRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9DLE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pGLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO2FBQ3RFO1NBQ0o7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTyx3QkFBd0I7O1FBQzVCLElBQUksTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxhQUFhLEVBQUU7WUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMzRSxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQy9FLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztZQUNsRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1lBQzlILE1BQU0sS0FBSyxHQUFHLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFM0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRztvQkFDWixHQUFHLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXO29CQUNuRCxJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUksR0FBRyxLQUFLO2lCQUNwQyxDQUFDO2FBQ0w7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRztvQkFDWixHQUFHLEVBQUUsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYztvQkFDL0csSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFJLEdBQUcsS0FBSztpQkFDcEMsQ0FBQzthQUNMO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSTtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1QixJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7YUFDcEI7WUFDRCxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNaO1NBQ0o7UUFDRCxPQUFPLEdBQUcsSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUk7UUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVCLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRTtnQkFDWixRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNoQixJQUFJLElBQUksR0FBRyxFQUFFLEVBQUU7b0JBQ1gsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7aUJBQ3BCO2FBQ0o7WUFDRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLEVBQUUsQ0FBQzthQUNiO1NBQ0o7UUFDRCxNQUFNLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0QsT0FBTyxHQUFHLE9BQU8sSUFBSSxTQUFTLElBQUksUUFBUSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRztRQUMzQixJQUFJLFFBQVEsR0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEMsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ1gsUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7U0FDN0I7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOzs7WUE3WUosU0FBUyxTQUFDO2dCQUNQLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qiw2dUlBQThDOzthQUVqRDs7OztZQXJDRyxpQkFBaUI7Ozt1QkF3Q2hCLFNBQVMsU0FBQyxVQUFVOzBCQUNwQixTQUFTLFNBQUMsYUFBYTs2QkFDdkIsU0FBUyxTQUFDLGdCQUFnQjsrQkFDMUIsU0FBUyxTQUFDLGtCQUFrQjt5QkFDNUIsU0FBUyxTQUFDLFlBQVk7bUJBRXRCLEtBQUs7dUJBT0wsS0FBSztxQkFDTCxLQUFLO3NCQUNMLEtBQUs7a0NBQ0wsS0FBSzt3QkFDTCxLQUFLO3dCQUNMLEtBQUs7OEJBRUwsTUFBTTt5QkEwRU4sWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCBmb3JtYXQgZnJvbSBcImRhdGUtZm5zL2Zvcm1hdFwiO1xuaW1wb3J0IHBhcnNlIGZyb20gXCJkYXRlLWZucy9wYXJzZVwiO1xuaW1wb3J0IElNYXNrIGZyb20gXCJpbWFza1wiO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIG1hcCxcbiAgICB0YWtlVW50aWwsXG59IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuLy8gRklYTUUgTW92ZSB0aGVzZSBtb2RlbHMgd2hlbiB3ZSByZW1vdmUgdGhlIG9sZCB0aW1lcGlja2VyXG5pbXBvcnQgeyBUaW1lLCBUaW1lRm9ybWF0IH0gZnJvbSBcIi4uL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lUGlja2VyVHJhbnNsYXRlZFN0cmluZ3Mge1xuICAgIGhvdXJMYWJlbDogc3RyaW5nO1xuICAgIG1pbnV0ZUxhYmVsOiBzdHJpbmc7XG4gICAgbWVyaWRpYW5MYWJlbDogc3RyaW5nO1xuICAgIGRvbmVMYWJlbDogc3RyaW5nO1xuICAgIGNhbmNlbExhYmVsOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtbmVvLXRpbWVwaWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZW8tdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmVvLXRpbWVwaWNrZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZW9UaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRCb3gnKSBpbnB1dEJveDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdob3VyT3B0aW9ucycpIGhvdXJPcHRpb25zOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ21pbnV0ZXNPcHRpb25zJykgbWludXRlc09wdGlvbnM6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnbWVyaWRpYW5zT3B0aW9ucycpIG1lcmlkaWFuc09wdGlvbnM6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgndGltZXBpY2tlcicpIHRpbWVwaWNrZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKSBpMThuOiBUaW1lUGlja2VyVHJhbnNsYXRlZFN0cmluZ3MgPSB7XG4gICAgICAgIGhvdXJMYWJlbDogJ0hvdXInLFxuICAgICAgICBtaW51dGVMYWJlbDogJ01pbnV0ZScsXG4gICAgICAgIG1lcmlkaWFuTGFiZWw6ICdBTS9QTScsXG4gICAgICAgIGRvbmVMYWJlbDogJ0RvbmUnLFxuICAgICAgICBjYW5jZWxMYWJlbDogJ0NhbmNlbCcsXG4gICAgfTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGZvcm1hdDogVGltZUZvcm1hdCA9IFRpbWVGb3JtYXQuRGVmYXVsdDtcbiAgICBASW5wdXQoKSBpbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgaW52YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBsYWNlbWVudDogJ3RvcCcgfCAnYm90dG9tJyA9ICdib3R0b20nO1xuICAgIEBJbnB1dCgpIHRpbWVNb2RlbDogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIHRpbWVNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPFRpbWU+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lPigpO1xuXG4gICAgcmVhZG9ubHkgbWVyaWRpYW5zOiBzdHJpbmdbXSA9IFsnQU0nLCAnUE0nXTtcbiAgICByZWFkb25seSBpbWFza0RlZmF1bHQgPSB7XG4gICAgICAgIG1hc2s6ICdISDpNTScsXG4gICAgICAgIGJsb2Nrczoge1xuICAgICAgICAgICAgSEg6IHtcbiAgICAgICAgICAgICAgICBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSxcbiAgICAgICAgICAgICAgICBmcm9tOiAwLFxuICAgICAgICAgICAgICAgIHRvOiAyMyxcbiAgICAgICAgICAgICAgICBhdXRvZml4OiAncGFkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBNTToge1xuICAgICAgICAgICAgICAgIG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLFxuICAgICAgICAgICAgICAgIGZyb206IDAsXG4gICAgICAgICAgICAgICAgdG86IDU5LFxuICAgICAgICAgICAgICAgIGF1dG9maXg6ICdwYWQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJlYWRvbmx5IGltYXNrTWVyaWRpYW4gPSB7XG4gICAgICAgIG1hc2s6ICdISDpNTSBBTVBNJyxcbiAgICAgICAgYmxvY2tzOiB7XG4gICAgICAgICAgICBISDoge1xuICAgICAgICAgICAgICAgIG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLFxuICAgICAgICAgICAgICAgIGZyb206IDEsXG4gICAgICAgICAgICAgICAgdG86IDEyLFxuICAgICAgICAgICAgICAgIGF1dG9maXg6ICdwYWQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE1NOiB7XG4gICAgICAgICAgICAgICAgbWFzazogSU1hc2suTWFza2VkUmFuZ2UsXG4gICAgICAgICAgICAgICAgZnJvbTogMCxcbiAgICAgICAgICAgICAgICB0bzogNTksXG4gICAgICAgICAgICAgICAgYXV0b2ZpeDogJ3BhZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQU1QTToge1xuICAgICAgICAgICAgICAgIG1hc2s6IElNYXNrLk1hc2tlZEVudW0sXG4gICAgICAgICAgICAgICAgZW51bTogWydBTScsICdQTSddXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGxhenk6IGZhbHNlLFxuICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHJlYWRvbmx5IEVOVEVSX0tFWTogc3RyaW5nID0gJ0VudGVyJztcbiAgICByZWFkb25seSBFU0NBUEVfS0VZOiBzdHJpbmcgPSAnRXNjYXBlJztcbiAgICByZWFkb25seSBGSVhfTlVNQkVSOiBudW1iZXIgPSAxMDtcbiAgICByZWFkb25seSBIT1VSU19NQVg6IG51bWJlciA9IDI0O1xuICAgIHJlYWRvbmx5IEhPVVJTX01FUklESUFOX01BWDogbnVtYmVyID0gMTI7XG4gICAgcmVhZG9ubHkgTUFSR0lOOiBudW1iZXIgPSA4O1xuICAgIHJlYWRvbmx5IE1JTlVURVNfTUFYOiBudW1iZXIgPSA2MDtcbiAgICByZWFkb25seSBUSU1FX09QVElPTl9IRUlHSFQ6IG51bWJlciA9IDM4NztcbiAgICByZWFkb25seSBUSU1FX1BJQ0tFUl9ERUZBVUxUX1dJRFRIOiBudW1iZXIgPSA5NjtcbiAgICByZWFkb25seSBUSU1FX1BJQ0tFUl9NRVJJRElBTl9XSURUSDogbnVtYmVyID0gMTUyO1xuICAgIHJlYWRvbmx5IFJPV19IRUlHSFQ6IG51bWJlciA9IDM2O1xuXG4gICAgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD47XG4gICAgaG91cnM6IHN0cmluZ1tdID0gW107XG4gICAgaG91cnNTY3JvbGxPYnNlcnZlciQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBtZXJpZGlhbnNTY3JvbGxPYnNlcnZlciQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICBtaW51dGVzU2Nyb2xsT2JzZXJ2ZXIkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gICAgbWludXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBwb3NpdGlvbjogeyB0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyIH0gPSBudWxsO1xuICAgIHByZXZpb3VzVmFsdWU6IHN0cmluZztcbiAgICBzZWxlY3RlZEhvdXI6IHN0cmluZztcbiAgICBzZWxlY3RlZE1pbnV0ZTogc3RyaW5nO1xuICAgIHNlbGVjdGVkTWVyaWRpYW46IHN0cmluZztcbiAgICB0aW1lcGlja2VyQ2xvc2VkOiBib29sZWFuO1xuICAgIHRpbWVwaWNrZXJPcGVuZWQ6IGJvb2xlYW47XG4gICAgVGltZUZvcm1hdCA9IFRpbWVGb3JtYXQ7XG4gICAgdGltZUZvcm1hdDogc3RyaW5nO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxuICAgIG9uS2V5cHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXBpY2tlck9wZW5lZCkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09IHRoaXMuRU5URVJfS0VZKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNhdmVTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09IHRoaXMuRVNDQVBFX0tFWSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DYW5jZWxTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVRpbWVTbG90cygpO1xuICAgICAgICB0aGlzLm9uVGltZU1vZGVsQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVUaW1lU2xvdHMoKTtcbiAgICAgICAgaWYgKGNoYW5nZXMuZm9ybWF0Py5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudGltZUZvcm1hdCA9IHRoaXMuZm9ybWF0ID09PSBUaW1lRm9ybWF0LkRlZmF1bHQgPyAnSEg6bW0nIDogJ2hoOm1tIGEnO1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09PSBUaW1lRm9ybWF0LkRlZmF1bHQgJiYgdGhpcy5tZXJpZGlhbnMuc29tZShtZXJpZGlhbiA9PiB0aGlzLnRpbWVNb2RlbD8uZW5kc1dpdGgobWVyaWRpYW4pKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZU1vZGVsID0gTmVvVGltZXBpY2tlckNvbXBvbmVudC5jb252ZXJ0MTJUbzI0KHRoaXMudGltZU1vZGVsKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtYXQgPT09IFRpbWVGb3JtYXQuTWVyaWRpYW4gJiYgdGhpcy5tZXJpZGlhbnMuZXZlcnkobWVyaWRpYW4gPT4gIXRoaXMudGltZU1vZGVsPy5lbmRzV2l0aChtZXJpZGlhbikpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lTW9kZWwgPSBOZW9UaW1lcGlja2VyQ29tcG9uZW50LmNvbnZlcnQyNFRvMTIodGhpcy50aW1lTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5wbGFjZW1lbnQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lUGlja2VyUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5mb3JtYXQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lUGlja2VyUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3BlblRpbWVwaWNrZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB0aGlzLnRpbWVNb2RlbDtcbiAgICAgICAgdGhpcy50aW1lcGlja2VyT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50aW1lcGlja2VyQ2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlVGltZVBpY2tlclBvc2l0aW9uKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUVsZW1lbnRQb3NpdGlvbignbWludXRlJywgdGhpcy5zZWxlY3RlZE1pbnV0ZSwgJ2F1dG8nKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRWxlbWVudFBvc2l0aW9uKCdob3VyJywgdGhpcy5zZWxlY3RlZEhvdXIsICdhdXRvJyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUVsZW1lbnRQb3NpdGlvbignbWVyaWRpYW4nLCB0aGlzLnNlbGVjdGVkTWVyaWRpYW4sICdhdXRvJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0Qm94Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRCb3gubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcbiAgICAgICAgfSwgMSlcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvblRpbWVwaWNrZXJPcGVuZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG91cnNTY3JvbGxPYnNlcnZlciQgPSB0aGlzLm9uT2JzZXJ2ZUVsZW1lbnRTY3JvbGwodGhpcy5ob3VyT3B0aW9ucy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5taW51dGVzU2Nyb2xsT2JzZXJ2ZXIkID0gdGhpcy5vbk9ic2VydmVFbGVtZW50U2Nyb2xsKHRoaXMubWludXRlc09wdGlvbnMubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5ob3Vyc1Njcm9sbE9ic2VydmVyJC5zdWJzY3JpYmUoKGluZGV4VG9TY3JvbGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZU1vZGVsKHRoaXMuaG91cnNbaW5kZXhUb1Njcm9sbF0sIHRoaXMuc2VsZWN0ZWRNaW51dGUsIHRoaXMuc2VsZWN0ZWRNZXJpZGlhbik7XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMubWludXRlc1Njcm9sbE9ic2VydmVyJC5zdWJzY3JpYmUoKGluZGV4VG9TY3JvbGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZU1vZGVsKHRoaXMuc2VsZWN0ZWRIb3VyLCB0aGlzLm1pbnV0ZXNbaW5kZXhUb1Njcm9sbF0sIHRoaXMuc2VsZWN0ZWRNZXJpZGlhbik7XG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09PSBUaW1lRm9ybWF0Lk1lcmlkaWFuKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuc1Njcm9sbE9ic2VydmVyJCA9IHRoaXMub25PYnNlcnZlRWxlbWVudFNjcm9sbCh0aGlzLm1lcmlkaWFuc09wdGlvbnMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuc1Njcm9sbE9ic2VydmVyJC5zdWJzY3JpYmUoKGluZGV4VG9TY3JvbGwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVNb2RlbCh0aGlzLnNlbGVjdGVkSG91ciwgdGhpcy5zZWxlY3RlZE1pbnV0ZSwgdGhpcy5tZXJpZGlhbnNbaW5kZXhUb1Njcm9sbF0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgb25PYnNlcnZlRWxlbWVudFNjcm9sbChlbGVtZW50OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiBmcm9tRXZlbnQoZWxlbWVudCwgJ3Njcm9sbCcpLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTUwKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKGVsZW1lbnQuc2Nyb2xsVG9wIC8gdGhpcy5ST1dfSEVJR0hUKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBvblRpbWVQaWNrZXJDbG9zZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DYW5jZWxTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvblRpbWVNb2RlbENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBpZiAodGhpcy50aW1lTW9kZWwpIHtcbiAgICAgICAgICAgIGRhdGUgPSBwYXJzZSh0aGlzLnRpbWVNb2RlbCwgdGhpcy50aW1lRm9ybWF0LCBuZXcgRGF0ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVNb2RlbCA9IGZvcm1hdChkYXRlLCB0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgICBpZiAoIXRoaXMucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdGhpcy50aW1lTW9kZWw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGpzSG91ciA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09PSBUaW1lRm9ybWF0Lk1lcmlkaWFuKSB7XG4gICAgICAgICAgICBpZiAoanNIb3VyID4gMTIpIHtcbiAgICAgICAgICAgICAgICBqc0hvdXIgPSBqc0hvdXIgLSAxMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEpTIGRvZXNuJ3QgaGFuZGxlIHdlbGwgQU0vUE0gaG91ciBzbyAxMjo1MyBQTSB3aWxsIGJlIDAwOjUzIC4uLlxuICAgICAgICAgICAgaWYgKGpzSG91ciA9PSAwKSB7XG4gICAgICAgICAgICAgICAganNIb3VyID0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBob3VyID0gTmVvVGltZXBpY2tlckNvbXBvbmVudC50b0ZpeGVkKGpzSG91ci50b1N0cmluZygpLCAxMCk7XG4gICAgICAgIGlmIChob3VyICE9IHRoaXMuc2VsZWN0ZWRIb3VyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IGhvdXI7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUVsZW1lbnRQb3NpdGlvbignaG91cicsIHRoaXMuc2VsZWN0ZWRIb3VyLCAnYXV0bycpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWludXRlID0gTmVvVGltZXBpY2tlckNvbXBvbmVudC50b0ZpeGVkKGRhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCksIDEwKTtcbiAgICAgICAgaWYgKG1pbnV0ZSAhPSB0aGlzLnNlbGVjdGVkTWludXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gbWludXRlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVFbGVtZW50UG9zaXRpb24oJ21pbnV0ZScsIHRoaXMuc2VsZWN0ZWRNaW51dGUsICdhdXRvJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT09IFRpbWVGb3JtYXQuTWVyaWRpYW4gJiYgdGhpcy5zZWxlY3RlZE1lcmlkaWFuICE9PSB0aGlzLnRpbWVNb2RlbC5zcGxpdCgnICcpWzFdKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVyaWRpYW4gPSB0aGlzLnRpbWVNb2RlbC5zcGxpdCgnICcpWzFdO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVFbGVtZW50UG9zaXRpb24oJ21lcmlkaWFuJywgdGhpcy5zZWxlY3RlZE1lcmlkaWFuLCAnYXV0bycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdEhvdXIoaG91cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVGltZU1vZGVsKGhvdXIsIHRoaXMuc2VsZWN0ZWRNaW51dGUsIHRoaXMuc2VsZWN0ZWRNZXJpZGlhbik7XG4gICAgfVxuXG4gICAgb25TZWxlY3RNaW51dGUobWludXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lTW9kZWwodGhpcy5zZWxlY3RlZEhvdXIsIG1pbnV0ZSwgdGhpcy5zZWxlY3RlZE1lcmlkaWFuKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdE1lcmlkaWFuKG1lcmlkaWFuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lTW9kZWwodGhpcy5zZWxlY3RlZEhvdXIsIHRoaXMuc2VsZWN0ZWRNaW51dGUsIG1lcmlkaWFuKTtcbiAgICB9XG5cbiAgICBvblNhdmVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IHRoaXMudGltZU1vZGVsO1xuICAgICAgICB0aGlzLnRpbWVwaWNrZXJDbG9zZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnRpbWVwaWNrZXJPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdGltZU1vZGVsVmFsdWUgPSBwYXJzZSh0aGlzLnRpbWVNb2RlbCwgdGhpcy50aW1lRm9ybWF0LCBuZXcgRGF0ZSgpKTtcbiAgICAgICAgdGhpcy50aW1lTW9kZWxDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBob3VyczogdGltZU1vZGVsVmFsdWUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgIG1pbnV0ZXM6IHRpbWVNb2RlbFZhbHVlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aW1lcGlja2VyQ2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50aW1lcGlja2VyT3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGltZU1vZGVsID0gdGhpcy5wcmV2aW91c1ZhbHVlO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uTWFza1ZhbGlkYXRlQ29tcGxldGUodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZU1vZGVsICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50aW1lTW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVGltZU1vZGVsQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVGltZU1vZGVsKGhvdXI6IHN0cmluZywgbWludXRlOiBzdHJpbmcsIG1lcmlkaWFuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PT0gVGltZUZvcm1hdC5NZXJpZGlhbikge1xuICAgICAgICAgICAgdGhpcy50aW1lTW9kZWwgPSBgJHtob3VyfToke21pbnV0ZX0gJHttZXJpZGlhbn1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50aW1lTW9kZWwgPSBgJHtob3VyfToke21pbnV0ZX1gO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVFbGVtZW50UG9zaXRpb24oZWxlbWVudFR5cGU6ICdob3VyJyB8ICdtaW51dGUnIHwgJ21lcmlkaWFuJywgaWQ6IHN0cmluZywgc2Nyb2xsQmVoYXZpb3I6ICdhdXRvJyB8ICdzbW9vdGgnKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHtlbGVtZW50VHlwZX0tJHtpZH1gKTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgc2Nyb2xsQmVoYXZpb3JcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjcm9sbFRvRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCwgYmVoYXZpb3I6ICdhdXRvJyB8ICdzbW9vdGgnID0gJ2F1dG8nKSB7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgaW5saW5lOiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZ1bGxmaWxsIG1pbnV0ZXMgYW5kIGhvdXJzIGFycmF5cyBsaWtlIFswLCAxLCAyIC4uLiAxMl0gYW5kIFswLCAxLCAyLCAuLi4gNTldXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZVRpbWVTbG90cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3VycyA9IFtdO1xuICAgICAgICB0aGlzLm1pbnV0ZXMgPSBbTmVvVGltZXBpY2tlckNvbXBvbmVudC50b0ZpeGVkKDAsIHRoaXMuRklYX05VTUJFUildO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLkhPVVJTX01FUklESUFOX01BWDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleFRvQWRkID0gTmVvVGltZXBpY2tlckNvbXBvbmVudC50b0ZpeGVkKGksIHRoaXMuRklYX05VTUJFUik7XG4gICAgICAgICAgICB0aGlzLmhvdXJzLnB1c2goaW5kZXhUb0FkZCk7XG4gICAgICAgICAgICB0aGlzLm1pbnV0ZXMucHVzaChpbmRleFRvQWRkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT09IFRpbWVGb3JtYXQuRGVmYXVsdCkge1xuICAgICAgICAgICAgdGhpcy5ob3VycyA9IFtOZW9UaW1lcGlja2VyQ29tcG9uZW50LnRvRml4ZWQoMCwgdGhpcy5GSVhfTlVNQkVSKSwgLi4udGhpcy5ob3Vyc107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTM7IGkgPCB0aGlzLkhPVVJTX01BWDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3Vycy5wdXNoKE5lb1RpbWVwaWNrZXJDb21wb25lbnQudG9GaXhlZChpLCB0aGlzLkZJWF9OVU1CRVIpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAxMzsgaSA8IHRoaXMuTUlOVVRFU19NQVg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5taW51dGVzLnB1c2goTmVvVGltZXBpY2tlckNvbXBvbmVudC50b0ZpeGVkKGksIHRoaXMuRklYX05VTUJFUikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVUaW1lUGlja2VyUG9zaXRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Qm94Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dEJveEJvdW5kcyA9IHRoaXMuaW5wdXRCb3gubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHRvcFBvc2l0aW9uID0gaW5wdXRCb3hCb3VuZHMudG9wIC0gdGhpcy5USU1FX09QVElPTl9IRUlHSFQgLSB0aGlzLk1BUkdJTjtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uID0gaW5wdXRCb3hCb3VuZHMudG9wICsgaW5wdXRCb3hCb3VuZHMuaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgdGltZVBpY2tlcldpZHRoID0gdGhpcy5mb3JtYXQgPT09IFRpbWVGb3JtYXQuTWVyaWRpYW4gPyB0aGlzLlRJTUVfUElDS0VSX01FUklESUFOX1dJRFRIOiB0aGlzLlRJTUVfUElDS0VSX0RFRkFVTFRfV0lEVEg7XG4gICAgICAgICAgICBjb25zdCBzaGlmdCA9ICh0aW1lUGlja2VyV2lkdGggLSBpbnB1dEJveEJvdW5kcy53aWR0aCkgLyAyO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wbGFjZW1lbnQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB0b3BQb3NpdGlvbiA8IDAgPyBib3R0b21Qb3NpdGlvbiA6IHRvcFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBpbnB1dEJveEJvdW5kcy5sZWZ0IC0gc2hpZnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBib3R0b21Qb3NpdGlvbiArIHRoaXMuVElNRV9PUFRJT05fSEVJR0hUICsgdGhpcy5NQVJHSU4gPiB3aW5kb3cuaW5uZXJIZWlnaHQgPyB0b3BQb3NpdGlvbiA6IGJvdHRvbVBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBpbnB1dEJveEJvdW5kcy5sZWZ0IC0gc2hpZnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjb252ZXJ0MTJUbzI0KHRpbWUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB0ZXJtcyA9IHRpbWUuc3BsaXQoJzonKTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IHRlcm1zWzFdLnN1YnN0cmluZygwLCAyKTtcbiAgICAgICAgY29uc3QgbWVyaWRpYW4gPSB0ZXJtc1sxXS50cmltKCkuc2xpY2UoLTIpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGxldCBob3VyID0gcGFyc2VJbnQodGVybXNbMF0pO1xuICAgICAgICBpZiAoIWlzTmFOKHBhcnNlSW50KHRlcm1zWzBdKSkpIHtcbiAgICAgICAgICAgIGlmIChtZXJpZGlhbiA9PT0gJ1BNJyAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyID0gaG91ciArIDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lcmlkaWFuID09PSAnQU0nICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke2hvdXJ9OiR7bWludXRlc31gO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNvbnZlcnQyNFRvMTIodGltZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRlcm1zID0gdGltZS5zcGxpdCgnOicpO1xuICAgICAgICBsZXQgbWVyaWRpYW4gPSAnQU0nO1xuICAgICAgICBsZXQgaG91ciA9IHBhcnNlSW50KHRlcm1zWzBdKTtcbiAgICAgICAgbGV0IG1pbnV0ZSA9IHBhcnNlSW50KHRlcm1zWzFdKTtcbiAgICAgICAgaWYgKCFpc05hTihwYXJzZUludCh0ZXJtc1swXSkpKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA+PSAxMikge1xuICAgICAgICAgICAgICAgIG1lcmlkaWFuID0gJ1BNJztcbiAgICAgICAgICAgICAgICBpZiAoaG91ciA+IDEyKSB7XG4gICAgICAgICAgICAgICAgICAgIGhvdXIgPSBob3VyIC0gMTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgICAgICAgICAgICBob3VyID0gMTI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaG91clN0ciA9IE5lb1RpbWVwaWNrZXJDb21wb25lbnQudG9GaXhlZChob3VyLCAxMCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZVN0ciA9IE5lb1RpbWVwaWNrZXJDb21wb25lbnQudG9GaXhlZChtaW51dGUsIDEwKTtcbiAgICAgICAgcmV0dXJuIGAke2hvdXJTdHJ9OiR7bWludXRlU3RyfSAke21lcmlkaWFufWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIDA4IGZvciA4LCAwNiBmb3IgNlxuICAgICAqIEBwYXJhbSBudW1cbiAgICAgKiBAcGFyYW0gZml4XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyB0b0ZpeGVkKG51bSwgZml4KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGZpeGVkTnVtOiBzdHJpbmcgPSBudW0udG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKG51bSA8IGZpeCkge1xuICAgICAgICAgICAgZml4ZWROdW0gPSBgMCR7Zml4ZWROdW19YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZml4ZWROdW07XG4gICAgfVxuXG59XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- export class NotificationComponent {
3
- constructor() {
4
- this.type = 'info';
5
- }
6
- }
7
- NotificationComponent.decorators = [
8
- { type: Component, args: [{
9
- selector: 'ap-notification',
10
- template: "<div\n class=\"main\"\n [ngClass]=\"{'warning': type === 'warning', 'error': type === 'error', 'success': type === 'success'}\">\n <span class=\"border\"></span>\n <span class=\"icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <ng-content select=\"[text]\"></ng-content>\n</div>\n",
11
- changeDetection: ChangeDetectionStrategy.OnPush,
12
- styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid red}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #fff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:#0000}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:initial}[border=transparent]{border:1px solid #0000}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}:host{display:block}.main{display:flex;font-size:14px;line-height:17px;align-items:center;background:#eff5fc;color:#178dfe;padding:8px 16px 8px 8px;border-radius:4px}.main .border{align-self:stretch;border:2px solid #178dfe;border-radius:4px}.main .border,.main .icon{margin-right:8px}.main.warning{background-color:#fffde9;color:#858fa1}.main.warning .border{border-color:#ffe91f}.main.error{background-color:#fde7e7;color:#e81313}.main.error .border{border-color:#e81313}.main.success{background-color:#ecf7ed;color:#45b854}.main.success .border{border-color:#45b854}.main.full-width{width:100%}"]
13
- },] }
14
- ];
15
- NotificationComponent.propDecorators = {
16
- type: [{ type: Input }]
17
- };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9zcmMvbGliL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUXhFLE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFRYSxTQUFJLEdBQXVDLE1BQU0sQ0FBQztJQUMvRCxDQUFDOzs7WUFUQSxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsOFVBQTRDO2dCQUU1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OzttQkFHSSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXAtbm90aWZpY2F0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25Db21wb25lbnQge1xuXG4gICAgQElucHV0KCkgdHlwZTogJ2luZm8nfCd3YXJuaW5nJ3wnZXJyb3InfCdzdWNjZXNzJyA9ICdpbmZvJztcbn1cbiJdfQ==
@@ -1,62 +0,0 @@
1
- import { Injectable, Injector } from '@angular/core';
2
- import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
3
- import { ComponentPortal, PortalInjector } from '@angular/cdk/portal';
4
- import { OVERLAY_DATA, OverlayDialogComponent, OverlayDialogRef } from './overlay-dialog.component';
5
- const DEFAULT_CONFIG = {
6
- hasBackdrop: true,
7
- backdropClass: 'dark-backdrop',
8
- panelClass: 'tm-file-preview-dialog-panel',
9
- template: null
10
- };
11
- export class OverlayDialogService {
12
- constructor(injector, overlay) {
13
- this.injector = injector;
14
- this.overlay = overlay;
15
- }
16
- open(config = {}) {
17
- const dialogConfig = Object.assign(Object.assign({}, DEFAULT_CONFIG), config);
18
- const overlayRef = this.createOverlay(dialogConfig);
19
- const dialogRef = new OverlayDialogRef(overlayRef);
20
- const overlayComponent = this.attachDialogContainer(overlayRef, dialogConfig, dialogRef);
21
- return dialogRef;
22
- }
23
- createOverlay(config) {
24
- const overlayConfig = this.getOverlayConfig(config);
25
- return this.overlay.create(overlayConfig);
26
- }
27
- attachDialogContainer(overlayRef, config, dialogRef) {
28
- const injector = this.createInjector(config, dialogRef);
29
- const containerPortal = new ComponentPortal(OverlayDialogComponent, null, injector);
30
- const containerRef = overlayRef.attach(containerPortal);
31
- return containerRef.instance;
32
- }
33
- createInjector(config, dialogRef) {
34
- const injectionTokens = new WeakMap();
35
- injectionTokens.set(OverlayDialogRef, dialogRef);
36
- injectionTokens.set(OVERLAY_DATA, config.template);
37
- return new PortalInjector(this.injector, injectionTokens);
38
- }
39
- getOverlayConfig(config) {
40
- const positionStrategy = this.overlay.position()
41
- .global()
42
- .centerHorizontally()
43
- .centerVertically();
44
- const overlayConfig = new OverlayConfig({
45
- hasBackdrop: config.hasBackdrop,
46
- backdropClass: config.backdropClass,
47
- panelClass: config.panelClass,
48
- scrollStrategy: this.overlay.scrollStrategies.block(),
49
- positionStrategy
50
- });
51
- return overlayConfig;
52
- }
53
- }
54
- OverlayDialogService.decorators = [
55
- { type: Injectable }
56
- ];
57
- /** @nocollapse */
58
- OverlayDialogService.ctorParameters = () => [
59
- { type: Injector },
60
- { type: Overlay }
61
- ];
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1kaWFsb2ctc2VydmljZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvc3JjL2xpYi9vdmVybGF5L292ZXJsYXktZGlhbG9nLXNlcnZpY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRSxPQUFPLEVBQ0gsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQVNwQyxNQUFNLGNBQWMsR0FBeUI7SUFDekMsV0FBVyxFQUFFLElBQUk7SUFDakIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsVUFBVSxFQUFFLDhCQUE4QjtJQUMxQyxRQUFRLEVBQUUsSUFBSTtDQUNqQixDQUFDO0FBR0YsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixZQUNZLFFBQWtCLEVBQ2xCLE9BQWdCO1FBRGhCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUFJLENBQUM7SUFFakMsSUFBSSxDQUFDLFNBQStCLEVBQUU7UUFDbEMsTUFBTSxZQUFZLG1DQUFRLGNBQWMsR0FBSyxNQUFNLENBQUUsQ0FBQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV6RixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQTRCO1FBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxVQUFzQixFQUFFLE1BQTRCLEVBQUUsU0FBMkI7UUFDM0csTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFeEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sWUFBWSxHQUF5QyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTlGLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQTRCLEVBQUUsU0FBMkI7UUFDNUUsTUFBTSxlQUFlLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV0QyxlQUFlLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRCxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQTRCO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7YUFDM0MsTUFBTSxFQUFFO2FBQ1Isa0JBQWtCLEVBQUU7YUFDcEIsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUNwQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7WUFDL0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ25DLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDckQsZ0JBQWdCO1NBQ25CLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7OztZQXRESixVQUFVOzs7O1lBdkJ1QixRQUFRO1lBQ2xDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbCwgUG9ydGFsSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBPVkVSTEFZX0RBVEEsXG4gICAgT3ZlcmxheURpYWxvZ0NvbXBvbmVudCxcbiAgICBPdmVybGF5RGlhbG9nUmVmXG59IGZyb20gJy4vb3ZlcmxheS1kaWFsb2cuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIE92ZXJsYXl3RGlhbG9nQ29uZmlnIHtcbiAgICBwYW5lbENsYXNzPzogc3RyaW5nO1xuICAgIGhhc0JhY2tkcm9wPzogYm9vbGVhbjtcbiAgICBiYWNrZHJvcENsYXNzPzogc3RyaW5nO1xuICAgIHRlbXBsYXRlPzogYW55O1xufVxuXG5jb25zdCBERUZBVUxUX0NPTkZJRzogT3ZlcmxheXdEaWFsb2dDb25maWcgPSB7XG4gICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgYmFja2Ryb3BDbGFzczogJ2RhcmstYmFja2Ryb3AnLFxuICAgIHBhbmVsQ2xhc3M6ICd0bS1maWxlLXByZXZpZXctZGlhbG9nLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZTogbnVsbFxufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlEaWFsb2dTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5KSB7IH1cblxuICAgIG9wZW4oY29uZmlnOiBPdmVybGF5d0RpYWxvZ0NvbmZpZyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZyB9O1xuICAgICAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KGRpYWxvZ0NvbmZpZyk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IG5ldyBPdmVybGF5RGlhbG9nUmVmKG92ZXJsYXlSZWYpO1xuICAgICAgICBjb25zdCBvdmVybGF5Q29tcG9uZW50ID0gdGhpcy5hdHRhY2hEaWFsb2dDb250YWluZXIob3ZlcmxheVJlZiwgZGlhbG9nQ29uZmlnLCBkaWFsb2dSZWYpO1xuXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KGNvbmZpZzogT3ZlcmxheXdEaWFsb2dDb25maWcpIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuZ2V0T3ZlcmxheUNvbmZpZyhjb25maWcpO1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGF0dGFjaERpYWxvZ0NvbnRhaW5lcihvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBjb25maWc6IE92ZXJsYXl3RGlhbG9nQ29uZmlnLCBkaWFsb2dSZWY6IE92ZXJsYXlEaWFsb2dSZWYpIHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUluamVjdG9yKGNvbmZpZywgZGlhbG9nUmVmKTtcblxuICAgICAgICBjb25zdCBjb250YWluZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKE92ZXJsYXlEaWFsb2dDb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8T3ZlcmxheURpYWxvZ0NvbXBvbmVudD4gPSBvdmVybGF5UmVmLmF0dGFjaChjb250YWluZXJQb3J0YWwpO1xuXG4gICAgICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVJbmplY3Rvcihjb25maWc6IE92ZXJsYXl3RGlhbG9nQ29uZmlnLCBkaWFsb2dSZWY6IE92ZXJsYXlEaWFsb2dSZWYpOiBQb3J0YWxJbmplY3RvciB7XG4gICAgICAgIGNvbnN0IGluamVjdGlvblRva2VucyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICAgICAgaW5qZWN0aW9uVG9rZW5zLnNldChPdmVybGF5RGlhbG9nUmVmLCBkaWFsb2dSZWYpO1xuICAgICAgICBpbmplY3Rpb25Ub2tlbnMuc2V0KE9WRVJMQVlfREFUQSwgY29uZmlnLnRlbXBsYXRlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFBvcnRhbEluamVjdG9yKHRoaXMuaW5qZWN0b3IsIGluamVjdGlvblRva2Vucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPdmVybGF5Q29uZmlnKGNvbmZpZzogT3ZlcmxheXdEaWFsb2dDb25maWcpOiBPdmVybGF5Q29uZmlnIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZ2xvYmFsKClcbiAgICAgICAgICAgIC5jZW50ZXJIb3Jpem9udGFsbHkoKVxuICAgICAgICAgICAgLmNlbnRlclZlcnRpY2FsbHkoKTtcblxuICAgICAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGNvbmZpZy5oYXNCYWNrZHJvcCxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IGNvbmZpZy5iYWNrZHJvcENsYXNzLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogY29uZmlnLnBhbmVsQ2xhc3MsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3lcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG92ZXJsYXlDb25maWc7XG4gICAgfVxufVxuIl19
@@ -1,33 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { InjectionToken } from '@angular/core';
3
- export class OverlayDialogRef {
4
- constructor(overlayRef) {
5
- this.overlayRef = overlayRef;
6
- }
7
- close() {
8
- this.overlayRef.dispose();
9
- }
10
- }
11
- export const OVERLAY_DATA = new InjectionToken('OVERLAY_DATA');
12
- export class OverlayDialogComponent {
13
- constructor(dialogRef, data) {
14
- this.dialogRef = dialogRef;
15
- this.data = data;
16
- }
17
- close() {
18
- this.dialogRef.close();
19
- }
20
- }
21
- OverlayDialogComponent.decorators = [
22
- { type: Component, args: [{
23
- selector: 'ap-overlay',
24
- template: "<div class=\"header-overlay\">\n <ap-symbol\n id=\"close\"\n color=\"#858fa1\"\n size=\"18\"\n (click)=\"close()\"\n class=\"\">\n\n </ap-symbol>\n</div>\n\n<div class=\"container-overlay\">\n <ng-container *ngTemplateOutlet=\"data\"></ng-container>\n</div>\n",
25
- styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid red}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #fff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:#0000}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:initial}[border=transparent]{border:1px solid #0000}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}:host{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;height:100vh}:host .header-overlay{width:100vw;flex-direction:row-reverse;display:flex;position:absolute;top:0;right:0;padding-right:48px;padding-top:48px}:host .header-overlay ap-symbol:hover{cursor:pointer}:host ::ng-deep img{max-height:325px}"]
26
- },] }
27
- ];
28
- /** @nocollapse */
29
- OverlayDialogComponent.ctorParameters = () => [
30
- { type: OverlayDialogRef },
31
- { type: undefined, decorators: [{ type: Inject, args: [OVERLAY_DATA,] }] }
32
- ];
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL3NyYy9saWIvb3ZlcmxheS9vdmVybGF5LWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFaEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU03QyxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDMUMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7Q0FDSjtBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBYyxjQUFjLENBQUMsQ0FBQztBQU81RSxNQUFNLE9BQU8sc0JBQXNCO0lBRS9CLFlBQ1csU0FBMkIsRUFDTCxJQUFTO1FBRC9CLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ0wsU0FBSSxHQUFKLElBQUksQ0FBSztJQUMxQyxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7O1lBZEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxZQUFZO2dCQUV0QiwyVEFBOEM7O2FBQ2pEOzs7O1lBSXlCLGdCQUFnQjs0Q0FDakMsTUFBTSxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T3ZlcmxheVJlZn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheURhdGEge1xuICAgIHRlbXBsYXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBPdmVybGF5RGlhbG9nUmVmIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZikge1xuICAgIH1cblxuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IE9WRVJMQVlfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPdmVybGF5RGF0YT4oJ09WRVJMQVlfREFUQScpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwLW92ZXJsYXknLFxuICAgIHN0eWxlVXJsczogWycuL292ZXJsYXktZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL292ZXJsYXktZGlhbG9nLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5RGlhbG9nQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBPdmVybGF5RGlhbG9nUmVmLFxuICAgICAgICBASW5qZWN0KE9WRVJMQVlfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiJdfQ==