primekit 0.0.63 → 0.0.65
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.
- package/esm2022/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.mjs +376 -0
- package/esm2022/lib/lib/atomix-input/atomix-input.component.mjs +3 -3
- package/esm2022/lib/lib/atomix-table/atomix-table.component.mjs +5 -4
- package/esm2022/lib/primekit.module.mjs +13 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/primekit.mjs +412 -34
- package/fesm2022/primekit.mjs.map +1 -1
- package/lib/lib/atomix-daterange-calendar/atomix-daterange-calendar.component.d.ts +54 -0
- package/lib/primekit.module.d.ts +51 -49
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "primeng/button";
|
|
5
|
+
import * as i3 from "primeng/inputtext";
|
|
6
|
+
import * as i4 from "primeng/calendar";
|
|
7
|
+
import * as i5 from "primeng/overlaypanel";
|
|
8
|
+
import * as i6 from "@angular/forms";
|
|
9
|
+
export class AtomixDaterangeCalendarComponent {
|
|
10
|
+
datePipe;
|
|
11
|
+
placeholder = '';
|
|
12
|
+
styleClass = '';
|
|
13
|
+
selectionMode = 'range';
|
|
14
|
+
inputStyleClass = '';
|
|
15
|
+
inline = false;
|
|
16
|
+
disabled = false;
|
|
17
|
+
selectedDate = null;
|
|
18
|
+
maxDate;
|
|
19
|
+
minDate;
|
|
20
|
+
defaultPreset = null;
|
|
21
|
+
customRangeMode = false;
|
|
22
|
+
selectedPreset = null; // 'today' | 'yesterday' | 'last7days' | 'last30days' | 'last3months' | 'last6months' | 'custom' | null
|
|
23
|
+
overlayPanel;
|
|
24
|
+
dateRangeChange = new EventEmitter();
|
|
25
|
+
// internal model bound to p-calendar to avoid changing external selection during first-click selection
|
|
26
|
+
modelDate = null;
|
|
27
|
+
enLocale = {
|
|
28
|
+
firstDayOfWeek: 0,
|
|
29
|
+
dayNames: [
|
|
30
|
+
'Sunday',
|
|
31
|
+
'Monday',
|
|
32
|
+
'Tuesday',
|
|
33
|
+
'Wednesday',
|
|
34
|
+
'Thursday',
|
|
35
|
+
'Friday',
|
|
36
|
+
'Saturday',
|
|
37
|
+
],
|
|
38
|
+
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
|
39
|
+
dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
|
40
|
+
monthNames: [
|
|
41
|
+
'January',
|
|
42
|
+
'February',
|
|
43
|
+
'March',
|
|
44
|
+
'April',
|
|
45
|
+
'May',
|
|
46
|
+
'June',
|
|
47
|
+
'July',
|
|
48
|
+
'August',
|
|
49
|
+
'September',
|
|
50
|
+
'October',
|
|
51
|
+
'November',
|
|
52
|
+
'December',
|
|
53
|
+
],
|
|
54
|
+
monthNamesShort: [
|
|
55
|
+
'Jan',
|
|
56
|
+
'Feb',
|
|
57
|
+
'Mar',
|
|
58
|
+
'Apr',
|
|
59
|
+
'May',
|
|
60
|
+
'Jun',
|
|
61
|
+
'Jul',
|
|
62
|
+
'Aug',
|
|
63
|
+
'Sep',
|
|
64
|
+
'Oct',
|
|
65
|
+
'Nov',
|
|
66
|
+
'Dec',
|
|
67
|
+
],
|
|
68
|
+
today: 'Today',
|
|
69
|
+
clear: 'Clear',
|
|
70
|
+
};
|
|
71
|
+
// temporary storage for overlay session
|
|
72
|
+
_overlayInitialDate = null;
|
|
73
|
+
_overlayInitialPreset = null;
|
|
74
|
+
constructor(datePipe) {
|
|
75
|
+
this.datePipe = datePipe;
|
|
76
|
+
}
|
|
77
|
+
ngOnInit() {
|
|
78
|
+
if (!this.selectedDate && this.defaultPreset) {
|
|
79
|
+
this.applyPreset(this.defaultPreset);
|
|
80
|
+
}
|
|
81
|
+
// initialize internal model
|
|
82
|
+
this.modelDate = this.selectedDate ? [...this.selectedDate] : null;
|
|
83
|
+
}
|
|
84
|
+
ngOnChanges(changes) {
|
|
85
|
+
if (changes['selectedDate']) {
|
|
86
|
+
const sel = changes['selectedDate'].currentValue;
|
|
87
|
+
if (sel && Array.isArray(sel) && sel.length === 2 && sel[0] && sel[1]) {
|
|
88
|
+
const preset = this.detectPreset(sel[0], sel[1]);
|
|
89
|
+
this.selectedPreset = preset ?? 'custom';
|
|
90
|
+
// sync internal model when external value changes
|
|
91
|
+
this.modelDate = [...sel];
|
|
92
|
+
}
|
|
93
|
+
else if (sel == null) {
|
|
94
|
+
this.selectedPreset = null;
|
|
95
|
+
this.modelDate = null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
onInputKeyDown(event) {
|
|
100
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
101
|
+
try {
|
|
102
|
+
this.overlayPanel?.toggle(event);
|
|
103
|
+
}
|
|
104
|
+
catch (e) { }
|
|
105
|
+
event.preventDefault();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
onOverlayShow() {
|
|
109
|
+
// store a deep copy of current selection/preset when overlay opens
|
|
110
|
+
if (this.selectedDate && Array.isArray(this.selectedDate)) {
|
|
111
|
+
this._overlayInitialDate = this.selectedDate.map(d => (d ? new Date(d.getFullYear(), d.getMonth(), d.getDate()) : d));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this._overlayInitialDate = null;
|
|
115
|
+
}
|
|
116
|
+
this._overlayInitialPreset = this.selectedPreset;
|
|
117
|
+
// ensure calendar model shows the currently committed selection when opening
|
|
118
|
+
this.modelDate = this.selectedDate ? [...this.selectedDate] : null;
|
|
119
|
+
// ensure preset buttons reflect current selection when overlay opens
|
|
120
|
+
if (this.selectedDate && Array.isArray(this.selectedDate) && this.selectedDate.length === 2) {
|
|
121
|
+
const preset = this.detectPreset(this.selectedDate[0], this.selectedDate[1]);
|
|
122
|
+
this.selectedPreset = preset ?? 'custom';
|
|
123
|
+
}
|
|
124
|
+
else if (!this.selectedDate) {
|
|
125
|
+
this.selectedPreset = null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
onOverlayHide() {
|
|
129
|
+
// if internal calendar model has an incomplete selection (partial range) revert to initial
|
|
130
|
+
const model = this.modelDate;
|
|
131
|
+
const isPartialModel = Boolean(model && Array.isArray(model) && model.length === 1 && !!model[0] && !model[1]);
|
|
132
|
+
if (isPartialModel) {
|
|
133
|
+
this.selectedDate = this._overlayInitialDate;
|
|
134
|
+
this.selectedPreset = this._overlayInitialPreset;
|
|
135
|
+
// emit the reverted value so parent syncs
|
|
136
|
+
this.dateRangeChange.emit(this.selectedDate);
|
|
137
|
+
// reset internal model to synced value
|
|
138
|
+
this.modelDate = this.selectedDate ? [...this.selectedDate] : null;
|
|
139
|
+
}
|
|
140
|
+
this._overlayInitialDate = null;
|
|
141
|
+
this._overlayInitialPreset = null;
|
|
142
|
+
this.customRangeMode = false;
|
|
143
|
+
}
|
|
144
|
+
onModelChange(dateRange) {
|
|
145
|
+
// When user clicks a first date, PrimeNG may emit an array with 1 value. We don't want to
|
|
146
|
+
// update the external selectedDate until the range is completed (two dates) so that
|
|
147
|
+
// the calendar does not jump back to a previously selected end date's month.
|
|
148
|
+
this.modelDate = dateRange ? [...dateRange] : null;
|
|
149
|
+
if (dateRange && Array.isArray(dateRange) && dateRange.length === 2 && dateRange[0] && dateRange[1]) {
|
|
150
|
+
this.selectedPreset = this.detectPreset(dateRange[0], dateRange[1]);
|
|
151
|
+
this.customRangeMode = false;
|
|
152
|
+
this.selectedDate = [...dateRange];
|
|
153
|
+
this.dateRangeChange.emit(this.selectedDate);
|
|
154
|
+
// close overlay like when applying a preset
|
|
155
|
+
try {
|
|
156
|
+
this.overlayPanel?.hide();
|
|
157
|
+
}
|
|
158
|
+
catch (e) { }
|
|
159
|
+
}
|
|
160
|
+
else if (!dateRange) {
|
|
161
|
+
// cleared selection
|
|
162
|
+
this.selectedPreset = null;
|
|
163
|
+
this.customRangeMode = false;
|
|
164
|
+
this.selectedDate = null;
|
|
165
|
+
this.dateRangeChange.emit(null);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// single date selecting (partial range) - do not emit change yet; just keep internal model
|
|
169
|
+
// so the calendar's view remains where the user navigated to.
|
|
170
|
+
this.selectedPreset = null;
|
|
171
|
+
this.customRangeMode = false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
get hasSelection() {
|
|
175
|
+
return Boolean(this.selectedDate &&
|
|
176
|
+
Array.isArray(this.selectedDate) &&
|
|
177
|
+
this.selectedDate.length === 2 &&
|
|
178
|
+
!!this.selectedDate[0] &&
|
|
179
|
+
!!this.selectedDate[1]);
|
|
180
|
+
}
|
|
181
|
+
normalizeDate(d) {
|
|
182
|
+
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
183
|
+
}
|
|
184
|
+
isSameDate(a, b) {
|
|
185
|
+
return (a.getFullYear() === b.getFullYear() &&
|
|
186
|
+
a.getMonth() === b.getMonth() &&
|
|
187
|
+
a.getDate() === b.getDate());
|
|
188
|
+
}
|
|
189
|
+
detectPreset(startRaw, endRaw) {
|
|
190
|
+
const start = this.normalizeDate(startRaw);
|
|
191
|
+
const end = this.normalizeDate(endRaw);
|
|
192
|
+
const today = this.normalizeDate(new Date());
|
|
193
|
+
// today
|
|
194
|
+
if (this.isSameDate(start, today) && this.isSameDate(end, today))
|
|
195
|
+
return 'today';
|
|
196
|
+
// yesterday
|
|
197
|
+
const y = new Date(today);
|
|
198
|
+
y.setDate(y.getDate() - 1);
|
|
199
|
+
if (this.isSameDate(start, y) && this.isSameDate(end, y))
|
|
200
|
+
return 'yesterday';
|
|
201
|
+
// last7days (last 7 days including today: start = today - 6, end = today)
|
|
202
|
+
const l7End = new Date(today);
|
|
203
|
+
const l7Start = new Date(today);
|
|
204
|
+
l7Start.setDate(today.getDate() - 6);
|
|
205
|
+
if (this.isSameDate(start, l7Start) && this.isSameDate(end, l7End))
|
|
206
|
+
return 'last7days';
|
|
207
|
+
// last30days (last 30 days including today: start = today - 29, end = today)
|
|
208
|
+
const l30End = new Date(today);
|
|
209
|
+
const l30Start = new Date(today);
|
|
210
|
+
l30Start.setDate(today.getDate() - 29);
|
|
211
|
+
if (this.isSameDate(start, l30Start) && this.isSameDate(end, l30End))
|
|
212
|
+
return 'last30days';
|
|
213
|
+
// last3months (last 3 months including today: start = today - 3 months, end = today)
|
|
214
|
+
const l3mEnd = new Date(today);
|
|
215
|
+
const l3mStart = new Date(today);
|
|
216
|
+
l3mStart.setMonth(today.getMonth() - 3);
|
|
217
|
+
if (this.isSameDate(start, l3mStart) && this.isSameDate(end, l3mEnd))
|
|
218
|
+
return 'last3months';
|
|
219
|
+
// last6months (last 6 months including today: start = today - 6 months, end = today)
|
|
220
|
+
const l6mEnd = new Date(today);
|
|
221
|
+
const l6mStart = new Date(today);
|
|
222
|
+
l6mStart.setMonth(today.getMonth() - 6);
|
|
223
|
+
if (this.isSameDate(start, l6mStart) && this.isSameDate(end, l6mEnd))
|
|
224
|
+
return 'last6months';
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
clearDateRange() {
|
|
228
|
+
this.selectedDate = null;
|
|
229
|
+
this.dateRangeChange.emit(this.selectedDate);
|
|
230
|
+
this.selectedPreset = null;
|
|
231
|
+
this.customRangeMode = false;
|
|
232
|
+
this.modelDate = null;
|
|
233
|
+
}
|
|
234
|
+
resetAndClose() {
|
|
235
|
+
this.clearDateRange();
|
|
236
|
+
if (this.overlayPanel) {
|
|
237
|
+
try {
|
|
238
|
+
this.overlayPanel.hide();
|
|
239
|
+
}
|
|
240
|
+
catch (e) { }
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
toggleCustomRange() {
|
|
244
|
+
this.customRangeMode = !this.customRangeMode;
|
|
245
|
+
if (this.customRangeMode)
|
|
246
|
+
this.selectedPreset = 'custom';
|
|
247
|
+
}
|
|
248
|
+
applyCustomRange() {
|
|
249
|
+
// ensure external selectedDate is in sync with internal model
|
|
250
|
+
this.selectedDate = this.modelDate ? [...this.modelDate] : null;
|
|
251
|
+
this.dateRangeChange.emit(this.selectedDate);
|
|
252
|
+
if (this.overlayPanel) {
|
|
253
|
+
try {
|
|
254
|
+
this.overlayPanel.hide();
|
|
255
|
+
}
|
|
256
|
+
catch (e) { }
|
|
257
|
+
}
|
|
258
|
+
this.customRangeMode = false;
|
|
259
|
+
this.selectedPreset = 'custom';
|
|
260
|
+
}
|
|
261
|
+
getDateRangeLabel() {
|
|
262
|
+
// Check the internal model first to show real-time updates while selecting
|
|
263
|
+
const dateArray = this.modelDate || this.selectedDate;
|
|
264
|
+
if (!dateArray || !Array.isArray(dateArray))
|
|
265
|
+
return '';
|
|
266
|
+
const [start, end] = dateArray;
|
|
267
|
+
const arrow = '\u2794';
|
|
268
|
+
// Show just the first date with an arrow if only first date is selected
|
|
269
|
+
if (start && !end) {
|
|
270
|
+
const startStr = this.datePipe.transform(start, 'MM/dd/yyyy');
|
|
271
|
+
return `${startStr} ${arrow} `;
|
|
272
|
+
}
|
|
273
|
+
// Show the complete range if both dates are selected
|
|
274
|
+
if (start && end) {
|
|
275
|
+
const startStr = this.datePipe.transform(start, 'MM/dd/yyyy');
|
|
276
|
+
const endStr = this.datePipe.transform(end, 'MM/dd/yyyy');
|
|
277
|
+
return `${startStr} ${arrow} ${endStr}`;
|
|
278
|
+
}
|
|
279
|
+
return '';
|
|
280
|
+
}
|
|
281
|
+
applyPreset(preset) {
|
|
282
|
+
const today = new Date();
|
|
283
|
+
let start = null;
|
|
284
|
+
let end = null;
|
|
285
|
+
switch (preset) {
|
|
286
|
+
case 'today':
|
|
287
|
+
start = end = new Date(today.getFullYear(), today.getMonth(), today.getDate());
|
|
288
|
+
break;
|
|
289
|
+
case 'yesterday':
|
|
290
|
+
const y = new Date(today);
|
|
291
|
+
y.setDate(y.getDate() - 1);
|
|
292
|
+
start = end = new Date(y.getFullYear(), y.getMonth(), y.getDate());
|
|
293
|
+
break;
|
|
294
|
+
case 'last7days': {
|
|
295
|
+
end = new Date(today.getFullYear(), today.getMonth(), today.getDate());
|
|
296
|
+
start = new Date(end);
|
|
297
|
+
start.setDate(end.getDate() - 6);
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
case 'last30days': {
|
|
301
|
+
end = new Date(today.getFullYear(), today.getMonth(), today.getDate());
|
|
302
|
+
start = new Date(end);
|
|
303
|
+
start.setDate(end.getDate() - 29);
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
case 'last3months': {
|
|
307
|
+
end = new Date(today.getFullYear(), today.getMonth(), today.getDate());
|
|
308
|
+
start = new Date(end);
|
|
309
|
+
start.setMonth(end.getMonth() - 3);
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
case 'last6months': {
|
|
313
|
+
end = new Date(today.getFullYear(), today.getMonth(), today.getDate());
|
|
314
|
+
start = new Date(end);
|
|
315
|
+
start.setMonth(end.getMonth() - 6);
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
default:
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
if (start && end) {
|
|
322
|
+
this.selectedDate = [start, end];
|
|
323
|
+
this.modelDate = [start, end];
|
|
324
|
+
this.dateRangeChange.emit(this.selectedDate);
|
|
325
|
+
this.selectedPreset = preset;
|
|
326
|
+
this.customRangeMode = false;
|
|
327
|
+
}
|
|
328
|
+
try {
|
|
329
|
+
this.overlayPanel?.hide();
|
|
330
|
+
}
|
|
331
|
+
catch (e) { }
|
|
332
|
+
}
|
|
333
|
+
onDateRangeChange(dateRange) {
|
|
334
|
+
this.dateRangeChange.emit(dateRange);
|
|
335
|
+
if (dateRange && Array.isArray(dateRange)) {
|
|
336
|
+
this.selectedPreset = this.detectPreset(dateRange[0], dateRange[1]);
|
|
337
|
+
this.customRangeMode = false;
|
|
338
|
+
}
|
|
339
|
+
else if (!dateRange) {
|
|
340
|
+
this.selectedPreset = null;
|
|
341
|
+
this.customRangeMode = false;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AtomixDaterangeCalendarComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
345
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AtomixDaterangeCalendarComponent, selector: "atomix-daterange-calendar", inputs: { placeholder: "placeholder", styleClass: "styleClass", selectionMode: "selectionMode", inputStyleClass: "inputStyleClass", inline: "inline", disabled: "disabled", selectedDate: "selectedDate", maxDate: "maxDate", minDate: "minDate", defaultPreset: "defaultPreset" }, outputs: { dateRangeChange: "dateRangeChange" }, viewQueries: [{ propertyName: "overlayPanel", first: true, predicate: ["overlayPanel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div>\n <ng-container *ngIf=\"!inline; else inlineBlock\">\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (click)=\"overlayPanel?.toggle($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\" (click)=\"overlayPanel?.toggle($event)\"></i>\n </div>\n\n <p-overlayPanel #overlayPanel [dismissable]=\"true\" appendTo=\"body\" styleClass=\"atomix-date-range-overlay\" (onShow)=\"onOverlayShow()\" (onHide)=\"onOverlayHide()\">\n <div class=\"overlay-inner\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </p-overlayPanel>\n </ng-container>\n\n <ng-template #inlineBlock>\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\"></i>\n </div>\n <div class=\"overlay-inner inline-calendar flex\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: ["::ng-deep .p-calendar{button{background-color:transparent!important}}.overlay-inner{display:flex;gap:1rem;align-items:flex-start;flex-wrap:nowrap}.overlay-left{padding:.75rem .75rem 4rem;text-align:center;border-right:1px solid #e5e5e5}.input-wrapper{display:flex;align-items:center;gap:.5rem;width:100%!important;position:relative}.input-wrapper input[readonly]{cursor:pointer;padding-right:25px!important;border-radius:30px;width:100%!important}.input-wrapper input{color:#000000de}.input-wrapper input::placeholder{color:#0009}.input-icon{cursor:pointer;color:#0000008a;position:absolute;right:10px}.input-clear-icon{cursor:pointer;color:#0000008a;position:absolute;right:36px}.preset-list{display:flex;flex-direction:column;gap:.2rem}::ng-deep .p-overlaypanel .p-overlaypanel-content{margin-top:0!important}.preset-btn{justify-content:flex-start;text-align:left;padding-left:8px}.preset-btn .p-button-label{display:inline-block}.preset-btn:not(.p-button-outlined){background-color:transparent;color:#111827}.preset-btn:hover{background-color:#f3f6f9}.preset-btn.active,.preset-btn.p-button.active,.preset-btn.custom-active,.preset-btn.p-button.custom-active{background-color:#63b77e!important;color:#fff!important;font-weight:700;line-height:17px;border-radius:12px}.reset-link{text-align:left;cursor:pointer;margin-top:25px;padding:.3rem 1.4rem!important;color:#63b77e;font-weight:600}.atomix-date-range-overlay .overlay-left .reset-link{display:inline-block;margin-top:1rem;color:#2196f3;cursor:pointer}.overlay-right{flex:1}.overlay-inner.inline{flex-direction:row}:host ::ng-deep .p-column-filter-menu .overlay-inner.inline{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important}:host ::ng-deep .p-overlaypanel .overlay-inner.inline{display:flex!important;flex-direction:row!important}.overlay-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}::ng-deep .p-datepicker{border:none!important;border-radius:8px}.atomix-overlay-calendar ::ng-deep .p-datepicker{width:100%}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year,.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight{color:#fff;background:#63c984}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year.p-highlight{color:#fff;background:#63b77e}::ng-deep .p-datepicker table th{border-bottom:1px solid rgba(0,0,0,.12);color:#000000de;font-weight:400;font-size:.875rem}::ng-deep .p-datepicker table td>span.p-highlight{color:#fff;background:#63c984}::ng-deep .p-datepicker table td{padding:.2rem 0}::ng-deep .p-datepicker table td>span{width:2.8rem;height:2.8rem;border-radius:0%;transition:none;border:1px solid transparent}::ng-deep .p-datepicker table td.p-datepicker-today>span{box-shadow:inset 0 0 0 2px #00000061}::ng-deep .inline-calendar{border-bottom:1px solid #e5e5e5}::ng-deep .atomix-date-range-overlay{border-radius:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i3.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i4.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i5.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
346
|
+
}
|
|
347
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AtomixDaterangeCalendarComponent, decorators: [{
|
|
348
|
+
type: Component,
|
|
349
|
+
args: [{ selector: 'atomix-daterange-calendar', template: "<div>\n <ng-container *ngIf=\"!inline; else inlineBlock\">\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (click)=\"overlayPanel?.toggle($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\" (click)=\"overlayPanel?.toggle($event)\"></i>\n </div>\n\n <p-overlayPanel #overlayPanel [dismissable]=\"true\" appendTo=\"body\" styleClass=\"atomix-date-range-overlay\" (onShow)=\"onOverlayShow()\" (onHide)=\"onOverlayHide()\">\n <div class=\"overlay-inner\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </p-overlayPanel>\n </ng-container>\n\n <ng-template #inlineBlock>\n <div [ngClass]=\"styleClass\" class=\"input-wrapper\">\n <input\n pInputText\n type=\"text\"\n [ngClass]=\"inputStyleClass\"\n [placeholder]=\"placeholder\"\n [value]=\"getDateRangeLabel()\"\n readonly\n [disabled]=\"disabled\"\n (keydown)=\"onInputKeyDown($event)\"\n />\n <i class=\"pi pi-calendar input-icon\" title=\"Open calendar\"></i>\n </div>\n <div class=\"overlay-inner inline-calendar flex\">\n <div class=\"overlay-left\">\n <div class=\"preset-list\">\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('today')\" [ngClass]=\"{ 'active': selectedPreset === 'today' }\" label=\"Today\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('yesterday')\" [ngClass]=\"{ 'active': selectedPreset === 'yesterday' }\" label=\"Yesterday\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last7days')\" [ngClass]=\"{ 'active': selectedPreset === 'last7days' }\" label=\"Last 7 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last30days')\" [ngClass]=\"{ 'active': selectedPreset === 'last30days' }\" label=\"Last 30 days\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last3months')\" [ngClass]=\"{ 'active': selectedPreset === 'last3months' }\" label=\"Last 3 months\"></button>\n <button pButton pRipple type=\"button\" class=\"preset-btn\" (click)=\"applyPreset('last6months')\" [ngClass]=\"{ 'active': selectedPreset === 'last6months' }\" label=\"Last 6 months\"></button>\n <a class=\"reset-link\" (click)=\"resetAndClose()\">Reset</a>\n </div>\n </div>\n <div class=\"overlay-right\">\n <p-calendar [(ngModel)]=\"modelDate\" [selectionMode]=\"'range'\" [inline]=\"true\" [dateFormat]=\"'mm/dd/yyyy'\" [showOtherMonths]=\"true\" [locale]=\"enLocale\" [showIcon]=\"false\" [styleClass]=\"'atomix-overlay-calendar'\" (ngModelChange)=\"onModelChange($event)\" [disabled]=\"disabled\" [maxDate]=\"maxDate\" [minDate]=\"minDate\"></p-calendar>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: ["::ng-deep .p-calendar{button{background-color:transparent!important}}.overlay-inner{display:flex;gap:1rem;align-items:flex-start;flex-wrap:nowrap}.overlay-left{padding:.75rem .75rem 4rem;text-align:center;border-right:1px solid #e5e5e5}.input-wrapper{display:flex;align-items:center;gap:.5rem;width:100%!important;position:relative}.input-wrapper input[readonly]{cursor:pointer;padding-right:25px!important;border-radius:30px;width:100%!important}.input-wrapper input{color:#000000de}.input-wrapper input::placeholder{color:#0009}.input-icon{cursor:pointer;color:#0000008a;position:absolute;right:10px}.input-clear-icon{cursor:pointer;color:#0000008a;position:absolute;right:36px}.preset-list{display:flex;flex-direction:column;gap:.2rem}::ng-deep .p-overlaypanel .p-overlaypanel-content{margin-top:0!important}.preset-btn{justify-content:flex-start;text-align:left;padding-left:8px}.preset-btn .p-button-label{display:inline-block}.preset-btn:not(.p-button-outlined){background-color:transparent;color:#111827}.preset-btn:hover{background-color:#f3f6f9}.preset-btn.active,.preset-btn.p-button.active,.preset-btn.custom-active,.preset-btn.p-button.custom-active{background-color:#63b77e!important;color:#fff!important;font-weight:700;line-height:17px;border-radius:12px}.reset-link{text-align:left;cursor:pointer;margin-top:25px;padding:.3rem 1.4rem!important;color:#63b77e;font-weight:600}.atomix-date-range-overlay .overlay-left .reset-link{display:inline-block;margin-top:1rem;color:#2196f3;cursor:pointer}.overlay-right{flex:1}.overlay-inner.inline{flex-direction:row}:host ::ng-deep .p-column-filter-menu .overlay-inner.inline{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important}:host ::ng-deep .p-overlaypanel .overlay-inner.inline{display:flex!important;flex-direction:row!important}.overlay-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}::ng-deep .p-datepicker{border:none!important;border-radius:8px}.atomix-overlay-calendar ::ng-deep .p-datepicker{width:100%}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year,.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month{color:#63b77e;transition:background-color .2s,color .2s,box-shadow .2s;font-weight:600;padding:.5rem}::ng-deep .p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight{color:#fff;background:#63c984}::ng-deep .p-datepicker .p-yearpicker .p-yearpicker-year.p-highlight{color:#fff;background:#63b77e}::ng-deep .p-datepicker table th{border-bottom:1px solid rgba(0,0,0,.12);color:#000000de;font-weight:400;font-size:.875rem}::ng-deep .p-datepicker table td>span.p-highlight{color:#fff;background:#63c984}::ng-deep .p-datepicker table td{padding:.2rem 0}::ng-deep .p-datepicker table td>span{width:2.8rem;height:2.8rem;border-radius:0%;transition:none;border:1px solid transparent}::ng-deep .p-datepicker table td.p-datepicker-today>span{box-shadow:inset 0 0 0 2px #00000061}::ng-deep .inline-calendar{border-bottom:1px solid #e5e5e5}::ng-deep .atomix-date-range-overlay{border-radius:8px}\n"] }]
|
|
350
|
+
}], ctorParameters: () => [{ type: i1.DatePipe }], propDecorators: { placeholder: [{
|
|
351
|
+
type: Input
|
|
352
|
+
}], styleClass: [{
|
|
353
|
+
type: Input
|
|
354
|
+
}], selectionMode: [{
|
|
355
|
+
type: Input
|
|
356
|
+
}], inputStyleClass: [{
|
|
357
|
+
type: Input
|
|
358
|
+
}], inline: [{
|
|
359
|
+
type: Input
|
|
360
|
+
}], disabled: [{
|
|
361
|
+
type: Input
|
|
362
|
+
}], selectedDate: [{
|
|
363
|
+
type: Input
|
|
364
|
+
}], maxDate: [{
|
|
365
|
+
type: Input
|
|
366
|
+
}], minDate: [{
|
|
367
|
+
type: Input
|
|
368
|
+
}], defaultPreset: [{
|
|
369
|
+
type: Input
|
|
370
|
+
}], overlayPanel: [{
|
|
371
|
+
type: ViewChild,
|
|
372
|
+
args: ['overlayPanel']
|
|
373
|
+
}], dateRangeChange: [{
|
|
374
|
+
type: Output
|
|
375
|
+
}] } });
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWl4LWRhdGVyYW5nZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmltZWtpdC9zcmMvbGliL2xpYi9hdG9taXgtZGF0ZXJhbmdlLWNhbGVuZGFyL2F0b21peC1kYXRlcmFuZ2UtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbWVraXQvc3JjL2xpYi9saWIvYXRvbWl4LWRhdGVyYW5nZS1jYWxlbmRhci9hdG9taXgtZGF0ZXJhbmdlLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFTcEgsTUFBTSxPQUFPLGdDQUFnQztJQXFFdkI7SUFwRVgsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLGFBQWEsR0FBWSxPQUFPLENBQUM7SUFDakMsZUFBZSxHQUFXLEVBQUUsQ0FBQztJQUM3QixNQUFNLEdBQVksS0FBSyxDQUFDO0lBQ3hCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsWUFBWSxHQUFrQixJQUFJLENBQUM7SUFDbkMsT0FBTyxDQUFRO0lBQ2YsT0FBTyxDQUFRO0lBQ2YsYUFBYSxHQUE4RixJQUFJLENBQUM7SUFFekgsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxjQUFjLEdBQWtCLElBQUksQ0FBQyxDQUFDLHVHQUF1RztJQUNsSCxZQUFZLENBQWdCO0lBQzdDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztJQUU5RCx1R0FBdUc7SUFDdkcsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFaEMsUUFBUSxHQUFHO1FBQ1QsY0FBYyxFQUFFLENBQUM7UUFD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SSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDL0IsQ0FBQzthQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQzt3R0E1VVUsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0MseWdCQ1Q3Qyx1NEpBcUVBOzs0RkQ1RGEsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLDJCQUEyQjs2RUFLNUIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFJcUIsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNmLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheVBhbmVsIH0gZnJvbSAncHJpbWVuZy9vdmVybGF5cGFuZWwnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdG9taXgtZGF0ZXJhbmdlLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F0b21peC1kYXRlcmFuZ2UtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdG9taXgtZGF0ZXJhbmdlLWNhbGVuZGFyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXRvbWl4RGF0ZXJhbmdlQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNlbGVjdGlvbk1vZGU6ICdyYW5nZScgPSAncmFuZ2UnO1xuICBASW5wdXQoKSBpbnB1dFN0eWxlQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRlOiBEYXRlW10gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWF4RGF0ZSE6IERhdGU7XG4gIEBJbnB1dCgpIG1pbkRhdGUhOiBEYXRlO1xuICBASW5wdXQoKSBkZWZhdWx0UHJlc2V0OiAndG9kYXknIHwgJ3llc3RlcmRheScgfCAnbGFzdDdkYXlzJyB8ICdsYXN0MzBkYXlzJyB8ICdsYXN0M21vbnRocycgfCAnbGFzdDZtb250aHMnIHwgbnVsbCA9IG51bGw7XG5cbiAgY3VzdG9tUmFuZ2VNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkUHJlc2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gJ3RvZGF5JyB8ICd5ZXN0ZXJkYXknIHwgJ2xhc3Q3ZGF5cycgfCAnbGFzdDMwZGF5cycgfCAnbGFzdDNtb250aHMnIHwgJ2xhc3Q2bW9udGhzJyB8ICdjdXN0b20nIHwgbnVsbFxuICBAVmlld0NoaWxkKCdvdmVybGF5UGFuZWwnKSBvdmVybGF5UGFuZWw/OiBPdmVybGF5UGFuZWw7XG4gIEBPdXRwdXQoKSBkYXRlUmFuZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXSB8IG51bGw+KCk7XG5cbiAgLy8gaW50ZXJuYWwgbW9kZWwgYm91bmQgdG8gcC1jYWxlbmRhciB0byBhdm9pZCBjaGFuZ2luZyBleHRlcm5hbCBzZWxlY3Rpb24gZHVyaW5nIGZpcnN0LWNsaWNrIHNlbGVjdGlvblxuICBtb2RlbERhdGU6IERhdGVbXSB8IG51bGwgPSBudWxsO1xuXG4gIGVuTG9jYWxlID0ge1xuICAgIGZpcnN0RGF5T2ZXZWVrOiAwLFxuICAgIGRheU5hbWVzOiBbXG4gICAgICAnU3VuZGF5JyxcbiAgICAgICdNb25kYXknLFxuICAgICAgJ1R1ZXNkYXknLFxuICAgICAgJ1dlZG5lc2RheScsXG4gICAgICAnVGh1cnNkYXknLFxuICAgICAgJ0ZyaWRheScsXG4gICAgICAnU2F0dXJkYXknLFxuICAgIF0sXG4gICAgZGF5TmFtZXNTaG9ydDogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgICBkYXlOYW1lc01pbjogWydTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYSddLFxuICAgIG1vbnRoTmFtZXM6IFtcbiAgICAgICdKYW51YXJ5JyxcbiAgICAgICdGZWJydWFyeScsXG4gICAgICAnTWFyY2gnLFxuICAgICAgJ0FwcmlsJyxcbiAgICAgICdNYXknLFxuICAgICAgJ0p1bmUnLFxuICAgICAgJ0p1bHknLFxuICAgICAgJ0F1Z3VzdCcsXG4gICAgICAnU2VwdGVtYmVyJyxcbiAgICAgICdPY3RvYmVyJyxcbiAgICAgICdOb3ZlbWJlcicsXG4gICAgICAnRGVjZW1iZXInLFxuICAgIF0sXG4gICAgbW9udGhOYW1lc1Nob3J0OiBbXG4gICAgICAnSmFuJyxcbiAgICAgICdGZWInLFxuICAgICAgJ01hcicsXG4gICAgICAnQXByJyxcbiAgICAgICdNYXknLFxuICAgICAgJ0p1bicsXG4gICAgICAnSnVsJyxcbiAgICAgICdBdWcnLFxuICAgICAgJ1NlcCcsXG4gICAgICAnT2N0JyxcbiAgICAgICdOb3YnLFxuICAgICAgJ0RlYycsXG4gICAgXSxcbiAgICB0b2RheTogJ1RvZGF5JyxcbiAgICBjbGVhcjogJ0NsZWFyJyxcbiAgfTtcblxuICAvLyB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3Igb3ZlcmxheSBzZXNzaW9uXG4gIHByaXZhdGUgX292ZXJsYXlJbml0aWFsRGF0ZTogRGF0ZVtdIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX292ZXJsYXlJbml0aWFsUHJlc2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlICYmIHRoaXMuZGVmYXVsdFByZXNldCkge1xuICAgICAgdGhpcy5hcHBseVByZXNldCh0aGlzLmRlZmF1bHRQcmVzZXQpO1xuICAgIH1cbiAgICAvLyBpbml0aWFsaXplIGludGVybmFsIG1vZGVsXG4gICAgdGhpcy5tb2RlbERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZSA/IFsuLi50aGlzLnNlbGVjdGVkRGF0ZV0gOiBudWxsO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGUnXSkge1xuICAgICAgY29uc3Qgc2VsID0gY2hhbmdlc1snc2VsZWN0ZWREYXRlJ10uY3VycmVudFZhbHVlIGFzIERhdGVbXSB8IG51bGw7XG4gICAgICBpZiAoc2VsICYmIEFycmF5LmlzQXJyYXkoc2VsKSAmJiBzZWwubGVuZ3RoID09PSAyICYmIHNlbFswXSAmJiBzZWxbMV0pIHtcbiAgICAgICAgY29uc3QgcHJlc2V0ID0gdGhpcy5kZXRlY3RQcmVzZXQoc2VsWzBdLCBzZWxbMV0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gcHJlc2V0ID8/ICdjdXN0b20nO1xuICAgICAgICAvLyBzeW5jIGludGVybmFsIG1vZGVsIHdoZW4gZXh0ZXJuYWwgdmFsdWUgY2hhbmdlc1xuICAgICAgICB0aGlzLm1vZGVsRGF0ZSA9IFsuLi5zZWxdO1xuICAgICAgfSBlbHNlIGlmIChzZWwgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb2RlbERhdGUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgdHJ5IHsgdGhpcy5vdmVybGF5UGFuZWw/LnRvZ2dsZShldmVudCBhcyBhbnkpOyB9IGNhdGNoIChlKSB7fVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBvbk92ZXJsYXlTaG93KCk6IHZvaWQge1xuICAgIC8vIHN0b3JlIGEgZGVlcCBjb3B5IG9mIGN1cnJlbnQgc2VsZWN0aW9uL3ByZXNldCB3aGVuIG92ZXJsYXkgb3BlbnNcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkRGF0ZSkpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlJbml0aWFsRGF0ZSA9ICh0aGlzLnNlbGVjdGVkRGF0ZSBhcyBEYXRlW10pLm1hcChkID0+IChkID8gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKSA6IGQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3ZlcmxheUluaXRpYWxEYXRlID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5fb3ZlcmxheUluaXRpYWxQcmVzZXQgPSB0aGlzLnNlbGVjdGVkUHJlc2V0O1xuICAgIC8vIGVuc3VyZSBjYWxlbmRhciBtb2RlbCBzaG93cyB0aGUgY3VycmVudGx5IGNvbW1pdHRlZCBzZWxlY3Rpb24gd2hlbiBvcGVuaW5nXG4gICAgdGhpcy5tb2RlbERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZSA/IFsuLi50aGlzLnNlbGVjdGVkRGF0ZV0gOiBudWxsO1xuICAgIC8vIGVuc3VyZSBwcmVzZXQgYnV0dG9ucyByZWZsZWN0IGN1cnJlbnQgc2VsZWN0aW9uIHdoZW4gb3ZlcmxheSBvcGVuc1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWREYXRlKSAmJiB0aGlzLnNlbGVjdGVkRGF0ZS5sZW5ndGggPT09IDIpIHtcbiAgICAgIGNvbnN0IHByZXNldCA9IHRoaXMuZGV0ZWN0UHJlc2V0KHRoaXMuc2VsZWN0ZWREYXRlWzBdLCB0aGlzLnNlbGVjdGVkRGF0ZVsxXSk7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gcHJlc2V0ID8/ICdjdXN0b20nO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBvbk92ZXJsYXlIaWRlKCk6IHZvaWQge1xuICAgIC8vIGlmIGludGVybmFsIGNhbGVuZGFyIG1vZGVsIGhhcyBhbiBpbmNvbXBsZXRlIHNlbGVjdGlvbiAocGFydGlhbCByYW5nZSkgcmV2ZXJ0IHRvIGluaXRpYWxcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMubW9kZWxEYXRlO1xuICAgIGNvbnN0IGlzUGFydGlhbE1vZGVsID0gQm9vbGVhbihtb2RlbCAmJiBBcnJheS5pc0FycmF5KG1vZGVsKSAmJiAobW9kZWwgYXMgRGF0ZVtdKS5sZW5ndGggPT09IDEgJiYgISEobW9kZWwgYXMgRGF0ZVtdKVswXSAmJiAhKG1vZGVsIGFzIERhdGVbXSlbMV0pO1xuICAgIGlmIChpc1BhcnRpYWxNb2RlbCkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLl9vdmVybGF5SW5pdGlhbERhdGU7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gdGhpcy5fb3ZlcmxheUluaXRpYWxQcmVzZXQ7XG4gICAgICAvLyBlbWl0IHRoZSByZXZlcnRlZCB2YWx1ZSBzbyBwYXJlbnQgc3luY3NcbiAgICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgLy8gcmVzZXQgaW50ZXJuYWwgbW9kZWwgdG8gc3luY2VkIHZhbHVlXG4gICAgICB0aGlzLm1vZGVsRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlID8gWy4uLnRoaXMuc2VsZWN0ZWREYXRlXSA6IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX292ZXJsYXlJbml0aWFsRGF0ZSA9IG51bGw7XG4gICAgdGhpcy5fb3ZlcmxheUluaXRpYWxQcmVzZXQgPSBudWxsO1xuICAgIHRoaXMuY3VzdG9tUmFuZ2VNb2RlID0gZmFsc2U7XG4gIH1cblxuICBvbk1vZGVsQ2hhbmdlKGRhdGVSYW5nZTogRGF0ZVtdIHwgbnVsbCkge1xuICAgIC8vIFdoZW4gdXNlciBjbGlja3MgYSBmaXJzdCBkYXRlLCBQcmltZU5HIG1heSBlbWl0IGFuIGFycmF5IHdpdGggMSB2YWx1ZS4gV2UgZG9uJ3Qgd2FudCB0b1xuICAgIC8vIHVwZGF0ZSB0aGUgZXh0ZXJuYWwgc2VsZWN0ZWREYXRlIHVudGlsIHRoZSByYW5nZSBpcyBjb21wbGV0ZWQgKHR3byBkYXRlcykgc28gdGhhdFxuICAgIC8vIHRoZSBjYWxlbmRhciBkb2VzIG5vdCBqdW1wIGJhY2sgdG8gYSBwcmV2aW91c2x5IHNlbGVjdGVkIGVuZCBkYXRlJ3MgbW9udGguXG4gICAgdGhpcy5tb2RlbERhdGUgPSBkYXRlUmFuZ2UgPyBbLi4uZGF0ZVJhbmdlXSA6IG51bGw7XG4gICAgaWYgKGRhdGVSYW5nZSAmJiBBcnJheS5pc0FycmF5KGRhdGVSYW5nZSkgJiYgZGF0ZVJhbmdlLmxlbmd0aCA9PT0gMiAmJiBkYXRlUmFuZ2VbMF0gJiYgZGF0ZVJhbmdlWzFdKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gdGhpcy5kZXRlY3RQcmVzZXQoZGF0ZVJhbmdlWzBdLCBkYXRlUmFuZ2VbMV0pO1xuICAgICAgdGhpcy5jdXN0b21SYW5nZU1vZGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gWy4uLmRhdGVSYW5nZV07XG4gICAgICB0aGlzLmRhdGVSYW5nZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICAgIC8vIGNsb3NlIG92ZXJsYXkgbGlrZSB3aGVuIGFwcGx5aW5nIGEgcHJlc2V0XG4gICAgICB0cnkgeyB0aGlzLm92ZXJsYXlQYW5lbD8uaGlkZSgpOyB9IGNhdGNoIChlKSB7fVxuICAgIH0gZWxzZSBpZiAoIWRhdGVSYW5nZSkge1xuICAgICAgLy8gY2xlYXJlZCBzZWxlY3Rpb25cbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZXQgPSBudWxsO1xuICAgICAgdGhpcy5jdXN0b21SYW5nZU1vZGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbnVsbDtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNpbmdsZSBkYXRlIHNlbGVjdGluZyAocGFydGlhbCByYW5nZSkgLSBkbyBub3QgZW1pdCBjaGFuZ2UgeWV0OyBqdXN0IGtlZXAgaW50ZXJuYWwgbW9kZWxcbiAgICAgIC8vIHNvIHRoZSBjYWxlbmRhcidzIHZpZXcgcmVtYWlucyB3aGVyZSB0aGUgdXNlciBuYXZpZ2F0ZWQgdG8uXG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gbnVsbDtcbiAgICAgIHRoaXMuY3VzdG9tUmFuZ2VNb2RlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhhc1NlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZERhdGUpICYmXG4gICAgICAgICh0aGlzLnNlbGVjdGVkRGF0ZSBhcyBEYXRlW10pLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAhISh0aGlzLnNlbGVjdGVkRGF0ZSBhcyBEYXRlW10pWzBdICYmXG4gICAgICAgICEhKHRoaXMuc2VsZWN0ZWREYXRlIGFzIERhdGVbXSlbMV1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlKGQ6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTYW1lRGF0ZShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGEuZ2V0RnVsbFllYXIoKSA9PT0gYi5nZXRGdWxsWWVhcigpICYmXG4gICAgICBhLmdldE1vbnRoKCkgPT09IGIuZ2V0TW9udGgoKSAmJlxuICAgICAgYS5nZXREYXRlKCkgPT09IGIuZ2V0RGF0ZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0UHJlc2V0KHN0YXJ0UmF3OiBEYXRlLCBlbmRSYXc6IERhdGUpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMubm9ybWFsaXplRGF0ZShzdGFydFJhdyk7XG4gICAgY29uc3QgZW5kID0gdGhpcy5ub3JtYWxpemVEYXRlKGVuZFJhdyk7XG4gICAgY29uc3QgdG9kYXkgPSB0aGlzLm5vcm1hbGl6ZURhdGUobmV3IERhdGUoKSk7XG4gICAgLy8gdG9kYXlcbiAgICBpZiAodGhpcy5pc1NhbWVEYXRlKHN0YXJ0LCB0b2RheSkgJiYgdGhpcy5pc1NhbWVEYXRlKGVuZCwgdG9kYXkpKSByZXR1cm4gJ3RvZGF5JztcbiAgICAvLyB5ZXN0ZXJkYXlcbiAgICBjb25zdCB5ID0gbmV3IERhdGUodG9kYXkpO1xuICAgIHkuc2V0RGF0ZSh5LmdldERhdGUoKSAtIDEpO1xuICAgIGlmICh0aGlzLmlzU2FtZURhdGUoc3RhcnQsIHkpICYmIHRoaXMuaXNTYW1lRGF0ZShlbmQsIHkpKSByZXR1cm4gJ3llc3RlcmRheSc7XG4gICAgLy8gbGFzdDdkYXlzIChsYXN0IDcgZGF5cyBpbmNsdWRpbmcgdG9kYXk6IHN0YXJ0ID0gdG9kYXkgLSA2LCBlbmQgPSB0b2RheSlcbiAgICBjb25zdCBsN0VuZCA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICBjb25zdCBsN1N0YXJ0ID0gbmV3IERhdGUodG9kYXkpO1xuICAgIGw3U3RhcnQuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgLSA2KTtcbiAgICBpZiAodGhpcy5pc1NhbWVEYXRlKHN0YXJ0LCBsN1N0YXJ0KSAmJiB0aGlzLmlzU2FtZURhdGUoZW5kLCBsN0VuZCkpIHJldHVybiAnbGFzdDdkYXlzJztcbiAgICAvLyBsYXN0MzBkYXlzIChsYXN0IDMwIGRheXMgaW5jbHVkaW5nIHRvZGF5OiBzdGFydCA9IHRvZGF5IC0gMjksIGVuZCA9IHRvZGF5KVxuICAgIGNvbnN0IGwzMEVuZCA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICBjb25zdCBsMzBTdGFydCA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICBsMzBTdGFydC5zZXREYXRlKHRvZGF5LmdldERhdGUoKSAtIDI5KTtcbiAgICBpZiAodGhpcy5pc1NhbWVEYXRlKHN0YXJ0LCBsMzBTdGFydCkgJiYgdGhpcy5pc1NhbWVEYXRlKGVuZCwgbDMwRW5kKSkgcmV0dXJuICdsYXN0MzBkYXlzJztcbiAgICAvLyBsYXN0M21vbnRocyAobGFzdCAzIG1vbnRocyBpbmNsdWRpbmcgdG9kYXk6IHN0YXJ0ID0gdG9kYXkgLSAzIG1vbnRocywgZW5kID0gdG9kYXkpXG4gICAgY29uc3QgbDNtRW5kID0gbmV3IERhdGUodG9kYXkpO1xuICAgIGNvbnN0IGwzbVN0YXJ0ID0gbmV3IERhdGUodG9kYXkpO1xuICAgIGwzbVN0YXJ0LnNldE1vbnRoKHRvZGF5LmdldE1vbnRoKCkgLSAzKTtcbiAgICBpZiAodGhpcy5pc1NhbWVEYXRlKHN0YXJ0LCBsM21TdGFydCkgJiYgdGhpcy5pc1NhbWVEYXRlKGVuZCwgbDNtRW5kKSkgcmV0dXJuICdsYXN0M21vbnRocyc7XG4gICAgLy8gbGFzdDZtb250aHMgKGxhc3QgNiBtb250aHMgaW5jbHVkaW5nIHRvZGF5OiBzdGFydCA9IHRvZGF5IC0gNiBtb250aHMsIGVuZCA9IHRvZGF5KVxuICAgIGNvbnN0IGw2bUVuZCA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICBjb25zdCBsNm1TdGFydCA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICBsNm1TdGFydC5zZXRNb250aCh0b2RheS5nZXRNb250aCgpIC0gNik7XG4gICAgaWYgKHRoaXMuaXNTYW1lRGF0ZShzdGFydCwgbDZtU3RhcnQpICYmIHRoaXMuaXNTYW1lRGF0ZShlbmQsIGw2bUVuZCkpIHJldHVybiAnbGFzdDZtb250aHMnO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2xlYXJEYXRlUmFuZ2UoKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xuICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZXQgPSBudWxsO1xuICAgIHRoaXMuY3VzdG9tUmFuZ2VNb2RlID0gZmFsc2U7XG4gICAgdGhpcy5tb2RlbERhdGUgPSBudWxsO1xuICB9XG5cbiAgcmVzZXRBbmRDbG9zZSgpIHtcbiAgICB0aGlzLmNsZWFyRGF0ZVJhbmdlKCk7XG4gICAgaWYgKHRoaXMub3ZlcmxheVBhbmVsKSB7XG4gICAgICB0cnkgeyB0aGlzLm92ZXJsYXlQYW5lbC5oaWRlKCk7IH0gY2F0Y2ggKGUpIHt9XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQ3VzdG9tUmFuZ2UoKSB7XG4gICAgdGhpcy5jdXN0b21SYW5nZU1vZGUgPSAhdGhpcy5jdXN0b21SYW5nZU1vZGU7XG4gICAgaWYgKHRoaXMuY3VzdG9tUmFuZ2VNb2RlKSB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gJ2N1c3RvbSc7XG4gIH1cblxuICBhcHBseUN1c3RvbVJhbmdlKCkge1xuICAgIC8vIGVuc3VyZSBleHRlcm5hbCBzZWxlY3RlZERhdGUgaXMgaW4gc3luYyB3aXRoIGludGVybmFsIG1vZGVsXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLm1vZGVsRGF0ZSA/IFsuLi50aGlzLm1vZGVsRGF0ZV0gOiBudWxsO1xuICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgIGlmICh0aGlzLm92ZXJsYXlQYW5lbCkge1xuICAgICAgdHJ5IHsgdGhpcy5vdmVybGF5UGFuZWwuaGlkZSgpOyB9IGNhdGNoIChlKSB7fVxuICAgIH1cbiAgICB0aGlzLmN1c3RvbVJhbmdlTW9kZSA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZXQgPSAnY3VzdG9tJztcbiAgfVxuXG4gICAgZ2V0RGF0ZVJhbmdlTGFiZWwoKSB7XG4gICAgLy8gQ2hlY2sgdGhlIGludGVybmFsIG1vZGVsIGZpcnN0IHRvIHNob3cgcmVhbC10aW1lIHVwZGF0ZXMgd2hpbGUgc2VsZWN0aW5nXG4gICAgY29uc3QgZGF0ZUFycmF5ID0gdGhpcy5tb2RlbERhdGUgfHwgdGhpcy5zZWxlY3RlZERhdGU7XG4gICAgaWYgKCFkYXRlQXJyYXkgfHwgIUFycmF5LmlzQXJyYXkoZGF0ZUFycmF5KSkgcmV0dXJuICcnO1xuICAgIFxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IGRhdGVBcnJheSBhcyAoRGF0ZSB8IG51bGwpW107XG4gICAgICAgICAgICBjb25zdCBhcnJvdyA9ICdcXHUyNzk0JztcblxuICAgIC8vIFNob3cganVzdCB0aGUgZmlyc3QgZGF0ZSB3aXRoIGFuIGFycm93IGlmIG9ubHkgZmlyc3QgZGF0ZSBpcyBzZWxlY3RlZFxuICAgIGlmIChzdGFydCAmJiAhZW5kKSB7XG4gICAgICBjb25zdCBzdGFydFN0ciA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHN0YXJ0LCAnTU0vZGQveXl5eScpO1xuICAgICAgcmV0dXJuIGAke3N0YXJ0U3RyfSAke2Fycm93fSBgO1xuICAgIH1cbiAgICBcbiAgICAvLyBTaG93IHRoZSBjb21wbGV0ZSByYW5nZSBpZiBib3RoIGRhdGVzIGFyZSBzZWxlY3RlZFxuICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0U3RyID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oc3RhcnQsICdNTS9kZC95eXl5Jyk7XG4gICAgICBjb25zdCBlbmRTdHIgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShlbmQsICdNTS9kZC95eXl5Jyk7XG4gICAgICByZXR1cm4gYCR7c3RhcnRTdHJ9ICR7YXJyb3d9ICR7ZW5kU3RyfWA7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGFwcGx5UHJlc2V0KHByZXNldDogJ3RvZGF5J3wneWVzdGVyZGF5J3wnbGFzdDdkYXlzJ3wnbGFzdDMwZGF5cyd8J2xhc3QzbW9udGhzJ3wnbGFzdDZtb250aHMnKSB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCBzdGFydDogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBlbmQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBzd2l0Y2ggKHByZXNldCkge1xuICAgICAgY2FzZSAndG9kYXknOlxuICAgICAgICBzdGFydCA9IGVuZCA9IG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCksIHRvZGF5LmdldERhdGUoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAneWVzdGVyZGF5JzpcbiAgICAgICAgY29uc3QgeSA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICAgICAgeS5zZXREYXRlKHkuZ2V0RGF0ZSgpIC0gMSk7XG4gICAgICAgIHN0YXJ0ID0gZW5kID0gbmV3IERhdGUoeS5nZXRGdWxsWWVhcigpLCB5LmdldE1vbnRoKCksIHkuZ2V0RGF0ZSgpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsYXN0N2RheXMnOiB7XG4gICAgICAgIGVuZCA9IG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCksIHRvZGF5LmdldERhdGUoKSk7XG4gICAgICAgIHN0YXJ0ID0gbmV3IERhdGUoZW5kKTtcbiAgICAgICAgc3RhcnQuc2V0RGF0ZShlbmQuZ2V0RGF0ZSgpIC0gNik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbGFzdDMwZGF5cyc6IHtcbiAgICAgICAgZW5kID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcbiAgICAgICAgc3RhcnQgPSBuZXcgRGF0ZShlbmQpO1xuICAgICAgICBzdGFydC5zZXREYXRlKGVuZC5nZXREYXRlKCkgLSAyOSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbGFzdDNtb250aHMnOiB7XG4gICAgICAgIGVuZCA9IG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCksIHRvZGF5LmdldE1vbnRoKCksIHRvZGF5LmdldERhdGUoKSk7XG4gICAgICAgIHN0YXJ0ID0gbmV3IERhdGUoZW5kKTtcbiAgICAgICAgc3RhcnQuc2V0TW9udGgoZW5kLmdldE1vbnRoKCkgLSAzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdsYXN0Nm1vbnRocyc6IHtcbiAgICAgICAgZW5kID0gbmV3IERhdGUodG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcbiAgICAgICAgc3RhcnQgPSBuZXcgRGF0ZShlbmQpO1xuICAgICAgICBzdGFydC5zZXRNb250aChlbmQuZ2V0TW9udGgoKSAtIDYpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IFtzdGFydCwgZW5kXTtcbiAgICAgIHRoaXMubW9kZWxEYXRlID0gW3N0YXJ0LCBlbmRdO1xuICAgICAgdGhpcy5kYXRlUmFuZ2VDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gcHJlc2V0O1xuICAgICAgdGhpcy5jdXN0b21SYW5nZU1vZGUgPSBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHsgdGhpcy5vdmVybGF5UGFuZWw/LmhpZGUoKTsgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIG9uRGF0ZVJhbmdlQ2hhbmdlKGRhdGVSYW5nZTogRGF0ZVtdIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLmVtaXQoZGF0ZVJhbmdlKTtcbiAgICBpZiAoZGF0ZVJhbmdlICYmIEFycmF5LmlzQXJyYXkoZGF0ZVJhbmdlKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNldCA9IHRoaXMuZGV0ZWN0UHJlc2V0KGRhdGVSYW5nZVswXSwgZGF0ZVJhbmdlWzFdKTtcbiAgICAgIHRoaXMuY3VzdG9tUmFuZ2VNb2RlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghZGF0ZVJhbmdlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJlc2V0ID0gbnVsbDtcbiAgICAgIHRoaXMuY3VzdG9tUmFuZ2VNb2RlID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlubGluZTsgZWxzZSBpbmxpbmVCbG9ja1wiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwic3R5bGVDbGFzc1wiIGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbbmdDbGFzc109XCJpbnB1dFN0eWxlQ2xhc3NcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbdmFsdWVdPVwiZ2V0RGF0ZVJhbmdlTGFiZWwoKVwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJvdmVybGF5UGFuZWw/LnRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25JbnB1dEtleURvd24oJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jYWxlbmRhciBpbnB1dC1pY29uXCIgdGl0bGU9XCJPcGVuIGNhbGVuZGFyXCIgKGNsaWNrKT1cIm92ZXJsYXlQYW5lbD8udG9nZ2xlKCRldmVudClcIj48L2k+XG4gICAgPC9kaXY+XG5cbiAgICA8cC1vdmVybGF5UGFuZWwgI292ZXJsYXlQYW5lbCBbZGlzbWlzc2FibGVdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiIHN0eWxlQ2xhc3M9XCJhdG9taXgtZGF0ZS1yYW5nZS1vdmVybGF5XCIgKG9uU2hvdyk9XCJvbk92ZXJsYXlTaG93KClcIiAob25IaWRlKT1cIm9uT3ZlcmxheUhpZGUoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktaW5uZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktbGVmdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmVzZXQtbGlzdFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0blwiIChjbGljayk9XCJhcHBseVByZXNldCgndG9kYXknKVwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdGVkUHJlc2V0ID09PSAndG9kYXknIH1cIiBsYWJlbD1cIlRvZGF5XCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuXCIgKGNsaWNrKT1cImFwcGx5UHJlc2V0KCd5ZXN0ZXJkYXknKVwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdGVkUHJlc2V0ID09PSAneWVzdGVyZGF5JyB9XCIgbGFiZWw9XCJZZXN0ZXJkYXlcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG5cIiAoY2xpY2spPVwiYXBwbHlQcmVzZXQoJ2xhc3Q3ZGF5cycpXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogc2VsZWN0ZWRQcmVzZXQgPT09ICdsYXN0N2RheXMnIH1cIiBsYWJlbD1cIkxhc3QgNyBkYXlzXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuXCIgKGNsaWNrKT1cImFwcGx5UHJlc2V0KCdsYXN0MzBkYXlzJylcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3RlZFByZXNldCA9PT0gJ2xhc3QzMGRheXMnIH1cIiBsYWJlbD1cIkxhc3QgMzAgZGF5c1wiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0blwiIChjbGljayk9XCJhcHBseVByZXNldCgnbGFzdDNtb250aHMnKVwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdGVkUHJlc2V0ID09PSAnbGFzdDNtb250aHMnIH1cIiBsYWJlbD1cIkxhc3QgMyBtb250aHNcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG5cIiAoY2xpY2spPVwiYXBwbHlQcmVzZXQoJ2xhc3Q2bW9udGhzJylcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3RlZFByZXNldCA9PT0gJ2xhc3Q2bW9udGhzJyB9XCIgbGFiZWw9XCJMYXN0IDYgbW9udGhzXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YSBjbGFzcz1cInJlc2V0LWxpbmtcIiAoY2xpY2spPVwicmVzZXRBbmRDbG9zZSgpXCI+UmVzZXQ8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1yaWdodFwiPlxuICAgICAgICAgIDxwLWNhbGVuZGFyIFsobmdNb2RlbCldPVwibW9kZWxEYXRlXCIgW3NlbGVjdGlvbk1vZGVdPVwiJ3JhbmdlJ1wiIFtpbmxpbmVdPVwidHJ1ZVwiIFtkYXRlRm9ybWF0XT1cIidtbS9kZC95eXl5J1wiIFtzaG93T3RoZXJNb250aHNdPVwidHJ1ZVwiIFtsb2NhbGVdPVwiZW5Mb2NhbGVcIiBbc2hvd0ljb25dPVwiZmFsc2VcIiBbc3R5bGVDbGFzc109XCInYXRvbWl4LW92ZXJsYXktY2FsZW5kYXInXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW21heERhdGVdPVwibWF4RGF0ZVwiIFttaW5EYXRlXT1cIm1pbkRhdGVcIj48L3AtY2FsZW5kYXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9wLW92ZXJsYXlQYW5lbD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNpbmxpbmVCbG9jaz5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaW5wdXRTdHlsZUNsYXNzXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW3ZhbHVlXT1cImdldERhdGVSYW5nZUxhYmVsKClcIlxuICAgICAgICByZWFkb25seVxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbklucHV0S2V5RG93bigkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICA8aSBjbGFzcz1cInBpIHBpLWNhbGVuZGFyIGlucHV0LWljb25cIiB0aXRsZT1cIk9wZW4gY2FsZW5kYXJcIj48L2k+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktaW5uZXIgaW5saW5lLWNhbGVuZGFyIGZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LWxlZnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXNldC1saXN0XCI+XG4gICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0blwiIChjbGljayk9XCJhcHBseVByZXNldCgndG9kYXknKVwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdGVkUHJlc2V0ID09PSAndG9kYXknIH1cIiBsYWJlbD1cIlRvZGF5XCI+PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0blwiIChjbGljayk9XCJhcHBseVByZXNldCgneWVzdGVyZGF5JylcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3RlZFByZXNldCA9PT0gJ3llc3RlcmRheScgfVwiIGxhYmVsPVwiWWVzdGVyZGF5XCI+PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0blwiIChjbGljayk9XCJhcHBseVByZXNldCgnbGFzdDdkYXlzJylcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3RlZFByZXNldCA9PT0gJ2xhc3Q3ZGF5cycgfVwiIGxhYmVsPVwiTGFzdCA3IGRheXNcIj48L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmVzZXQtYnRuXCIgKGNsaWNrKT1cImFwcGx5UHJlc2V0KCdsYXN0MzBkYXlzJylcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3RlZFByZXNldCA9PT0gJ2xhc3QzMGRheXMnIH1cIiBsYWJlbD1cIkxhc3QgMzAgZGF5c1wiPjwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXNldC1idG5cIiAoY2xpY2spPVwiYXBwbHlQcmVzZXQoJ2xhc3QzbW9udGhzJylcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBzZWxlY3RlZFByZXNldCA9PT0gJ2xhc3QzbW9udGhzJyB9XCIgbGFiZWw9XCJMYXN0IDMgbW9udGhzXCI+PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJlc2V0LWJ0blwiIChjbGljayk9XCJhcHBseVByZXNldCgnbGFzdDZtb250aHMnKVwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IHNlbGVjdGVkUHJlc2V0ID09PSAnbGFzdDZtb250aHMnIH1cIiBsYWJlbD1cIkxhc3QgNiBtb250aHNcIj48L2J1dHRvbj5cbiAgICAgICAgICA8YSBjbGFzcz1cInJlc2V0LWxpbmtcIiAoY2xpY2spPVwicmVzZXRBbmRDbG9zZSgpXCI+UmVzZXQ8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1yaWdodFwiPlxuICAgICAgICA8cC1jYWxlbmRhciBbKG5nTW9kZWwpXT1cIm1vZGVsRGF0ZVwiIFtzZWxlY3Rpb25Nb2RlXT1cIidyYW5nZSdcIiBbaW5saW5lXT1cInRydWVcIiBbZGF0ZUZvcm1hdF09XCInbW0vZGQveXl5eSdcIiBbc2hvd090aGVyTW9udGhzXT1cInRydWVcIiBbbG9jYWxlXT1cImVuTG9jYWxlXCIgW3Nob3dJY29uXT1cImZhbHNlXCIgW3N0eWxlQ2xhc3NdPVwiJ2F0b21peC1vdmVybGF5LWNhbGVuZGFyJ1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFttYXhEYXRlXT1cIm1heERhdGVcIiBbbWluRGF0ZV09XCJtaW5EYXRlXCI+PC9wLWNhbGVuZGFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -49,11 +49,11 @@ export class AtomixInputComponent {
|
|
|
49
49
|
this.inputEl?.nativeElement?.focus();
|
|
50
50
|
}
|
|
51
51
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AtomixInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AtomixInputComponent, selector: "atomix-input", inputs: { value: "value", name: "name", type: "type", placeholder: "placeholder", withSearchIcon: "withSearchIcon", searchIconPosition: "searchIconPosition", iconName: "iconName", containerClass: "containerClass", class: "class", disabled: "disabled", isCrossRequired: "isCrossRequired", label: "label", isLabelRequired: "isLabelRequired", autofocus: "autofocus" }, outputs: { valueChange: "valueChange", changeValueHandler: "changeValueHandler" }, viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }], ngImport: i0, template: "<label *ngIf=\"label\" for=\"name\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span></label\n>\n\n<i\n class=\"pi pi-search search-icon\"\n [ngClass]=\"(searchIconPosition === 'left' ? 'search-icon-left' : 'search-icon-right') + (label ? ' with-label' : '')\"\n *ngIf=\"withSearchIcon\"\n></i>\n\n<input\n [id]=\"name\"\n type=\"text\"\n pInputText\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n [ngClass]=\"class + ' lib-input-field' + (withSearchIcon ? ' with-search-icon-' + searchIconPosition : '') + (isCrossRequired ? ' with-cross-icon' : '')\"\n autocomplete=\"new-password\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n #inputEl\n/>\n<i\n class=\"pi pi-times filter-dropdown-icon\"\n [ngClass]=\"(searchIconPosition === 'right' ? 'filter-dropdown-icon-left' : '') + (label ? ' with-label' : '')\"\n style=\"cursor: pointer\"\n (click)=\"clearValue()\"\n *ngIf=\"isCrossRequired && value !== ''\"\n\n></i>\n", styles: [".lib-error-asterisk{color:red}.filter-dropdown-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d}.filter-dropdown-icon-left{right:40px}.search-icon.with-label,.filter-dropdown-icon.with-label{top:88%}.search-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;color:#000000de;font-size:1rem}.search-icon-left{left:10px}.search-icon-right{right:10px}.with-search-icon-left{padding-left:30px}.with-search-icon-right{padding-right:60px}::ng-deep .lib-input-field{border-radius:30px
|
|
52
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AtomixInputComponent, selector: "atomix-input", inputs: { value: "value", name: "name", type: "type", placeholder: "placeholder", withSearchIcon: "withSearchIcon", searchIconPosition: "searchIconPosition", iconName: "iconName", containerClass: "containerClass", class: "class", disabled: "disabled", isCrossRequired: "isCrossRequired", label: "label", isLabelRequired: "isLabelRequired", autofocus: "autofocus" }, outputs: { valueChange: "valueChange", changeValueHandler: "changeValueHandler" }, viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }], ngImport: i0, template: "<label *ngIf=\"label\" for=\"name\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span></label\n>\n\n<i\n class=\"pi pi-search search-icon\"\n [ngClass]=\"(searchIconPosition === 'left' ? 'search-icon-left' : 'search-icon-right') + (label ? ' with-label' : '')\"\n *ngIf=\"withSearchIcon\"\n (click)=\"onEnter()\"\n></i>\n\n<input\n [id]=\"name\"\n type=\"text\"\n pInputText\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n [ngClass]=\"class + ' lib-input-field' + (withSearchIcon ? ' with-search-icon-' + searchIconPosition : '') + (isCrossRequired ? ' with-cross-icon' : '')\"\n autocomplete=\"new-password\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n #inputEl\n/>\n<i\n class=\"pi pi-times filter-dropdown-icon\"\n [ngClass]=\"(withSearchIcon && searchIconPosition === 'right' ? 'filter-dropdown-icon-left' : '') + (label ? ' with-label' : '')\"\n style=\"cursor: pointer\"\n (click)=\"clearValue()\"\n *ngIf=\"isCrossRequired && value !== ''\"\n\n></i>\n", styles: [".lib-error-asterisk{color:red}.filter-dropdown-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d}.filter-dropdown-icon-left{right:40px}.search-icon.with-label,.filter-dropdown-icon.with-label{top:88%}.search-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;color:#000000de;font-size:1rem}.search-icon-left{left:10px}.search-icon-right{right:10px}.with-search-icon-left{padding-left:30px;padding-right:30px}.with-search-icon-right{padding-right:60px}::ng-deep .lib-input-field{border-radius:30px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.InputText, selector: "[pInputText]", inputs: ["variant"] }] });
|
|
53
53
|
}
|
|
54
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AtomixInputComponent, decorators: [{
|
|
55
55
|
type: Component,
|
|
56
|
-
args: [{ selector: 'atomix-input', template: "<label *ngIf=\"label\" for=\"name\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span></label\n>\n\n<i\n class=\"pi pi-search search-icon\"\n [ngClass]=\"(searchIconPosition === 'left' ? 'search-icon-left' : 'search-icon-right') + (label ? ' with-label' : '')\"\n *ngIf=\"withSearchIcon\"\n></i>\n\n<input\n [id]=\"name\"\n type=\"text\"\n pInputText\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n [ngClass]=\"class + ' lib-input-field' + (withSearchIcon ? ' with-search-icon-' + searchIconPosition : '') + (isCrossRequired ? ' with-cross-icon' : '')\"\n autocomplete=\"new-password\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n #inputEl\n/>\n<i\n class=\"pi pi-times filter-dropdown-icon\"\n [ngClass]=\"(searchIconPosition === 'right' ? 'filter-dropdown-icon-left' : '') + (label ? ' with-label' : '')\"\n style=\"cursor: pointer\"\n (click)=\"clearValue()\"\n *ngIf=\"isCrossRequired && value !== ''\"\n\n></i>\n", styles: [".lib-error-asterisk{color:red}.filter-dropdown-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d}.filter-dropdown-icon-left{right:40px}.search-icon.with-label,.filter-dropdown-icon.with-label{top:88%}.search-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;color:#000000de;font-size:1rem}.search-icon-left{left:10px}.search-icon-right{right:10px}.with-search-icon-left{padding-left:30px}.with-search-icon-right{padding-right:60px}::ng-deep .lib-input-field{border-radius:30px
|
|
56
|
+
args: [{ selector: 'atomix-input', template: "<label *ngIf=\"label\" for=\"name\"\n >{{ label }}\n <span *ngIf=\"isLabelRequired\" class=\"lib-error-asterisk\">*</span></label\n>\n\n<i\n class=\"pi pi-search search-icon\"\n [ngClass]=\"(searchIconPosition === 'left' ? 'search-icon-left' : 'search-icon-right') + (label ? ' with-label' : '')\"\n *ngIf=\"withSearchIcon\"\n (click)=\"onEnter()\"\n></i>\n\n<input\n [id]=\"name\"\n type=\"text\"\n pInputText\n [value]=\"value\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n [ngClass]=\"class + ' lib-input-field' + (withSearchIcon ? ' with-search-icon-' + searchIconPosition : '') + (isCrossRequired ? ' with-cross-icon' : '')\"\n autocomplete=\"new-password\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n #inputEl\n/>\n<i\n class=\"pi pi-times filter-dropdown-icon\"\n [ngClass]=\"(withSearchIcon && searchIconPosition === 'right' ? 'filter-dropdown-icon-left' : '') + (label ? ' with-label' : '')\"\n style=\"cursor: pointer\"\n (click)=\"clearValue()\"\n *ngIf=\"isCrossRequired && value !== ''\"\n\n></i>\n", styles: [".lib-error-asterisk{color:red}.filter-dropdown-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:1;cursor:pointer;color:#6c757d}.filter-dropdown-icon-left{right:40px}.search-icon.with-label,.filter-dropdown-icon.with-label{top:88%}.search-icon{position:absolute;top:50%;transform:translateY(-50%);z-index:1;color:#000000de;font-size:1rem}.search-icon-left{left:10px}.search-icon-right{right:10px}.with-search-icon-left{padding-left:30px;padding-right:30px}.with-search-icon-right{padding-right:60px}::ng-deep .lib-input-field{border-radius:30px}\n"] }]
|
|
57
57
|
}], propDecorators: { inputEl: [{
|
|
58
58
|
type: ViewChild,
|
|
59
59
|
args: ['inputEl']
|
|
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
90
90
|
}], changeValueHandler: [{
|
|
91
91
|
type: Output
|
|
92
92
|
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWl4LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW1la2l0L3NyYy9saWIvbGliL2F0b21peC1pbnB1dC9hdG9taXgtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbWVraXQvc3JjL2xpYi9saWIvYXRvbWl4LWlucHV0L2F0b21peC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU85RixNQUFNLE9BQU8sb0JBQW9CO0lBRVQsT0FBTyxDQUFnQztJQUNwRCxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLElBQUksR0FBVyxFQUFFLENBQUM7SUFDbEIsSUFBSSxHQUFXLE1BQU0sQ0FBQztJQUN0QixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQzFDLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsa0JBQWtCLEdBQXFCLE9BQU8sQ0FBQztJQUMvQyxRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFDaEMsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2hDLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0Isa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUV4RCxlQUFlO1FBQ2YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsZ0RBQWdEO1lBQ2hELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBWTtRQUN4QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFDQyxLQUFLO1FBQ0wsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQzt3R0FoRFUsb0JBQW9COzRGQUFwQixvQkFBb0IseWxCQ1BqQyxza0NBa0NBOzs0RkQzQmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGNBQWM7OEJBTUYsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNYLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXRvbWl4LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F0b21peC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F0b21peC1pbnB1dC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEF0b21peElucHV0Q29tcG9uZW50IHtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsJykgaW5wdXRFbCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQElucHV0KCkgd2l0aFNlYXJjaEljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VhcmNoSWNvblBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcbiAgQElucHV0KCkgaWNvbk5hbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNDcm9zc1JlcXVpcmVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpc0xhYmVsUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgIEBJbnB1dCgpIGF1dG9mb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2hhbmdlVmFsdWVIYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XG4gICAgICAvLyBUaW1lb3V0IGVuc3VyZXMgaW5wdXQgaXMgYXZhaWxhYmxlIGluIHRoZSBET01cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbnB1dEVsPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpKTtcbiAgICB9XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy52YWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgIHRoaXMuY2hhbmdlVmFsdWVIYW5kbGVyLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cbiAgb25FbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cbiAgY2xlYXJWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgdGhpcy5vbkVudGVyKCk7XG4gIH1cbiAgb25TZWFyY2hDbGVhcihldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnJztcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCgnJyk7XG4gICAgfVxuICB9XG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEVsPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICB9XG59XG4iLCI8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIGZvcj1cIm5hbWVcIlxuICA+e3sgbGFiZWwgfX1cbiAgPHNwYW4gKm5nSWY9XCJpc0xhYmVsUmVxdWlyZWRcIiBjbGFzcz1cImxpYi1lcnJvci1hc3Rlcmlza1wiPio8L3NwYW4+PC9sYWJlbFxuPlxuXG48aVxuICBjbGFzcz1cInBpIHBpLXNlYXJjaCBzZWFyY2gtaWNvblwiXG4gIFtuZ0NsYXNzXT1cIihzZWFyY2hJY29uUG9zaXRpb24gPT09ICdsZWZ0JyA/ICdzZWFyY2gtaWNvbi1sZWZ0JyA6ICdzZWFyY2gtaWNvbi1yaWdodCcpICsgKGxhYmVsID8gJyB3aXRoLWxhYmVsJyA6ICcnKVwiXG4gICpuZ0lmPVwid2l0aFNlYXJjaEljb25cIlxuICAoY2xpY2spPVwib25FbnRlcigpXCJcbj48L2k+XG5cbjxpbnB1dFxuICBbaWRdPVwibmFtZVwiXG4gIHR5cGU9XCJ0ZXh0XCJcbiAgcElucHV0VGV4dFxuICBbdmFsdWVdPVwidmFsdWVcIlxuICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyKClcIlxuICBbbmdDbGFzc109XCJjbGFzcyArICcgbGliLWlucHV0LWZpZWxkJyArICh3aXRoU2VhcmNoSWNvbiA/ICcgd2l0aC1zZWFyY2gtaWNvbi0nICsgc2VhcmNoSWNvblBvc2l0aW9uIDogJycpICsgKGlzQ3Jvc3NSZXF1aXJlZCA/ICcgd2l0aC1jcm9zcy1pY29uJyA6ICcnKVwiXG4gIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFt0eXBlXT1cInR5cGVcIlxuICAjaW5wdXRFbFxuLz5cbjxpXG4gIGNsYXNzPVwicGkgcGktdGltZXMgZmlsdGVyLWRyb3Bkb3duLWljb25cIlxuICBbbmdDbGFzc109XCIod2l0aFNlYXJjaEljb24gJiYgc2VhcmNoSWNvblBvc2l0aW9uID09PSAncmlnaHQnID8gJ2ZpbHRlci1kcm9wZG93bi1pY29uLWxlZnQnIDogJycpICsgKGxhYmVsID8gJyB3aXRoLWxhYmVsJyA6ICcnKVwiXG4gIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiXG4gICpuZ0lmPVwiaXNDcm9zc1JlcXVpcmVkICYmIHZhbHVlICE9PSAnJ1wiXG5cbj48L2k+XG4iXX0=
|