@fundamental-ngx/core 0.52.2-rc.26 → 0.52.2-rc.28
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/calendar/calendar-views/calendar-day-view/calendar-day-view.component.d.ts +1 -1
- package/calendar/calendar-views/calendar-month-view/calendar-month-view.component.d.ts +71 -7
- package/calendar/calendar-views/calendar-year-view/calendar-year-view.component.d.ts +68 -3
- package/calendar/calendar.component.d.ts +12 -1
- package/calendar/calendar.service.d.ts +4 -1
- package/calendar/models/calendar-month.d.ts +6 -1
- package/calendar/models/calendar-year-grid.d.ts +6 -1
- package/date-picker/date-picker.component.d.ts +6 -1
- package/esm2022/calendar/calendar-header/calendar-header.component.mjs +3 -3
- package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +2 -2
- package/esm2022/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +4 -3
- package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +210 -21
- package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +196 -9
- package/esm2022/calendar/calendar.component.mjs +40 -8
- package/esm2022/calendar/calendar.service.mjs +2 -2
- package/esm2022/calendar/models/calendar-month.mjs +1 -1
- package/esm2022/calendar/models/calendar-year-grid.mjs +1 -1
- package/esm2022/date-picker/date-picker.component.mjs +18 -4
- package/esm2022/datetime-picker/datetime-picker.component.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-calendar.mjs +448 -41
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +17 -3
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/package.json +15 -15
|
@@ -159,7 +159,7 @@ export declare class CalendarDayViewComponent<D> implements OnInit, OnChanges, F
|
|
|
159
159
|
* @param day The calendar day to be selected.
|
|
160
160
|
* @param event Optional mouse event for handling event propagation.
|
|
161
161
|
*/
|
|
162
|
-
selectDate(day: CalendarDay<D>, event?: MouseEvent): void;
|
|
162
|
+
selectDate(day: CalendarDay<D>, event?: MouseEvent | KeyboardEvent): void;
|
|
163
163
|
/**
|
|
164
164
|
* Toggles the selection of a week on the calendar.
|
|
165
165
|
* If the provided week is already fully selected, it will deselect it.
|
|
@@ -3,6 +3,7 @@ import { DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime
|
|
|
3
3
|
import { CalendarService } from '../../calendar.service';
|
|
4
4
|
import { CalendarMonth } from '../../models/calendar-month';
|
|
5
5
|
import { EscapeFocusFunction, FocusableCalendarView } from '../../models/common';
|
|
6
|
+
import { DateRange } from '../../models/date-range';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
/** Component representing the month view of the calendar. */
|
|
8
9
|
export declare class CalendarMonthViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {
|
|
@@ -19,13 +20,22 @@ export declare class CalendarMonthViewComponent<D> implements OnInit, OnChanges,
|
|
|
19
20
|
focusEscapeFunction: EscapeFocusFunction;
|
|
20
21
|
/** A year the month view is referring to */
|
|
21
22
|
year: number;
|
|
23
|
+
/** Whether to pick the date range in month year format without picking days */
|
|
24
|
+
isDateRangeMonthYearFormat: boolean;
|
|
22
25
|
/** An event fired when a new month is selected */
|
|
23
26
|
readonly monthClicked: EventEmitter<number>;
|
|
27
|
+
/** Event thrown every time selected first or last date in range mode is changed */
|
|
28
|
+
readonly selectedRangeDateChange: EventEmitter<DateRange<D>>;
|
|
29
|
+
/**
|
|
30
|
+
* Whether user wants to mark month cells on hover.
|
|
31
|
+
* Works only on range mode, when start month is selected.
|
|
32
|
+
*/
|
|
33
|
+
rangeHoverEffect: boolean;
|
|
24
34
|
/**
|
|
25
35
|
* @hidden
|
|
26
36
|
* Month grid table
|
|
27
37
|
*/
|
|
28
|
-
_calendarMonthListGrid: CalendarMonth[][];
|
|
38
|
+
_calendarMonthListGrid: CalendarMonth<D>[][];
|
|
29
39
|
/**
|
|
30
40
|
* @hidden
|
|
31
41
|
* A number offset used to achieve the 1-12 representation of the calendar
|
|
@@ -42,6 +52,9 @@ export declare class CalendarMonthViewComponent<D> implements OnInit, OnChanges,
|
|
|
42
52
|
/** @hidden */
|
|
43
53
|
private _initiated;
|
|
44
54
|
/** @hidden */
|
|
55
|
+
private _selectedRangeDate;
|
|
56
|
+
private _isOnRangePick;
|
|
57
|
+
/** @hidden */
|
|
45
58
|
constructor(_eRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _calendarService: CalendarService, _dateTimeFormats: DateTimeFormats, _dateTimeAdapter: DatetimeAdapter<D>);
|
|
46
59
|
/** @hidden */
|
|
47
60
|
ngOnInit(): void;
|
|
@@ -63,13 +76,17 @@ export declare class CalendarMonthViewComponent<D> implements OnInit, OnChanges,
|
|
|
63
76
|
* Selected date label ID
|
|
64
77
|
*/
|
|
65
78
|
get _selectedDateLabelId(): string;
|
|
66
|
-
/**
|
|
67
|
-
|
|
79
|
+
/** The currently selected FdDates model start and end in range mode. */
|
|
80
|
+
set selectedRangeDate(dateRange: DateRange<D>);
|
|
81
|
+
get selectedRangeDate(): DateRange<D>;
|
|
68
82
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
83
|
+
* @hidden
|
|
84
|
+
* Amount of selected months
|
|
85
|
+
* 0, when there is no month selected, or start month is invalid,
|
|
86
|
+
* 1, when there is only valid start month, or end month is same as start month,
|
|
87
|
+
* 2, when both dates are valid
|
|
71
88
|
*/
|
|
72
|
-
|
|
89
|
+
get _selectCounter(): number;
|
|
73
90
|
/**
|
|
74
91
|
* @hidden
|
|
75
92
|
* Method for handling the keyboard events (a11y)
|
|
@@ -100,6 +117,53 @@ export declare class CalendarMonthViewComponent<D> implements OnInit, OnChanges,
|
|
|
100
117
|
* Method that check if this is selected month
|
|
101
118
|
*/
|
|
102
119
|
_isSelected(id: number): boolean;
|
|
120
|
+
/** Method for handling the mouse click event when a month is selected */
|
|
121
|
+
selectMonth(monthCell: CalendarMonth<D>, event?: MouseEvent | KeyboardEvent): void;
|
|
122
|
+
/**
|
|
123
|
+
* Set focus on month cell.
|
|
124
|
+
* It can be a selected cell, current month cell or first cell in the list
|
|
125
|
+
*/
|
|
126
|
+
setFocusOnCell(): void;
|
|
127
|
+
/**
|
|
128
|
+
* @hidden
|
|
129
|
+
* Handles hover effect for range selection mode.
|
|
130
|
+
* @param month The calendar month that is hovered.
|
|
131
|
+
*/
|
|
132
|
+
_handleRangeHover(month: CalendarMonth<D>): void;
|
|
133
|
+
/**
|
|
134
|
+
* @hidden
|
|
135
|
+
* Handles the hover effect for range selection.
|
|
136
|
+
* Toggles the hover effect based on the selection state and event.
|
|
137
|
+
* @param event Optional mouse event for handling hover effect.
|
|
138
|
+
*/
|
|
139
|
+
private _handleRangeHoverEffect;
|
|
140
|
+
/**
|
|
141
|
+
* @hidden
|
|
142
|
+
* Selects or updates the range of dates in range mode.
|
|
143
|
+
* Handles the start and end dates and updates the selected range.
|
|
144
|
+
* @param month The calendar month to be selected or updated in the range.
|
|
145
|
+
*/
|
|
146
|
+
private _selectRangeDate;
|
|
147
|
+
/**
|
|
148
|
+
* @hidden
|
|
149
|
+
* Orders the start and end dates for the range selection.
|
|
150
|
+
* Ensures the start date is before or equal to the end date.
|
|
151
|
+
* @param date1 The first date.
|
|
152
|
+
* @param date2 The second date.
|
|
153
|
+
* @returns An object containing the ordered start and end dates.
|
|
154
|
+
*/
|
|
155
|
+
private _getOrderedRange;
|
|
156
|
+
/**
|
|
157
|
+
* @hidden
|
|
158
|
+
* Change properties of range months, this method is called, to not rebuild whole grid from scratch,
|
|
159
|
+
* it just changes properties of newly selected/unselected months.
|
|
160
|
+
*/
|
|
161
|
+
private _changeSelectedRangeMonths;
|
|
162
|
+
/**
|
|
163
|
+
* @hidden
|
|
164
|
+
* Check if dates are equal
|
|
165
|
+
*/
|
|
166
|
+
private _isSameDate;
|
|
103
167
|
/**
|
|
104
168
|
* @hidden
|
|
105
169
|
* Method that create month grid with required meta data
|
|
@@ -118,5 +182,5 @@ export declare class CalendarMonthViewComponent<D> implements OnInit, OnChanges,
|
|
|
118
182
|
/** @hidden */
|
|
119
183
|
private _focusOnCellByIndex;
|
|
120
184
|
static ɵfac: i0.ɵɵFactoryDeclaration<CalendarMonthViewComponent<any>, never>;
|
|
121
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarMonthViewComponent<any>, "fd-calendar-month-view", never, { "id": { "alias": "id"; "required": false; }; "monthSelected": { "alias": "monthSelected"; "required": false; }; "focusEscapeFunction": { "alias": "focusEscapeFunction"; "required": false; }; "year": { "alias": "year"; "required": false; }; }, { "monthClicked": "monthClicked"; }, never, never, true, never>;
|
|
185
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarMonthViewComponent<any>, "fd-calendar-month-view", never, { "id": { "alias": "id"; "required": false; }; "monthSelected": { "alias": "monthSelected"; "required": false; }; "focusEscapeFunction": { "alias": "focusEscapeFunction"; "required": false; }; "year": { "alias": "year"; "required": false; }; "isDateRangeMonthYearFormat": { "alias": "isDateRangeMonthYearFormat"; "required": false; }; "rangeHoverEffect": { "alias": "rangeHoverEffect"; "required": false; }; "selectedRangeDate": { "alias": "selectedRangeDate"; "required": false; }; }, { "monthClicked": "monthClicked"; "selectedRangeDateChange": "selectedRangeDateChange"; }, never, never, true, never>;
|
|
122
186
|
}
|
|
@@ -3,6 +3,7 @@ import { DateTimeFormats, DatetimeAdapter } from '@fundamental-ngx/core/datetime
|
|
|
3
3
|
import { CalendarService } from '../../calendar.service';
|
|
4
4
|
import { CalendarYear, CalendarYearGrid } from '../../models/calendar-year-grid';
|
|
5
5
|
import { EscapeFocusFunction, FocusableCalendarView } from '../../models/common';
|
|
6
|
+
import { DateRange } from '../../models/date-range';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
/** Component representing the YearView of the Calendar Component. */
|
|
8
9
|
export declare class CalendarYearViewComponent<D> implements OnInit, OnChanges, FocusableCalendarView {
|
|
@@ -21,8 +22,17 @@ export declare class CalendarYearViewComponent<D> implements OnInit, OnChanges,
|
|
|
21
22
|
* Object to customize year grid
|
|
22
23
|
*/
|
|
23
24
|
yearViewGrid: CalendarYearGrid;
|
|
25
|
+
/** Whether the date range is year format only excluding month and day */
|
|
26
|
+
isDateRangeYearFormat: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Whether user wants to mark year cells on hover.
|
|
29
|
+
* Works only on range mode, when start year is selected.
|
|
30
|
+
*/
|
|
31
|
+
rangeHoverEffect: boolean;
|
|
24
32
|
/** Event fired when a year is selected. */
|
|
25
33
|
readonly yearClicked: EventEmitter<number>;
|
|
34
|
+
/** Event thrown every time selected first or last date in range mode is changed */
|
|
35
|
+
readonly selectedRangeDateChange: EventEmitter<DateRange<D>>;
|
|
26
36
|
/**
|
|
27
37
|
* @hidden
|
|
28
38
|
* This variable is used to define which year from calendarYearList should be focusable by tab key
|
|
@@ -32,7 +42,7 @@ export declare class CalendarYearViewComponent<D> implements OnInit, OnChanges,
|
|
|
32
42
|
* @hidden
|
|
33
43
|
* Parameter that stores the dozen of years that are currently being displayed.
|
|
34
44
|
*/
|
|
35
|
-
_calendarYearListGrid: CalendarYear[][];
|
|
45
|
+
_calendarYearListGrid: CalendarYear<D>[][];
|
|
36
46
|
/**
|
|
37
47
|
* @hidden
|
|
38
48
|
* Parameter storing the year of the present day.
|
|
@@ -62,17 +72,32 @@ export declare class CalendarYearViewComponent<D> implements OnInit, OnChanges,
|
|
|
62
72
|
/** @hidden */
|
|
63
73
|
private _initiated;
|
|
64
74
|
/** @hidden */
|
|
75
|
+
private _selectedRangeDate;
|
|
76
|
+
/** @hidden */
|
|
77
|
+
private _isOnRangePick;
|
|
78
|
+
/** @hidden */
|
|
65
79
|
constructor(_eRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _calendarService: CalendarService, _dateTimeAdapter: DatetimeAdapter<D>, _dateTimeFormats: DateTimeFormats);
|
|
66
80
|
/** @hidden */
|
|
67
81
|
ngOnInit(): void;
|
|
68
82
|
/** @hidden */
|
|
69
83
|
ngOnChanges(changes: SimpleChanges): void;
|
|
84
|
+
/** The currently selected FdDates model start and end in range mode. */
|
|
85
|
+
set selectedRangeDate(dateRange: DateRange<D>);
|
|
86
|
+
get selectedRangeDate(): DateRange<D>;
|
|
87
|
+
/**
|
|
88
|
+
* @hidden
|
|
89
|
+
* Amount of selected years
|
|
90
|
+
* 0, when there is no year selected, or start year is invalid,
|
|
91
|
+
* 1, when there is only valid start year, or end year is same as start year,
|
|
92
|
+
* 2, when both dates are valid
|
|
93
|
+
*/
|
|
94
|
+
get _selectCounter(): number;
|
|
70
95
|
/** Method used to load the previous {{col * row}} years to be displayed. */
|
|
71
96
|
loadNextYearList(): void;
|
|
72
97
|
/** Method used to load the next {{col * row}} years to be displayed. */
|
|
73
98
|
loadPreviousYearList(): void;
|
|
74
99
|
/** Method that sends the year to the parent component when it is clicked. */
|
|
75
|
-
selectYear(selectedYear: CalendarYear
|
|
100
|
+
selectYear(selectedYear: CalendarYear<D>, event?: MouseEvent | KeyboardEvent): void;
|
|
76
101
|
/**
|
|
77
102
|
* Set focus on month cell.
|
|
78
103
|
* It can be a selected cell, current month cell or first cell in the list
|
|
@@ -99,6 +124,12 @@ export declare class CalendarYearViewComponent<D> implements OnInit, OnChanges,
|
|
|
99
124
|
* @param index
|
|
100
125
|
*/
|
|
101
126
|
_getId(index: number): string;
|
|
127
|
+
/**
|
|
128
|
+
* @hidden
|
|
129
|
+
* Handles hover effect for range selection mode.
|
|
130
|
+
* @param year The calendar year that is hovered.
|
|
131
|
+
*/
|
|
132
|
+
_handleRangeHover(year: CalendarYear<D>): void;
|
|
102
133
|
/**
|
|
103
134
|
* @hidden
|
|
104
135
|
* Method that returns active cell, which means:
|
|
@@ -109,6 +140,40 @@ export declare class CalendarYearViewComponent<D> implements OnInit, OnChanges,
|
|
|
109
140
|
private _getActiveYear;
|
|
110
141
|
/** @hidden */
|
|
111
142
|
private _constructYearGrid;
|
|
143
|
+
/**
|
|
144
|
+
* @hidden
|
|
145
|
+
* Handles the hover effect for range selection.
|
|
146
|
+
* Toggles the hover effect based on the selection state and event.
|
|
147
|
+
* @param event Optional mouse event for handling hover effect.
|
|
148
|
+
*/
|
|
149
|
+
private _handleRangeHoverEffect;
|
|
150
|
+
/**
|
|
151
|
+
* @hidden
|
|
152
|
+
* Change properties of range years, this method is called, to not rebuild whole grid from scratch,
|
|
153
|
+
* it just changes properties of newly selected/unselected years.
|
|
154
|
+
*/
|
|
155
|
+
private _changeSelectedRangeYears;
|
|
156
|
+
/**
|
|
157
|
+
* @hidden
|
|
158
|
+
* Check if dates are equal
|
|
159
|
+
*/
|
|
160
|
+
private _isSameDate;
|
|
161
|
+
/**
|
|
162
|
+
* @hidden
|
|
163
|
+
* Selects or updates the range of years in range mode.
|
|
164
|
+
* Handles the start and end years and updates the selected range.
|
|
165
|
+
* @param year The calendar year to be selected or updated in the range.
|
|
166
|
+
*/
|
|
167
|
+
private _selectRangeDate;
|
|
168
|
+
/**
|
|
169
|
+
* @hidden
|
|
170
|
+
* Orders the start and end dates for the range selection.
|
|
171
|
+
* Ensures the start date is before or equal to the end date.
|
|
172
|
+
* @param date1 The first date.
|
|
173
|
+
* @param date2 The second date.
|
|
174
|
+
* @returns An object containing the ordered start and end dates.
|
|
175
|
+
*/
|
|
176
|
+
private _getOrderedRange;
|
|
112
177
|
/**
|
|
113
178
|
* @hidden
|
|
114
179
|
* Returns year name as a string.
|
|
@@ -142,5 +207,5 @@ export declare class CalendarYearViewComponent<D> implements OnInit, OnChanges,
|
|
|
142
207
|
/** @hidden */
|
|
143
208
|
private _focusOnCellByIndex;
|
|
144
209
|
static ɵfac: i0.ɵɵFactoryDeclaration<CalendarYearViewComponent<any>, never>;
|
|
145
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarYearViewComponent<any>, "fd-calendar-year-view", never, { "id": { "alias": "id"; "required": false; }; "focusEscapeFunction": { "alias": "focusEscapeFunction"; "required": false; }; "yearSelected": { "alias": "yearSelected"; "required": false; }; "yearViewGrid": { "alias": "yearViewGrid"; "required": false; }; }, { "yearClicked": "yearClicked"; }, never, never, true, never>;
|
|
210
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarYearViewComponent<any>, "fd-calendar-year-view", never, { "id": { "alias": "id"; "required": false; }; "focusEscapeFunction": { "alias": "focusEscapeFunction"; "required": false; }; "yearSelected": { "alias": "yearSelected"; "required": false; }; "yearViewGrid": { "alias": "yearViewGrid"; "required": false; }; "isDateRangeYearFormat": { "alias": "isDateRangeYearFormat"; "required": false; }; "rangeHoverEffect": { "alias": "rangeHoverEffect"; "required": false; }; "selectedRangeDate": { "alias": "selectedRangeDate"; "required": false; }; }, { "yearClicked": "yearClicked"; "selectedRangeDateChange": "selectedRangeDateChange"; }, never, never, true, never>;
|
|
146
211
|
}
|
|
@@ -94,6 +94,13 @@ export declare class CalendarComponent<D> implements OnInit, OnChanges, ControlV
|
|
|
94
94
|
* Works only on range mode, when start date is selected on Day View.
|
|
95
95
|
*/
|
|
96
96
|
rangeHoverEffect: boolean;
|
|
97
|
+
/** Whether to pick the date range in month or year or days format
|
|
98
|
+
* Day format will have a month and year including day
|
|
99
|
+
* Month format will have year including month
|
|
100
|
+
* Year format will have just year
|
|
101
|
+
* Values can be 'month' for Month format, 'year' for Year format or nothing for day format
|
|
102
|
+
*/
|
|
103
|
+
dateRangeFormat: string;
|
|
97
104
|
/** Event thrown every time active view is changed */
|
|
98
105
|
readonly activeViewChange: EventEmitter<FdCalendarView>;
|
|
99
106
|
/** Event thrown every time selected date in single mode is changed */
|
|
@@ -267,6 +274,10 @@ export declare class CalendarComponent<D> implements OnInit, OnChanges, ControlV
|
|
|
267
274
|
onYearsRangeViewSelected(): void;
|
|
268
275
|
/** Method that provides information if model selected date/dates have properly types and are valid */
|
|
269
276
|
isModelValid(): boolean;
|
|
277
|
+
/** Whether the date range format is month */
|
|
278
|
+
isDateRangeMonthFormat(): boolean;
|
|
279
|
+
/** Whether the date range format is year */
|
|
280
|
+
isDateRangeYearFormat(): boolean;
|
|
270
281
|
/** @hidden */
|
|
271
282
|
private _listenToLocaleChanges;
|
|
272
283
|
/**
|
|
@@ -284,5 +295,5 @@ export declare class CalendarComponent<D> implements OnInit, OnChanges, ControlV
|
|
|
284
295
|
/** @hidden */
|
|
285
296
|
private _isNavigationButtonDisabled;
|
|
286
297
|
static ɵfac: i0.ɵɵFactoryDeclaration<CalendarComponent<any>, [null, null, null, { optional: true; }, { optional: true; }]>;
|
|
287
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent<any>, "fd-calendar", never, { "selectedDate": { "alias": "selectedDate"; "required": false; }; "selectedMultipleDates": { "alias": "selectedMultipleDates"; "required": false; }; "selectedRangeDate": { "alias": "selectedRangeDate"; "required": false; }; "selectedMultipleDateRanges": { "alias": "selectedMultipleDateRanges"; "required": false; }; "markWeekends": { "alias": "markWeekends"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "allowMultipleSelection": { "alias": "allowMultipleSelection"; "required": false; }; "mobileLandscape": { "alias": "mobileLandscape"; "required": false; }; "mobilePortrait": { "alias": "mobilePortrait"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "startingDayOfWeek": { "alias": "startingDayOfWeek"; "required": false; }; "calType": { "alias": "calType"; "required": false; }; "id": { "alias": "id"; "required": false; }; "specialDaysRules": { "alias": "specialDaysRules"; "required": false; }; "yearGrid": { "alias": "yearGrid"; "required": false; }; "aggregatedYearGrid": { "alias": "aggregatedYearGrid"; "required": false; }; "rangeHoverEffect": { "alias": "rangeHoverEffect"; "required": false; }; "previousButtonDisableFunction": { "alias": "previousButtonDisableFunction"; "required": false; }; "nextButtonDisableFunction": { "alias": "nextButtonDisableFunction"; "required": false; }; "escapeFocusFunction": { "alias": "escapeFocusFunction"; "required": false; }; "disableFunction": { "alias": "disableFunction"; "required": false; }; "disableRangeStartFunction": { "alias": "disableRangeStartFunction"; "required": false; }; "disableRangeEndFunction": { "alias": "disableRangeEndFunction"; "required": false; }; }, { "activeViewChange": "activeViewChange"; "selectedDateChange": "selectedDateChange"; "selectedMultipleDatesChange": "selectedMultipleDatesChange"; "selectedRangeDateChange": "selectedRangeDateChange"; "selectedMultipleDateRangesChange": "selectedMultipleDateRangesChange"; "isValidDateChange": "isValidDateChange"; "closeCalendar": "closeCalendar"; "closeClicked": "closeClicked"; }, never, never, true, never>;
|
|
298
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent<any>, "fd-calendar", never, { "selectedDate": { "alias": "selectedDate"; "required": false; }; "selectedMultipleDates": { "alias": "selectedMultipleDates"; "required": false; }; "selectedRangeDate": { "alias": "selectedRangeDate"; "required": false; }; "selectedMultipleDateRanges": { "alias": "selectedMultipleDateRanges"; "required": false; }; "markWeekends": { "alias": "markWeekends"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "allowMultipleSelection": { "alias": "allowMultipleSelection"; "required": false; }; "mobileLandscape": { "alias": "mobileLandscape"; "required": false; }; "mobilePortrait": { "alias": "mobilePortrait"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "startingDayOfWeek": { "alias": "startingDayOfWeek"; "required": false; }; "calType": { "alias": "calType"; "required": false; }; "id": { "alias": "id"; "required": false; }; "specialDaysRules": { "alias": "specialDaysRules"; "required": false; }; "yearGrid": { "alias": "yearGrid"; "required": false; }; "aggregatedYearGrid": { "alias": "aggregatedYearGrid"; "required": false; }; "rangeHoverEffect": { "alias": "rangeHoverEffect"; "required": false; }; "dateRangeFormat": { "alias": "dateRangeFormat"; "required": false; }; "previousButtonDisableFunction": { "alias": "previousButtonDisableFunction"; "required": false; }; "nextButtonDisableFunction": { "alias": "nextButtonDisableFunction"; "required": false; }; "escapeFocusFunction": { "alias": "escapeFocusFunction"; "required": false; }; "disableFunction": { "alias": "disableFunction"; "required": false; }; "disableRangeStartFunction": { "alias": "disableRangeStartFunction"; "required": false; }; "disableRangeEndFunction": { "alias": "disableRangeEndFunction"; "required": false; }; }, { "activeViewChange": "activeViewChange"; "selectedDateChange": "selectedDateChange"; "selectedMultipleDatesChange": "selectedMultipleDatesChange"; "selectedRangeDateChange": "selectedRangeDateChange"; "selectedMultipleDateRangesChange": "selectedMultipleDateRangesChange"; "isValidDateChange": "isValidDateChange"; "closeCalendar": "closeCalendar"; "closeClicked": "closeClicked"; }, never, never, true, never>;
|
|
288
299
|
}
|
|
@@ -9,7 +9,10 @@ export declare class CalendarService {
|
|
|
9
9
|
/** Column amount */
|
|
10
10
|
colAmount: number;
|
|
11
11
|
/** Event thrown, when the element is selected by space or enter keys */
|
|
12
|
-
onKeySelect: Subject<
|
|
12
|
+
onKeySelect: Subject<{
|
|
13
|
+
index: number;
|
|
14
|
+
event: KeyboardEvent;
|
|
15
|
+
}>;
|
|
13
16
|
/** Event thrown, when the focus goes after list of elements */
|
|
14
17
|
onListEndApproach: Subject<number>;
|
|
15
18
|
/** Event thrown, when the focus goes before list of elements */
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { BaseCalendarCell } from './common';
|
|
2
|
-
export interface CalendarMonth extends BaseCalendarCell {
|
|
2
|
+
export interface CalendarMonth<D> extends BaseCalendarCell {
|
|
3
3
|
/** 1 - 12 */
|
|
4
4
|
month: number;
|
|
5
5
|
index: number;
|
|
6
|
+
date: D;
|
|
7
|
+
selectedFirst?: boolean;
|
|
8
|
+
selectedLast?: boolean;
|
|
9
|
+
selectedRange?: boolean;
|
|
10
|
+
hoverRange?: boolean;
|
|
6
11
|
}
|
|
@@ -9,7 +9,12 @@ export interface CalendarYearGrid {
|
|
|
9
9
|
*/
|
|
10
10
|
yearMapping?: (year: number) => string;
|
|
11
11
|
}
|
|
12
|
-
export interface CalendarYear extends BaseCalendarCell {
|
|
12
|
+
export interface CalendarYear<D> extends BaseCalendarCell {
|
|
13
13
|
year: number;
|
|
14
14
|
index: number;
|
|
15
|
+
date: D;
|
|
16
|
+
selectedFirst?: boolean;
|
|
17
|
+
selectedLast?: boolean;
|
|
18
|
+
selectedRange?: boolean;
|
|
19
|
+
hoverRange?: boolean;
|
|
15
20
|
}
|
|
@@ -155,6 +155,11 @@ export declare class DatePickerComponent<D> implements DatePicker<D>, OnInit, On
|
|
|
155
155
|
mobileLandscape: boolean;
|
|
156
156
|
/** Whether calendar is used inside mobile in portrait mode */
|
|
157
157
|
mobilePortrait: boolean;
|
|
158
|
+
/** Whether to select and display the date range in MM/YYYY or YYYY format
|
|
159
|
+
* For month and year format value is 'month'
|
|
160
|
+
* For year format value is 'year'
|
|
161
|
+
*/
|
|
162
|
+
dateRangeFormat: string;
|
|
158
163
|
/** Event emitted when the state of the isOpen property changes. */
|
|
159
164
|
readonly isOpenChange: EventEmitter<boolean>;
|
|
160
165
|
/** Event thrown every time selected date in single mode is changed */
|
|
@@ -407,6 +412,6 @@ export declare class DatePickerComponent<D> implements DatePicker<D>, OnInit, On
|
|
|
407
412
|
/** Helper method to compare two arrays of date ranges */
|
|
408
413
|
private _areDateRangesEqual;
|
|
409
414
|
static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerComponent<any>, [null, { optional: true; }, { optional: true; }, null]>;
|
|
410
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent<any>, "fd-date-picker", never, { "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "required": { "alias": "required"; "required": false; }; "customDateTimeFormat": { "alias": "customDateTimeFormat"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageTriggers": { "alias": "messageTriggers"; "required": false; }; "selectedDate": { "alias": "selectedDate"; "required": false; }; "selectedMultipleDates": { "alias": "selectedMultipleDates"; "required": false; }; "selectedRangeDate": { "alias": "selectedRangeDate"; "required": false; }; "selectedMultipleDateRanges": { "alias": "selectedMultipleDateRanges"; "required": false; }; "startingDayOfWeek": { "alias": "startingDayOfWeek"; "required": false; }; "rangeHoverEffect": { "alias": "rangeHoverEffect"; "required": false; }; "useValidation": { "alias": "useValidation"; "required": false; }; "allowNull": { "alias": "allowNull"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "closeOnDateChoose": { "alias": "closeOnDateChoose"; "required": false; }; "showTodayButton": { "alias": "showTodayButton"; "required": false; }; "todayButtonLabel": { "alias": "todayButtonLabel"; "required": false; }; "previousButtonDisableFunction": { "alias": "previousButtonDisableFunction"; "required": false; }; "nextButtonDisableFunction": { "alias": "nextButtonDisableFunction"; "required": false; }; "state": { "alias": "state"; "required": false; }; "buttonFocusable": { "alias": "buttonFocusable"; "required": false; }; "specialDaysRules": { "alias": "specialDaysRules"; "required": false; }; "yearGrid": { "alias": "yearGrid"; "required": false; }; "aggregatedYearGrid": { "alias": "aggregatedYearGrid"; "required": false; }; "markWeekends": { "alias": "markWeekends"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "allowMultipleSelection": { "alias": "allowMultipleSelection"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "processInputOnBlur": { "alias": "processInputOnBlur"; "required": false; }; "preventScrollOnFocus": { "alias": "preventScrollOnFocus"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "mobileConfig": { "alias": "mobileConfig"; "required": false; }; "mobileLandscape": { "alias": "mobileLandscape"; "required": false; }; "mobilePortrait": { "alias": "mobilePortrait"; "required": false; }; "disableFunction": { "alias": "disableFunction"; "required": false; }; "disableRangeStartFunction": { "alias": "disableRangeStartFunction"; "required": false; }; "disableRangeEndFunction": { "alias": "disableRangeEndFunction"; "required": false; }; }, { "isOpenChange": "isOpenChange"; "selectedDateChange": "selectedDateChange"; "selectedMultipleDatesChange": "selectedMultipleDatesChange"; "selectedRangeDateChange": "selectedRangeDateChange"; "selectedMultipleDateRangesChange": "selectedMultipleDateRangesChange"; "activeViewChange": "activeViewChange"; }, never, ["*"], true, never>;
|
|
415
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent<any>, "fd-date-picker", never, { "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "required": { "alias": "required"; "required": false; }; "customDateTimeFormat": { "alias": "customDateTimeFormat"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageTriggers": { "alias": "messageTriggers"; "required": false; }; "selectedDate": { "alias": "selectedDate"; "required": false; }; "selectedMultipleDates": { "alias": "selectedMultipleDates"; "required": false; }; "selectedRangeDate": { "alias": "selectedRangeDate"; "required": false; }; "selectedMultipleDateRanges": { "alias": "selectedMultipleDateRanges"; "required": false; }; "startingDayOfWeek": { "alias": "startingDayOfWeek"; "required": false; }; "rangeHoverEffect": { "alias": "rangeHoverEffect"; "required": false; }; "useValidation": { "alias": "useValidation"; "required": false; }; "allowNull": { "alias": "allowNull"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "closeOnDateChoose": { "alias": "closeOnDateChoose"; "required": false; }; "showTodayButton": { "alias": "showTodayButton"; "required": false; }; "todayButtonLabel": { "alias": "todayButtonLabel"; "required": false; }; "previousButtonDisableFunction": { "alias": "previousButtonDisableFunction"; "required": false; }; "nextButtonDisableFunction": { "alias": "nextButtonDisableFunction"; "required": false; }; "state": { "alias": "state"; "required": false; }; "buttonFocusable": { "alias": "buttonFocusable"; "required": false; }; "specialDaysRules": { "alias": "specialDaysRules"; "required": false; }; "yearGrid": { "alias": "yearGrid"; "required": false; }; "aggregatedYearGrid": { "alias": "aggregatedYearGrid"; "required": false; }; "markWeekends": { "alias": "markWeekends"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "allowMultipleSelection": { "alias": "allowMultipleSelection"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "processInputOnBlur": { "alias": "processInputOnBlur"; "required": false; }; "preventScrollOnFocus": { "alias": "preventScrollOnFocus"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "mobileConfig": { "alias": "mobileConfig"; "required": false; }; "mobileLandscape": { "alias": "mobileLandscape"; "required": false; }; "mobilePortrait": { "alias": "mobilePortrait"; "required": false; }; "dateRangeFormat": { "alias": "dateRangeFormat"; "required": false; }; "disableFunction": { "alias": "disableFunction"; "required": false; }; "disableRangeStartFunction": { "alias": "disableRangeStartFunction"; "required": false; }; "disableRangeEndFunction": { "alias": "disableRangeEndFunction"; "required": false; }; }, { "isOpenChange": "isOpenChange"; "selectedDateChange": "selectedDateChange"; "selectedMultipleDatesChange": "selectedMultipleDatesChange"; "selectedRangeDateChange": "selectedRangeDateChange"; "selectedMultipleDateRangesChange": "selectedMultipleDateRangesChange"; "activeViewChange": "activeViewChange"; }, never, ["*"], true, never>;
|
|
411
416
|
static ngAcceptInputType_processInputOnBlur: unknown;
|
|
412
417
|
}
|
|
@@ -210,13 +210,13 @@ export class CalendarHeaderComponent {
|
|
|
210
210
|
};
|
|
211
211
|
}
|
|
212
212
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CalendarHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CalendarService }, { token: i2.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
213
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CalendarHeaderComponent, isStandalone: true, selector: "fd-calendar-header", inputs: { activeView: "activeView", currentlyDisplayed: "currentlyDisplayed", previousButtonDisabled: "previousButtonDisabled", nextButtonDisabled: "nextButtonDisabled", calendarYearGrid: "calendarYearGrid", id: "id", mobileLandscape: "mobileLandscape" }, outputs: { activeViewChange: "activeViewChange", previousClicked: "previousClicked", nextClicked: "nextClicked" }, host: { properties: { "attr.id": "viewId" } }, viewQueries: [{ propertyName: "_prevButtonComponent", first: true, predicate: ["prevButton"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<header class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n @if (isOnDayView || isOnMonthView) {\n <div class=\"fd-calendar__action\">\n
|
|
213
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: CalendarHeaderComponent, isStandalone: true, selector: "fd-calendar-header", inputs: { activeView: "activeView", currentlyDisplayed: "currentlyDisplayed", previousButtonDisabled: "previousButtonDisabled", nextButtonDisabled: "nextButtonDisabled", calendarYearGrid: "calendarYearGrid", id: "id", mobileLandscape: "mobileLandscape" }, outputs: { activeViewChange: "activeViewChange", previousClicked: "previousClicked", nextClicked: "nextClicked" }, host: { properties: { "attr.id": "viewId" } }, viewQueries: [{ propertyName: "_prevButtonComponent", first: true, predicate: ["prevButton"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<header class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n @if (isOnDayView || isOnMonthView) {\n @if (!isOnMonthView) {\n <div class=\"fd-calendar__action\">\n <!-- Select month button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_monthButtonLabelId + ' ' + _selectMonthButtonAriaLabelId\"\n [attr.data-fd-calendar-month]=\"currentlyDisplayed.month\"\n (click)=\"_processViewChange('month', $event)\"\n >\n <span [attr.id]=\"_monthButtonLabelId\">{{ selectMonthLabel }}</span>\n </button>\n </div>\n }\n <div class=\"fd-calendar__action\">\n <!-- Select year button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearButtonLabelId + ' ' + _selectYearButtonAriaLabelId\"\n [attr.data-fd-calendar-year]=\"currentlyDisplayed.year\"\n (click)=\"_processViewChange('year', $event)\"\n >\n <span [attr.id]=\"_yearButtonLabelId\">{{ selectYearLabel }}</span>\n </button>\n </div>\n }\n @if (isOnAggregatedYearsView || isOnYearView) {\n <div class=\"fd-calendar__action\" aria-live=\"polite\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearsRangeButtonLabelId + ' ' + _selectYearsRangeButtonAriaLabelId\"\n (click)=\"_processViewChange('aggregatedYear', $event)\"\n type=\"button\"\n >\n <span [attr.id]=\"_yearsRangeButtonLabelId\">{{ selectAggregatedYearLabel }}</span>\n </button>\n </div>\n }\n <div class=\"fd-calendar__action fd-calendar__action--arrow-right\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel | fdTranslate\"\n [ariaLabel]=\"nextAriaLabel | fdTranslate\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ 'coreCalendar.yearSelectionLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel | fdTranslate }}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
214
214
|
}
|
|
215
215
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
|
|
216
216
|
type: Component,
|
|
217
217
|
args: [{ selector: 'fd-calendar-header', encapsulation: ViewEncapsulation.None, host: {
|
|
218
218
|
'[attr.id]': 'viewId'
|
|
219
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonComponent, FdTranslatePipe], template: "<header class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n @if (isOnDayView || isOnMonthView) {\n <div class=\"fd-calendar__action\">\n
|
|
219
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonComponent, FdTranslatePipe], template: "<header class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n @if (isOnDayView || isOnMonthView) {\n @if (!isOnMonthView) {\n <div class=\"fd-calendar__action\">\n <!-- Select month button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_monthButtonLabelId + ' ' + _selectMonthButtonAriaLabelId\"\n [attr.data-fd-calendar-month]=\"currentlyDisplayed.month\"\n (click)=\"_processViewChange('month', $event)\"\n >\n <span [attr.id]=\"_monthButtonLabelId\">{{ selectMonthLabel }}</span>\n </button>\n </div>\n }\n <div class=\"fd-calendar__action\">\n <!-- Select year button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearButtonLabelId + ' ' + _selectYearButtonAriaLabelId\"\n [attr.data-fd-calendar-year]=\"currentlyDisplayed.year\"\n (click)=\"_processViewChange('year', $event)\"\n >\n <span [attr.id]=\"_yearButtonLabelId\">{{ selectYearLabel }}</span>\n </button>\n </div>\n }\n @if (isOnAggregatedYearsView || isOnYearView) {\n <div class=\"fd-calendar__action\" aria-live=\"polite\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearsRangeButtonLabelId + ' ' + _selectYearsRangeButtonAriaLabelId\"\n (click)=\"_processViewChange('aggregatedYear', $event)\"\n type=\"button\"\n >\n <span [attr.id]=\"_yearsRangeButtonLabelId\">{{ selectAggregatedYearLabel }}</span>\n </button>\n </div>\n }\n <div class=\"fd-calendar__action fd-calendar__action--arrow-right\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel | fdTranslate\"\n [ariaLabel]=\"nextAriaLabel | fdTranslate\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ 'coreCalendar.yearSelectionLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel | fdTranslate }}</div>\n</div>\n" }]
|
|
220
220
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.CalendarService }, { type: i2.DatetimeAdapter }], propDecorators: { activeView: [{
|
|
221
221
|
type: Input
|
|
222
222
|
}], currentlyDisplayed: [{
|
|
@@ -241,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
241
241
|
type: ViewChild,
|
|
242
242
|
args: ['prevButton', { read: ElementRef }]
|
|
243
243
|
}] } });
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9jYWxlbmRhci9jYWxlbmRhci1oZWFkZXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9jYWxlbmRhci9jYWxlbmRhci1oZWFkZXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd0RCxPQUFPLEVBQWtCLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBRTlEOzs7R0FHRztBQWFILE1BQU0sT0FBTyx1QkFBdUI7SUFpQmhDOztPQUVHO0lBQ0gsSUFDSSxnQkFBZ0IsQ0FBQyxRQUEwQjtRQUMzQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBMEJELHNFQUFzRTtJQUN0RSxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUNuRyxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDO0lBQzNGLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsSUFBSSxvQkFBb0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUM7SUFDdkcsQ0FBQztJQUVELGlFQUFpRTtJQUNqRSxJQUFJLDZCQUE2QjtRQUM3QixPQUFPLElBQUksQ0FBQyx1QkFBdUI7WUFDL0IsQ0FBQyxDQUFDLGlDQUFpQztZQUNuQyxDQUFDLENBQUMsdUNBQXVDLENBQUM7SUFDbEQsQ0FBQztJQVdELDhEQUE4RDtJQUM5RCxJQUFJLHVCQUF1QjtRQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssa0JBQWtCLENBQUMsY0FBYyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDeEQsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssa0JBQWtCLENBQUMsR0FBRyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksNkJBQTZCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRywwQkFBMEIsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSw0QkFBNEI7UUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLHlCQUF5QixDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksa0NBQWtDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxnQ0FBZ0MsQ0FBQztJQUMxRCxDQUFDO0lBV0QsY0FBYztJQUNkLFlBQ1ksYUFBZ0MsRUFDaEMsZ0JBQWlDLEVBQ2pDLGdCQUFvQztRQUZwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBM0poRCxvRUFBb0U7UUFFcEUsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsd0RBQXdEO1FBRS9DLHFCQUFnQixHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUU3Rix5REFBeUQ7UUFFaEQsb0JBQWUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV4RSxxREFBcUQ7UUFFNUMsZ0JBQVcsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQWdJcEUsZUFBZTtRQUNFLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGtCQUFrQjtRQUNWLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBRW5DLDRFQUE0RTtRQUNwRSw0QkFBdUIsR0FBRyxDQUFDLENBQUM7SUFPakMsQ0FBQztJQUVKLGNBQWM7SUFDZCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFDSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7WUFDdkUsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFDekQsQ0FBQztZQUNDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFdkQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxJQUFvQixFQUFFLEtBQWtCO1FBQ3ZELElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTNFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxjQUFjO0lBQ04sc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUYsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxjQUFjO0lBQ04sMEJBQTBCO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsY0FBYztJQUNOLHlCQUF5QjtRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGNBQWM7SUFDTixtQ0FBbUM7UUFDdkMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUN0RyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUNoRSxFQUFFLENBQUM7SUFDUixDQUFDO0lBRUQsY0FBYztJQUNOLG9CQUFvQjtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGNBQWM7SUFDTixZQUFZLENBQUMsSUFBWTtRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCO1FBQ3RCLE9BQU87WUFDSCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDNUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJO1lBQ2xDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUs7U0FDdEMsQ0FBQztJQUNOLENBQUM7OEdBeFJRLHVCQUF1QjtrR0FBdkIsdUJBQXVCLCtrQkErQ0MsVUFBVSxrREMxRi9DLG16R0E0RUEsMEREbkNjLGVBQWUsb0lBQUUsZUFBZTs7MkZBRWpDLHVCQUF1QjtrQkFabkMsU0FBUzsrQkFDSSxvQkFBb0IsaUJBR2YsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixXQUFXLEVBQUUsUUFBUTtxQkFDeEIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQztrSkFLM0MsVUFBVTtzQkFEVCxLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU9GLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFRTixFQUFFO3NCQURELEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtHLGdCQUFnQjtzQkFEeEIsTUFBTTtnQkFLRSxlQUFlO3NCQUR2QixNQUFNO2dCQUtFLFdBQVc7c0JBRG5CLE1BQU07Z0JBS1Asb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxlbmRhckN1cnJlbnQgfSBmcm9tICcuLi9tb2RlbHMvY2FsZW5kYXItY3VycmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJHcmlkIH0gZnJvbSAnLi4vbW9kZWxzL2NhbGVuZGFyLXllYXItZ3JpZCc7XG5pbXBvcnQgeyBGZENhbGVuZGFyVmlldywgRmRDYWxlbmRhclZpZXdFbnVtIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIEludGVybmFsIHVzZSBvbmx5LlxuICogSGVhZGVyIG9mIHRoZSBjYWxlbmRhciBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtY2FsZW5kYXItaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmlkXSc6ICd2aWV3SWQnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtCdXR0b25Db21wb25lbnQsIEZkVHJhbnNsYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLyoqIEN1cnJlbnRseSBhY3RpdmUgdmlldy4gTmVlZGVkIGZvciBhMTF5IGxhYmVscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFjdGl2ZVZpZXc6IEZkQ2FsZW5kYXJWaWV3O1xuXG4gICAgLyoqIEN1cnJlbnRseSBkaXNwbGF5ZWQgZGF0ZSBvbiB0aGUgY2FsZW5kYXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50bHlEaXNwbGF5ZWQ6IENhbGVuZGFyQ3VycmVudDtcblxuICAgIC8qKiB3aGV0aGVyIHByZXZpb3VzIG5hdmlnYXRpb24gYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCBpbiB0aGUgaGVhZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJldmlvdXNCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiB3aGV0aGVyIG5leHQgbmF2aWdhdGlvbiBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGluIHRoZSBoZWFkZXIuICovXG4gICAgQElucHV0KClcbiAgICBuZXh0QnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gY3VzdG9taXplIHllYXIgZ3JpZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhbGVuZGFyWWVhckdyaWQoeWVhckdyaWQ6IENhbGVuZGFyWWVhckdyaWQpIHtcbiAgICAgICAgdGhpcy5fYW1vdW50T2ZZZWFyc1BlclBlcmlvZCA9IHllYXJHcmlkLmNvbHMgKiB5ZWFyR3JpZC5yb3dzIC0gMTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCgpO1xuICAgIH1cblxuICAgIC8qKiBDYWxlbmRhciBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIGNhbGVuZGFyIHNob3VsZCBiZSByZW5kZXJlZCBpbiBtb2JpbGUgbGFuZHNjYXBlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGVMYW5kc2NhcGUgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFjdGl2ZSB2aWV3IHNob3VsZCBjaGFuZ2UuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmRDYWxlbmRhclZpZXc+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwcmV2aW91cyBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBwcmV2aW91c0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG5leHQgYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgbmV4dENsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncHJldkJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIF9wcmV2QnV0dG9uQ29tcG9uZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBwcmV2aW91cyBidXR0b24uIERlcGVuZHMgb24gdGhlIGFjdGl2ZSB2aWV3LiAqL1xuICAgIGdldCBwcmV2aW91c0FyaWFMYWJlbCgpOiAnY29yZUNhbGVuZGFyLnByZXZpb3VzTW9udGhMYWJlbCcgfCAnY29yZUNhbGVuZGFyLnByZXZpb3VzWWVhckxhYmVsJyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT25EYXlWaWV3ID8gJ2NvcmVDYWxlbmRhci5wcmV2aW91c01vbnRoTGFiZWwnIDogJ2NvcmVDYWxlbmRhci5wcmV2aW91c1llYXJMYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBuZXh0IGJ1dHRvbi4gRGVwZW5kcyBvbiB0aGUgYWN0aXZlIHZpZXcuICovXG4gICAgZ2V0IG5leHRBcmlhTGFiZWwoKTogJ2NvcmVDYWxlbmRhci5uZXh0TW9udGhMYWJlbCcgfCAnY29yZUNhbGVuZGFyLm5leHRZZWFyTGFiZWwnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPbkRheVZpZXcgPyAnY29yZUNhbGVuZGFyLm5leHRNb250aExhYmVsJyA6ICdjb3JlQ2FsZW5kYXIubmV4dFllYXJMYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEJ1dHRvbiBhcmlhIGxhYmVsIHRvIG9wZW4gbW9udGggc2VsZWN0aW9uIHZpZXcuICovXG4gICAgZ2V0IHNlbGVjdE1vbnRoQXJpYUxhYmVsKCk6ICdjb3JlQ2FsZW5kYXIubW9udGhTZWxlY3Rpb25MYWJlbCcgfCAnY29yZUNhbGVuZGFyLmRhdGVTZWxlY3Rpb25MYWJlbCcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09uTW9udGhWaWV3ID8gJ2NvcmVDYWxlbmRhci5kYXRlU2VsZWN0aW9uTGFiZWwnIDogJ2NvcmVDYWxlbmRhci5tb250aFNlbGVjdGlvbkxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiBhZ2dyZWdhdGVkIHllYXJzIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIGdldCBzZWxlY3RBZ2dyZWdhdGVkWWVhckFyaWFMYWJlbCgpOiAnY29yZUNhbGVuZGFyLnllYXJzUmFuZ2VTZWxlY3Rpb25MYWJlbCcgfCAnY29yZUNhbGVuZGFyLmRhdGVTZWxlY3Rpb25MYWJlbCcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09uQWdncmVnYXRlZFllYXJzVmlld1xuICAgICAgICAgICAgPyAnY29yZUNhbGVuZGFyLmRhdGVTZWxlY3Rpb25MYWJlbCdcbiAgICAgICAgICAgIDogJ2NvcmVDYWxlbmRhci55ZWFyc1JhbmdlU2VsZWN0aW9uTGFiZWwnO1xuICAgIH1cblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiBtb250aCBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RNb250aExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4geWVhciBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RZZWFyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiBhZ2dyZWdhdGVkIHllYXJzIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gYWdncmVnYXRlZCB5ZWFycyB2aWV3ICovXG4gICAgZ2V0IGlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSBGZENhbGVuZGFyVmlld0VudW0uQWdncmVnYXRlZFllYXI7XG4gICAgfVxuXG4gICAgLyoqIEdldCBpbmZvcm1hdGlvbiBpcyBjYWxlbmRhciBpcyBvbiB5ZWFyIHZpZXcgKi9cbiAgICBnZXQgaXNPblllYXJWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSBGZENhbGVuZGFyVmlld0VudW0uWWVhcjtcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIG1vbnRoIHZpZXcgKi9cbiAgICBnZXQgaXNPbk1vbnRoVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gRmRDYWxlbmRhclZpZXdFbnVtLk1vbnRoO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gZGF5IHZpZXcgKi9cbiAgICBnZXQgaXNPbkRheVZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09IEZkQ2FsZW5kYXJWaWV3RW51bS5EYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IGlkXG4gICAgICovXG4gICAgZ2V0IHZpZXdJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICctaGVhZGVyJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUHJldmlvdXMgYnV0dG9uIGlkXG4gICAgICovXG4gICAgZ2V0IF9wcmV2QnV0dG9uSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1sZWZ0LWFycm93JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTmV4dCBidXR0b24gaWRcbiAgICAgKi9cbiAgICBnZXQgX25leHRCdXR0b25JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXJpZ2h0LWFycm93JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW9udGggbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX21vbnRoQnV0dG9uTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLW1vbnRoLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IG1vbnRoIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdE1vbnRoQnV0dG9uQXJpYUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3QtbW9udGgtYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFllYXIgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3llYXJCdXR0b25MYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICcteWVhci1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdCB5ZWFyIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdFllYXJCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC15ZWFyLWFyaWEtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBZZWFycyByYW5nZSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfeWVhcnNSYW5nZUJ1dHRvbkxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy15ZWFycy1yYW5nZS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdCB5ZWFycyByYW5nZSBhcmlhIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RZZWFyc1JhbmdlQnV0dG9uQXJpYUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3QteWVhcnMtcmFuZ2UtYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBNb250aCBuYW1lcyAqL1xuICAgIHByaXZhdGUgX21vbnRoTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGFib3V0IGFtb3VudCBvZiB5ZWFycyBkaXNwbGF5ZWQgYXQgb25jZSBvbiB5ZWFyIHZpZXcgICovXG4gICAgcHJpdmF0ZSBfYW1vdW50T2ZZZWFyc1BlclBlcmlvZCA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD5cbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGNoYW5nZXMuY3VycmVudGx5RGlzcGxheWVkICYmICFjaGFuZ2VzLmN1cnJlbnRseURpc3BsYXllZC5maXJzdENoYW5nZSkgfHxcbiAgICAgICAgICAgIChjaGFuZ2VzLmFjdGl2ZVZpZXcgJiYgIWNoYW5nZXMuYWN0aXZlVmlldy5maXJzdENoYW5nZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVMYWJlbHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sZWZ0QXJyb3dJZCA9IHRoaXMuX3ByZXZCdXR0b25JZDtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb250aE5hbWVzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9Mb2NhbGVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXMgb24gZm9jdXNhYmxlIGNvbnRyb2wgd2l0aGluIHRoZSBoZWFkZXJcbiAgICAgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJldkJ1dHRvbkNvbXBvbmVudC5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2Nlc3NWaWV3Q2hhbmdlKHR5cGU6IEZkQ2FsZW5kYXJWaWV3LCBldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IHR5cGUgPT09IHRoaXMuYWN0aXZlVmlldyA/IEZkQ2FsZW5kYXJWaWV3RW51bS5EYXkgOiB0eXBlO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZS5lbWl0KHRoaXMuYWN0aXZlVmlldyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0xvY2FsZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW9udGhOYW1lcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTGFiZWxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdE1vbnRoTGFiZWwgPSB0aGlzLl9tb250aE5hbWVzW3RoaXMuX2dldE5vcm1hbGl6ZWREYXRlKCkubW9udGggLSAxXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RZZWFyTGFiZWwgPSB0aGlzLl9nZXRZZWFyTmFtZSh0aGlzLl9nZXROb3JtYWxpemVkRGF0ZSgpLnllYXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlU2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsID0gYCR7dGhpcy5fZ2V0WWVhck5hbWUodGhpcy5fZ2V0Tm9ybWFsaXplZERhdGUoKS55ZWFyKX0tJHt0aGlzLl9nZXRZZWFyTmFtZShcbiAgICAgICAgICAgIHRoaXMuX2dldE5vcm1hbGl6ZWREYXRlKCkueWVhciArIHRoaXMuX2Ftb3VudE9mWWVhcnNQZXJQZXJpb2RcbiAgICAgICAgKX1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTW9udGhOYW1lcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW9udGhOYW1lcyA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aE5hbWVzKCdsb25nJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRZZWFyTmFtZSh5ZWFyOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXJOYW1lKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5jcmVhdGVEYXRlKHllYXIpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE5vcm1hbGl6ZWREYXRlKCk6IENhbGVuZGFyQ3VycmVudCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiBpc05hTih0aGlzLmN1cnJlbnRseURpc3BsYXllZC55ZWFyKVxuICAgICAgICAgICAgICAgID8gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLm5vdygpKVxuICAgICAgICAgICAgICAgIDogdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQueWVhcixcbiAgICAgICAgICAgIG1vbnRoOiBpc05hTih0aGlzLmN1cnJlbnRseURpc3BsYXllZC5tb250aClcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aCh0aGlzLl9kYXRlVGltZUFkYXB0ZXIubm93KCkpXG4gICAgICAgICAgICAgICAgOiB0aGlzLmN1cnJlbnRseURpc3BsYXllZC5tb250aFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJmZC1jYWxlbmRhcl9fbmF2aWdhdGlvblwiIFtjbGFzcy5mZC1jYWxlbmRhcl9fbmF2aWdhdGlvbi0tbWFpbl09XCJtb2JpbGVMYW5kc2NhcGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvbiBmZC1jYWxlbmRhcl9fYWN0aW9uLS1hcnJvdy1sZWZ0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNwcmV2QnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1sZWZ0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIl9wcmV2QnV0dG9uSWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXZpb3VzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwicHJldmlvdXNBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cInByZXZpb3VzQXJpYUxhYmVsIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNDbGlja2VkLmVtaXQoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGlzT25EYXlWaWV3IHx8IGlzT25Nb250aFZpZXcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIj5cbiAgICAgICAgICAgIDwhLS0gU2VsZWN0IG1vbnRoIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl9tb250aEJ1dHRvbkxhYmVsSWQgKyAnICcgKyBfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci1tb250aF09XCJjdXJyZW50bHlEaXNwbGF5ZWQubW9udGhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfcHJvY2Vzc1ZpZXdDaGFuZ2UoJ21vbnRoJywgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX21vbnRoQnV0dG9uTGFiZWxJZFwiPnt7IHNlbGVjdE1vbnRoTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCI+XG4gICAgICAgICAgICA8IS0tIFNlbGVjdCB5ZWFyIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl95ZWFyQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmQtY2FsZW5kYXIteWVhcl09XCJjdXJyZW50bHlEaXNwbGF5ZWQueWVhclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9wcm9jZXNzVmlld0NoYW5nZSgneWVhcicsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmlkXT1cIl95ZWFyQnV0dG9uTGFiZWxJZFwiPnt7IHNlbGVjdFllYXJMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChpc09uQWdncmVnYXRlZFllYXJzVmlldyB8fCBpc09uWWVhclZpZXcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl95ZWFyc1JhbmdlQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RZZWFyc1JhbmdlQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfcHJvY2Vzc1ZpZXdDaGFuZ2UoJ2FnZ3JlZ2F0ZWRZZWFyJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX3llYXJzUmFuZ2VCdXR0b25MYWJlbElkXCI+e3sgc2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb24gZmQtY2FsZW5kYXJfX2FjdGlvbi0tYXJyb3ctcmlnaHRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctcmlnaHRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiX25leHRCdXR0b25JZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibmV4dEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIm5leHRBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIm5leHRBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibmV4dENsaWNrZWQuZW1pdCgpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2hlYWRlcj5cbjwhLS0gSGlkZGVuIGVsZW1lbnRzIGZvciBhcmlhIHB1cnBvc2VzIC0tPlxuPGRpdiBoaWRkZW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdE1vbnRoQXJpYUxhYmVsIHwgZmRUcmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWRcIj57eyAnY29yZUNhbGVuZGFyLnllYXJTZWxlY3Rpb25MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsIHwgZmRUcmFuc2xhdGUgfX08L2Rpdj5cbjwvZGl2PlxuIl19
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9jYWxlbmRhci9jYWxlbmRhci1oZWFkZXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9jYWxlbmRhci9jYWxlbmRhci1oZWFkZXIvY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd0RCxPQUFPLEVBQWtCLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBRTlEOzs7R0FHRztBQWFILE1BQU0sT0FBTyx1QkFBdUI7SUFpQmhDOztPQUVHO0lBQ0gsSUFDSSxnQkFBZ0IsQ0FBQyxRQUEwQjtRQUMzQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBMEJELHNFQUFzRTtJQUN0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QWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixXQUFXLEVBQUUsUUFBUTtxQkFDeEIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQztrSkFLM0MsVUFBVTtzQkFEVCxLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU9GLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFRTixFQUFFO3NCQURELEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtHLGdCQUFnQjtzQkFEeEIsTUFBTTtnQkFLRSxlQUFlO3NCQUR2QixNQUFNO2dCQUtFLFdBQVc7c0JBRG5CLE1BQU07Z0JBS1Asb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxlbmRhckN1cnJlbnQgfSBmcm9tICcuLi9tb2RlbHMvY2FsZW5kYXItY3VycmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJHcmlkIH0gZnJvbSAnLi4vbW9kZWxzL2NhbGVuZGFyLXllYXItZ3JpZCc7XG5pbXBvcnQgeyBGZENhbGVuZGFyVmlldywgRmRDYWxlbmRhclZpZXdFbnVtIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIEludGVybmFsIHVzZSBvbmx5LlxuICogSGVhZGVyIG9mIHRoZSBjYWxlbmRhciBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtY2FsZW5kYXItaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmlkXSc6ICd2aWV3SWQnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtCdXR0b25Db21wb25lbnQsIEZkVHJhbnNsYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLyoqIEN1cnJlbnRseSBhY3RpdmUgdmlldy4gTmVlZGVkIGZvciBhMTF5IGxhYmVscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFjdGl2ZVZpZXc6IEZkQ2FsZW5kYXJWaWV3O1xuXG4gICAgLyoqIEN1cnJlbnRseSBkaXNwbGF5ZWQgZGF0ZSBvbiB0aGUgY2FsZW5kYXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50bHlEaXNwbGF5ZWQ6IENhbGVuZGFyQ3VycmVudDtcblxuICAgIC8qKiB3aGV0aGVyIHByZXZpb3VzIG5hdmlnYXRpb24gYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCBpbiB0aGUgaGVhZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJldmlvdXNCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiB3aGV0aGVyIG5leHQgbmF2aWdhdGlvbiBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGluIHRoZSBoZWFkZXIuICovXG4gICAgQElucHV0KClcbiAgICBuZXh0QnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gY3VzdG9taXplIHllYXIgZ3JpZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhbGVuZGFyWWVhckdyaWQoeWVhckdyaWQ6IENhbGVuZGFyWWVhckdyaWQpIHtcbiAgICAgICAgdGhpcy5fYW1vdW50T2ZZZWFyc1BlclBlcmlvZCA9IHllYXJHcmlkLmNvbHMgKiB5ZWFyR3JpZC5yb3dzIC0gMTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCgpO1xuICAgIH1cblxuICAgIC8qKiBDYWxlbmRhciBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIGNhbGVuZGFyIHNob3VsZCBiZSByZW5kZXJlZCBpbiBtb2JpbGUgbGFuZHNjYXBlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGVMYW5kc2NhcGUgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFjdGl2ZSB2aWV3IHNob3VsZCBjaGFuZ2UuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmRDYWxlbmRhclZpZXc+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwcmV2aW91cyBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBwcmV2aW91c0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG5leHQgYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgbmV4dENsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncHJldkJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIF9wcmV2QnV0dG9uQ29tcG9uZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBwcmV2aW91cyBidXR0b24uIERlcGVuZHMgb24gdGhlIGFjdGl2ZSB2aWV3LiAqL1xuICAgIGdldCBwcmV2aW91c0FyaWFMYWJlbCgpOiAnY29yZUNhbGVuZGFyLnByZXZpb3VzTW9udGhMYWJlbCcgfCAnY29yZUNhbGVuZGFyLnByZXZpb3VzWWVhckxhYmVsJyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT25EYXlWaWV3ID8gJ2NvcmVDYWxlbmRhci5wcmV2aW91c01vbnRoTGFiZWwnIDogJ2NvcmVDYWxlbmRhci5wcmV2aW91c1llYXJMYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBuZXh0IGJ1dHRvbi4gRGVwZW5kcyBvbiB0aGUgYWN0aXZlIHZpZXcuICovXG4gICAgZ2V0IG5leHRBcmlhTGFiZWwoKTogJ2NvcmVDYWxlbmRhci5uZXh0TW9udGhMYWJlbCcgfCAnY29yZUNhbGVuZGFyLm5leHRZZWFyTGFiZWwnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPbkRheVZpZXcgPyAnY29yZUNhbGVuZGFyLm5leHRNb250aExhYmVsJyA6ICdjb3JlQ2FsZW5kYXIubmV4dFllYXJMYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEJ1dHRvbiBhcmlhIGxhYmVsIHRvIG9wZW4gbW9udGggc2VsZWN0aW9uIHZpZXcuICovXG4gICAgZ2V0IHNlbGVjdE1vbnRoQXJpYUxhYmVsKCk6ICdjb3JlQ2FsZW5kYXIubW9udGhTZWxlY3Rpb25MYWJlbCcgfCAnY29yZUNhbGVuZGFyLmRhdGVTZWxlY3Rpb25MYWJlbCcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09uTW9udGhWaWV3ID8gJ2NvcmVDYWxlbmRhci5kYXRlU2VsZWN0aW9uTGFiZWwnIDogJ2NvcmVDYWxlbmRhci5tb250aFNlbGVjdGlvbkxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiBhZ2dyZWdhdGVkIHllYXJzIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIGdldCBzZWxlY3RBZ2dyZWdhdGVkWWVhckFyaWFMYWJlbCgpOiAnY29yZUNhbGVuZGFyLnllYXJzUmFuZ2VTZWxlY3Rpb25MYWJlbCcgfCAnY29yZUNhbGVuZGFyLmRhdGVTZWxlY3Rpb25MYWJlbCcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09uQWdncmVnYXRlZFllYXJzVmlld1xuICAgICAgICAgICAgPyAnY29yZUNhbGVuZGFyLmRhdGVTZWxlY3Rpb25MYWJlbCdcbiAgICAgICAgICAgIDogJ2NvcmVDYWxlbmRhci55ZWFyc1JhbmdlU2VsZWN0aW9uTGFiZWwnO1xuICAgIH1cblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiBtb250aCBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RNb250aExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4geWVhciBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RZZWFyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiBhZ2dyZWdhdGVkIHllYXJzIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gYWdncmVnYXRlZCB5ZWFycyB2aWV3ICovXG4gICAgZ2V0IGlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSBGZENhbGVuZGFyVmlld0VudW0uQWdncmVnYXRlZFllYXI7XG4gICAgfVxuXG4gICAgLyoqIEdldCBpbmZvcm1hdGlvbiBpcyBjYWxlbmRhciBpcyBvbiB5ZWFyIHZpZXcgKi9cbiAgICBnZXQgaXNPblllYXJWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSBGZENhbGVuZGFyVmlld0VudW0uWWVhcjtcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIG1vbnRoIHZpZXcgKi9cbiAgICBnZXQgaXNPbk1vbnRoVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gRmRDYWxlbmRhclZpZXdFbnVtLk1vbnRoO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gZGF5IHZpZXcgKi9cbiAgICBnZXQgaXNPbkRheVZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09IEZkQ2FsZW5kYXJWaWV3RW51bS5EYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IGlkXG4gICAgICovXG4gICAgZ2V0IHZpZXdJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICctaGVhZGVyJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUHJldmlvdXMgYnV0dG9uIGlkXG4gICAgICovXG4gICAgZ2V0IF9wcmV2QnV0dG9uSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1sZWZ0LWFycm93JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTmV4dCBidXR0b24gaWRcbiAgICAgKi9cbiAgICBnZXQgX25leHRCdXR0b25JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXJpZ2h0LWFycm93JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW9udGggbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX21vbnRoQnV0dG9uTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLW1vbnRoLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IG1vbnRoIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdE1vbnRoQnV0dG9uQXJpYUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3QtbW9udGgtYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFllYXIgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3llYXJCdXR0b25MYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICcteWVhci1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdCB5ZWFyIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdFllYXJCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC15ZWFyLWFyaWEtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBZZWFycyByYW5nZSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfeWVhcnNSYW5nZUJ1dHRvbkxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy15ZWFycy1yYW5nZS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdCB5ZWFycyByYW5nZSBhcmlhIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RZZWFyc1JhbmdlQnV0dG9uQXJpYUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3QteWVhcnMtcmFuZ2UtYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBNb250aCBuYW1lcyAqL1xuICAgIHByaXZhdGUgX21vbnRoTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGFib3V0IGFtb3VudCBvZiB5ZWFycyBkaXNwbGF5ZWQgYXQgb25jZSBvbiB5ZWFyIHZpZXcgICovXG4gICAgcHJpdmF0ZSBfYW1vdW50T2ZZZWFyc1BlclBlcmlvZCA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD5cbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGNoYW5nZXMuY3VycmVudGx5RGlzcGxheWVkICYmICFjaGFuZ2VzLmN1cnJlbnRseURpc3BsYXllZC5maXJzdENoYW5nZSkgfHxcbiAgICAgICAgICAgIChjaGFuZ2VzLmFjdGl2ZVZpZXcgJiYgIWNoYW5nZXMuYWN0aXZlVmlldy5maXJzdENoYW5nZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVMYWJlbHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sZWZ0QXJyb3dJZCA9IHRoaXMuX3ByZXZCdXR0b25JZDtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb250aE5hbWVzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9Mb2NhbGVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXMgb24gZm9jdXNhYmxlIGNvbnRyb2wgd2l0aGluIHRoZSBoZWFkZXJcbiAgICAgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJldkJ1dHRvbkNvbXBvbmVudC5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2Nlc3NWaWV3Q2hhbmdlKHR5cGU6IEZkQ2FsZW5kYXJWaWV3LCBldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IHR5cGUgPT09IHRoaXMuYWN0aXZlVmlldyA/IEZkQ2FsZW5kYXJWaWV3RW51bS5EYXkgOiB0eXBlO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZS5lbWl0KHRoaXMuYWN0aXZlVmlldyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0xvY2FsZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW9udGhOYW1lcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTGFiZWxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdE1vbnRoTGFiZWwgPSB0aGlzLl9tb250aE5hbWVzW3RoaXMuX2dldE5vcm1hbGl6ZWREYXRlKCkubW9udGggLSAxXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RZZWFyTGFiZWwgPSB0aGlzLl9nZXRZZWFyTmFtZSh0aGlzLl9nZXROb3JtYWxpemVkRGF0ZSgpLnllYXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlU2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsID0gYCR7dGhpcy5fZ2V0WWVhck5hbWUodGhpcy5fZ2V0Tm9ybWFsaXplZERhdGUoKS55ZWFyKX0tJHt0aGlzLl9nZXRZZWFyTmFtZShcbiAgICAgICAgICAgIHRoaXMuX2dldE5vcm1hbGl6ZWREYXRlKCkueWVhciArIHRoaXMuX2Ftb3VudE9mWWVhcnNQZXJQZXJpb2RcbiAgICAgICAgKX1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTW9udGhOYW1lcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW9udGhOYW1lcyA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aE5hbWVzKCdsb25nJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRZZWFyTmFtZSh5ZWFyOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXJOYW1lKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5jcmVhdGVEYXRlKHllYXIpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE5vcm1hbGl6ZWREYXRlKCk6IENhbGVuZGFyQ3VycmVudCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiBpc05hTih0aGlzLmN1cnJlbnRseURpc3BsYXllZC55ZWFyKVxuICAgICAgICAgICAgICAgID8gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLm5vdygpKVxuICAgICAgICAgICAgICAgIDogdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQueWVhcixcbiAgICAgICAgICAgIG1vbnRoOiBpc05hTih0aGlzLmN1cnJlbnRseURpc3BsYXllZC5tb250aClcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aCh0aGlzLl9kYXRlVGltZUFkYXB0ZXIubm93KCkpXG4gICAgICAgICAgICAgICAgOiB0aGlzLmN1cnJlbnRseURpc3BsYXllZC5tb250aFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJmZC1jYWxlbmRhcl9fbmF2aWdhdGlvblwiIFtjbGFzcy5mZC1jYWxlbmRhcl9fbmF2aWdhdGlvbi0tbWFpbl09XCJtb2JpbGVMYW5kc2NhcGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvbiBmZC1jYWxlbmRhcl9fYWN0aW9uLS1hcnJvdy1sZWZ0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNwcmV2QnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1sZWZ0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIl9wcmV2QnV0dG9uSWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByZXZpb3VzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwicHJldmlvdXNBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cInByZXZpb3VzQXJpYUxhYmVsIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNDbGlja2VkLmVtaXQoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGlzT25EYXlWaWV3IHx8IGlzT25Nb250aFZpZXcpIHtcbiAgICAgICAgQGlmICghaXNPbk1vbnRoVmlldykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdCBtb250aCBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl9tb250aEJ1dHRvbkxhYmVsSWQgKyAnICcgKyBfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmQtY2FsZW5kYXItbW9udGhdPVwiY3VycmVudGx5RGlzcGxheWVkLm1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9wcm9jZXNzVmlld0NoYW5nZSgnbW9udGgnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmlkXT1cIl9tb250aEJ1dHRvbkxhYmVsSWRcIj57eyBzZWxlY3RNb250aExhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIj5cbiAgICAgICAgICAgIDwhLS0gU2VsZWN0IHllYXIgYnV0dG9uIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX3llYXJCdXR0b25MYWJlbElkICsgJyAnICsgX3NlbGVjdFllYXJCdXR0b25BcmlhTGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci15ZWFyXT1cImN1cnJlbnRseURpc3BsYXllZC55ZWFyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCd5ZWFyJywgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX3llYXJCdXR0b25MYWJlbElkXCI+e3sgc2VsZWN0WWVhckxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3IHx8IGlzT25ZZWFyVmlldykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvblwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX3llYXJzUmFuZ2VCdXR0b25MYWJlbElkICsgJyAnICsgX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9wcm9jZXNzVmlld0NoYW5nZSgnYWdncmVnYXRlZFllYXInLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJfeWVhcnNSYW5nZUJ1dHRvbkxhYmVsSWRcIj57eyBzZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvbiBmZC1jYWxlbmRhcl9fYWN0aW9uLS1hcnJvdy1yaWdodFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1yaWdodFwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJfbmV4dEJ1dHRvbklkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJuZXh0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwibmV4dEFyaWFMYWJlbCB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwibmV4dEFyaWFMYWJlbCB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJuZXh0Q2xpY2tlZC5lbWl0KClcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvaGVhZGVyPlxuPCEtLSBIaWRkZW4gZWxlbWVudHMgZm9yIGFyaWEgcHVycG9zZXMgLS0+XG48ZGl2IGhpZGRlbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RNb250aEJ1dHRvbkFyaWFMYWJlbElkXCI+e3sgc2VsZWN0TW9udGhBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdFllYXJCdXR0b25BcmlhTGFiZWxJZFwiPnt7ICdjb3JlQ2FsZW5kYXIueWVhclNlbGVjdGlvbkxhYmVsJyB8IGZkVHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0WWVhcnNSYW5nZUJ1dHRvbkFyaWFMYWJlbElkXCI+e3sgc2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZSB9fTwvZGl2PlxuPC9kaXY+XG4iXX0=
|