@metadev/lux 0.18.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/esm2020/lib/autocomplete/autocomplete.component.mjs +479 -0
  2. package/esm2020/lib/autocomplete-list/autocomplete-list.component.mjs +254 -0
  3. package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +75 -0
  4. package/esm2020/lib/checkbox/checkbox.component.mjs +154 -0
  5. package/{esm2015/lib/datasource.js → esm2020/lib/datasource.mjs} +0 -0
  6. package/esm2020/lib/datetime/datetime.component.mjs +306 -0
  7. package/esm2020/lib/filter/filter.component.mjs +152 -0
  8. package/esm2020/lib/geolocation/geolocation.component.mjs +407 -0
  9. package/{esm2015/lib/geolocation/geolocation.service.js → esm2020/lib/geolocation/geolocation.service.mjs} +7 -11
  10. package/esm2020/lib/geolocation/openlayer-loader.service.mjs +62 -0
  11. package/{esm2015/lib/helperFns.js → esm2020/lib/helperFns.mjs} +0 -0
  12. package/esm2020/lib/input/input.component.mjs +452 -0
  13. package/{esm2015/lib/input/regexp.service.js → esm2020/lib/input/regexp.service.mjs} +7 -6
  14. package/{esm2015/lib/lang.js → esm2020/lib/lang.mjs} +0 -0
  15. package/esm2020/lib/lux.module.mjs +130 -0
  16. package/{esm2015/lib/map/geopoint.js → esm2020/lib/map/geopoint.mjs} +0 -0
  17. package/esm2020/lib/map/map.component.mjs +265 -0
  18. package/esm2020/lib/modal/modal-backdrop.mjs +26 -0
  19. package/esm2020/lib/modal/modal-config.mjs +14 -0
  20. package/{esm2015/lib/modal/modal-dismiss-reasons.js → esm2020/lib/modal/modal-dismiss-reasons.mjs} +0 -0
  21. package/{esm2015/lib/modal/modal-ref.js → esm2020/lib/modal/modal-ref.mjs} +0 -0
  22. package/esm2020/lib/modal/modal-stack.mjs +179 -0
  23. package/esm2020/lib/modal/modal-window.mjs +119 -0
  24. package/esm2020/lib/modal/modal.service.mjs +26 -0
  25. package/{esm2015/lib/modal/util.js → esm2020/lib/modal/util.mjs} +0 -0
  26. package/esm2020/lib/pagination/pagination.component.mjs +137 -0
  27. package/{esm2015/lib/pagination/pagination.js → esm2020/lib/pagination/pagination.mjs} +0 -0
  28. package/esm2020/lib/radiogroup/radiogroup.component.mjs +130 -0
  29. package/esm2020/lib/select/select.component.mjs +149 -0
  30. package/{esm2015/lib/tooltip/placement.js → esm2020/lib/tooltip/placement.mjs} +0 -0
  31. package/{esm2015/lib/tooltip/tooltip-context.js → esm2020/lib/tooltip/tooltip-context.mjs} +0 -0
  32. package/esm2020/lib/tooltip/tooltip.component.mjs +23 -0
  33. package/esm2020/lib/tooltip/tooltip.directive.mjs +60 -0
  34. package/{esm2015/lib/tooltip/tooltip.service.js → esm2020/lib/tooltip/tooltip.service.mjs} +7 -9
  35. package/{esm2015/lib/tooltip/tooltop-content.js → esm2020/lib/tooltip/tooltop-content.mjs} +0 -0
  36. package/esm2020/lib/voice-recognition/voice-recognition.directive.mjs +73 -0
  37. package/{esm2015/lib/window/window.service.js → esm2020/lib/window/window.service.mjs} +0 -0
  38. package/esm2020/metadev-lux.mjs +5 -0
  39. package/esm2020/public-api.mjs +21 -0
  40. package/fesm2015/metadev-lux.mjs +4345 -0
  41. package/fesm2015/metadev-lux.mjs.map +1 -0
  42. package/fesm2020/metadev-lux.mjs +4343 -0
  43. package/fesm2020/metadev-lux.mjs.map +1 -0
  44. package/lib/autocomplete/autocomplete.component.d.ts +3 -0
  45. package/lib/autocomplete-list/autocomplete-list.component.d.ts +3 -0
  46. package/lib/breadcrumb/breadcrumb.component.d.ts +3 -0
  47. package/lib/checkbox/checkbox.component.d.ts +3 -0
  48. package/lib/datetime/datetime.component.d.ts +4 -0
  49. package/lib/filter/filter.component.d.ts +3 -0
  50. package/lib/geolocation/geolocation.component.d.ts +4 -0
  51. package/lib/geolocation/geolocation.service.d.ts +3 -0
  52. package/lib/geolocation/openlayer-loader.service.d.ts +3 -0
  53. package/lib/input/input.component.d.ts +3 -0
  54. package/lib/input/regexp.service.d.ts +3 -0
  55. package/lib/lux.module.d.ts +26 -0
  56. package/lib/map/map.component.d.ts +3 -0
  57. package/lib/modal/modal-backdrop.d.ts +3 -0
  58. package/lib/modal/modal-config.d.ts +3 -0
  59. package/lib/modal/modal-stack.d.ts +3 -0
  60. package/lib/modal/modal-window.d.ts +3 -0
  61. package/lib/modal/modal.service.d.ts +3 -0
  62. package/lib/pagination/pagination.component.d.ts +3 -0
  63. package/lib/radiogroup/radiogroup.component.d.ts +3 -0
  64. package/lib/select/select.component.d.ts +3 -0
  65. package/lib/tooltip/tooltip.component.d.ts +3 -0
  66. package/lib/tooltip/tooltip.directive.d.ts +3 -0
  67. package/lib/tooltip/tooltip.service.d.ts +3 -0
  68. package/lib/voice-recognition/voice-recognition.directive.d.ts +3 -0
  69. package/metadev-lux.d.ts +1 -16
  70. package/package.json +23 -11
  71. package/public-api.d.ts +12 -7
  72. package/bundles/metadev-lux.umd.js +0 -4715
  73. package/bundles/metadev-lux.umd.js.map +0 -1
  74. package/esm2015/lib/autocomplete/autocomplete.component.js +0 -455
  75. package/esm2015/lib/autocomplete-list/autocomplete-list.component.js +0 -230
  76. package/esm2015/lib/breadcrumb/breadcrumb.component.js +0 -77
  77. package/esm2015/lib/checkbox/checkbox.component.js +0 -142
  78. package/esm2015/lib/datetime/datetime.component.js +0 -275
  79. package/esm2015/lib/filter/filter.component.js +0 -140
  80. package/esm2015/lib/geolocation/geolocation.component.js +0 -371
  81. package/esm2015/lib/geolocation/openlayer-loader.service.js +0 -63
  82. package/esm2015/lib/input/input.component.js +0 -419
  83. package/esm2015/lib/lux.module.js +0 -83
  84. package/esm2015/lib/map/map.component.js +0 -261
  85. package/esm2015/lib/modal/modal-backdrop.js +0 -19
  86. package/esm2015/lib/modal/modal-config.js +0 -12
  87. package/esm2015/lib/modal/modal-stack.js +0 -182
  88. package/esm2015/lib/modal/modal-window.js +0 -92
  89. package/esm2015/lib/modal/modal.service.js +0 -28
  90. package/esm2015/lib/pagination/pagination.component.js +0 -134
  91. package/esm2015/lib/radiogroup/radiogroup.component.js +0 -114
  92. package/esm2015/lib/select/select.component.js +0 -131
  93. package/esm2015/lib/tooltip/tooltip.component.js +0 -19
  94. package/esm2015/lib/tooltip/tooltip.directive.js +0 -52
  95. package/esm2015/lib/voice-recognition/voice-recognition.directive.js +0 -76
  96. package/esm2015/metadev-lux.js +0 -21
  97. package/esm2015/public-api.js +0 -16
  98. package/fesm2015/metadev-lux.js +0 -4089
  99. package/fesm2015/metadev-lux.js.map +0 -1
  100. package/metadev-lux.metadata.json +0 -1
@@ -1,275 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, forwardRef } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
3
- import { addTimezoneOffset, hasValue, isInitialAndEmpty, isValidDate } from '../helperFns';
4
- import { languageDetector } from '../lang';
5
- export class DatetimeComponent {
6
- constructor() {
7
- this.touched = false;
8
- this.dirty = false;
9
- this.lastErrors = null;
10
- this.dateValue = undefined;
11
- this.timeValue = undefined;
12
- this.userErrors = {
13
- en: {
14
- required: 'Required field.',
15
- min: 'Minimum value is $min.',
16
- max: 'Maximum value is $max.'
17
- },
18
- es: {
19
- required: 'El campo es obligatorio.',
20
- min: 'El valor mínimo es $min.',
21
- max: 'El valor máximo es $max.'
22
- }
23
- };
24
- this.min = '1900-01-01T00:00:00Z';
25
- this.max = '2100-01-01T00:00:00Z';
26
- this.includeSeconds = true;
27
- this.localTime = true;
28
- this.lang = languageDetector();
29
- this.inlineErrors = false;
30
- this.readonly = null;
31
- this.valueChange = new EventEmitter();
32
- this.keyPress = new EventEmitter();
33
- this.onChange = (_value) => { };
34
- this.onTouched = () => { };
35
- }
36
- get className() {
37
- return this.checkClassName();
38
- }
39
- set disabled(v) {
40
- v = typeof v === 'string' && v !== 'false' ? true : v;
41
- this._disabled = v;
42
- }
43
- get disabled() {
44
- return this._disabled;
45
- }
46
- set required(v) {
47
- this._required = v;
48
- }
49
- get required() {
50
- return this._required;
51
- }
52
- set value(v) {
53
- if (v === this._value) {
54
- return; // prevent events when there is no changes
55
- }
56
- const initialAndEmpty = isInitialAndEmpty(this._value, v);
57
- const datetime = new Date(v);
58
- if (!v) {
59
- this._value = null;
60
- this.setDateInControl(null);
61
- this.setTimeInControl(null);
62
- }
63
- else if (!isValidDate(datetime)) {
64
- this._value = v;
65
- // we don't set value in control if the value is not valid
66
- // if we do, the content of the control changes and can erase what the user is typing
67
- }
68
- else {
69
- this._value = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
70
- this.setValueInControl(datetime);
71
- }
72
- this.onChange(v);
73
- if (!initialAndEmpty) {
74
- this.valueChange.emit(v);
75
- }
76
- }
77
- get value() {
78
- return this._value;
79
- }
80
- // ControlValueAccessor Interface implementation
81
- writeValue(value) {
82
- this.value = value;
83
- }
84
- registerOnChange(onChange) {
85
- this.onChange = onChange;
86
- }
87
- registerOnTouched(onTouched) {
88
- this.onTouched = onTouched;
89
- }
90
- markAsTouched() {
91
- if (!this.touched) {
92
- this.onTouched();
93
- this.touched = true;
94
- }
95
- }
96
- setDisabledState(disabled) {
97
- this.disabled = disabled;
98
- }
99
- // End of ControlValueAccessor Interface implementation
100
- setDateInControl(date) {
101
- // this.dateInput.nativeElement.value = date;
102
- this.dateValue = date;
103
- }
104
- setTimeInControl(time) {
105
- // this.timeInput.nativeElement.value = time;
106
- this.timeValue = time;
107
- }
108
- setValueInControl(datetime) {
109
- const offsetDatetime = this.localTime
110
- ? addTimezoneOffset(datetime)
111
- : datetime;
112
- const offsetDatetimeString = offsetDatetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
113
- this.setDateInControl(offsetDatetimeString.slice(0, 10)); // YYYY-MM-DD
114
- if (this.includeSeconds) {
115
- this.setTimeInControl(offsetDatetimeString.slice(11, 19)); // hh:mm:ss
116
- }
117
- else {
118
- this.setTimeInControl(offsetDatetimeString.slice(11, 16)); // hh:mm
119
- }
120
- }
121
- clear() {
122
- this.setDateInControl(null);
123
- this.setTimeInControl(null);
124
- this.value = null;
125
- }
126
- // Validator interface
127
- registerOnValidatorChange() { }
128
- validate(control) {
129
- const value = control.value;
130
- let result = null;
131
- if (this.required &&
132
- !hasValue(value) &&
133
- !hasValue(this.dateValue) &&
134
- !hasValue(this.timeValue)) {
135
- result = result || {};
136
- result.required = { value, reason: 'Required field.' };
137
- }
138
- if (!hasValue(this.dateValue) && hasValue(this.timeValue)) {
139
- result = result || {};
140
- result.existsDate = {
141
- value,
142
- reason: 'Date not specified.'
143
- };
144
- }
145
- if (hasValue(this.dateValue) && !hasValue(this.timeValue)) {
146
- result = result || {};
147
- result.existsTime = {
148
- value,
149
- reason: 'Time not specified.'
150
- };
151
- }
152
- if (hasValue(this.min) &&
153
- hasValue(value) &&
154
- hasValue(this.dateValue) &&
155
- hasValue(this.timeValue) &&
156
- String(value).localeCompare(this.min) === -1) {
157
- result = result || {};
158
- result.min = {
159
- value,
160
- min: this.min,
161
- reason: `Value is lower than minimum value: ${this.min}.`
162
- };
163
- }
164
- if (hasValue(this.max) &&
165
- hasValue(value) &&
166
- hasValue(this.dateValue) &&
167
- hasValue(this.timeValue) &&
168
- String(value).localeCompare(this.max) !== -1) {
169
- result = result || {};
170
- result.max = {
171
- value,
172
- max: this.max,
173
- reason: `Value is greater than than maximum value: ${this.max}.`
174
- };
175
- }
176
- this.lastErrors = result;
177
- return result;
178
- }
179
- // End of Validator interface
180
- ngOnInit() {
181
- this.inputId = this.inputId
182
- ? this.inputId
183
- : `datetime$${DatetimeComponent.idCounter++}`;
184
- this.setPatterns();
185
- }
186
- onLostFocus() {
187
- this.markAsTouched();
188
- }
189
- onKeyPress(event) {
190
- this.keyPress.emit(event);
191
- }
192
- onEventDatetime(newDate, newTime) {
193
- if (this.disabled || this.readonly) {
194
- return;
195
- }
196
- const newValue = '' + newDate + ' ' + newTime;
197
- if (!newValue) {
198
- this.value = null;
199
- }
200
- else {
201
- const datetime = new Date(newValue);
202
- if (isValidDate(datetime)) {
203
- let datetimeString;
204
- if (this.localTime) {
205
- datetimeString = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
206
- }
207
- else {
208
- datetimeString = addTimezoneOffset(datetime).toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
209
- }
210
- if (this.includeSeconds) {
211
- this.value = datetimeString.slice(0, 19) + 'Z'; // YYYY-MM-DDThh:mm:ssZ
212
- }
213
- else {
214
- this.value = datetimeString.slice(0, 16) + 'Z'; // YYYY-MM-DDThh:mmZ
215
- }
216
- }
217
- else {
218
- this.value = newValue;
219
- }
220
- }
221
- }
222
- checkClassName() {
223
- return this.disabled
224
- ? this.readonly
225
- ? 'disabled readonly'
226
- : 'disabled'
227
- : this.readonly
228
- ? 'readonly'
229
- : '';
230
- }
231
- setPatterns() {
232
- this.min = this.min || '1900-01-01';
233
- this.max = this.max || '2100-01-01';
234
- }
235
- }
236
- DatetimeComponent.idCounter = 0;
237
- DatetimeComponent.decorators = [
238
- { type: Component, args: [{
239
- selector: 'lux-datetime',
240
- template: "<input\n #dateInput\n class=\"rounded-left prefix\"\n [ngClass]=\"className\"\n type=\"date\"\n [id]=\"inputId + '$date'\"\n [(ngModel)]=\"dateValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [placeholder]=\"\"\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<input\n #timeInput\n [class]=\"(disabled || readonly) && localTime ? 'rounded-right' : ''\"\n [ngClass]=\"className\"\n type=\"time\"\n [id]=\"inputId + '$time'\"\n [(ngModel)]=\"timeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [placeholder]=\"\"\n [step]=\"includeSeconds ? 1 : 60\"\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<ng-container\n *ngIf=\"!localTime\"\n>\n <div\n [class]=\"disabled || readonly ? 'rounded-right postfix symbol' : 'postfix symbol'\"\n [ngClass]=\"className\"\n >\n <span>{{ localTime ? '' : 'UTC' }}</span>\n </div>\n</ng-container>\n<button\n #clearButton\n *ngIf=\"!(disabled || readonly)\"\n type=\"button\"\n class=\"rounded-right postfix bordered icon-clear\"\n [id]=\"inputId + '$clear'\"\n (click)=\"clear()\"\n aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[lang].required }}\n </div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
241
- providers: [
242
- {
243
- provide: NG_VALUE_ACCESSOR,
244
- multi: true,
245
- useExisting: forwardRef(() => DatetimeComponent)
246
- },
247
- {
248
- provide: NG_VALIDATORS,
249
- multi: true,
250
- useExisting: forwardRef(() => DatetimeComponent)
251
- }
252
- ],
253
- styles: [":focus{z-index:1}input,select,textarea{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:0;margin:var(--lux-input-margin, 0rem);padding:0 .5rem;padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:#fe2e2e;background:var(--lux-alert-background, #fe2e2e);color:#fff;color:var(--lux-alert-color, white);font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:baseline;padding:0 .5rem;margin-bottom:0;font-weight:400;color:default;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:default;background:var(--lux-symbol-background, default);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;border-radius:var(--lux-border-radius, .25rem)}.rounded-left{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-middle{border-radius:0}.rounded-right{border-top-left-radius:0;border-bottom-left-radius:0}.prefix{border-right:none}.infix{border-left:none;border-right:none}.postfix{border-left:none;display:flex;align-items:center}:host{display:flex;align-items:stretch}.readonly{border:none}.readonly:focus{border:none;outline:none}.disabled{background-color:#f1f1f1;background-color:var(--lux-disabled-color, #f1f1f1);border-color:#6d6d6d;border-color:var(--lux-disabled-border-color, #6d6d6d)}.icon-clear{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}\n"]
254
- },] }
255
- ];
256
- DatetimeComponent.ctorParameters = () => [];
257
- DatetimeComponent.propDecorators = {
258
- dateInput: [{ type: ViewChild, args: ['dateInput', { static: true },] }],
259
- timeInput: [{ type: ViewChild, args: ['timeInput', { static: true },] }],
260
- min: [{ type: Input }],
261
- max: [{ type: Input }],
262
- includeSeconds: [{ type: Input }],
263
- localTime: [{ type: Input }],
264
- lang: [{ type: Input }],
265
- inlineErrors: [{ type: Input }],
266
- inputId: [{ type: Input }],
267
- ariaLabel: [{ type: Input, args: ['aria-label',] }],
268
- readonly: [{ type: Input }],
269
- disabled: [{ type: Input }],
270
- required: [{ type: Input }],
271
- value: [{ type: Input }],
272
- valueChange: [{ type: Output }],
273
- keyPress: [{ type: Output }]
274
- };
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZGF0ZXRpbWUvZGF0ZXRpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGlCQUFpQixFQUtqQixhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsV0FBVyxFQUNaLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWtCM0MsTUFBTSxPQUFPLGlCQUFpQjtJQXNHNUI7UUE5RkEsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsZUFBVSxHQUE0QixJQUFJLENBQUM7UUFNcEMsY0FBUyxHQUFZLFNBQVMsQ0FBQztRQUMvQixjQUFTLEdBQVksU0FBUyxDQUFDO1FBRS9CLGVBQVUsR0FBRztZQUNsQixFQUFFLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsR0FBRyxFQUFFLHdCQUF3QjtnQkFDN0IsR0FBRyxFQUFFLHdCQUF3QjthQUM5QjtZQUNELEVBQUUsRUFBRTtnQkFDRixRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxHQUFHLEVBQUUsMEJBQTBCO2dCQUMvQixHQUFHLEVBQUUsMEJBQTBCO2FBQ2hDO1NBQ0YsQ0FBQztRQUdLLFFBQUcsR0FBWSxzQkFBc0IsQ0FBQztRQUV0QyxRQUFHLEdBQVksc0JBQXNCLENBQUM7UUFFdEMsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFFL0Is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MkJBQ0wsS0FBSztzQkFDTCxLQUFLO3dCQUNMLEtBQUssU0FBQyxZQUFZO3VCQUNsQixLQUFLO3VCQUVMLEtBQUs7dUJBU0wsS0FBSztvQkFRTCxLQUFLOzBCQTRCTCxNQUFNO3VCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEFic3RyYWN0Q29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxuICBOR19WQUxJREFUT1JTXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIGFkZFRpbWV6b25lT2Zmc2V0LFxuICBoYXNWYWx1ZSxcbiAgaXNJbml0aWFsQW5kRW1wdHksXG4gIGlzVmFsaWREYXRlXG59IGZyb20gJy4uL2hlbHBlckZucyc7XG5pbXBvcnQgeyBsYW5ndWFnZURldGVjdG9yIH0gZnJvbSAnLi4vbGFuZyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsdXgtZGF0ZXRpbWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXRpbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRldGltZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZXRpbWVDb21wb25lbnQpXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRldGltZUNvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3JcbntcbiAgc3RhdGljIGlkQ291bnRlciA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnZGF0ZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgZGF0ZUlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0aW1lSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0aW1lSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgdG91Y2hlZCA9IGZhbHNlO1xuICBkaXJ0eSA9IGZhbHNlO1xuICBsYXN0RXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IHN0cmluZyB8IGJvb2xlYW47XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuO1xuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBkYXRlVmFsdWU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG4gIHB1YmxpYyB0aW1lVmFsdWU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHVzZXJFcnJvcnMgPSB7XG4gICAgZW46IHtcbiAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQgZmllbGQuJyxcbiAgICAgIG1pbjogJ01pbmltdW0gdmFsdWUgaXMgJG1pbi4nLFxuICAgICAgbWF4OiAnTWF4aW11bSB2YWx1ZSBpcyAkbWF4LidcbiAgICB9LFxuICAgIGVzOiB7XG4gICAgICByZXF1aXJlZDogJ0VsIGNhbXBvIGVzIG9ibGlnYXRvcmlvLicsXG4gICAgICBtaW46ICdFbCB2YWxvciBtw61uaW1vIGVzICRtaW4uJyxcbiAgICAgIG1heDogJ0VsIHZhbG9yIG3DoXhpbW8gZXMgJG1heC4nXG4gICAgfVxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW4/OiBzdHJpbmcgPSAnMTkwMC0wMS0wMVQwMDowMDowMFonO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4Pzogc3RyaW5nID0gJzIxMDAtMDEtMDFUMDA6MDA6MDBaJztcbiAgQElucHV0KClcbiAgcHVibGljIGluY2x1ZGVTZWNvbmRzOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGxvY2FsVGltZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgZ2V0IGNsYXNzTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNoZWNrQ2xhc3NOYW1lKCk7XG4gIH1cblxuICBASW5wdXQoKSBsYW5nID0gbGFuZ3VhZ2VEZXRlY3RvcigpO1xuICBASW5wdXQoKSBwdWJsaWMgaW5saW5lRXJyb3JzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbnB1dElkOiBzdHJpbmc7XG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5OiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHY6IHN0cmluZyB8IGJvb2xlYW4pIHtcbiAgICB2ID0gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYgIT09ICdmYWxzZScgPyB0cnVlIDogdjtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHY7XG4gIH1cbiAgZ2V0IGRpc2FibGVkKCk6IHN0cmluZyB8IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCByZXF1aXJlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2O1xuICB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogc3RyaW5nKSB7XG4gICAgaWYgKHYgPT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICByZXR1cm47IC8vIHByZXZlbnQgZXZlbnRzIHdoZW4gdGhlcmUgaXMgbm8gY2hhbmdlc1xuICAgIH1cbiAgICBjb25zdCBpbml0aWFsQW5kRW1wdHkgPSBpc0luaXRpYWxBbmRFbXB0eSh0aGlzLl92YWx1ZSwgdik7XG4gICAgY29uc3QgZGF0ZXRpbWUgPSBuZXcgRGF0ZSh2KTtcbiAgICBpZiAoIXYpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuc2V0RGF0ZUluQ29udHJvbChudWxsKTtcbiAgICAgIHRoaXMuc2V0VGltZUluQ29udHJvbChudWxsKTtcbiAgICB9IGVsc2UgaWYgKCFpc1ZhbGlkRGF0ZShkYXRldGltZSkpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIC8vIHdlIGRvbid0IHNldCB2YWx1ZSBpbiBjb250cm9sIGlmIHRoZSB2YWx1ZSBpcyBub3QgdmFsaWRcbiAgICAgIC8vIGlmIHdlIGRvLCB0aGUgY29udGVudCBvZiB0aGUgY29udHJvbCBjaGFuZ2VzIGFuZCBjYW4gZXJhc2Ugd2hhdCB0aGUgdXNlciBpcyB0eXBpbmdcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmFsdWUgPSBkYXRldGltZS50b0lTT1N0cmluZygpOyAvLyBZWVlZLU1NLUREVGhoOm1tOnNzLlNTU1pcbiAgICAgIHRoaXMuc2V0VmFsdWVJbkNvbnRyb2woZGF0ZXRpbWUpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHYpO1xuICAgIGlmICghaW5pdGlhbEFuZEVtcHR5KSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgfVxuICB9XG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkga2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgb25DaGFuZ2UgPSAoX3ZhbHVlKTogdm9pZCA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgbWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuICAvLyBFbmQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG5cbiAgcHJpdmF0ZSBzZXREYXRlSW5Db250cm9sKGRhdGU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIHRoaXMuZGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBkYXRlO1xuICAgIHRoaXMuZGF0ZVZhbHVlID0gZGF0ZTtcbiAgfVxuICBwcml2YXRlIHNldFRpbWVJbkNvbnRyb2wodGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gdGhpcy50aW1lSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRpbWU7XG4gICAgdGhpcy50aW1lVmFsdWUgPSB0aW1lO1xuICB9XG4gIHByaXZhdGUgc2V0VmFsdWVJbkNvbnRyb2woZGF0ZXRpbWU6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBvZmZzZXREYXRldGltZSA9IHRoaXMubG9jYWxUaW1lXG4gICAgICA/IGFkZFRpbWV6b25lT2Zmc2V0KGRhdGV0aW1lKVxuICAgICAgOiBkYXRldGltZTtcbiAgICBjb25zdCBvZmZzZXREYXRldGltZVN0cmluZyA9IG9mZnNldERhdGV0aW1lLnRvSVNPU3RyaW5nKCk7IC8vIFlZWVktTU0tRERUaGg6bW06c3MuU1NTWlxuICAgIHRoaXMuc2V0RGF0ZUluQ29udHJvbChvZmZzZXREYXRldGltZVN0cmluZy5zbGljZSgwLCAxMCkpOyAvLyBZWVlZLU1NLUREXG4gICAgaWYgKHRoaXMuaW5jbHVkZVNlY29uZHMpIHtcbiAgICAgIHRoaXMuc2V0VGltZUluQ29udHJvbChvZmZzZXREYXRldGltZVN0cmluZy5zbGljZSgxMSwgMTkpKTsgLy8gaGg6bW06c3NcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRUaW1lSW5Db250cm9sKG9mZnNldERhdGV0aW1lU3RyaW5nLnNsaWNlKDExLCAxNikpOyAvLyBoaDptbVxuICAgIH1cbiAgfVxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGVJbkNvbnRyb2wobnVsbCk7XG4gICAgdGhpcy5zZXRUaW1lSW5Db250cm9sKG51bGwpO1xuICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICB9XG5cbiAgLy8gVmFsaWRhdG9yIGludGVyZmFjZVxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKCk6IHZvaWQge31cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGxldCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVxdWlyZWQgJiZcbiAgICAgICFoYXNWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgICFoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiZcbiAgICAgICFoYXNWYWx1ZSh0aGlzLnRpbWVWYWx1ZSlcbiAgICApIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5yZXF1aXJlZCA9IHsgdmFsdWUsIHJlYXNvbjogJ1JlcXVpcmVkIGZpZWxkLicgfTtcbiAgICB9XG4gICAgaWYgKCFoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiYgaGFzVmFsdWUodGhpcy50aW1lVmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQuZXhpc3RzRGF0ZSA9IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHJlYXNvbjogJ0RhdGUgbm90IHNwZWNpZmllZC4nXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoaGFzVmFsdWUodGhpcy5kYXRlVmFsdWUpICYmICFoYXNWYWx1ZSh0aGlzLnRpbWVWYWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5leGlzdHNUaW1lID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcmVhc29uOiAnVGltZSBub3Qgc3BlY2lmaWVkLidcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGhhc1ZhbHVlKHRoaXMubWluKSAmJlxuICAgICAgaGFzVmFsdWUodmFsdWUpICYmXG4gICAgICBoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiZcbiAgICAgIGhhc1ZhbHVlKHRoaXMudGltZVZhbHVlKSAmJlxuICAgICAgU3RyaW5nKHZhbHVlKS5sb2NhbGVDb21wYXJlKHRoaXMubWluKSA9PT0gLTFcbiAgICApIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5taW4gPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtaW46IHRoaXMubWluLFxuICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBsb3dlciB0aGFuIG1pbmltdW0gdmFsdWU6ICR7dGhpcy5taW59LmBcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGhhc1ZhbHVlKHRoaXMubWF4KSAmJlxuICAgICAgaGFzVmFsdWUodmFsdWUpICYmXG4gICAgICBoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiZcbiAgICAgIGhhc1ZhbHVlKHRoaXMudGltZVZhbHVlKSAmJlxuICAgICAgU3RyaW5nKHZhbHVlKS5sb2NhbGVDb21wYXJlKHRoaXMubWF4KSAhPT0gLTFcbiAgICApIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5tYXggPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtYXg6IHRoaXMubWF4LFxuICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhhbiBtYXhpbXVtIHZhbHVlOiAke3RoaXMubWF4fS5gXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmxhc3RFcnJvcnMgPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvLyBFbmQgb2YgVmFsaWRhdG9yIGludGVyZmFjZVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuaW5wdXRJZFxuICAgICAgPyB0aGlzLmlucHV0SWRcbiAgICAgIDogYGRhdGV0aW1lJCR7RGF0ZXRpbWVDb21wb25lbnQuaWRDb3VudGVyKyt9YDtcbiAgICB0aGlzLnNldFBhdHRlcm5zKCk7XG4gIH1cblxuICBvbkxvc3RGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5rZXlQcmVzcy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRXZlbnREYXRldGltZShuZXdEYXRlOiBzdHJpbmcsIG5ld1RpbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3VmFsdWUgPSAnJyArIG5ld0RhdGUgKyAnICcgKyBuZXdUaW1lO1xuICAgIGlmICghbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXRldGltZSA9IG5ldyBEYXRlKG5ld1ZhbHVlKTtcbiAgICAgIGlmIChpc1ZhbGlkRGF0ZShkYXRldGltZSkpIHtcbiAgICAgICAgbGV0IGRhdGV0aW1lU3RyaW5nO1xuICAgICAgICBpZiAodGhpcy5sb2NhbFRpbWUpIHtcbiAgICAgICAgICBkYXRldGltZVN0cmluZyA9IGRhdGV0aW1lLnRvSVNPU3RyaW5nKCk7IC8vIFlZWVktTU0tRERUaGg6bW06c3MuU1NTWlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGV0aW1lU3RyaW5nID0gYWRkVGltZXpvbmVPZmZzZXQoZGF0ZXRpbWUpLnRvSVNPU3RyaW5nKCk7IC8vIFlZWVktTU0tRERUaGg6bW06c3MuU1NTWlxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluY2x1ZGVTZWNvbmRzKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGV0aW1lU3RyaW5nLnNsaWNlKDAsIDE5KSArICdaJzsgLy8gWVlZWS1NTS1ERFRoaDptbTpzc1pcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZXRpbWVTdHJpbmcuc2xpY2UoMCwgMTYpICsgJ1onOyAvLyBZWVlZLU1NLUREVGhoOm1tWlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hlY2tDbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFxuICAgICAgPyB0aGlzLnJlYWRvbmx5XG4gICAgICAgID8gJ2Rpc2FibGVkIHJlYWRvbmx5J1xuICAgICAgICA6ICdkaXNhYmxlZCdcbiAgICAgIDogdGhpcy5yZWFkb25seVxuICAgICAgPyAncmVhZG9ubHknXG4gICAgICA6ICcnO1xuICB9XG5cbiAgc2V0UGF0dGVybnMoKTogdm9pZCB7XG4gICAgdGhpcy5taW4gPSB0aGlzLm1pbiB8fCAnMTkwMC0wMS0wMSc7XG4gICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCAnMjEwMC0wMS0wMSc7XG4gIH1cbn1cbiJdfQ==
@@ -1,140 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { Subject } from 'rxjs';
4
- import { debounceTime } from 'rxjs/operators';
5
- /** Filter component to query for objects. */
6
- export class FilterComponent {
7
- constructor() {
8
- this.touched = false;
9
- this._searchValue = '';
10
- this.disabled = false;
11
- /** Placeholder default text. */
12
- this.placeholder = '';
13
- /** Search on type: (default true) Auto-search when user types in. */
14
- this.searchOnType = true;
15
- this.debounceValue = 300; // 300 ms
16
- /** Search value changed by user. */
17
- this.searchValueChange = new EventEmitter();
18
- this.subject = new Subject();
19
- // ControlValueAccessor Interface
20
- this.onChange = (value) => { };
21
- this.onTouched = () => { };
22
- this.recreateObservable();
23
- }
24
- /** Search value introduced by the user. */
25
- get searchValue() {
26
- return this._searchValue;
27
- }
28
- set searchValue(v) {
29
- v = (v || '').toString();
30
- if (v === this._searchValue) {
31
- return;
32
- }
33
- this.onChange(v);
34
- this._searchValue = v;
35
- }
36
- /** Debounce time in milliseconds. (defaults to 300 ms) */
37
- set debounce(val) {
38
- this.debounceValue = val;
39
- this.recreateObservable();
40
- }
41
- get debounce() {
42
- return this.debounceValue;
43
- }
44
- writeValue(value) {
45
- this.searchValue = (value || '').toString();
46
- }
47
- registerOnChange(onChange) {
48
- this.onChange = onChange;
49
- }
50
- registerOnTouched(onTouched) {
51
- this.onTouched = onTouched;
52
- }
53
- markAsTouched() {
54
- if (!this.touched) {
55
- this.onTouched();
56
- this.touched = true;
57
- }
58
- }
59
- setDisabledState(disabled) {
60
- this.disabled = disabled;
61
- }
62
- // End ControlValueAccessor Interface
63
- ngOnInit() {
64
- this.inputId = this.inputId
65
- ? this.inputId
66
- : `filter$${FilterComponent.idCounter++}`;
67
- }
68
- ngOnDestroy() {
69
- this.freeSubscriptions();
70
- }
71
- clear() {
72
- this.searchValue = '';
73
- this.search();
74
- }
75
- search() {
76
- this.searchValueChange.emit(this.searchValue);
77
- }
78
- keyup(event, newValue) {
79
- this.markAsTouched();
80
- this.searchValue = newValue;
81
- if (event.key === 'Enter') {
82
- this.searchNow(this.searchValue);
83
- }
84
- if (this.searchOnType) {
85
- this.addEvent();
86
- }
87
- }
88
- onInputValueChange(newValue) {
89
- this.markAsTouched();
90
- this.searchValue = newValue;
91
- }
92
- recreateObservable() {
93
- this.searchValue$ = this.subject
94
- .asObservable()
95
- .pipe(debounceTime(this.debounce));
96
- this.freeSubscriptions();
97
- this.sub = this.searchValue$.subscribe((value) => {
98
- this.searchValueChange.emit(value);
99
- });
100
- }
101
- freeSubscriptions() {
102
- if (this.sub) {
103
- this.sub.unsubscribe();
104
- this.sub = null;
105
- }
106
- }
107
- searchNow(value) {
108
- this.searchValueChange.emit(value);
109
- }
110
- addEvent() {
111
- this.subject.next(this.searchValue);
112
- }
113
- }
114
- FilterComponent.idCounter = 0;
115
- FilterComponent.decorators = [
116
- { type: Component, args: [{
117
- selector: 'lux-filter',
118
- template: "<div class=\"filter\">\n <input\n #i0\n type=\"text\"\n [attr.aria-label]=\"ariaLabel\"\n [placeholder]=\"placeholder\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [value]=\"searchValue\"\n (valueChange)=\"onInputValueChange(i0.value)\"\n (keyup)=\"keyup($event, i0.value)\"\n />\n\n <button\n [class.hide]=\"!searchValue\"\n aria-label=\"Clear\"\n class=\"clear-indicator icon icon-clear\"\n type=\"button\"\n (click)=\"clear()\"\n ></button>\n <i *ngIf=\"1 || searchOnType\" class=\"search-indicator icon icon-search\"></i>\n <button\n class=\"btn-search\"\n *ngIf=\"!searchOnType\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"search()\"\n >\n Search\n </button>\n</div>\n",
119
- providers: [
120
- {
121
- provide: NG_VALUE_ACCESSOR,
122
- multi: true,
123
- useExisting: forwardRef(() => FilterComponent)
124
- }
125
- ],
126
- styles: [":focus{z-index:1}input,select,textarea{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:0;margin:var(--lux-input-margin, 0rem);padding:0 .5rem;padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:#fe2e2e;background:var(--lux-alert-background, #fe2e2e);color:#fff;color:var(--lux-alert-color, white);font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:baseline;padding:0 .5rem;margin-bottom:0;font-weight:400;color:default;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:default;background:var(--lux-symbol-background, default);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;border-radius:var(--lux-border-radius, .25rem)}.rounded-left{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-middle{border-radius:0}.rounded-right{border-top-left-radius:0;border-bottom-left-radius:0}.prefix{border-right:none}.infix{border-left:none;border-right:none}.postfix{border-left:none;display:flex;align-items:center}.filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:url(/assets/img/filter-search.png) no-repeat center;background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:1rem;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center}\n"]
127
- },] }
128
- ];
129
- FilterComponent.ctorParameters = () => [];
130
- FilterComponent.propDecorators = {
131
- disabled: [{ type: Input }],
132
- inputId: [{ type: Input }],
133
- placeholder: [{ type: Input }],
134
- searchValue: [{ type: Input }],
135
- searchOnType: [{ type: Input }],
136
- ariaLabel: [{ type: Input, args: ['aria-label',] }],
137
- debounce: [{ type: Input }],
138
- searchValueChange: [{ type: Output }]
139
- };
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsNkNBQTZDO0FBYTdDLE1BQU0sT0FBTyxlQUFlO0lBa0QxQjtRQTdDUSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHMUIsZ0NBQWdDO1FBQ3ZCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBYzFCLHFFQUFxRTtRQUM1RCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUlyQixrQkFBYSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVM7UUFXdEMsb0NBQW9DO1FBQzFCLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFJakQsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFPeEMsaUNBQWlDO1FBQ2pDLGFBQVEsR0FBRyxDQUFDLEtBQUssRUFBUSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQy9CLGNBQVMsR0FBRyxHQUFTLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFMekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQXZDRCwyQ0FBMkM7SUFDM0MsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFD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LFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNPLGlCQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUNPLFNBQVMsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNPLFFBQVE7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7QUE3SE0seUJBQVMsR0FBRyxDQUFDLENBQUM7O1lBZnRCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsaXdCQUFzQztnQkFFdEMsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO3FCQUMvQztpQkFDRjs7YUFDRjs7Ozt1QkFTRSxLQUFLO3NCQUVMLEtBQUs7MEJBRUwsS0FBSzswQkFFTCxLQUFLOzJCQWFMLEtBQUs7d0JBRUwsS0FBSyxTQUFDLFlBQVk7dUJBSWxCLEtBQUs7Z0NBVUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKiogRmlsdGVyIGNvbXBvbmVudCB0byBxdWVyeSBmb3Igb2JqZWN0cy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x1eC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWx0ZXJDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBzdGF0aWMgaWRDb3VudGVyID0gMDtcblxuICBwcml2YXRlIHRvdWNoZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VhcmNoVmFsdWUgPSAnJztcblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAvKiogaWQgZm9yIHRoZSBpbnB1dC4gSWYgbGVmdCBibGFuaywgaXQgaXMgYXV0b2dlbmVyYXRlZCAqL1xuICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG4gIC8qKiBQbGFjZWhvbGRlciBkZWZhdWx0IHRleHQuICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIC8qKiBTZWFyY2ggdmFsdWUgaW50cm9kdWNlZCBieSB0aGUgdXNlci4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlYXJjaFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFZhbHVlO1xuICB9XG4gIHNldCBzZWFyY2hWYWx1ZSh2OiBzdHJpbmcpIHtcbiAgICB2ID0gKHYgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgaWYgKHYgPT09IHRoaXMuX3NlYXJjaFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2Uodik7XG4gICAgdGhpcy5fc2VhcmNoVmFsdWUgPSB2O1xuICB9XG4gIC8qKiBTZWFyY2ggb24gdHlwZTogKGRlZmF1bHQgdHJ1ZSkgQXV0by1zZWFyY2ggd2hlbiB1c2VyIHR5cGVzIGluLiAqL1xuICBASW5wdXQoKSBzZWFyY2hPblR5cGUgPSB0cnVlO1xuICAvKiogQ3VzdG9tIGFyaWEgbGFiZWwgaW4gY2FzZSBvZiBub3QgdXNpbmcgYSBsYWJlbCAqL1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICBwcml2YXRlIGRlYm91bmNlVmFsdWUgPSAzMDA7IC8vIDMwMCBtc1xuICAvKiogRGVib3VuY2UgdGltZSBpbiBtaWxsaXNlY29uZHMuIChkZWZhdWx0cyB0byAzMDAgbXMpICovXG4gIEBJbnB1dCgpXG4gIHNldCBkZWJvdW5jZSh2YWw6IG51bWJlcikge1xuICAgIHRoaXMuZGVib3VuY2VWYWx1ZSA9IHZhbDtcbiAgICB0aGlzLnJlY3JlYXRlT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBkZWJvdW5jZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRlYm91bmNlVmFsdWU7XG4gIH1cblxuICAvKiogU2VhcmNoIHZhbHVlIGNoYW5nZWQgYnkgdXNlci4gKi9cbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgc2VhcmNoVmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVjcmVhdGVPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2VcbiAgb25DaGFuZ2UgPSAodmFsdWUpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICh2YWx1ZSB8fCAnJykudG9TdHJpbmcoKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuICAvLyBFbmQgQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dElkID0gdGhpcy5pbnB1dElkXG4gICAgICA/IHRoaXMuaW5wdXRJZFxuICAgICAgOiBgZmlsdGVyJCR7RmlsdGVyQ29tcG9uZW50LmlkQ291bnRlcisrfWA7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mcmVlU3Vic2NyaXB0aW9ucygpO1xuICB9XG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG4gIHNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWFyY2hWYWx1ZSk7XG4gIH1cbiAga2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gbmV3VmFsdWU7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5zZWFyY2hOb3codGhpcy5zZWFyY2hWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlYXJjaE9uVHlwZSkge1xuICAgICAgdGhpcy5hZGRFdmVudCgpO1xuICAgIH1cbiAgfVxuICBvbklucHV0VmFsdWVDaGFuZ2UobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBuZXdWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjcmVhdGVPYnNlcnZhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUkID0gdGhpcy5zdWJqZWN0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSk7XG5cbiAgICB0aGlzLmZyZWVTdWJzY3JpcHRpb25zKCk7XG4gICAgdGhpcy5zdWIgPSB0aGlzLnNlYXJjaFZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgZnJlZVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3ViKSB7XG4gICAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zdWIgPSBudWxsO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIHNlYXJjaE5vdyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGFkZEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViamVjdC5uZXh0KHRoaXMuc2VhcmNoVmFsdWUpO1xuICB9XG59XG4iXX0=