@coreui/angular-pro 4.2.40 → 4.2.42
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/esm2020/lib/calendar/calendar.service.mjs +3 -5
- package/esm2020/lib/calendar/calendar.utils.mjs +9 -6
- package/esm2020/lib/date-picker/date-picker.component.mjs +5 -4
- package/esm2020/lib/date-picker/public_api.mjs +1 -1
- package/esm2020/lib/date-range-picker/date-range-picker/custom-range-key.pipe.mjs +16 -0
- package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +51 -26
- package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +10 -5
- package/esm2020/lib/date-range-picker/date-range-picker.type.mjs +2 -0
- package/esm2020/lib/date-range-picker/public_api.mjs +2 -1
- package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +3 -3
- package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +9 -4
- package/esm2020/lib/smart-table/smart-table-head/smart-table-column-label.pipe.mjs +25 -0
- package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +22 -22
- package/esm2020/lib/smart-table/smart-table.module.mjs +6 -3
- package/esm2020/lib/table/table.type.mjs +1 -1
- package/esm2020/lib/time-picker/time.utils.mjs +13 -13
- package/fesm2015/coreui-angular-pro.mjs +280 -208
- package/fesm2015/coreui-angular-pro.mjs.map +1 -1
- package/fesm2020/coreui-angular-pro.mjs +277 -204
- package/fesm2020/coreui-angular-pro.mjs.map +1 -1
- package/lib/calendar/calendar.utils.d.ts +1 -1
- package/lib/date-picker/public_api.d.ts +0 -1
- package/lib/date-range-picker/date-range-picker/custom-range-key.pipe.d.ts +8 -0
- package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +9 -9
- package/lib/date-range-picker/date-range-picker.module.d.ts +10 -9
- package/lib/date-range-picker/date-range-picker.type.d.ts +4 -0
- package/lib/date-range-picker/public_api.d.ts +3 -1
- package/lib/smart-table/smart-table/smart-table.component.d.ts +4 -0
- package/lib/smart-table/smart-table-head/smart-table-column-label.pipe.d.ts +9 -0
- package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +5 -6
- package/lib/smart-table/smart-table.module.d.ts +18 -17
- package/lib/table/table.type.d.ts +8 -5
- package/lib/time-picker/time.utils.d.ts +11 -11
- package/package.json +1 -2
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
var _DateRangePickerComponent_closeOnSelect;
|
|
1
|
+
var _DateRangePickerComponent_closeOnSelect, _DateRangePickerComponent_breakpoints;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { Component, ContentChildren, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
4
|
+
import { formatDate } from '@angular/common';
|
|
4
5
|
import { FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
|
|
5
6
|
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
6
|
-
import {
|
|
7
|
-
import { format as dateFormat } from 'date-fns';
|
|
8
|
-
import { getLocalDateFromString, isDateDisabled } from '../../calendar/calendar.utils';
|
|
7
|
+
import { getLocalDateFromString, isDateDisabled, isValidDate } from '../../calendar/calendar.utils';
|
|
9
8
|
import { TemplateIdDirective } from '../../shared';
|
|
10
9
|
import * as i0 from "@angular/core";
|
|
11
10
|
import * as i1 from "@angular/cdk/layout";
|
|
@@ -19,6 +18,7 @@ import * as i8 from "../../form/input-group-text/input-group-text.directive";
|
|
|
19
18
|
import * as i9 from "../../dropdown/dropdown/dropdown.component";
|
|
20
19
|
import * as i10 from "../../dropdown/dropdown-menu/dropdown-menu.directive";
|
|
21
20
|
import * as i11 from "../../time-picker/time-picker.component";
|
|
21
|
+
import * as i12 from "./custom-range-key.pipe";
|
|
22
22
|
/** Must be a valid date string */
|
|
23
23
|
// todo: validation
|
|
24
24
|
// export function invalidDateStringValidator(locale: string): ValidatorFn {
|
|
@@ -60,6 +60,11 @@ export class DateRangePickerComponent {
|
|
|
60
60
|
* @default 'secondary'
|
|
61
61
|
*/
|
|
62
62
|
this.rangesButtonsColor = 'secondary';
|
|
63
|
+
/**
|
|
64
|
+
* Size the ranges button small or large.
|
|
65
|
+
* @type 'sm' | 'lg' | ''
|
|
66
|
+
*/
|
|
67
|
+
this.rangesButtonsSize = '';
|
|
63
68
|
/**
|
|
64
69
|
* Set the ranges button variant to an outlined button or a ghost button.
|
|
65
70
|
* @type 'outline' | 'ghost' | undefined
|
|
@@ -99,8 +104,9 @@ export class DateRangePickerComponent {
|
|
|
99
104
|
this.templates = {};
|
|
100
105
|
this.dateChangeSubscriptions = [];
|
|
101
106
|
this.isMobile = true;
|
|
102
|
-
this.
|
|
103
|
-
this.
|
|
107
|
+
this.showRanges = false;
|
|
108
|
+
this._startDateValue = this.formatDate(this.startDate);
|
|
109
|
+
this._endDateValue = this.formatDate(this.endDate);
|
|
104
110
|
// todo: validation
|
|
105
111
|
this.startDateInput = new FormControl({ value: this.startDateValue, disabled: this.disabled }, [
|
|
106
112
|
Validators.required
|
|
@@ -114,11 +120,16 @@ export class DateRangePickerComponent {
|
|
|
114
120
|
// Validators.maxLength(10),
|
|
115
121
|
// invalidDateStringValidator(this.locale)
|
|
116
122
|
]);
|
|
123
|
+
_DateRangePickerComponent_breakpoints.set(this, {
|
|
124
|
+
OneCalendarRanges: '(min-width: 480px)',
|
|
125
|
+
TwoCalendars: '(max-width: 650px)',
|
|
126
|
+
TwoCalendarsRanges: '(max-width: 810px)'
|
|
127
|
+
});
|
|
117
128
|
this.setInputValue = (elementRef, date) => {
|
|
118
129
|
if (!elementRef) {
|
|
119
130
|
return;
|
|
120
131
|
}
|
|
121
|
-
elementRef.nativeElement.value =
|
|
132
|
+
elementRef.nativeElement.value = this.formatDate(date);
|
|
122
133
|
// elementRef.nativeElement.valueAsDate = date;
|
|
123
134
|
return;
|
|
124
135
|
};
|
|
@@ -229,6 +240,7 @@ export class DateRangePickerComponent {
|
|
|
229
240
|
const prevDate = this._startDate ? new Date(this._startDate) : null;
|
|
230
241
|
this._startDate = value ? new Date(value) : null;
|
|
231
242
|
if (prevDate?.getTime() !== this._startDate?.getTime()) {
|
|
243
|
+
this.startDateValue = this.formatDate(this._startDate);
|
|
232
244
|
this.startDateChange.emit(this._startDate);
|
|
233
245
|
}
|
|
234
246
|
}
|
|
@@ -239,6 +251,7 @@ export class DateRangePickerComponent {
|
|
|
239
251
|
const prevDate = this._endDate ? new Date(this._endDate ?? 0) : null;
|
|
240
252
|
this._endDate = value ? new Date(value) : null;
|
|
241
253
|
if (prevDate?.getTime() !== this._endDate?.getTime()) {
|
|
254
|
+
this.endDateValue = this.formatDate(this._endDate);
|
|
242
255
|
this.endDateChange.emit(this._endDate);
|
|
243
256
|
}
|
|
244
257
|
}
|
|
@@ -313,7 +326,7 @@ export class DateRangePickerComponent {
|
|
|
313
326
|
return;
|
|
314
327
|
}
|
|
315
328
|
this.dateChangeSubscriptions.forEach(subscription => {
|
|
316
|
-
subscription
|
|
329
|
+
subscription?.unsubscribe();
|
|
317
330
|
});
|
|
318
331
|
}
|
|
319
332
|
onBlur() {
|
|
@@ -360,26 +373,32 @@ export class DateRangePickerComponent {
|
|
|
360
373
|
};
|
|
361
374
|
}
|
|
362
375
|
formatDate(date) {
|
|
363
|
-
return
|
|
364
|
-
?
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
: date.toLocaleDateString(this.locale);
|
|
376
|
+
return !date || !isValidDate(date) ? '' :
|
|
377
|
+
this.format ? formatDate(date, this.format, this.locale) :
|
|
378
|
+
this.timepicker ? date.toLocaleString(this.locale) :
|
|
379
|
+
date.toLocaleDateString(this.locale);
|
|
368
380
|
}
|
|
369
381
|
ngOnInit() {
|
|
382
|
+
this.customRanges = this.ranges ? Object.entries(this.ranges) : [];
|
|
383
|
+
const breakpoints = __classPrivateFieldGet(this, _DateRangePickerComponent_breakpoints, "f");
|
|
370
384
|
this.layoutChanges = this.breakpointObserver.observe([
|
|
371
|
-
|
|
372
|
-
|
|
385
|
+
breakpoints.OneCalendarRanges,
|
|
386
|
+
breakpoints.TwoCalendars,
|
|
387
|
+
breakpoints.TwoCalendarsRanges
|
|
373
388
|
]).subscribe(result => {
|
|
374
|
-
|
|
389
|
+
if (result.matches) {
|
|
390
|
+
this.isMobile = (this.customRanges?.length > 0 && result.breakpoints[breakpoints.TwoCalendarsRanges]) || result.breakpoints[breakpoints.TwoCalendars];
|
|
391
|
+
if (this.customRanges?.length > 0) {
|
|
392
|
+
this.showRanges = !result.breakpoints[breakpoints.OneCalendarRanges];
|
|
393
|
+
}
|
|
394
|
+
}
|
|
375
395
|
});
|
|
376
|
-
this.
|
|
377
|
-
this.
|
|
378
|
-
this.endDateValue = this.endDate?.toLocaleDateString(this.locale) ?? '';
|
|
396
|
+
this.startDateValue = this.formatDate(this.startDate);
|
|
397
|
+
this.endDateValue = this.formatDate(this.endDate);
|
|
379
398
|
this.subscribeDateChange();
|
|
380
399
|
}
|
|
381
400
|
ngOnDestroy() {
|
|
382
|
-
this.layoutChanges
|
|
401
|
+
this.layoutChanges?.unsubscribe();
|
|
383
402
|
this.subscribeDateChange(false);
|
|
384
403
|
}
|
|
385
404
|
ngAfterViewInit() {
|
|
@@ -405,6 +424,10 @@ export class DateRangePickerComponent {
|
|
|
405
424
|
const date = this.convertValueToDate(changes['endDate']?.currentValue) ?? null;
|
|
406
425
|
this.handleEndDateChange(date);
|
|
407
426
|
}
|
|
427
|
+
if (changes['locale']) {
|
|
428
|
+
this.startDateValue = this.formatDate(this.startDate);
|
|
429
|
+
this.endDateValue = this.formatDate(this.endDate);
|
|
430
|
+
}
|
|
408
431
|
}
|
|
409
432
|
convertValueToDate(value) {
|
|
410
433
|
if (!value) {
|
|
@@ -428,6 +451,8 @@ export class DateRangePickerComponent {
|
|
|
428
451
|
if (!this.startDate) {
|
|
429
452
|
this.setInputValue(this.startDateElementRef, $event);
|
|
430
453
|
this.inputStartHoverValue = $event;
|
|
454
|
+
this.setInputValue(this.endDateElementRef, null);
|
|
455
|
+
this.inputEndHoverValue = null;
|
|
431
456
|
return;
|
|
432
457
|
}
|
|
433
458
|
if (!this.endDate) {
|
|
@@ -444,7 +469,7 @@ export class DateRangePickerComponent {
|
|
|
444
469
|
handleStartDateChange(date) {
|
|
445
470
|
if (date?.getTime() !== this.startDate?.getTime()) {
|
|
446
471
|
this.startDate = date ?? null;
|
|
447
|
-
this.startDateValue =
|
|
472
|
+
this.startDateValue = this.formatDate(this.startDate);
|
|
448
473
|
this.inputStartHoverValue = null;
|
|
449
474
|
this.value = this.range ? { startDate: this.startDate, endDate: this.endDate } : this.startDate;
|
|
450
475
|
}
|
|
@@ -455,7 +480,7 @@ export class DateRangePickerComponent {
|
|
|
455
480
|
return;
|
|
456
481
|
}
|
|
457
482
|
this.endDate = date ?? null;
|
|
458
|
-
this.endDateValue =
|
|
483
|
+
this.endDateValue = this.formatDate(this.endDate);
|
|
459
484
|
this.inputEndHoverValue = null;
|
|
460
485
|
this.value = this.range ? { startDate: this.startDate, endDate: this.endDate } : this.startDate;
|
|
461
486
|
}
|
|
@@ -520,7 +545,7 @@ export class DateRangePickerComponent {
|
|
|
520
545
|
this.endDate = time ?? this.endDate;
|
|
521
546
|
}
|
|
522
547
|
}
|
|
523
|
-
_DateRangePickerComponent_closeOnSelect = new WeakMap();
|
|
548
|
+
_DateRangePickerComponent_closeOnSelect = new WeakMap(), _DateRangePickerComponent_breakpoints = new WeakMap();
|
|
524
549
|
DateRangePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DateRangePickerComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
525
550
|
DateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DateRangePickerComponent, selector: "c-date-range-picker", inputs: { dayFormat: "dayFormat", calendars: "calendars", cleaner: "cleaner", closeOnSelect: "closeOnSelect", format: "format", indicator: "indicator", inputReadOnly: "inputReadOnly", navYearFirst: "navYearFirst", placeholder: "placeholder", ranges: "ranges", rangesButtonsColor: "rangesButtonsColor", rangesButtonsSize: "rangesButtonsSize", rangesButtonsVariant: "rangesButtonsVariant", separator: "separator", size: "size", timepicker: "timepicker", valid: "valid", visible: "visible", startDate: "startDate", endDate: "endDate", calendarDate: "calendarDate", disabledDates: "disabledDates", firstDayOfWeek: "firstDayOfWeek", locale: "locale", maxDate: "maxDate", minDate: "minDate", navigation: "navigation", range: "range", dateFilter: "dateFilter", disabled: "disabled", value: "value", weekdayFormat: "weekdayFormat", popperjsOptions: ["popperOptions", "popperjsOptions"] }, outputs: { valueChange: "valueChange", calendarCellHover: "calendarCellHover", calendarDateChange: "calendarDateChange", endDateChange: "endDateChange", startDateChange: "startDateChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
|
|
526
551
|
{
|
|
@@ -528,7 +553,7 @@ DateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0
|
|
|
528
553
|
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
529
554
|
multi: true
|
|
530
555
|
}
|
|
531
|
-
], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "startDateElementRef", first: true, predicate: ["startDateElementRef"], descendants: true }, { propertyName: "endDateElementRef", first: true, predicate: ["endDateElementRef"], descendants: true }], exportAs: ["cDateRangePicker"], usesOnChanges: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!
|
|
556
|
+
], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "startDateElementRef", first: true, predicate: ["startDateElementRef"], descendants: true }, { propertyName: "endDateElementRef", first: true, predicate: ["endDateElementRef"], descendants: true }], exportAs: ["cDateRangePicker"], usesOnChanges: true, ngImport: i0, template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!showRanges\">\n <div *ngIf=\"ranges && customRanges.length > 0\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{customRange | customRangeKey}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: i5.CalendarComponent, selector: "c-calendar", inputs: ["calendarDate", "calendars", "dayFormat", "disabledDates", "startDate", "endDate", "firstDayOfWeek", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "range", "view", "weekdayFormat", "dateFilter"], outputs: ["calendarCellHover", "calendarDateChange", "endDateChange", "startDateChange", "viewChange"], exportAs: ["cCalendar"] }, { kind: "directive", type: i6.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "component", type: i7.InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: i8.InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "component", type: i9.DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: i9.DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: i10.DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "component", type: i11.TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "pipe", type: i12.CustomRangeKeyPipe, name: "customRangeKey" }] });
|
|
532
557
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
533
558
|
type: Component,
|
|
534
559
|
args: [{ selector: 'c-date-range-picker', exportAs: 'cDateRangePicker', providers: [
|
|
@@ -537,7 +562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
537
562
|
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
538
563
|
multi: true
|
|
539
564
|
}
|
|
540
|
-
], template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!
|
|
565
|
+
], template: "<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"date-picker picker\" [ngClass]=\"datePickerClasses\" [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\"\n >\n <input (change)=\"handleStartDateInputChange($event)\"\n [formControl]=\"startDateInput\"\n [ngClass]=\"{hover: !!inputStartHoverValue}\"\n [placeholder]=\"startDatePlaceholder ?? placeholder[0]\"\n cFormControl\n #startDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"range ? undefined : valid\"\n >\n <span *ngIf=\"range && separator !== false\" cInputGroupText>\n <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n </span>\n <input (change)=\"handleEndDateInputChange($event)\"\n *ngIf=\"range\"\n [formControl]=\"endDateInput\"\n [ngClass]=\"{hover: !!inputEndHoverValue}\"\n [placeholder]=\"endDatePlaceholder ?? placeholder[1]\"\n cFormControl\n #endDateElementRef\n [attr.tabindex]=\"disabled ? -1 : 0\"\n pattern=\"[1-9]*\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon date-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && startDateElementRef.value && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon date-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu>\n <div class=\"date-picker-body\">\n <ng-template [ngIf]=\"!showRanges\">\n <div *ngIf=\"ranges && customRanges.length > 0\" class=\"date-picker-ranges\">\n <button (click)=\"setCustomRange(customRange)\"\n *ngFor=\"let customRange of customRanges\"\n [color]=\"rangesButtonsColor\"\n [size]=\"rangesButtonsSize\"\n [variant]=\"rangesButtonsVariant\"\n cButton>\n {{customRange | customRangeKey}}\n </button>\n </div>\n </ng-template>\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars\"\n [dateFilter]=\"dateFilter\"\n [disabledDates]=\"disabledDates\"\n [endDate]=\"endDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [locale]=\"locale\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [navigation]=\"navigation\"\n [range]=\"range\"\n [startDate]=\"startDate\"\n [navYearFirst]=\"navYearFirst\"\n [dayFormat]=\"dayFormat\"\n [weekdayFormat]=\"weekdayFormat\"\n class=\"date-picker-calendars\"\n ></c-calendar>\n <div *ngIf=\"false && timepicker\" class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!startDate\"\n [time]=\"startDate ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n ></c-time-picker>\n <c-time-picker\n *ngIf=\"range\"\n variant=\"select\"\n [locale]=\"locale\"\n [disabled]=\"!endDate\"\n [time]=\"endDate ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n ></c-time-picker>\n </div>\n </div>\n <div *ngIf=\"templates?.datePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n <ng-content></ng-content>\n</c-dropdown>\n" }]
|
|
541
566
|
}], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; }, propDecorators: { dayFormat: [{
|
|
542
567
|
type: Input
|
|
543
568
|
}], calendars: [{
|
|
@@ -628,4 +653,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
628
653
|
type: HostListener,
|
|
629
654
|
args: ['blur']
|
|
630
655
|
}] } });
|
|
631
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQWEsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0csT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xHLE9BQU8sRUFBc0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEUsT0FBTyxFQUFFLE1BQU0sSUFBSSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuRCxrQ0FBa0M7QUFDbEMsbUJBQW1CO0FBQ25CLDRFQUE0RTtBQUM1RSxvRUFBb0U7QUFDcEUsOERBQThEO0FBQzlELGtEQUFrRDtBQUNsRCx1REFBdUQ7QUFDdkQsb0JBQW9CO0FBQ3BCLGlGQUFp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QkFRRixPQUFPO3NCQURWLEtBQUs7Z0JBWUYsU0FBUztzQkFEWixLQUFLO2dCQWdCRixPQUFPO3NCQURWLEtBQUs7Z0JBZUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBV0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsVUFBVTtzQkFEYixLQUFLO2dCQWlCRixLQUFLO3NCQURSLEtBQUs7Z0JBV0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBY0YsS0FBSztzQkFEUixLQUFLO2dCQWdDRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1rQixlQUFlO3NCQUF0QyxLQUFLO3VCQUFDLGVBQWU7Z0JBSUgsV0FBVztzQkFBN0IsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFHMkIsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDQSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUcrQixnQkFBZ0I7c0JBQTVFLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQXNCckMsTUFBTTtzQkFBM0IsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZm9ybWF0IGFzIGRhdGVGb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xuXG5pbXBvcnQgeyBDb2xvcnMgfSBmcm9tICcuLi8uLi9jb3JldWkudHlwZXMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxEYXRlRnJvbVN0cmluZywgaXNEYXRlRGlzYWJsZWQgfSBmcm9tICcuLi8uLi9jYWxlbmRhci9jYWxlbmRhci51dGlscyc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyVHlwZSwgRGF5Rm9ybWF0VHlwZSwgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi8uLi9jYWxlbmRhci9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IFRlbXBsYXRlSWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDYWxlbmRhclJhbmdlcyB7XG4gIFtrZXk6IHN0cmluZ106IERhdGVbXTtcbn1cblxuZXhwb3J0IHR5cGUgVEN1c3RvbVJhbmdlID0gW3N0cmluZywgRGF0ZVtdXVxuXG4vKiogTXVzdCBiZSBhIHZhbGlkIGRhdGUgc3RyaW5nICovXG4vLyB0b2RvOiB2YWxpZGF0aW9uXG4vLyBleHBvcnQgZnVuY3Rpb24gaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3IobG9jYWxlOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4vLyAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuLy8gICAgIC8vIGNvbnN0IHZhbGlkRGF0ZSA9ICFpc05hTihEYXRlLnBhcnNlKGNvbnRyb2wudmFsdWUpKTtcbi8vICAgICBzdHJpbmdUb0RhdGVDb252ZXJ0KGNvbnRyb2wudmFsdWUsIGxvY2FsZSk7XG4vLyAgICAgY29uc3QgZGF0ZVNoaW0gPSBjdnREYXRlKGNvbnRyb2wudmFsdWUsIGxvY2FsZSk7XG4vLyAgICAgLy8gQHRzLWlnbm9yZVxuLy8gICAgIC8vIGNvbnRyb2wuc2V0VmFsdWUobmV3IERhdGUoZGF0ZVNoaW0ueWVhciwgZGF0ZVNoaW0ubW9udGgsIGRhdGVTaGltLmRheSkpXG4vLyAgICAgY29uc29sZS5sb2coJ2RhdGVTaGltJywgZGF0ZVNoaW0sIGxvY2FsZSk7XG4vLyAgICAgY29uc3QgdmFsaWREYXRlID0gaXNWYWxpZERhdGUoY29udHJvbC52YWx1ZSk7XG4vLyAgICAgY29uc29sZS5sb2coJ2ludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yJywgY29udHJvbCwgY29udHJvbC52YWx1ZSwgdmFsaWREYXRlKTtcbi8vICAgICByZXR1cm4gdmFsaWREYXRlID8geyBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcjogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH0gOiBudWxsO1xuLy8gICB9O1xuLy8gfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjRGF0ZVJhbmdlUGlja2VyJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9jbG9zZU9uU2VsZWN0OiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbmF2WWVhckZpcnN0OiBCb29sZWFuSW5wdXQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlclxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQGRlZmF1bHQgJ251bWVyaWMnXG4gICAqIEB0eXBlIERheUZvcm1hdFR5cGVcbiAgICovXG4gIEBJbnB1dCgpIGRheUZvcm1hdDogRGF5Rm9ybWF0VHlwZSA9ICdudW1lcmljJztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjYWxlbmRhcnMgdGhhdCByZW5kZXIgb24gZGVza3RvcCBkZXZpY2VzLlxuICAgKiBAdHlwZSBudW1iZXJcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNhbGVuZGFycyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fY2FsZW5kYXJzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGNhbGVuZGFycygpIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJzOiBudW1iZXIgPSAyO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzaWJpbGl0eSBvciBzZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGNsZWFuZXIgYnV0dG9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjbGVhbmVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xlYW5lciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgY2xlYW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xlYW5lcjtcbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFuZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgdGhlIGRyb3Bkb3duIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgdmFsdWUgc2V0dGluZy5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNsb3NlT25TZWxlY3QodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiNjbG9zZU9uU2VsZWN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBjbG9zZU9uU2VsZWN0KCkge1xuICAgIHJldHVybiB0aGlzLiNjbG9zZU9uU2VsZWN0O1xuICB9XG5cbiAgI2Nsb3NlT25TZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2V0IGRhdGUgZm9ybWF0LlxuICAgKiBXZSB1c2UgZGF0ZS1mbnMgdG8gZm9ybWF0IGRhdGVzLiBWaXNpdCBodHRwczovL2RhdGUtZm5zLm9yZy92Mi4yOC4wL2RvY3MvZm9ybWF0IHRvIGNoZWNrIGFjY2VwdGVkIHBhdHRlcm5zLlxuICAgKi9cbiAgQElucHV0KClcbiAgZm9ybWF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzaWJpbGl0eSBvciBzZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGlucHV0IGluZGljYXRvci5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaW5kaWNhdG9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5kaWNhdG9yID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbmRpY2F0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZGljYXRvcjtcbiAgfVxuXG4gIHByaXZhdGUgX2luZGljYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgcmVhZG9ubHkgc3RhdGUgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbnB1dFJlYWRPbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5wdXRSZWFkT25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgaW5wdXRSZWFkT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRSZWFkT25seSB8fCB0eXBlb2YgdGhpcy5mb3JtYXQgPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5wdXRSZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBSZW9yZGVyIHllYXItbW9udGggbmF2aWdhdGlvbiwgYW5kIHJlbmRlciB5ZWFyIGZpcnN0LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbmF2WWVhckZpcnN0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbmF2WWVhckZpcnN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBuYXZZZWFyRmlyc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hdlllYXJGaXJzdDtcbiAgfVxuXG4gIHByaXZhdGUgX25hdlllYXJGaXJzdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgc2hvcnQgaGludHMgdGhhdCBhcmUgdmlzaWJsZSBpbiBzdGFydCBkYXRlIGFuZCBlbmQgZGF0ZSBpbnB1dHMuXG4gICAqIHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nIHwgc3RyaW5nW10gPSBbJ1N0YXJ0IGRhdGUnLCAnRW5kIGRhdGUnXTtcblxuICAvKipcbiAgICogUHJlZGVmaW5lZCBkYXRlIHJhbmdlcyB0aGUgdXNlciBjYW4gc2VsZWN0IGZyb20uXG4gICAqIEB0eXBlIElDYWxlbmRhclJhbmdlc1xuICAgKi9cbiAgQElucHV0KCkgcmFuZ2VzPzogb2JqZWN0O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb2xvciBjb250ZXh0IG9mIHRoZSBjYW5jZWwgYnV0dG9uIHRvIG9uZSBvZiBDb3JlVUnigJlzIHRoZW1lZCBjb2xvcnMuXG4gICAqIEB0eXBlICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3N1Y2Nlc3MnIHwgJ2RhbmdlcicgfCAnd2FybmluZycgfCAnaW5mbycgfCAnZGFyaycgfCAnbGlnaHQnIHwgc3RyaW5nXG4gICAqIEBkZWZhdWx0ICdzZWNvbmRhcnknXG4gICAqL1xuICBASW5wdXQoKSByYW5nZXNCdXR0b25zQ29sb3I/OiBDb2xvcnMgPSAnc2Vjb25kYXJ5JztcblxuICAvKipcbiAgICogU2l6ZSB0aGUgcmFuZ2VzIGJ1dHRvbiBzbWFsbCBvciBsYXJnZS5cbiAgICogQHR5cGUgJ3NtJyB8ICdsZycgfCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHJhbmdlc0J1dHRvbnNTaXplPzogJ3NtJyB8ICdsZyc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcmFuZ2VzIGJ1dHRvbiB2YXJpYW50IHRvIGFuIG91dGxpbmVkIGJ1dHRvbiBvciBhIGdob3N0IGJ1dHRvbi5cbiAgICogQHR5cGUgJ291dGxpbmUnIHwgJ2dob3N0JyB8IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgcmFuZ2VzQnV0dG9uc1ZhcmlhbnQ/OiAnb3V0bGluZScgfCAnZ2hvc3QnID0gJ2dob3N0JztcblxuICAvKipcbiAgICogRGVmYXVsdCBpY29uIG9yIGNoYXJhY3RlciB0aGF0IHNlcGFyYXRlcyB0d28gZGF0ZXMuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHNlcGFyYXRvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2VwYXJhdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZXBhcmF0b3I7XG4gIH1cblxuICBwcml2YXRlIF9zZXBhcmF0b3I6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZT86ICdzbScgfCAnbGcnO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGFuIGFkZGl0aW9uYWwgdGltZSBzZWxlY3Rpb24gYnkgYWRkaW5nIHNlbGVjdCBib3hlcyB0byBjaG9vc2UgdGltZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHRpbWVwaWNrZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl90aW1lcGlja2VyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCB0aW1lcGlja2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyByZXR1cm4gdGhpcy5fdGltZXBpY2tlcjtcbiAgfVxuXG4gIHByaXZhdGUgX3RpbWVwaWNrZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc3VhbCB2YWxpZGF0aW9uIGZlZWRiYWNrLlxuICAgKiBAdHlwZSBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgdmFsaWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGRyb3Bkb3duIGRhdGUtcGlja2VyIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl92aXNpYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzdGFydERhdGUodmFsdWUpIHtcbiAgICBjb25zdCBwcmV2RGF0ZSA9IHRoaXMuX3N0YXJ0RGF0ZSA/IG5ldyBEYXRlKHRoaXMuX3N0YXJ0RGF0ZSkgOiBudWxsO1xuICAgIHRoaXMuX3N0YXJ0RGF0ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUpIDogbnVsbDtcbiAgICBpZiAocHJldkRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5fc3RhcnREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlQ2hhbmdlLmVtaXQodGhpcy5fc3RhcnREYXRlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhcnREYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGFydERhdGU7XG4gIH1cblxuICBwcml2YXRlIF9zdGFydERhdGU/OiBEYXRlIHwgbnVsbDtcblxuICBASW5wdXQoKVxuICBzZXQgZW5kRGF0ZSh2YWx1ZSkge1xuICAgIGNvbnN0IHByZXZEYXRlID0gdGhpcy5fZW5kRGF0ZSA/IG5ldyBEYXRlKHRoaXMuX2VuZERhdGUgPz8gMCkgOiBudWxsO1xuICAgIHRoaXMuX2VuZERhdGUgPSB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IG51bGw7XG4gICAgaWYgKHByZXZEYXRlPy5nZXRUaW1lKCkgIT09IHRoaXMuX2VuZERhdGU/LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5lbmREYXRlQ2hhbmdlLmVtaXQodGhpcy5fZW5kRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGVuZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGU7XG4gIH1cblxuICBwcml2YXRlIF9lbmREYXRlPzogRGF0ZSB8IG51bGw7XG5cbiAgQElucHV0KCkgY2FsZW5kYXJEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdIHwgRGF0ZVtdW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzZXQgZmlyc3REYXlPZldlZWsodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCkge1xuICAgIHJldHVybiB0aGlzLl9maXJzdERheU9mV2VlaztcbiAgfVxuXG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSAxO1xuXG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBzZXQgbmF2aWdhdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25hdmlnYXRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb247XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQWxsb3cgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgcmFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yYW5nZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgcmFuZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmFuZ2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGRhdGVGaWx0ZXI/OiBEYXRlRmlsdGVyVHlwZTtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLnN0YXJ0RGF0ZUlucHV0LmRpc2FibGUoKSA6IHRoaXMuc3RhcnREYXRlSW5wdXQuZW5hYmxlKCk7XG4gICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLmVuZERhdGVJbnB1dC5kaXNhYmxlKCkgOiB0aGlzLmVuZERhdGVJbnB1dC5lbmFibGUoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJhbmdlID8geyAuLi52YWx1ZSB9IDogdmFsdWU7XG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuX3ZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobmV3VmFsdWUuc3RhcnREYXRlID8/IG51bGwpO1xuICAgICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobmV3VmFsdWUuZW5kRGF0ZSA/PyBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG5ld1ZhbHVlID8/IG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICBjb25zdCBoYXNWYWx1ZSA9IHRoaXMucmFuZ2UgPyAhISh0aGlzLnZhbHVlLnN0YXJ0RGF0ZSAmJiB0aGlzLnZhbHVlLmVuZERhdGUpIDogISF0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZpc2libGUgPSAhaGFzVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEB0eXBlIFdlZWtkYXlGb3JtYXRUeXBlXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIEBJbnB1dCgpIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcblxuICAvKipcbiAgICogT3B0aW9uYWwgcG9wcGVyIE9wdGlvbnMgb2JqZWN0XG4gICAqIEB0eXBlIFBhcnRpYWw8T3B0aW9ucz5cbiAgICovXG4gIEBJbnB1dCgncG9wcGVyT3B0aW9ucycpIHBvcHBlcmpzT3B0aW9uczogUGFydGlhbDxPcHRpb25zPiA9IHtcbiAgICBzdHJhdGVneTogJ2ZpeGVkJ1xuICB9O1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IERhdGVbXSB8IHVuZGVmaW5lZD4oKTtcblxuICBAT3V0cHV0KCkgY2FsZW5kYXJDZWxsSG92ZXI6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSBlbmREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG5cbiAgLy8gQFZpZXdDaGlsZChDYWxlbmRhckNvbXBvbmVudCkgY2FsZW5kYXJDb21wb25lbnQhOiBDYWxlbmRhckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlRWxlbWVudFJlZicpIHN0YXJ0RGF0ZUVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdlbmREYXRlRWxlbWVudFJlZicpIGVuZERhdGVFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICB0ZW1wbGF0ZXM6IGFueSA9IHt9O1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlSWREaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29udGVudFRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZUlkRGlyZWN0aXZlPjtcblxuICBwcm90ZWN0ZWQgZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmliZURhdGVDaGFuZ2Uoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChzdWJzY3JpYmUpIHtcbiAgICAgIC8vIHRvZG9cbiAgICAgIC8vIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAvLyAgIHRoaXMuc3RhcnREYXRlID0gbmV4dDtcbiAgICAgIC8vICAgdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vIH0pKTtcbiAgICAgIC8vIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAvLyAgIHRoaXMuZW5kRGF0ZSA9IG5leHQ7XG4gICAgICAvLyAgIHRoaXMub25DaGFuZ2UobmV4dCk7XG4gICAgICAvLyB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJykgb25CbHVyKCkge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgaXNNb2JpbGUgPSB0cnVlO1xuICBwdWJsaWMgY3VzdG9tUmFuZ2VzITogVEN1c3RvbVJhbmdlW107XG5cbiAgc2V0IHN0YXJ0RGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0YXJ0RGF0ZUlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl9zdGFydERhdGVWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0RGF0ZVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RhcnREYXRlVmFsdWU6IHN0cmluZyA9IHRoaXMuc3RhcnREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuXG4gIHNldCBlbmREYXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZW5kRGF0ZUlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl9lbmREYXRlVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBlbmREYXRlVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kRGF0ZVZhbHVlO1xuICB9XG5cbiAgcHVibGljIF9lbmREYXRlVmFsdWU6IHN0cmluZyA9IHRoaXMuZW5kRGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA/PyAnJztcblxuICBwdWJsaWMgZ2V0IHN0YXJ0RGF0ZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wbGFjZWhvbGRlcikgPyB0aGlzLnBsYWNlaG9sZGVyWzBdIDogdGhpcy5wbGFjZWhvbGRlcjtcbiAgfTtcblxuICBwdWJsaWMgZ2V0IGVuZERhdGVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucGxhY2Vob2xkZXIpID8gdGhpcy5wbGFjZWhvbGRlclsxXSA6IHRoaXMucGxhY2Vob2xkZXI7XG4gIH07XG5cbiAgcHJpdmF0ZSBsYXlvdXRDaGFuZ2VzITogU3Vic2NyaXB0aW9uO1xuXG4gIC8vIHRvZG86IHZhbGlkYXRpb25cbiAgc3RhcnREYXRlSW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGFydERhdGVWYWx1ZSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgW1xuICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAvLyBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KSxcbiAgICAvLyBWYWxpZGF0b3JzLm1heExlbmd0aCgxMCksXG4gICAgLy8gaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3IodGhpcy5sb2NhbGUpXG4gIF0pO1xuICBlbmREYXRlSW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5lbmREYXRlVmFsdWUsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sIFtcbiAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgLy8gVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksXG4gICAgLy8gVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApLFxuICAgIC8vIGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yKHRoaXMubG9jYWxlKVxuICBdKTtcbiAgZGF0ZVJhbmdlR3JvdXAhOiBGb3JtR3JvdXA7XG5cbiAgc2V0IGlucHV0U3RhcnRIb3ZlclZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5faW5wdXRTdGFydEhvdmVyVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpbnB1dFN0YXJ0SG92ZXJWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGFydEhvdmVyVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9pbnB1dFN0YXJ0SG92ZXJWYWx1ZSE6IERhdGUgfCBudWxsO1xuXG4gIHNldCBpbnB1dEVuZEhvdmVyVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl9pbnB1dEVuZEhvdmVyVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpbnB1dEVuZEhvdmVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0RW5kSG92ZXJWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lucHV0RW5kSG92ZXJWYWx1ZSE6IERhdGUgfCBudWxsO1xuXG4gIGdldCBkYXRlUGlja2VyQ2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2lzLXZhbGlkJzogdGhpcy52YWxpZCA9PT0gdHJ1ZSxcbiAgICAgICdpcy1pbnZhbGlkJzogdGhpcy52YWxpZCA9PT0gZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0XG4gICAgICA/IGRhdGVGb3JtYXQoZGF0ZSwgdGhpcy5mb3JtYXQpXG4gICAgICA6IHRoaXMudGltZXBpY2tlclxuICAgICAgICA/IGRhdGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUpXG4gICAgICAgIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sYXlvdXRDaGFuZ2VzID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbXG4gICAgICBCcmVha3BvaW50cy5IYW5kc2V0LFxuICAgICAgQnJlYWtwb2ludHMuVGFibGV0XG4gICAgXSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgfSk7XG4gICAgdGhpcy5jdXN0b21SYW5nZXMgPSB0aGlzLnJhbmdlcyA/IE9iamVjdC5lbnRyaWVzKHRoaXMucmFuZ2VzKSA6IFtdO1xuXG4gICAgdGhpcy5zdGFydERhdGVWYWx1ZSA9IHRoaXMuc3RhcnREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuICAgIHRoaXMuZW5kRGF0ZVZhbHVlID0gdGhpcy5lbmREYXRlPy50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUpID8/ICcnO1xuICAgIHRoaXMuc3Vic2NyaWJlRGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5sYXlvdXRDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVEYXRlQ2hhbmdlKGZhbHNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcy5mb3JFYWNoKChjaGlsZDogVGVtcGxhdGVJZERpcmVjdGl2ZSkgPT4ge1xuICAgICAgICB0aGlzLnRlbXBsYXRlc1tjaGlsZC5pZF0gPSBjaGlsZC50ZW1wbGF0ZVJlZjtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRlJ10pIHtcbiAgICAgIC8vIGZvciBkYXRlLXBpY2tlciBjb21wb25lbnRcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydkYXRlJ10/LmN1cnJlbnRWYWx1ZSkgPz8gbnVsbDtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkYXRlID8/IHRoaXMuY2FsZW5kYXJEYXRlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc3RhcnREYXRlJ10pIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydzdGFydERhdGUnXT8uY3VycmVudFZhbHVlKSA/PyBudWxsO1xuICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGUgPz8gdGhpcy5jYWxlbmRhckRhdGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydlbmREYXRlJ10pIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydlbmREYXRlJ10/LmN1cnJlbnRWYWx1ZSkgPz8gbnVsbDtcbiAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShkYXRlKTtcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0VmFsdWVUb0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZ2V0TG9jYWxEYXRlRnJvbVN0cmluZyh2YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMudGltZXBpY2tlcik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkgPz8gbnVsbDtcbiAgfVxuXG4gIGdldEN1c3RvbVJhbmdlS2V5KGN1c3RvbVJhbmdlOiBhbnkpIHtcbiAgICByZXR1cm4gY3VzdG9tUmFuZ2VbMF07XG4gIH1cblxuICBzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZTogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZSk7XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UoY3VzdG9tUmFuZ2VbMV1bMF0pO1xuICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShjdXN0b21SYW5nZVsxXVsxXSk7XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQ6IERhdGUgfCBudWxsKSB7XG4gICAgdGhpcy5jYWxlbmRhckNlbGxIb3Zlci5lbWl0KCRldmVudCk7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSkge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuc3RhcnREYXRlRWxlbWVudFJlZiwgJGV2ZW50KTtcbiAgICAgIHRoaXMuaW5wdXRTdGFydEhvdmVyVmFsdWUgPSAkZXZlbnQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5lbmREYXRlKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUodGhpcy5lbmREYXRlRWxlbWVudFJlZiwgJGV2ZW50KTtcbiAgICAgIHRoaXMuaW5wdXRFbmRIb3ZlclZhbHVlID0gJGV2ZW50O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNhbGVuZGFyRGF0ZUNoYW5nZSgkZXZlbnQ6IERhdGUpIHtcbiAgICBpZiAodGhpcy5jYWxlbmRhckRhdGUuZ2V0VGltZSgpICE9PSAkZXZlbnQuZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZUNoYW5nZS5lbWl0KCRldmVudCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKGRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5zdGFydERhdGU/LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlID8/IG51bGw7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZVZhbHVlID0gZGF0ZSA/IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKSA6ICcnO1xuICAgICAgdGhpcy5pbnB1dFN0YXJ0SG92ZXJWYWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yYW5nZSA/IHsgc3RhcnREYXRlOiB0aGlzLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogdGhpcy5lbmREYXRlIH0gOiB0aGlzLnN0YXJ0RGF0ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVFbmREYXRlQ2hhbmdlKGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKGRhdGU/LmdldFRpbWUoKSAhPT0gdGhpcy5lbmREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmVuZERhdGUgPSBkYXRlID8/IG51bGw7XG4gICAgICB0aGlzLmVuZERhdGVWYWx1ZSA9IGRhdGUgPyBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgOiAnJztcbiAgICAgIHRoaXMuaW5wdXRFbmRIb3ZlclZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnJhbmdlID8geyBzdGFydERhdGU6IHRoaXMuc3RhcnREYXRlLCBlbmREYXRlOiB0aGlzLmVuZERhdGUgfSA6IHRoaXMuc3RhcnREYXRlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsZWFyKCRldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICAvLyB0aGlzLmNhbGVuZGFyQ29tcG9uZW50LmNsZWFyRGF0ZXMoKTtcbiAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShudWxsKTtcbiAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobnVsbCk7XG4gIH1cblxuICBoYW5kbGVTdGFydERhdGVJbnB1dENoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRhdGUgPSBnZXRMb2NhbERhdGVGcm9tU3RyaW5nKCRldmVudC50YXJnZXQ/LnZhbHVlLCB0aGlzLmxvY2FsZSwgdGhpcy50aW1lcGlja2VyKTtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIC8vIHRoaXMuY2FsZW5kYXJDb21wb25lbnQuY2xlYXJEYXRlcygpO1xuICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobnVsbCk7XG4gICAgfVxuICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlLmdldFRpbWUoKSkge1xuICAgICAgaWYgKCEodGhpcy5mb3JiaWRkZW5EYXRlKGRhdGUpIHx8ICh0aGlzLmVuZERhdGUgJiYgdGhpcy5lbmREYXRlIDwgZGF0ZSkpKSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gZGF0ZTtcbiAgICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSh0aGlzLnN0YXJ0RGF0ZSA/PyBudWxsKTtcbiAgfVxuXG4gIGhhbmRsZUVuZERhdGVJbnB1dENoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGRhdGUgPSBnZXRMb2NhbERhdGVGcm9tU3RyaW5nKCRldmVudC50YXJnZXQ/LnZhbHVlLCB0aGlzLmxvY2FsZSwgdGhpcy50aW1lcGlja2VyKTtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlLmdldFRpbWUoKSkge1xuICAgICAgaWYgKCEodGhpcy5mb3JiaWRkZW5EYXRlKGRhdGUpIHx8ICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLnN0YXJ0RGF0ZSA+IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuZW5kRGF0ZSA9IGRhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZSh0aGlzLmVuZERhdGUgPz8gbnVsbCk7XG4gIH1cblxuICBmb3JiaWRkZW5EYXRlKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMuZGlzYWJsZWREYXRlcykgfHwgKHRoaXMuZGF0ZUZpbHRlciA/ICF0aGlzLmRhdGVGaWx0ZXIoZGF0ZSkgOiBmYWxzZSk7XG4gIH1cblxuICBzZXRJbnB1dFZhbHVlID0gKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGRhdGU6IERhdGUgfCBudWxsKSA9PiB7XG4gICAgaWYgKCFlbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IGRhdGU/LnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSkgPz8gJyc7XG4gICAgLy8gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlQXNEYXRlID0gZGF0ZTtcbiAgICByZXR1cm47XG4gIH07XG5cbiAgb25DaGFuZ2U6IGFueSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yYW5nZSA/IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0VGltZUNoYW5nZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zdGFydERhdGUgPSB0aW1lID8/IHRoaXMuc3RhcnREYXRlO1xuICB9XG5cbiAgaGFuZGxlRW5kVGltZUNoYW5nZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF0aGlzLnJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW5kRGF0ZSA9IHRpbWUgPz8gdGhpcy5lbmREYXRlO1xuICB9XG59XG4iLCI8Yy1kcm9wZG93biAjZHJvcGRvd249XCJjRHJvcGRvd25cIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIGNsYXNzPVwiZGF0ZS1waWNrZXIgcGlja2VyXCIgW25nQ2xhc3NdPVwiZGF0ZVBpY2tlckNsYXNzZXNcIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbcG9wcGVyT3B0aW9uc109XCJwb3BwZXJqc09wdGlvbnNcIj5cbiAgPGMtaW5wdXQtZ3JvdXAgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICBjRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXBcIlxuICA+XG4gICAgPGlucHV0IChjaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydERhdGVJbnB1dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dFN0YXJ0SG92ZXJWYWx1ZX1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3RhcnREYXRlUGxhY2Vob2xkZXIgPz8gcGxhY2Vob2xkZXJbMF1cIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgI3N0YXJ0RGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkgPz8gbnVsbFwiXG4gICAgICAgICAgIFt2YWxpZF09XCJyYW5nZSA/IHVuZGVmaW5lZCA6IHZhbGlkXCJcbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJyYW5nZSAmJiBzZXBhcmF0b3IgIT09IGZhbHNlXCIgY0lucHV0R3JvdXBUZXh0PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWFycm93LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPGlucHV0IChjaGFuZ2UpPVwiaGFuZGxlRW5kRGF0ZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAqbmdJZj1cInJhbmdlXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZERhdGVJbnB1dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dEVuZEhvdmVyVmFsdWV9XCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVQbGFjZWhvbGRlciA/PyBwbGFjZWhvbGRlclsxXVwiXG4gICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICAjZW5kRGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkgPz8gbnVsbFwiXG4gICAgICAgICAgIFt2YWxpZF09XCJ2YWxpZFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yIHx8IGNsZWFuZXJcIiBjSW5wdXRHcm91cFRleHQ+XG4gICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvclwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWluZGljYXRvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWlucHV0LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAoY2xpY2spPVwiIWRpc2FibGVkICYmIGhhbmRsZUNsZWFyKCRldmVudClcIiAqbmdJZj1cImNsZWFuZXIgJiYgc3RhcnREYXRlRWxlbWVudFJlZi52YWx1ZSAmJiAhZGlzYWJsZWRcIiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1jbGVhbmVyXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWNsZWFuZXItaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG5cbiAgPC9jLWlucHV0LWdyb3VwPlxuICA8ZGl2IGNEcm9wZG93bk1lbnU+XG4gICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWJvZHlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhaXNNb2JpbGVcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJhbmdlc1wiIGNsYXNzPVwiZGF0ZS1waWNrZXItcmFuZ2VzXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2V0Q3VzdG9tUmFuZ2UoY3VzdG9tUmFuZ2UpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjdXN0b21SYW5nZSBvZiBjdXN0b21SYW5nZXNcIlxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInJhbmdlc0J1dHRvbnNDb2xvclwiXG4gICAgICAgICAgICAgICAgICBbc2l6ZV09XCJyYW5nZXNCdXR0b25zU2l6ZVwiXG4gICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJyYW5nZXNCdXR0b25zVmFyaWFudFwiXG4gICAgICAgICAgICAgICAgICBjQnV0dG9uPlxuICAgICAgICAgICAge3tnZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZSl9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8Yy1jYWxlbmRhclxuICAgICAgICAoY2FsZW5kYXJDZWxsSG92ZXIpPVwiaGFuZGxlQ2FsZW5kYXJDZWxsSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgIChjYWxlbmRhckRhdGVDaGFuZ2UpPVwiaGFuZGxlQ2FsZW5kYXJEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoZW5kRGF0ZUNoYW5nZSk9XCJoYW5kbGVFbmREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoc3RhcnREYXRlQ2hhbmdlKT1cImhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NhbGVuZGFyRGF0ZV09XCJjYWxlbmRhckRhdGVcIlxuICAgICAgICBbY2FsZW5kYXJzXT1cImlzTW9iaWxlID8gMSA6IGNhbGVuZGFyc1wiXG4gICAgICAgIFtkYXRlRmlsdGVyXT1cImRhdGVGaWx0ZXJcIlxuICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzXCJcbiAgICAgICAgW2VuZERhdGVdPVwiZW5kRGF0ZVwiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXG4gICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbmF2aWdhdGlvbl09XCJuYXZpZ2F0aW9uXCJcbiAgICAgICAgW3JhbmdlXT1cInJhbmdlXCJcbiAgICAgICAgW3N0YXJ0RGF0ZV09XCJzdGFydERhdGVcIlxuICAgICAgICBbbmF2WWVhckZpcnN0XT1cIm5hdlllYXJGaXJzdFwiXG4gICAgICAgIFtkYXlGb3JtYXRdPVwiZGF5Rm9ybWF0XCJcbiAgICAgICAgW3dlZWtkYXlGb3JtYXRdPVwid2Vla2RheUZvcm1hdFwiXG4gICAgICAgIGNsYXNzPVwiZGF0ZS1waWNrZXItY2FsZW5kYXJzXCJcbiAgICAgID48L2MtY2FsZW5kYXI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZmFsc2UgJiYgdGltZXBpY2tlclwiIGNsYXNzPVwiZGF0ZS1waWNrZXItdGltZXBpY2tlcnNcIj5cbiAgICAgICAgPCEtLSB0b2RvLS0+XG4gICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgdmFyaWFudD1cInNlbGVjdFwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3RhcnREYXRlXCJcbiAgICAgICAgICBbdGltZV09XCJzdGFydERhdGUgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAodGltZUNoYW5nZSk9XCJoYW5kbGVTdGFydFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2MtdGltZS1waWNrZXI+XG4gICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgKm5nSWY9XCJyYW5nZVwiXG4gICAgICAgICAgdmFyaWFudD1cInNlbGVjdFwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZW5kRGF0ZVwiXG4gICAgICAgICAgW3RpbWVdPVwiZW5kRGF0ZSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZUVuZFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2MtdGltZS1waWNrZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGVtcGxhdGVzPy5kYXRlUGlja2VyRm9vdGVyXCIgY2xhc3M9XCJwaWNrZXItZm9vdGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVzPy5kYXRlUGlja2VyRm9vdGVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkcm9wZG93bn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvYy1kcm9wZG93bj5cbiJdfQ==
|
|
656
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBd0IsV0FBVyxFQUFhLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdHLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU9sRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFJbkQsa0NBQWtDO0FBQ2xDLG1CQUFtQjtBQUNuQiw0RUFBNEU7QUFDNUUsb0VBQW9FO0FBQ3BFLDhEQUE4RDtBQUM5RCxrREFBa0Q7QUFDbEQsdURBQXVEO0FBQ3ZELG9CQUFvQjtBQUNwQixpRkFBaUY7QUFDakYsaURBQWlEO0FBQ2pELG9EQUFvRDtBQUNwRCxvRkFBb0Y7QUFDcEYsMEZBQTBGO0FBQzFGLE9BQU87QUFDUCxJQUFJO0FBZUosTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxZQUNVLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBR2hEOzs7O1dBSUc7UUFDTSxjQUFTLEdBQWtCLFNBQVMsQ0FBQztRQWdCdEMsZUFBVSxHQUFXLENBQUMsQ0FBQztRQWdCdkIsYUFBUSxHQUFZLElBQUksQ0FBQztRQWdCakMsa0RBQTBCLEtBQUssRUFBQztRQXlCeEIsZUFBVSxHQUFZLElBQUksQ0FBQztRQWdCM0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFnQmhDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRXZDOzs7V0FHRztRQUNNLGdCQUFXLEdBQXNCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBUXJFOzs7O1dBSUc7UUFDTSx1QkFBa0IsR0FBWSxXQUFXLENBQUM7UUFFbkQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQXFCLEVBQUUsQ0FBQztRQUVsRDs7O1dBR0c7UUFDTSx5QkFBb0IsR0FBeUIsT0FBTyxDQUFDO1FBZ0J0RCxlQUFVLEdBQVksSUFBSSxDQUFDO1FBd0IzQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQXVCN0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQWtDekIsaUJBQVksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztRQVd2QyxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUUzQixXQUFNLEdBQVcsU0FBUyxDQUFDO1FBQzNCLFlBQU8sR0FBZ0IsSUFBSSxDQUFDO1FBQzVCLFlBQU8sR0FBZ0IsSUFBSSxDQUFDO1FBVzdCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBZ0I1QixXQUFNLEdBQVksSUFBSSxDQUFDO1FBZXZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUEyQmxCLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFFekI7Ozs7V0FJRztRQUNNLGtCQUFhLEdBQXNCLE9BQU8sQ0FBQztRQUVwRDs7O1dBR0c7UUFDcUIsb0JBQWUsR0FBcUI7WUFDMUQsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQztRQUVpQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE2QixDQUFDO1FBRXJFLHNCQUFpQixHQUE4QixJQUFJLFlBQVksRUFBZSxDQUFDO1FBQy9FLHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xFLGtCQUFhLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFDM0Usb0JBQWUsR0FBOEIsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQU12RixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBR1YsNEJBQXVCLEdBQW1CLEVBQUUsQ0FBQztRQXdCaEQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVoQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBVzNCLG9CQUFlLEdBQVcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFXM0Qsa0JBQWEsR0FBVyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQVk3RCxtQkFBbUI7UUFDbkIsbUJBQWMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDeEYsVUFBVSxDQUFDLFFBQVE7WUFDbkIsMkJBQTJCO1lBQzNCLDRCQUE0QjtZQUM1QiwwQ0FBMEM7U0FDM0MsQ0FBQyxDQUFDO1FBQ0gsaUJBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDcEYsVUFBVSxDQUFDLFFBQVE7WUFDbkIsMkJBQTJCO1lBQzNCLDRCQUE0QjtZQUM1QiwwQ0FBMEM7U0FDM0MsQ0FBQyxDQUFDO1FBcUNILGdEQUF3QjtZQUN0QixpQkFBaUIsRUFBRSxvQkFBb0I7WUFDdkMsWUFBWSxFQUFFLG9CQUFvQjtZQUNsQyxrQkFBa0IsRUFBRSxvQkFBb0I7U0FDekMsRUFBQztRQW1LRixrQkFBYSxHQUFHLENBQUMsVUFBc0IsRUFBRSxJQUFpQixFQUFFLEVBQUU7WUFDNUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixPQUFPO2FBQ1I7WUFDRCxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELCtDQUErQztZQUMvQyxPQUFPO1FBQ1QsQ0FBQyxDQUFDO1FBRUYsYUFBUSxHQUFRLENBQUMsS0FBVSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDbkMsY0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQWxvQnRCLENBQUM7SUFTTDs7OztPQUlHO0lBQ0gsSUFDSSxTQUFTLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUlEOzs7O09BSUc7SUFDSCxJQUNJLE9BQU8sQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBSUQ7Ozs7T0FJRztJQUNILElBQ0ksYUFBYSxDQUFDLEtBQWM7UUFDOUIsdUJBQUEsSUFBSSwyQ0FBa0IscUJBQXFCLENBQUMsS0FBSyxDQUFDLE1BQUEsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyx1QkFBQSxJQUFJLCtDQUFlLENBQUM7SUFDN0IsQ0FBQztJQWFEOzs7O09BSUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBSUQ7Ozs7T0FJRztJQUNILElBQ0ksYUFBYSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUM7SUFDaEUsQ0FBQztJQUlEOzs7O09BSUc7SUFDSCxJQUNJLFlBQVksQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBbUNEOzs7O09BSUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFjO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBV0Q7Ozs7T0FJRztJQUNILElBQ0ksVUFBVSxDQUFDLEtBQWM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxLQUFLLENBQUM7UUFDYiwyQkFBMkI7SUFDN0IsQ0FBQztJQVdEOzs7O09BSUc7SUFDSCxJQUNJLE9BQU8sQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBSUQsSUFDSSxTQUFTLENBQUMsS0FBSztRQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRCxJQUFJLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBSUQsSUFDSSxPQUFPLENBQUMsS0FBSztRQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvQyxJQUFJLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBT0QsSUFDSSxjQUFjLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFRRCxJQUNJLFVBQVUsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBSUQ7Ozs7T0FJRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFNRCxJQUNJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5RSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUlELElBQ0ksS0FBSyxDQUFDLEtBQVU7UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUM7YUFDcEQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQzthQUM5QztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUM1RixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFtQ1MsbUJBQW1CLENBQUMsWUFBcUIsSUFBSTtRQUNyRCxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU87WUFDUCw2RUFBNkU7WUFDN0UsMkJBQTJCO1lBQzNCLHlCQUF5QjtZQUN6QixPQUFPO1lBQ1AsNkVBQTZFO1lBQzdFLHlCQUF5QjtZQUN6Qix5QkFBeUI7WUFDekIsT0FBTztZQUNQLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDbEQsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVxQixNQUFNO1FBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBTUQsSUFBSSxjQUFjLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBSUQsSUFBSSxZQUFZLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFJRCxJQUFXLG9CQUFvQjtRQUM3QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ2xGLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNsRixDQUFDO0lBQUEsQ0FBQztJQW1CRixJQUFJLG9CQUFvQixDQUFDLEtBQUs7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUlELElBQUksa0JBQWtCLENBQUMsS0FBSztRQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBSUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUk7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSztTQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUE2QjtRQUN0QyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ3BELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQVFELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFbkUsTUFBTSxXQUFXLEdBQUcsdUJBQUEsSUFBSSw2Q0FBYSxDQUFDO1FBRXRDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztZQUNuRCxXQUFXLENBQUMsaUJBQWlCO1lBQzdCLFdBQVcsQ0FBQyxZQUFZO1lBQ3hCLFdBQVcsQ0FBQyxrQkFBa0I7U0FDL0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0SixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7aUJBQ3RFO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUEwQixFQUFFLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsNEJBQTRCO1lBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQzVFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDakYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDL0M7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQztZQUMvRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBZ0Q7UUFDakUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLHNCQUFzQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNwRTtRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxXQUFnQjtRQUNoQyxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQWdCO1FBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxNQUFtQjtRQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUMvQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDO1lBQ2pDLE9BQU87U0FDUjtJQUNILENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxNQUFZO1FBQ25DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFpQjtRQUNyQyxJQUFJLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDakc7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBaUI7UUFDbkMsSUFBSSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ2pHO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFtQjtRQUM3Qix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsTUFBVztRQUNwQyxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsdUNBQXVDO1lBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO1NBQ0Y7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsTUFBVztRQUNsQyxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckI7UUFDRCxJQUFJLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDNUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ3JCO1NBQ0Y7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVU7UUFDdEIsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BJLENBQUM7SUFjRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBc0I7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBc0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7OztxSEF2cUJVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDJvQ0FSeEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztZQUN2RCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsMkRBNFdnQixtQkFBbUIsMFVDdmF0QyxxMklBd0dBOzJGRDNDYSx3QkFBd0I7a0JBYnBDLFNBQVM7K0JBQ0UscUJBQXFCLFlBR3JCLGtCQUFrQixhQUNqQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7eUdBaUJRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUYsU0FBUztzQkFEWixLQUFLO2dCQWlCRixPQUFPO3NCQURWLEtBQUs7Z0JBaUJGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBa0JOLE1BQU07c0JBREwsS0FBSztnQkFTRixTQUFTO3NCQURaLEtBQUs7Z0JBaUJGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBaUJGLFlBQVk7c0JBRGYsS0FBSztnQkFlRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLE1BQU07c0JBQWQsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQU1HLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFRRixTQUFTO3NCQURaLEtBQUs7Z0JBZ0JHLElBQUk7c0JBQVosS0FBSztnQkFRRixVQUFVO3NCQURiLEtBQUs7Z0JBaUJHLEtBQUs7c0JBQWIsS0FBSztnQkFRRixPQUFPO3NCQURWLEtBQUs7Z0JBWUYsU0FBUztzQkFEWixLQUFLO2dCQWlCRixPQUFPO3NCQURWLEtBQUs7Z0JBZ0JHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHRixjQUFjO3NCQURqQixLQUFLO2dCQVdHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdGLFVBQVU7c0JBRGIsS0FBSztnQkFpQkYsS0FBSztzQkFEUixLQUFLO2dCQVdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0YsUUFBUTtzQkFEWCxLQUFLO2dCQWNGLEtBQUs7c0JBRFIsS0FBSztnQkFnQ0csYUFBYTtzQkFBckIsS0FBSztnQkFNa0IsZUFBZTtzQkFBdEMsS0FBSzt1QkFBQyxlQUFlO2dCQUlILFdBQVc7c0JBQTdCLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRzJCLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ0EsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFHK0IsZ0JBQWdCO3NCQUE1RSxlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFzQnJDLE1BQU07c0JBQTNCLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBPcHRpb25zIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xuXG5pbXBvcnQgeyBDb2xvcnMgfSBmcm9tICcuLi8uLi9jb3JldWkudHlwZXMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxEYXRlRnJvbVN0cmluZywgaXNEYXRlRGlzYWJsZWQsIGlzVmFsaWREYXRlIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlclR5cGUsIERheUZvcm1hdFR5cGUsIFdlZWtkYXlGb3JtYXRUeXBlIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZUlkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IElDYWxlbmRhclJhbmdlcywgVEN1c3RvbVJhbmdlIH0gZnJvbSAnLi4vZGF0ZS1yYW5nZS1waWNrZXIudHlwZSc7XG5cblxuLyoqIE11c3QgYmUgYSB2YWxpZCBkYXRlIHN0cmluZyAqL1xuLy8gdG9kbzogdmFsaWRhdGlvblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yKGxvY2FsZTogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuLy8gICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbi8vICAgICAvLyBjb25zdCB2YWxpZERhdGUgPSAhaXNOYU4oRGF0ZS5wYXJzZShjb250cm9sLnZhbHVlKSk7XG4vLyAgICAgc3RyaW5nVG9EYXRlQ29udmVydChjb250cm9sLnZhbHVlLCBsb2NhbGUpO1xuLy8gICAgIGNvbnN0IGRhdGVTaGltID0gY3Z0RGF0ZShjb250cm9sLnZhbHVlLCBsb2NhbGUpO1xuLy8gICAgIC8vIEB0cy1pZ25vcmVcbi8vICAgICAvLyBjb250cm9sLnNldFZhbHVlKG5ldyBEYXRlKGRhdGVTaGltLnllYXIsIGRhdGVTaGltLm1vbnRoLCBkYXRlU2hpbS5kYXkpKVxuLy8gICAgIGNvbnNvbGUubG9nKCdkYXRlU2hpbScsIGRhdGVTaGltLCBsb2NhbGUpO1xuLy8gICAgIGNvbnN0IHZhbGlkRGF0ZSA9IGlzVmFsaWREYXRlKGNvbnRyb2wudmFsdWUpO1xuLy8gICAgIGNvbnNvbGUubG9nKCdpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcicsIGNvbnRyb2wsIGNvbnRyb2wudmFsdWUsIHZhbGlkRGF0ZSk7XG4vLyAgICAgcmV0dXJuIHZhbGlkRGF0ZSA/IHsgaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3I6IHsgdmFsdWU6IGNvbnRyb2wudmFsdWUgfSB9IDogbnVsbDtcbi8vICAgfTtcbi8vIH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1kYXRlLXJhbmdlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY0RhdGVSYW5nZVBpY2tlcicsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY2xvc2VPblNlbGVjdDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX25hdlllYXJGaXJzdDogQm9vbGVhbklucHV0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXJcbiAgKSB7IH1cblxuICAvKipcbiAgICogU2V0IHRoZSBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEBkZWZhdWx0ICdudW1lcmljJ1xuICAgKiBAdHlwZSBEYXlGb3JtYXRUeXBlXG4gICAqL1xuICBASW5wdXQoKSBkYXlGb3JtYXQ6IERheUZvcm1hdFR5cGUgPSAnbnVtZXJpYyc7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY2FsZW5kYXJzIHRoYXQgcmVuZGVyIG9uIGRlc2t0b3AgZGV2aWNlcy5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjYWxlbmRhcnModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2NhbGVuZGFycyA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBjYWxlbmRhcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFycztcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGVuZGFyczogbnVtYmVyID0gMjtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBjbGVhbmVyIGJ1dHRvbi5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY2xlYW5lcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2NsZWFuZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGNsZWFuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFuZXI7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhbmVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIHRoZSBkcm9wZG93biBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIHZhbHVlIHNldHRpbmcuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjbG9zZU9uU2VsZWN0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jY2xvc2VPblNlbGVjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgY2xvc2VPblNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy4jY2xvc2VPblNlbGVjdDtcbiAgfVxuXG4gICNjbG9zZU9uU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCBkYXRlIGZvcm1hdC5cbiAgICogV2UgdXNlIEFuZ3VsYXIgZm9ybWF0RGF0ZSgpIGZ1bmN0aW9uLCBzZWU6XG4gICAqIC0gaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vZm9ybWF0RGF0ZVxuICAgKiAtIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29tbW9uL0RhdGVQaXBlI3ByZS1kZWZpbmVkLWZvcm1hdC1vcHRpb25zXG4gICAqL1xuICBASW5wdXQoKVxuICBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgaW5wdXQgaW5kaWNhdG9yLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbmRpY2F0b3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmRpY2F0b3IgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGluZGljYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5faW5kaWNhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5kaWNhdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSByZWFkb25seSBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGlucHV0UmVhZE9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbnB1dFJlYWRPbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbnB1dFJlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFJlYWRPbmx5IHx8IHR5cGVvZiB0aGlzLmZvcm1hdCA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICBwcml2YXRlIF9pbnB1dFJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFJlb3JkZXIgeWVhci1tb250aCBuYXZpZ2F0aW9uLCBhbmQgcmVuZGVyIHllYXIgZmlyc3QuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBuYXZZZWFyRmlyc3QodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9uYXZZZWFyRmlyc3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5hdlllYXJGaXJzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2WWVhckZpcnN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfbmF2WWVhckZpcnN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBzaG9ydCBoaW50cyB0aGF0IGFyZSB2aXNpYmxlIGluIHN0YXJ0IGRhdGUgYW5kIGVuZCBkYXRlIGlucHV0cy5cbiAgICogdHlwZSBzdHJpbmdcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCBzdHJpbmdbXSA9IFsnU3RhcnQgZGF0ZScsICdFbmQgZGF0ZSddO1xuXG4gIC8qKlxuICAgKiBQcmVkZWZpbmVkIGRhdGUgcmFuZ2VzIHRoZSB1c2VyIGNhbiBzZWxlY3QgZnJvbS5cbiAgICogQHR5cGUgSUNhbGVuZGFyUmFuZ2VzXG4gICAqL1xuICBASW5wdXQoKSByYW5nZXM/OiBJQ2FsZW5kYXJSYW5nZXM7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbG9yIGNvbnRleHQgb2YgdGhlIGNhbmNlbCBidXR0b24gdG8gb25lIG9mIENvcmVVSeKAmXMgdGhlbWVkIGNvbG9ycy5cbiAgICogQHR5cGUgJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJyB8ICd3YXJuaW5nJyB8ICdpbmZvJyB8ICdkYXJrJyB8ICdsaWdodCcgfCBzdHJpbmdcbiAgICogQGRlZmF1bHQgJ3NlY29uZGFyeSdcbiAgICovXG4gIEBJbnB1dCgpIHJhbmdlc0J1dHRvbnNDb2xvcj86IENvbG9ycyA9ICdzZWNvbmRhcnknO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSByYW5nZXMgYnV0dG9uIHNtYWxsIG9yIGxhcmdlLlxuICAgKiBAdHlwZSAnc20nIHwgJ2xnJyB8ICcnXG4gICAqL1xuICBASW5wdXQoKSByYW5nZXNCdXR0b25zU2l6ZTogJ3NtJyB8ICdsZycgfCAnJyA9ICcnO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHJhbmdlcyBidXR0b24gdmFyaWFudCB0byBhbiBvdXRsaW5lZCBidXR0b24gb3IgYSBnaG9zdCBidXR0b24uXG4gICAqIEB0eXBlICdvdXRsaW5lJyB8ICdnaG9zdCcgfCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHJhbmdlc0J1dHRvbnNWYXJpYW50PzogJ291dGxpbmUnIHwgJ2dob3N0JyA9ICdnaG9zdCc7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaWNvbiBvciBjaGFyYWN0ZXIgdGhhdCBzZXBhcmF0ZXMgdHdvIGRhdGVzLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzZXBhcmF0b3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zZXBhcmF0b3IgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNlcGFyYXRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VwYXJhdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogU2l6ZSB0aGUgY29tcG9uZW50IHNtYWxsIG9yIGxhcmdlLlxuICAgKiBAdHlwZSAnc20nIHwgJ2xnJyB8IHVuZGVmaW5lZFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHNpemU/OiAnc20nIHwgJ2xnJztcblxuICAvKipcbiAgICogUHJvdmlkZSBhbiBhZGRpdGlvbmFsIHRpbWUgc2VsZWN0aW9uIGJ5IGFkZGluZyBzZWxlY3QgYm94ZXMgdG8gY2hvb3NlIHRpbWUuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB0aW1lcGlja2VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdGltZXBpY2tlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgdGltZXBpY2tlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gcmV0dXJuIHRoaXMuX3RpbWVwaWNrZXI7XG4gIH1cblxuICBwcml2YXRlIF90aW1lcGlja2VyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXN1YWwgdmFsaWRhdGlvbiBmZWVkYmFjay5cbiAgICogQHR5cGUgYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBkcm9wZG93biBkYXRlLXBpY2tlciBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzZXQgc3RhcnREYXRlKHZhbHVlKSB7XG4gICAgY29uc3QgcHJldkRhdGUgPSB0aGlzLl9zdGFydERhdGUgPyBuZXcgRGF0ZSh0aGlzLl9zdGFydERhdGUpIDogbnVsbDtcbiAgICB0aGlzLl9zdGFydERhdGUgPSB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IG51bGw7XG4gICAgaWYgKHByZXZEYXRlPy5nZXRUaW1lKCkgIT09IHRoaXMuX3N0YXJ0RGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZVZhbHVlID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuX3N0YXJ0RGF0ZSk7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5lbWl0KHRoaXMuX3N0YXJ0RGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RhcnREYXRlPzogRGF0ZSB8IG51bGw7XG5cbiAgQElucHV0KClcbiAgc2V0IGVuZERhdGUodmFsdWUpIHtcbiAgICBjb25zdCBwcmV2RGF0ZSA9IHRoaXMuX2VuZERhdGUgPyBuZXcgRGF0ZSh0aGlzLl9lbmREYXRlID8/IDApIDogbnVsbDtcbiAgICB0aGlzLl9lbmREYXRlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBudWxsO1xuICAgIGlmIChwcmV2RGF0ZT8uZ2V0VGltZSgpICE9PSB0aGlzLl9lbmREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIHRoaXMuZW5kRGF0ZVZhbHVlID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuX2VuZERhdGUpO1xuICAgICAgdGhpcy5lbmREYXRlQ2hhbmdlLmVtaXQodGhpcy5fZW5kRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGVuZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGU7XG4gIH1cblxuICBwcml2YXRlIF9lbmREYXRlPzogRGF0ZSB8IG51bGw7XG5cbiAgQElucHV0KCkgY2FsZW5kYXJEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdIHwgRGF0ZVtdW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzZXQgZmlyc3REYXlPZldlZWsodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCkge1xuICAgIHJldHVybiB0aGlzLl9maXJzdERheU9mV2VlaztcbiAgfVxuXG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSAxO1xuXG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBzZXQgbmF2aWdhdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25hdmlnYXRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb247XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQWxsb3cgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgcmFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yYW5nZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgcmFuZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmFuZ2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGRhdGVGaWx0ZXI/OiBEYXRlRmlsdGVyVHlwZTtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLnN0YXJ0RGF0ZUlucHV0LmRpc2FibGUoKSA6IHRoaXMuc3RhcnREYXRlSW5wdXQuZW5hYmxlKCk7XG4gICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLmVuZERhdGVJbnB1dC5kaXNhYmxlKCkgOiB0aGlzLmVuZERhdGVJbnB1dC5lbmFibGUoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJhbmdlID8geyAuLi52YWx1ZSB9IDogdmFsdWU7XG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuX3ZhbHVlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobmV3VmFsdWUuc3RhcnREYXRlID8/IG51bGwpO1xuICAgICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobmV3VmFsdWUuZW5kRGF0ZSA/PyBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG5ld1ZhbHVlID8/IG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICBjb25zdCBoYXNWYWx1ZSA9IHRoaXMucmFuZ2UgPyAhISh0aGlzLnZhbHVlLnN0YXJ0RGF0ZSAmJiB0aGlzLnZhbHVlLmVuZERhdGUpIDogISF0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZpc2libGUgPSAhaGFzVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEB0eXBlIFdlZWtkYXlGb3JtYXRUeXBlXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIEBJbnB1dCgpIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcblxuICAvKipcbiAgICogT3B0aW9uYWwgcG9wcGVyIE9wdGlvbnMgb2JqZWN0XG4gICAqIEB0eXBlIFBhcnRpYWw8T3B0aW9ucz5cbiAgICovXG4gIEBJbnB1dCgncG9wcGVyT3B0aW9ucycpIHBvcHBlcmpzT3B0aW9uczogUGFydGlhbDxPcHRpb25zPiA9IHtcbiAgICBzdHJhdGVneTogJ2ZpeGVkJ1xuICB9O1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IERhdGVbXSB8IHVuZGVmaW5lZD4oKTtcblxuICBAT3V0cHV0KCkgY2FsZW5kYXJDZWxsSG92ZXI6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSBlbmREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XG5cbiAgLy8gQFZpZXdDaGlsZChDYWxlbmRhckNvbXBvbmVudCkgY2FsZW5kYXJDb21wb25lbnQhOiBDYWxlbmRhckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlRWxlbWVudFJlZicpIHN0YXJ0RGF0ZUVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdlbmREYXRlRWxlbWVudFJlZicpIGVuZERhdGVFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICB0ZW1wbGF0ZXM6IGFueSA9IHt9O1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlSWREaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29udGVudFRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZUlkRGlyZWN0aXZlPjtcblxuICBwcm90ZWN0ZWQgZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmliZURhdGVDaGFuZ2Uoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChzdWJzY3JpYmUpIHtcbiAgICAgIC8vIHRvZG9cbiAgICAgIC8vIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAvLyAgIHRoaXMuc3RhcnREYXRlID0gbmV4dDtcbiAgICAgIC8vICAgdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vIH0pKTtcbiAgICAgIC8vIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUobmV4dCA9PiB7XG4gICAgICAvLyAgIHRoaXMuZW5kRGF0ZSA9IG5leHQ7XG4gICAgICAvLyAgIHRoaXMub25DaGFuZ2UobmV4dCk7XG4gICAgICAvLyB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIGlzTW9iaWxlID0gdHJ1ZTtcbiAgcHVibGljIGN1c3RvbVJhbmdlcyE6IFRDdXN0b21SYW5nZVtdO1xuICBwdWJsaWMgc2hvd1JhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHNldCBzdGFydERhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdGFydERhdGVJbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5fc3RhcnREYXRlVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzdGFydERhdGVWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGFydERhdGVWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0YXJ0RGF0ZVZhbHVlOiBzdHJpbmcgPSB0aGlzLmZvcm1hdERhdGUodGhpcy5zdGFydERhdGUpO1xuXG4gIHNldCBlbmREYXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZW5kRGF0ZUlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl9lbmREYXRlVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBlbmREYXRlVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kRGF0ZVZhbHVlO1xuICB9XG5cbiAgcHVibGljIF9lbmREYXRlVmFsdWU6IHN0cmluZyA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLmVuZERhdGUpO1xuXG4gIHB1YmxpYyBnZXQgc3RhcnREYXRlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnBsYWNlaG9sZGVyKSA/IHRoaXMucGxhY2Vob2xkZXJbMF0gOiB0aGlzLnBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIHB1YmxpYyBnZXQgZW5kRGF0ZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wbGFjZWhvbGRlcikgPyB0aGlzLnBsYWNlaG9sZGVyWzFdIDogdGhpcy5wbGFjZWhvbGRlcjtcbiAgfTtcblxuICBwcml2YXRlIGxheW91dENoYW5nZXMhOiBTdWJzY3JpcHRpb247XG5cbiAgLy8gdG9kbzogdmFsaWRhdGlvblxuICBzdGFydERhdGVJbnB1dCA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnN0YXJ0RGF0ZVZhbHVlLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LCBbXG4gICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgIC8vIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLFxuICAgIC8vIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwKSxcbiAgICAvLyBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcih0aGlzLmxvY2FsZSlcbiAgXSk7XG4gIGVuZERhdGVJbnB1dCA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLmVuZERhdGVWYWx1ZSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgW1xuICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAvLyBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KSxcbiAgICAvLyBWYWxpZGF0b3JzLm1heExlbmd0aCgxMCksXG4gICAgLy8gaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3IodGhpcy5sb2NhbGUpXG4gIF0pO1xuICBkYXRlUmFuZ2VHcm91cCE6IEZvcm1Hcm91cDtcblxuICBzZXQgaW5wdXRTdGFydEhvdmVyVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl9pbnB1dFN0YXJ0SG92ZXJWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGlucHV0U3RhcnRIb3ZlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXJ0SG92ZXJWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lucHV0U3RhcnRIb3ZlclZhbHVlITogRGF0ZSB8IG51bGw7XG5cbiAgc2V0IGlucHV0RW5kSG92ZXJWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMuX2lucHV0RW5kSG92ZXJWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGlucHV0RW5kSG92ZXJWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRFbmRIb3ZlclZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbmRIb3ZlclZhbHVlITogRGF0ZSB8IG51bGw7XG5cbiAgZ2V0IGRhdGVQaWNrZXJDbGFzc2VzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnaXMtdmFsaWQnOiB0aGlzLnZhbGlkID09PSB0cnVlLFxuICAgICAgJ2lzLWludmFsaWQnOiB0aGlzLnZhbGlkID09PSBmYWxzZVxuICAgIH07XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuICFkYXRlIHx8ICFpc1ZhbGlkRGF0ZShkYXRlKSA/ICcnIDpcbiAgICAgICAgICAgdGhpcy5mb3JtYXQgPyBmb3JtYXREYXRlKGRhdGUsIHRoaXMuZm9ybWF0LCB0aGlzLmxvY2FsZSkgOlxuICAgICAgICAgICB0aGlzLnRpbWVwaWNrZXIgPyBkYXRlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlKSA6XG4gICAgICAgICAgIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKTtcbiAgfVxuXG4gIHJlYWRvbmx5ICNicmVha3BvaW50cyA9IHtcbiAgICBPbmVDYWxlbmRhclJhbmdlczogJyhtaW4td2lkdGg6IDQ4MHB4KScsXG4gICAgVHdvQ2FsZW5kYXJzOiAnKG1heC13aWR0aDogNjUwcHgpJyxcbiAgICBUd29DYWxlbmRhcnNSYW5nZXM6ICcobWF4LXdpZHRoOiA4MTBweCknXG4gIH07XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXN0b21SYW5nZXMgPSB0aGlzLnJhbmdlcyA/IE9iamVjdC5lbnRyaWVzKHRoaXMucmFuZ2VzKSA6IFtdO1xuXG4gICAgY29uc3QgYnJlYWtwb2ludHMgPSB0aGlzLiNicmVha3BvaW50cztcblxuICAgIHRoaXMubGF5b3V0Q2hhbmdlcyA9IHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoW1xuICAgICAgYnJlYWtwb2ludHMuT25lQ2FsZW5kYXJSYW5nZXMsXG4gICAgICBicmVha3BvaW50cy5Ud29DYWxlbmRhcnMsXG4gICAgICBicmVha3BvaW50cy5Ud29DYWxlbmRhcnNSYW5nZXNcbiAgICBdKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQubWF0Y2hlcykge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gKHRoaXMuY3VzdG9tUmFuZ2VzPy5sZW5ndGggPiAwICYmIHJlc3VsdC5icmVha3BvaW50c1ticmVha3BvaW50cy5Ud29DYWxlbmRhcnNSYW5nZXNdKSB8fCByZXN1bHQuYnJlYWtwb2ludHNbYnJlYWtwb2ludHMuVHdvQ2FsZW5kYXJzXTtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tUmFuZ2VzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5zaG93UmFuZ2VzID0gIXJlc3VsdC5icmVha3BvaW50c1ticmVha3BvaW50cy5PbmVDYWxlbmRhclJhbmdlc107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3RhcnREYXRlVmFsdWUgPSB0aGlzLmZvcm1hdERhdGUodGhpcy5zdGFydERhdGUpO1xuICAgIHRoaXMuZW5kRGF0ZVZhbHVlID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuZW5kRGF0ZSk7XG4gICAgdGhpcy5zdWJzY3JpYmVEYXRlQ2hhbmdlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmxheW91dENoYW5nZXM/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVEYXRlQ2hhbmdlKGZhbHNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcy5mb3JFYWNoKChjaGlsZDogVGVtcGxhdGVJZERpcmVjdGl2ZSkgPT4ge1xuICAgICAgICB0aGlzLnRlbXBsYXRlc1tjaGlsZC5pZF0gPSBjaGlsZC50ZW1wbGF0ZVJlZjtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRlJ10pIHtcbiAgICAgIC8vIGZvciBkYXRlLXBpY2tlciBjb21wb25lbnRcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydkYXRlJ10/LmN1cnJlbnRWYWx1ZSkgPz8gbnVsbDtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkYXRlID8/IHRoaXMuY2FsZW5kYXJEYXRlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc3RhcnREYXRlJ10pIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydzdGFydERhdGUnXT8uY3VycmVudFZhbHVlKSA/PyBudWxsO1xuICAgICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UoZGF0ZSk7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGUgPz8gdGhpcy5jYWxlbmRhckRhdGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydlbmREYXRlJ10pIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRWYWx1ZVRvRGF0ZShjaGFuZ2VzWydlbmREYXRlJ10/LmN1cnJlbnRWYWx1ZSkgPz8gbnVsbDtcbiAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShkYXRlKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2xvY2FsZSddKSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZVZhbHVlID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuc3RhcnREYXRlKTtcbiAgICAgIHRoaXMuZW5kRGF0ZVZhbHVlID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuZW5kRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFZhbHVlVG9EYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGdldExvY2FsRGF0ZUZyb21TdHJpbmcodmFsdWUsIHRoaXMubG9jYWxlLCB0aGlzLnRpbWVwaWNrZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpID8/IG51bGw7XG4gIH1cblxuICBnZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZTogYW55KSB7XG4gICAgcmV0dXJuIGN1c3RvbVJhbmdlWzBdO1xuICB9XG5cbiAgc2V0Q3VzdG9tUmFuZ2UoY3VzdG9tUmFuZ2U6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Q3VzdG9tUmFuZ2VLZXkoY3VzdG9tUmFuZ2UpO1xuICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGN1c3RvbVJhbmdlWzFdWzBdKTtcbiAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UoY3VzdG9tUmFuZ2VbMV1bMV0pO1xuICB9XG5cbiAgaGFuZGxlQ2FsZW5kYXJDZWxsSG92ZXIoJGV2ZW50OiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuY2FsZW5kYXJDZWxsSG92ZXIuZW1pdCgkZXZlbnQpO1xuICAgIGlmICghdGhpcy5zdGFydERhdGUpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZSh0aGlzLnN0YXJ0RGF0ZUVsZW1lbnRSZWYsICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0U3RhcnRIb3ZlclZhbHVlID0gJGV2ZW50O1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuZW5kRGF0ZUVsZW1lbnRSZWYsIG51bGwpO1xuICAgICAgdGhpcy5pbnB1dEVuZEhvdmVyVmFsdWUgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSkge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuZW5kRGF0ZUVsZW1lbnRSZWYsICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZSA9ICRldmVudDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50OiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEYXRlLmdldFRpbWUoKSAhPT0gJGV2ZW50LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGVDaGFuZ2UuZW1pdCgkZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIGlmIChkYXRlPy5nZXRUaW1lKCkgIT09IHRoaXMuc3RhcnREYXRlPy5nZXRUaW1lKCkpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZSA/PyBudWxsO1xuICAgICAgdGhpcy5zdGFydERhdGVWYWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICB0aGlzLmlucHV0U3RhcnRIb3ZlclZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnJhbmdlID8geyBzdGFydERhdGU6IHRoaXMuc3RhcnREYXRlLCBlbmREYXRlOiB0aGlzLmVuZERhdGUgfSA6IHRoaXMuc3RhcnREYXRlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUVuZERhdGVDaGFuZ2UoZGF0ZTogRGF0ZSB8IG51bGwpIHtcbiAgICBpZiAoZGF0ZT8uZ2V0VGltZSgpICE9PSB0aGlzLmVuZERhdGU/LmdldFRpbWUoKSkge1xuICAgICAgaWYgKCF0aGlzLnJhbmdlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW5kRGF0ZSA9IGRhdGUgPz8gbnVsbDtcbiAgICAgIHRoaXMuZW5kRGF0ZVZhbHVlID0gdGhpcy5mb3JtYXREYXRlKHRoaXMuZW5kRGF0ZSk7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yYW5nZSA/IHsgc3RhcnREYXRlOiB0aGlzLnN0YXJ0RGF0ZSwgZW5kRGF0ZTogdGhpcy5lbmREYXRlIH0gOiB0aGlzLnN0YXJ0RGF0ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbGVhcigkZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gdGhpcy5jYWxlbmRhckNvbXBvbmVudC5jbGVhckRhdGVzKCk7XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKG51bGwpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkYXRlID0gZ2V0TG9jYWxEYXRlRnJvbVN0cmluZygkZXZlbnQudGFyZ2V0Py52YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMudGltZXBpY2tlcik7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICAvLyB0aGlzLmNhbGVuZGFyQ29tcG9uZW50LmNsZWFyRGF0ZXMoKTtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKG51bGwpO1xuICAgIH1cbiAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICghKHRoaXMuZm9yYmlkZGVuRGF0ZShkYXRlKSB8fCAodGhpcy5lbmREYXRlICYmIHRoaXMuZW5kRGF0ZSA8IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UodGhpcy5zdGFydERhdGUgPz8gbnVsbCk7XG4gIH1cblxuICBoYW5kbGVFbmREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBkYXRlID0gZ2V0TG9jYWxEYXRlRnJvbVN0cmluZygkZXZlbnQudGFyZ2V0Py52YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMudGltZXBpY2tlcik7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgIGlmICghKHRoaXMuZm9yYmlkZGVuRGF0ZShkYXRlKSB8fCAodGhpcy5zdGFydERhdGUgJiYgdGhpcy5zdGFydERhdGUgPiBkYXRlKSkpIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLmVuZERhdGUgPSBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UodGhpcy5lbmREYXRlID8/IG51bGwpO1xuICB9XG5cbiAgZm9yYmlkZGVuRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpIHx8ICh0aGlzLmRhdGVGaWx0ZXIgPyAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xuICB9XG5cbiAgc2V0SW5wdXRWYWx1ZSA9IChlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmICghZWxlbWVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdERhdGUoZGF0ZSk7XG4gICAgLy8gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlQXNEYXRlID0gZGF0ZTtcbiAgICByZXR1cm47XG4gIH07XG5cbiAgb25DaGFuZ2U6IGFueSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5yYW5nZSA/IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0VGltZUNoYW5nZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zdGFydERhdGUgPSB0aW1lID8/IHRoaXMuc3RhcnREYXRlO1xuICB9XG5cbiAgaGFuZGxlRW5kVGltZUNoYW5nZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF0aGlzLnJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW5kRGF0ZSA9IHRpbWUgPz8gdGhpcy5lbmREYXRlO1xuICB9XG59XG4iLCI8Yy1kcm9wZG93biAjZHJvcGRvd249XCJjRHJvcGRvd25cIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIGNsYXNzPVwiZGF0ZS1waWNrZXIgcGlja2VyXCIgW25nQ2xhc3NdPVwiZGF0ZVBpY2tlckNsYXNzZXNcIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbcG9wcGVyT3B0aW9uc109XCJwb3BwZXJqc09wdGlvbnNcIj5cbiAgPGMtaW5wdXQtZ3JvdXAgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICBjRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXBcIlxuICA+XG4gICAgPGlucHV0IChjaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydERhdGVJbnB1dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dFN0YXJ0SG92ZXJWYWx1ZX1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic3RhcnREYXRlUGxhY2Vob2xkZXIgPz8gcGxhY2Vob2xkZXJbMF1cIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgI3N0YXJ0RGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkgPz8gbnVsbFwiXG4gICAgICAgICAgIFt2YWxpZF09XCJyYW5nZSA/IHVuZGVmaW5lZCA6IHZhbGlkXCJcbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJyYW5nZSAmJiBzZXBhcmF0b3IgIT09IGZhbHNlXCIgY0lucHV0R3JvdXBUZXh0PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWFycm93LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPGlucHV0IChjaGFuZ2UpPVwiaGFuZGxlRW5kRGF0ZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAqbmdJZj1cInJhbmdlXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZERhdGVJbnB1dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dEVuZEhvdmVyVmFsdWV9XCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVQbGFjZWhvbGRlciA/PyBwbGFjZWhvbGRlclsxXVwiXG4gICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICAjZW5kRGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkgPz8gbnVsbFwiXG4gICAgICAgICAgIFt2YWxpZF09XCJ2YWxpZFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yIHx8IGNsZWFuZXJcIiBjSW5wdXRHcm91cFRleHQ+XG4gICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvclwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWluZGljYXRvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWlucHV0LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAoY2xpY2spPVwiIWRpc2FibGVkICYmIGhhbmRsZUNsZWFyKCRldmVudClcIiAqbmdJZj1cImNsZWFuZXIgJiYgc3RhcnREYXRlRWxlbWVudFJlZi52YWx1ZSAmJiAhZGlzYWJsZWRcIiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1jbGVhbmVyXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIGRhdGUtcGlja2VyLWNsZWFuZXItaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG5cbiAgPC9jLWlucHV0LWdyb3VwPlxuICA8ZGl2IGNEcm9wZG93bk1lbnU+XG4gICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWJvZHlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhc2hvd1Jhbmdlc1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmFuZ2VzICYmIGN1c3RvbVJhbmdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1yYW5nZXNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGN1c3RvbVJhbmdlIG9mIGN1c3RvbVJhbmdlc1wiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwicmFuZ2VzQnV0dG9uc0NvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtzaXplXT1cInJhbmdlc0J1dHRvbnNTaXplXCJcbiAgICAgICAgICAgICAgICAgIFt2YXJpYW50XT1cInJhbmdlc0J1dHRvbnNWYXJpYW50XCJcbiAgICAgICAgICAgICAgICAgIGNCdXR0b24+XG4gICAgICAgICAgICB7e2N1c3RvbVJhbmdlIHwgY3VzdG9tUmFuZ2VLZXl9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8Yy1jYWxlbmRhclxuICAgICAgICAoY2FsZW5kYXJDZWxsSG92ZXIpPVwiaGFuZGxlQ2FsZW5kYXJDZWxsSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgIChjYWxlbmRhckRhdGVDaGFuZ2UpPVwiaGFuZGxlQ2FsZW5kYXJEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoZW5kRGF0ZUNoYW5nZSk9XCJoYW5kbGVFbmREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoc3RhcnREYXRlQ2hhbmdlKT1cImhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NhbGVuZGFyRGF0ZV09XCJjYWxlbmRhckRhdGVcIlxuICAgICAgICBbY2FsZW5kYXJzXT1cImlzTW9iaWxlID8gMSA6IGNhbGVuZGFyc1wiXG4gICAgICAgIFtkYXRlRmlsdGVyXT1cImRhdGVGaWx0ZXJcIlxuICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzXCJcbiAgICAgICAgW2VuZERhdGVdPVwiZW5kRGF0ZVwiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXG4gICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbmF2aWdhdGlvbl09XCJuYXZpZ2F0aW9uXCJcbiAgICAgICAgW3JhbmdlXT1cInJhbmdlXCJcbiAgICAgICAgW3N0YXJ0RGF0ZV09XCJzdGFydERhdGVcIlxuICAgICAgICBbbmF2WWVhckZpcnN0XT1cIm5hdlllYXJGaXJzdFwiXG4gICAgICAgIFtkYXlGb3JtYXRdPVwiZGF5Rm9ybWF0XCJcbiAgICAgICAgW3dlZWtkYXlGb3JtYXRdPVwid2Vla2RheUZvcm1hdFwiXG4gICAgICAgIGNsYXNzPVwiZGF0ZS1waWNrZXItY2FsZW5kYXJzXCJcbiAgICAgID48L2MtY2FsZW5kYXI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZmFsc2UgJiYgdGltZXBpY2tlclwiIGNsYXNzPVwiZGF0ZS1waWNrZXItdGltZXBpY2tlcnNcIj5cbiAgICAgICAgPCEtLSB0b2RvLS0+XG4gICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgdmFyaWFudD1cInNlbGVjdFwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3RhcnREYXRlXCJcbiAgICAgICAgICBbdGltZV09XCJzdGFydERhdGUgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAodGltZUNoYW5nZSk9XCJoYW5kbGVTdGFydFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2MtdGltZS1waWNrZXI+XG4gICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgKm5nSWY9XCJyYW5nZVwiXG4gICAgICAgICAgdmFyaWFudD1cInNlbGVjdFwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZW5kRGF0ZVwiXG4gICAgICAgICAgW3RpbWVdPVwiZW5kRGF0ZSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZUVuZFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2MtdGltZS1waWNrZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGVtcGxhdGVzPy5kYXRlUGlja2VyRm9vdGVyXCIgY2xhc3M9XCJwaWNrZXItZm9vdGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVzPy5kYXRlUGlja2VyRm9vdGVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkcm9wZG93bn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvYy1kcm9wZG93bj5cbiJdfQ==
|
|
@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';
|
|
5
|
+
import { CustomRangeKeyPipe } from './date-range-picker/custom-range-key.pipe';
|
|
5
6
|
import { ButtonModule } from '../button';
|
|
6
7
|
import { CalendarModule } from '../calendar';
|
|
7
8
|
import { SharedModule } from '../shared';
|
|
@@ -12,7 +13,8 @@ import * as i0 from "@angular/core";
|
|
|
12
13
|
export class DateRangePickerModule {
|
|
13
14
|
}
|
|
14
15
|
DateRangePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
-
DateRangePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: DateRangePickerModule, declarations: [DateRangePickerComponent
|
|
16
|
+
DateRangePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: DateRangePickerModule, declarations: [DateRangePickerComponent,
|
|
17
|
+
CustomRangeKeyPipe], imports: [CommonModule,
|
|
16
18
|
FormsModule,
|
|
17
19
|
ReactiveFormsModule,
|
|
18
20
|
ButtonModule,
|
|
@@ -20,7 +22,8 @@ DateRangePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
|
|
|
20
22
|
SharedModule,
|
|
21
23
|
FormModule,
|
|
22
24
|
DropdownModule,
|
|
23
|
-
TimePickerModule], exports: [DateRangePickerComponent
|
|
25
|
+
TimePickerModule], exports: [DateRangePickerComponent,
|
|
26
|
+
CustomRangeKeyPipe] });
|
|
24
27
|
DateRangePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DateRangePickerModule, imports: [CommonModule,
|
|
25
28
|
FormsModule,
|
|
26
29
|
ReactiveFormsModule,
|
|
@@ -34,7 +37,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
34
37
|
type: NgModule,
|
|
35
38
|
args: [{
|
|
36
39
|
declarations: [
|
|
37
|
-
DateRangePickerComponent
|
|
40
|
+
DateRangePickerComponent,
|
|
41
|
+
CustomRangeKeyPipe
|
|
38
42
|
],
|
|
39
43
|
imports: [
|
|
40
44
|
CommonModule,
|
|
@@ -48,8 +52,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
48
52
|
TimePickerModule
|
|
49
53
|
],
|
|
50
54
|
exports: [
|
|
51
|
-
DateRangePickerComponent
|
|
55
|
+
DateRangePickerComponent,
|
|
56
|
+
CustomRangeKeyPipe
|
|
52
57
|
]
|
|
53
58
|
}]
|
|
54
59
|
}] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUF1QmxELE1BQU0sT0FBTyxxQkFBcUI7O2tIQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixpQkFuQjlCLHdCQUF3QjtRQUN4QixrQkFBa0IsYUFHbEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGNBQWM7UUFDZCxZQUFZO1FBQ1osVUFBVTtRQUNWLGNBQWM7UUFDZCxnQkFBZ0IsYUFHaEIsd0JBQXdCO1FBQ3hCLGtCQUFrQjttSEFHVCxxQkFBcUIsWUFmOUIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGNBQWM7UUFDZCxZQUFZO1FBQ1osVUFBVTtRQUNWLGNBQWM7UUFDZCxnQkFBZ0I7MkZBT1AscUJBQXFCO2tCQXJCakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osd0JBQXdCO3dCQUN4QixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4QixrQkFBa0I7cUJBQ25CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tUmFuZ2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci9jdXN0b20tcmFuZ2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAnLi4vY2FsZW5kYXInO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICcuLi9mb3JtJztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuaW1wb3J0IHsgVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJy4uL3RpbWUtcGlja2VyJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgIEN1c3RvbVJhbmdlS2V5UGlwZVxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIFRpbWVQaWNrZXJNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgICBDdXN0b21SYW5nZUtleVBpcGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VQaWNrZXJNb2R1bGUge1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJQ2FsZW5kYXJSYW5nZXMge1xuICBba2V5OiBzdHJpbmddOiBEYXRlW107XG59XG5cbmV4cG9ydCB0eXBlIFRDdXN0b21SYW5nZSA9IFtzdHJpbmcsIERhdGVbXV1cbiJdfQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';
|
|
2
|
+
export { CustomRangeKeyPipe } from './date-range-picker/custom-range-key.pipe';
|
|
2
3
|
export { DateRangePickerModule } from './date-range-picker.module';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvZGF0ZS1yYW5nZS1waWNrZXIvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUUzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IElDYWxlbmRhclJhbmdlcyB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIudHlwZSc7XG5leHBvcnQgeyBDdXN0b21SYW5nZUtleVBpcGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyL2N1c3RvbS1yYW5nZS1rZXkucGlwZSc7XG5leHBvcnQgeyBEYXRlUmFuZ2VQaWNrZXJNb2R1bGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLm1vZHVsZSc7XG4iXX0=
|