@skyux/datetime 7.0.0-beta.12 → 7.0.0-beta.13
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/documentation.json +1532 -991
- package/esm2020/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.mjs +20 -0
- package/esm2020/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.mjs +20 -0
- package/esm2020/lib/modules/date-range-picker/date-range-picker.component.mjs +262 -204
- package/esm2020/lib/modules/date-range-picker/date-range-picker.module.mjs +11 -3
- package/esm2020/lib/modules/date-range-picker/date-range.service.mjs +42 -38
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.mjs +1 -1
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-validate-function.mjs +1 -1
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator.mjs +15 -15
- package/esm2020/lib/modules/date-range-picker/types/date-range-default-calculator-configs.mjs +4 -2
- package/esm2020/lib/modules/date-range-picker/types/date-range.mjs +1 -1
- package/esm2020/lib/modules/datepicker/date-formatter.mjs +2 -2
- package/esm2020/lib/modules/datepicker/datepicker-adapter.service.mjs +7 -14
- package/esm2020/lib/modules/datepicker/datepicker-calendar-inner.component.mjs +43 -20
- package/esm2020/lib/modules/datepicker/datepicker-calendar.component.mjs +28 -35
- package/esm2020/lib/modules/datepicker/datepicker-config.service.mjs +1 -1
- package/esm2020/lib/modules/datepicker/datepicker-input-fuzzy.directive.mjs +223 -209
- package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +212 -220
- package/esm2020/lib/modules/datepicker/datepicker.component.mjs +117 -138
- package/esm2020/lib/modules/datepicker/daypicker-button.component.mjs +3 -3
- package/esm2020/lib/modules/datepicker/daypicker-cell.component.mjs +61 -59
- package/esm2020/lib/modules/datepicker/daypicker.component.mjs +143 -137
- package/esm2020/lib/modules/datepicker/fuzzy-date.service.mjs +123 -132
- package/esm2020/lib/modules/datepicker/monthpicker.component.mjs +51 -49
- package/esm2020/lib/modules/datepicker/yearpicker.component.mjs +52 -50
- package/esm2020/lib/modules/timepicker/timepicker.component.mjs +104 -88
- package/esm2020/lib/modules/timepicker/timepicker.directive.mjs +105 -98
- package/fesm2015/skyux-datetime.mjs +1642 -1516
- package/fesm2015/skyux-datetime.mjs.map +1 -1
- package/fesm2020/skyux-datetime.mjs +1618 -1510
- package/fesm2020/skyux-datetime.mjs.map +1 -1
- package/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.d.ts +8 -0
- package/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.d.ts +8 -0
- package/lib/modules/date-range-picker/date-range-picker.component.d.ts +14 -43
- package/lib/modules/date-range-picker/date-range-picker.module.d.ts +9 -7
- package/lib/modules/date-range-picker/date-range.service.d.ts +1 -5
- package/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.d.ts +1 -1
- package/lib/modules/date-range-picker/types/date-range-calculator-validate-function.d.ts +1 -1
- package/lib/modules/date-range-picker/types/date-range-calculator.d.ts +3 -8
- package/lib/modules/date-range-picker/types/date-range.d.ts +2 -2
- package/lib/modules/datepicker/date-formatter.d.ts +3 -3
- package/lib/modules/datepicker/datepicker-adapter.service.d.ts +1 -5
- package/lib/modules/datepicker/datepicker-calendar-inner.component.d.ts +18 -19
- package/lib/modules/datepicker/datepicker-calendar.component.d.ts +14 -25
- package/lib/modules/datepicker/datepicker-config.service.d.ts +3 -3
- package/lib/modules/datepicker/datepicker-input-fuzzy.directive.d.ts +17 -53
- package/lib/modules/datepicker/datepicker-input.directive.d.ts +13 -68
- package/lib/modules/datepicker/datepicker.component.d.ts +21 -58
- package/lib/modules/datepicker/daypicker-button.component.d.ts +1 -1
- package/lib/modules/datepicker/daypicker-cell.component.d.ts +3 -10
- package/lib/modules/datepicker/daypicker.component.d.ts +4 -16
- package/lib/modules/datepicker/fuzzy-date.service.d.ts +6 -30
- package/lib/modules/datepicker/monthpicker.component.d.ts +1 -4
- package/lib/modules/datepicker/yearpicker.component.d.ts +1 -3
- package/lib/modules/timepicker/timepicker.component.d.ts +14 -32
- package/lib/modules/timepicker/timepicker.directive.d.ts +9 -27
- package/package.json +8 -8
@@ -1,3 +1,5 @@
|
|
1
|
+
var _SkyDayPickerComponent_instances, _SkyDayPickerComponent_daysInMonth, _SkyDayPickerComponent_initialDate, _SkyDayPickerComponent_ngUnsubscribe, _SkyDayPickerComponent_compareDays, _SkyDayPickerComponent_refreshDayView, _SkyDayPickerComponent_keydownDays, _SkyDayPickerComponent_getDaysInMonth, _SkyDayPickerComponent_applyCustomDates, _SkyDayPickerComponent_dateRangeRowsAreEqual, _SkyDayPickerComponent_getDateRange;
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
1
3
|
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
2
4
|
import { Subject } from 'rxjs';
|
3
5
|
import { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';
|
@@ -11,39 +13,42 @@ import * as i4 from "./daypicker-cell.component";
|
|
11
13
|
*/
|
12
14
|
export class SkyDayPickerComponent {
|
13
15
|
constructor(datepicker) {
|
16
|
+
_SkyDayPickerComponent_instances.add(this);
|
14
17
|
this.calendarDateRangeChange = new EventEmitter();
|
15
18
|
this.isWaiting = false;
|
16
19
|
this.activeDateHasChanged = false;
|
17
20
|
this.labels = [];
|
21
|
+
this.title = '';
|
18
22
|
this.rows = [];
|
19
23
|
this.weekNumbers = [];
|
20
|
-
this
|
24
|
+
_SkyDayPickerComponent_daysInMonth.set(this, [
|
21
25
|
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
|
22
|
-
];
|
23
|
-
this
|
26
|
+
]);
|
27
|
+
_SkyDayPickerComponent_initialDate.set(this, void 0);
|
28
|
+
_SkyDayPickerComponent_ngUnsubscribe.set(this, new Subject());
|
24
29
|
this.datepicker = datepicker;
|
25
30
|
}
|
26
31
|
set customDates(value) {
|
27
32
|
/* istanbul ignore else */
|
28
33
|
if (value) {
|
29
|
-
this.
|
34
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_applyCustomDates).call(this, value, this.rows);
|
30
35
|
}
|
31
36
|
}
|
32
37
|
ngOnInit() {
|
33
38
|
this.datepicker.stepDay = { months: 1 };
|
34
|
-
this
|
39
|
+
__classPrivateFieldSet(this, _SkyDayPickerComponent_initialDate, this.datepicker.activeDate.getDate(), "f");
|
35
40
|
this.datepicker.setRefreshViewHandler(() => {
|
36
|
-
this.
|
41
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_refreshDayView).call(this);
|
37
42
|
}, 'day');
|
38
|
-
this.datepicker.setCompareHandler(this
|
43
|
+
this.datepicker.setCompareHandler(__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_compareDays), 'day');
|
39
44
|
this.datepicker.setKeydownHandler((key, event) => {
|
40
|
-
this.
|
45
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_keydownDays).call(this, key, event);
|
41
46
|
}, 'day');
|
42
47
|
this.datepicker.refreshView();
|
43
48
|
}
|
44
49
|
ngOnDestroy() {
|
45
|
-
this.
|
46
|
-
this.
|
50
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_ngUnsubscribe, "f").next();
|
51
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_ngUnsubscribe, "f").complete();
|
47
52
|
}
|
48
53
|
getDates(startDate, n) {
|
49
54
|
const dates = new Array(n);
|
@@ -58,144 +63,145 @@ export class SkyDayPickerComponent {
|
|
58
63
|
}
|
59
64
|
return dates;
|
60
65
|
}
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
66
|
+
}
|
67
|
+
_SkyDayPickerComponent_daysInMonth = new WeakMap(), _SkyDayPickerComponent_initialDate = new WeakMap(), _SkyDayPickerComponent_ngUnsubscribe = new WeakMap(), _SkyDayPickerComponent_instances = new WeakSet(), _SkyDayPickerComponent_compareDays = function _SkyDayPickerComponent_compareDays(date1, date2) {
|
68
|
+
const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
|
69
|
+
const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
|
70
|
+
return d1.getTime() - d2.getTime();
|
71
|
+
}, _SkyDayPickerComponent_refreshDayView = function _SkyDayPickerComponent_refreshDayView() {
|
72
|
+
const year = this.datepicker.activeDate.getFullYear();
|
73
|
+
const month = this.datepicker.activeDate.getMonth();
|
74
|
+
const firstDayOfMonth = new Date(year, month, 1);
|
75
|
+
const difference = this.datepicker.startingDay - firstDayOfMonth.getDay();
|
76
|
+
const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;
|
77
|
+
const firstDate = new Date(firstDayOfMonth.getTime());
|
78
|
+
if (this.datepicker.activeDate.getDate() !== __classPrivateFieldGet(this, _SkyDayPickerComponent_initialDate, "f")) {
|
79
|
+
this.activeDateHasChanged = true;
|
80
|
+
}
|
81
|
+
/* istanbul ignore else */
|
82
|
+
/* sanity check */
|
83
|
+
if (numDisplayedFromPreviousMonth > 0) {
|
84
|
+
firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
|
85
|
+
}
|
86
|
+
// 42 is the number of days on a six-week calendar
|
87
|
+
const days = this.getDates(firstDate, 42);
|
88
|
+
const pickerDates = [];
|
89
|
+
for (let i = 0; i < 42; i++) {
|
90
|
+
const _dateObject = this.datepicker.createDateObject(days[i], this.datepicker.formatDay, days[i].getMonth() !== month, this.datepicker.datepickerId + '-' + i);
|
91
|
+
pickerDates[i] = _dateObject;
|
92
|
+
}
|
93
|
+
this.labels = [];
|
94
|
+
for (let j = 0; j < 7; j++) {
|
95
|
+
this.labels[j] = {};
|
96
|
+
this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
|
97
|
+
this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');
|
98
|
+
}
|
99
|
+
this.title = this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
|
100
|
+
const oldDateRange = __classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_getDateRange).call(this, this.rows);
|
101
|
+
this.rows = this.datepicker.createCalendarRows(pickerDates, 7);
|
102
|
+
const newDateRange = __classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_getDateRange).call(this, this.rows);
|
103
|
+
if (!__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_dateRangeRowsAreEqual).call(this, oldDateRange, newDateRange)) {
|
104
|
+
// Safety check
|
76
105
|
/* istanbul ignore else */
|
77
|
-
|
78
|
-
if (numDisplayedFromPreviousMonth > 0) {
|
79
|
-
firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
|
80
|
-
}
|
81
|
-
// 42 is the number of days on a six-week calendar
|
82
|
-
const days = this.getDates(firstDate, 42);
|
83
|
-
const pickerDates = [];
|
84
|
-
for (let i = 0; i < 42; i++) {
|
85
|
-
const _dateObject = this.datepicker.createDateObject(days[i], this.datepicker.formatDay, days[i].getMonth() !== month, this.datepicker.datepickerId + '-' + i);
|
86
|
-
pickerDates[i] = _dateObject;
|
87
|
-
}
|
88
|
-
this.labels = [];
|
89
|
-
for (let j = 0; j < 7; j++) {
|
90
|
-
this.labels[j] = {};
|
91
|
-
this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);
|
92
|
-
this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');
|
93
|
-
}
|
94
|
-
this.title = this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);
|
95
|
-
const oldDateRange = this.getDateRange(this.rows);
|
96
|
-
this.rows = this.datepicker.createCalendarRows(pickerDates, 7);
|
97
|
-
const newDateRange = this.getDateRange(this.rows);
|
98
|
-
if (!this.dateRangeRowsAreEqual(oldDateRange, newDateRange)) {
|
106
|
+
if (newDateRange) {
|
99
107
|
this.calendarDateRangeChange.next({
|
100
108
|
startDate: newDateRange.startDate,
|
101
109
|
endDate: newDateRange.endDate,
|
102
110
|
});
|
103
111
|
}
|
104
|
-
|
105
|
-
|
106
|
-
let date = this.datepicker.activeDate.getDate();
|
107
|
-
/* istanbul ignore else */
|
108
|
-
/* sanity check */
|
109
|
-
if (key === 'left') {
|
110
|
-
date = date - 1;
|
111
|
-
}
|
112
|
-
else if (key === 'up') {
|
113
|
-
date = date - 7;
|
114
|
-
}
|
115
|
-
else if (key === 'right') {
|
116
|
-
date = date + 1;
|
117
|
-
}
|
118
|
-
else if (key === 'down') {
|
119
|
-
date = date + 7;
|
120
|
-
}
|
121
|
-
else if (key === 'pageup' || key === 'pagedown') {
|
122
|
-
const month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);
|
123
|
-
this.datepicker.activeDate.setMonth(month, 1);
|
124
|
-
date = Math.min(this.getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
|
125
|
-
}
|
126
|
-
else if (key === 'home') {
|
127
|
-
date = 1;
|
128
|
-
}
|
129
|
-
else if (key === 'end') {
|
130
|
-
date = this.getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth());
|
112
|
+
else {
|
113
|
+
this.calendarDateRangeChange.next(undefined);
|
131
114
|
}
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
115
|
+
}
|
116
|
+
}, _SkyDayPickerComponent_keydownDays = function _SkyDayPickerComponent_keydownDays(key, event) {
|
117
|
+
let date = this.datepicker.activeDate.getDate();
|
118
|
+
/* istanbul ignore else */
|
119
|
+
/* sanity check */
|
120
|
+
if (key === 'left') {
|
121
|
+
date = date - 1;
|
122
|
+
}
|
123
|
+
else if (key === 'up') {
|
124
|
+
date = date - 7;
|
125
|
+
}
|
126
|
+
else if (key === 'right') {
|
127
|
+
date = date + 1;
|
128
|
+
}
|
129
|
+
else if (key === 'down') {
|
130
|
+
date = date + 7;
|
131
|
+
}
|
132
|
+
else if (key === 'pageup' || key === 'pagedown') {
|
133
|
+
const month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);
|
134
|
+
this.datepicker.activeDate.setMonth(month, 1);
|
135
|
+
date = Math.min(__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_getDaysInMonth).call(this, this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);
|
136
|
+
}
|
137
|
+
else if (key === 'home') {
|
138
|
+
date = 1;
|
139
|
+
}
|
140
|
+
else if (key === 'end') {
|
141
|
+
date = __classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_getDaysInMonth).call(this, this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth());
|
142
|
+
}
|
143
|
+
this.datepicker.activeDate.setDate(date);
|
144
|
+
}, _SkyDayPickerComponent_getDaysInMonth = function _SkyDayPickerComponent_getDaysInMonth(year, month) {
|
145
|
+
return month === 1 &&
|
146
|
+
year % 4 === 0 &&
|
147
|
+
(year % 400 === 0 || year % 100 !== 0)
|
148
|
+
? 29
|
149
|
+
: __classPrivateFieldGet(this, _SkyDayPickerComponent_daysInMonth, "f")[month];
|
150
|
+
}, _SkyDayPickerComponent_applyCustomDates = function _SkyDayPickerComponent_applyCustomDates(customDates, dateRows) {
|
151
|
+
let date;
|
152
|
+
let newDate;
|
153
|
+
let dateIndex;
|
154
|
+
/* istanbul ignore else */
|
155
|
+
if (customDates && dateRows) {
|
156
|
+
customDates.forEach((customDate) => {
|
157
|
+
dateIndex = -1;
|
158
|
+
dateRows.forEach((row) => {
|
159
|
+
if (dateIndex === -1) {
|
160
|
+
dateIndex = row.findIndex((d) => {
|
161
|
+
return d.date.getTime() === customDate.date.getTime();
|
162
|
+
});
|
163
|
+
if (dateIndex > -1) {
|
164
|
+
date = row[dateIndex];
|
165
|
+
// Replace the date with a new instance so the display gets updated.
|
166
|
+
newDate = {
|
167
|
+
current: date.current,
|
168
|
+
date: date.date,
|
169
|
+
disabled: !!date.disabled || !!customDate.disabled,
|
170
|
+
keyDate: !!customDate.keyDate || !!date.keyDate,
|
171
|
+
keyDateText: customDate.keyDateText || date.keyDateText,
|
172
|
+
label: date.label,
|
173
|
+
secondary: date.secondary,
|
174
|
+
selected: date.selected,
|
175
|
+
uid: date.uid,
|
176
|
+
};
|
177
|
+
row[dateIndex] = newDate;
|
173
178
|
}
|
174
|
-
}
|
179
|
+
}
|
175
180
|
});
|
176
|
-
}
|
181
|
+
});
|
177
182
|
}
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
}
|
183
|
-
else if ((rangeA && !rangeB) || (!rangeA && rangeB)) {
|
184
|
-
return false;
|
185
|
-
}
|
186
|
-
return (this.compareDays(rangeA.startDate, rangeB.startDate) === 0 &&
|
187
|
-
this.compareDays(rangeA.endDate, rangeB.endDate) === 0);
|
183
|
+
}, _SkyDayPickerComponent_dateRangeRowsAreEqual = function _SkyDayPickerComponent_dateRangeRowsAreEqual(rangeA, rangeB) {
|
184
|
+
/* istanbul ignore if */
|
185
|
+
if (!rangeA && !rangeB) {
|
186
|
+
return true;
|
188
187
|
}
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
return {
|
193
|
-
startDate: rows[0][0].date,
|
194
|
-
endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,
|
195
|
-
};
|
196
|
-
}
|
188
|
+
else if (rangeA && rangeB) {
|
189
|
+
return (__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_compareDays).call(this, rangeA.startDate, rangeB.startDate) === 0 &&
|
190
|
+
__classPrivateFieldGet(this, _SkyDayPickerComponent_instances, "m", _SkyDayPickerComponent_compareDays).call(this, rangeA.endDate, rangeB.endDate) === 0);
|
197
191
|
}
|
198
|
-
|
192
|
+
else {
|
193
|
+
return false;
|
194
|
+
}
|
195
|
+
}, _SkyDayPickerComponent_getDateRange = function _SkyDayPickerComponent_getDateRange(rows) {
|
196
|
+
/* istanbul ignore else */
|
197
|
+
if (rows && rows.length > 0) {
|
198
|
+
return {
|
199
|
+
startDate: rows[0][0].date,
|
200
|
+
endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,
|
201
|
+
};
|
202
|
+
}
|
203
|
+
return undefined;
|
204
|
+
};
|
199
205
|
SkyDayPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component });
|
200
206
|
SkyDayPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyDayPickerComponent, selector: "sky-daypicker", inputs: { customDates: "customDates", isWaiting: "isWaiting" }, outputs: { calendarDateRangeChange: "calendarDateRangeChange" }, ngImport: i0, template: "<div *ngIf=\"datepicker.datepickerMode === 'day'\" class=\"sky-daypicker-wrapper\">\n <table\n class=\"sky-daypicker-table\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datepicker.datepickerId + '-title'\"\n >\n <thead>\n <tr>\n <th class=\"sky-datepicker-header-left\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\"\n (click)=\"datepicker.moveCalendar($event, -1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-left\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-left\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n <th scope=\"col\" [attr.colspan]=\"5\">\n <button\n [id]=\"datepicker.datepickerId + '-title'\"\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\"\n (click)=\"datepicker.toggleModeCalendar($event)\"\n [disabled]=\"datepicker.datepickerMode === datepicker.maxMode\"\n [ngClass]=\"{\n 'sky-btn-disabled':\n datepicker.datepickerMode === datepicker.maxMode\n }\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th class=\"sky-datepicker-header-right\" scope=\"col\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\"\n (click)=\"datepicker.moveCalendar($event, 1)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <sky-icon\n class=\"sky-datepicker-chevron-default\"\n icon=\"chevron-right\"\n ></sky-icon>\n <sky-icon\n class=\"sky-datepicker-chevron-modern\"\n icon=\"chevron-right\"\n iconType=\"skyux\"\n ></sky-icon>\n </button>\n </th>\n </tr>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let label of labels\"\n class=\"sky-datepicker-center sky-datepicker-weekdays\"\n >\n <small [attr.aria-label]=\"label.full\">\n <b>{{ label.abbr }}</b>\n </small>\n </th>\n </tr>\n </thead>\n <tbody>\n <!-- Wait indicator for async custom date stream -->\n <sky-wait [isWaiting]=\"isWaiting\"> </sky-wait>\n <ng-template ngFor [ngForOf]=\"rows\" let-row=\"$implicit\" let-index=\"index\">\n <tr role=\"row\">\n <td\n *ngFor=\"let date of row\"\n class=\"sky-datepicker-center\"\n role=\"gridcell\"\n [id]=\"date.uid\"\n >\n <sky-daypicker-cell\n [activeDateHasChanged]=\"activeDateHasChanged\"\n [date]=\"date\"\n >\n </sky-daypicker-cell>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n</div>\n", styles: [":host-context(.sky-theme-modern) :host:focus{outline:none}.sky-theme-modern :host:focus{outline:none}\n"], 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: "component", type: i3.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i3.λ14, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking"] }, { kind: "component", type: i4.SkyDayPickerCellComponent, selector: "sky-daypicker-cell", inputs: ["activeDateHasChanged", "date"] }] });
|
201
207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyDayPickerComponent, decorators: [{
|
@@ -208,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
208
214
|
}], isWaiting: [{
|
209
215
|
type: Input
|
210
216
|
}] } });
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXlwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RheXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQWM1Rjs7R0FFRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7SUE2QmhDLFlBQW1CLFVBQStDO1FBbkIzRCw0QkFBdUIsR0FBOEMsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFHckgsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQW9DLEVBQUUsQ0FBQztRQUMzQyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUkxQixnQkFBVyxHQUFrQjtZQUNuQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDL0MsQ0FBQztRQUVNLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUcxQyxJQUFJLENBQUMsVUFBVSxHQUFH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cG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItY2hhbmdlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyRGF0ZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1kYXRlJztcblxuLyoqXG4gKiBIZWxwZXIgaW50ZXJmYWNlIHRvIGNvbXBhcmUgZGF0ZSByYW5nZXMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIFNreURhdGVSYW5nZSB7XG4gIGVuZERhdGU6IERhdGU7XG5cbiAgc3RhcnREYXRlOiBEYXRlO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF5cGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICdkYXlwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXlwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGN1c3RvbURhdGVzKHZhbHVlOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuYXBwbHlDdXN0b21EYXRlcyh2YWx1ZSwgdGhpcy5yb3dzKTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8U2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1dhaXRpbmcgPSBmYWxzZTtcblxuICBwdWJsaWMgYWN0aXZlRGF0ZUhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgcHVibGljIGxhYmVsczogYW55W10gPSBbXTtcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyByb3dzOiBBcnJheTxBcnJheTxTa3lEYXRlcGlja2VyRGF0ZT4+ID0gW107XG4gIHB1YmxpYyB3ZWVrTnVtYmVyczogbnVtYmVyW10gPSBbXTtcbiAgcHVibGljIGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50O1xuICBwdWJsaWMgQ1VSUkVOVF9USEVNRV9URU1QTEFURTogYW55O1xuXG4gIHByaXZhdGUgZGF5c0luTW9udGg6IEFycmF5PG51bWJlcj4gPSBbXG4gICAgMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMSxcbiAgXTtcbiAgcHJpdmF0ZSBpbml0aWFsRGF0ZTogbnVtYmVyO1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCkge1xuICAgIHRoaXMuZGF0ZXBpY2tlciA9IGRhdGVwaWNrZXI7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyLnN0ZXBEYXkgPSB7IG1vbnRoczogMSB9O1xuICAgIHRoaXMuaW5pdGlhbERhdGUgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXREYXRlKCk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0UmVmcmVzaFZpZXdIYW5kbGVyKCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaERheVZpZXcoKTtcbiAgICB9LCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0Q29tcGFyZUhhbmRsZXIodGhpcy5jb21wYXJlRGF5cywgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldEtleWRvd25IYW5kbGVyKChrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIHRoaXMua2V5ZG93bkRheXMoa2V5LCBldmVudCk7XG4gICAgfSwgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREYXRlcyhzdGFydERhdGU6IERhdGUsIG46IG51bWJlcik6IERhdGVbXSB7XG4gICAgY29uc3QgZGF0ZXM6IERhdGVbXSA9IG5ldyBBcnJheShuKTtcbiAgICBsZXQgY3VycmVudCA9IG5ldyBEYXRlKHN0YXJ0RGF0ZS5nZXRUaW1lKCkpO1xuICAgIGxldCBpID0gMDtcbiAgICBsZXQgZGF0ZTogRGF0ZTtcbiAgICB3aGlsZSAoaSA8IG4pIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShjdXJyZW50LmdldFRpbWUoKSk7XG4gICAgICBkYXRlID0gdGhpcy5kYXRlcGlja2VyLmZpeFRpbWVab25lKGRhdGUpO1xuICAgICAgZGF0ZXNbaSsrXSA9IGRhdGU7XG4gICAgICBjdXJyZW50ID0gbmV3IERhdGUoXG4gICAgICAgIGN1cnJlbnQuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgY3VycmVudC5nZXRNb250aCgpLFxuICAgICAgICBjdXJyZW50LmdldERhdGUoKSArIDFcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZURheXMoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlKTogbnVtYmVyIHtcbiAgICBjb25zdCBkMSA9IG5ldyBEYXRlKGRhdGUxLmdldEZ1bGxZZWFyKCksIGRhdGUxLmdldE1vbnRoKCksIGRhdGUxLmdldERhdGUoKSk7XG4gICAgY29uc3QgZDIgPSBuZXcgRGF0ZShkYXRlMi5nZXRGdWxsWWVhcigpLCBkYXRlMi5nZXRNb250aCgpLCBkYXRlMi5nZXREYXRlKCkpO1xuICAgIHJldHVybiBkMS5nZXRUaW1lKCkgLSBkMi5nZXRUaW1lKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hEYXlWaWV3KCkge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMuZGF0ZXBpY2tlci5zdGFydGluZ0RheSAtIGZpcnN0RGF5T2ZNb250aC5nZXREYXkoKTtcbiAgICBjb25zdCBudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA9XG4gICAgICBkaWZmZXJlbmNlID4gMCA/IDcgLSBkaWZmZXJlbmNlIDogLWRpZmZlcmVuY2U7XG4gICAgY29uc3QgZmlyc3REYXRlID0gbmV3IERhdGUoZmlyc3REYXlPZk1vbnRoLmdldFRpbWUoKSk7XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RGF0ZSgpICE9PSB0aGlzLmluaXRpYWxEYXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA+IDApIHtcbiAgICAgIGZpcnN0RGF0ZS5zZXREYXRlKC1udW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCArIDEpO1xuICAgIH1cblxuICAgIC8vIDQyIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBvbiBhIHNpeC13ZWVrIGNhbGVuZGFyXG4gICAgY29uc3QgZGF5czogRGF0ZVtdID0gdGhpcy5nZXREYXRlcyhmaXJzdERhdGUsIDQyKTtcbiAgICBjb25zdCBwaWNrZXJEYXRlczogQXJyYXk8U2t5RGF0ZXBpY2tlckRhdGU+ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MjsgaSsrKSB7XG4gICAgICBjb25zdCBfZGF0ZU9iamVjdCA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVEYXRlT2JqZWN0KFxuICAgICAgICBkYXlzW2ldLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5LFxuICAgICAgICBkYXlzW2ldLmdldE1vbnRoKCkgIT09IG1vbnRoLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy0nICsgaVxuICAgICAgKTtcbiAgICAgIHBpY2tlckRhdGVzW2ldID0gX2RhdGVPYmplY3Q7XG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xuICAgICAgdGhpcy5sYWJlbHNbal0gPSB7fTtcbiAgICAgIHRoaXMubGFiZWxzW2pdLmFiYnIgPSB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgICAgcGlja2VyRGF0ZXNbal0uZGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdERheUhlYWRlclxuICAgICAgKTtcbiAgICAgIHRoaXMubGFiZWxzW2pdLmZ1bGwgPSB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgICAgcGlja2VyRGF0ZXNbal0uZGF0ZSxcbiAgICAgICAgJ0VFRUUnXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudGl0bGUgPSB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdERheVRpdGxlXG4gICAgKTtcblxuICAgIGNvbnN0IG9sZERhdGVSYW5nZSA9IHRoaXMuZ2V0RGF0ZVJhbmdlKHRoaXMucm93cyk7XG4gICAgdGhpcy5yb3dzID0gdGhpcy5kYXRlcGlja2VyLmNyZWF0ZUNhbGVuZGFyUm93cyhwaWNrZXJEYXRlcywgNyk7XG4gICAgY29uc3QgbmV3RGF0ZVJhbmdlID0gdGhpcy5nZXREYXRlUmFuZ2UodGhpcy5yb3dzKTtcblxuICAgIGlmICghdGhpcy5kYXRlUmFuZ2VSb3dzQXJlRXF1YWwob2xkRGF0ZVJhbmdlLCBuZXdEYXRlUmFuZ2UpKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlLm5leHQoe1xuICAgICAgICBzdGFydERhdGU6IG5ld0RhdGVSYW5nZS5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IG5ld0RhdGVSYW5nZS5lbmREYXRlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBrZXlkb3duRGF5cyhrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldERhdGUoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChrZXkgPT09ICdsZWZ0Jykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAndXAnKSB7XG4gICAgICBkYXRlID0gZGF0ZSAtIDc7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdyaWdodCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlICsgMTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Rvd24nKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDc7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYWdldXAnIHx8IGtleSA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgY29uc3QgbW9udGggPVxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpICsgKGtleSA9PT0gJ3BhZ2V1cCcgPyAtMSA6IDEpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuc2V0TW9udGgobW9udGgsIDEpO1xuICAgICAgZGF0ZSA9IE1hdGgubWluKFxuICAgICAgICB0aGlzLmdldERheXNJbk1vbnRoKFxuICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKVxuICAgICAgICApLFxuICAgICAgICBkYXRlXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9tZScpIHtcbiAgICAgIGRhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZW5kJykge1xuICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF5c0luTW9udGgoXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLnNldERhdGUoZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERheXNJbk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcikge1xuICAgIHJldHVybiBtb250aCA9PT0gMSAmJlxuICAgICAgeWVhciAlIDQgPT09IDAgJiZcbiAgICAgICh5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSAxMDAgIT09IDApXG4gICAgICA/IDI5XG4gICAgICA6IHRoaXMuZGF5c0luTW9udGhbbW9udGhdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgY3VzdG9tIGRhdGUgcHJvcGVydGllcyB0byB0aGUgZXhpc3RpbmcgZGF0ZXMgZGlzcGxheWVkIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlDdXN0b21EYXRlcyhcbiAgICBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSxcbiAgICBkYXRlUm93czogU2t5RGF0ZXBpY2tlckRhdGVbXVtdXG4gICk6IHZvaWQge1xuICAgIGxldCBkYXRlOiBTa3lEYXRlcGlja2VyRGF0ZTtcbiAgICBsZXQgbmV3RGF0ZTogU2t5RGF0ZXBpY2tlckRhdGU7XG4gICAgbGV0IGRhdGVJbmRleDogbnVtYmVyO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY3VzdG9tRGF0ZXMgJiYgZGF0ZVJvd3MpIHtcbiAgICAgIGN1c3RvbURhdGVzLmZvckVhY2goKGN1c3RvbURhdGUpID0+IHtcbiAgICAgICAgZGF0ZUluZGV4ID0gLTE7XG4gICAgICAgIGRhdGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGlmIChkYXRlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBkYXRlSW5kZXggPSByb3cuZmluZEluZGV4KChkKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBkLmRhdGUuZ2V0VGltZSgpID09PSBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZGF0ZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgZGF0ZSA9IHJvd1tkYXRlSW5kZXhdO1xuICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBkYXRlIHdpdGggYSBuZXcgaW5zdGFuY2Ugc28gdGhlIGRpc3BsYXkgZ2V0cyB1cGRhdGVkLlxuICAgICAgICAgICAgICBuZXdEYXRlID0ge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGRhdGUuY3VycmVudCxcbiAgICAgICAgICAgICAgICBkYXRlOiBkYXRlLmRhdGUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhZGF0ZS5kaXNhYmxlZCB8fCAhIWN1c3RvbURhdGUuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAga2V5RGF0ZTogISFjdXN0b21EYXRlLmtleURhdGUgfHwgISFkYXRlLmtleURhdGUsXG4gICAgICAgICAgICAgICAga2V5RGF0ZVRleHQ6IGN1c3RvbURhdGUua2V5RGF0ZVRleHQgfHwgZGF0ZS5rZXlEYXRlVGV4dCxcbiAgICAgICAgICAgICAgICBsYWJlbDogZGF0ZS5sYWJlbCxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IGRhdGUuc2Vjb25kYXJ5LFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBkYXRlLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAgIHVpZDogZGF0ZS51aWQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJvd1tkYXRlSW5kZXhdID0gbmV3RGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkYXRlUmFuZ2VSb3dzQXJlRXF1YWwoXG4gICAgcmFuZ2VBOiBTa3lEYXRlUmFuZ2UsXG4gICAgcmFuZ2VCOiBTa3lEYXRlUmFuZ2VcbiAgKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFyYW5nZUEgJiYgIXJhbmdlQikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICgocmFuZ2VBICYmICFyYW5nZUIpIHx8ICghcmFuZ2VBICYmIHJhbmdlQikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb21wYXJlRGF5cyhyYW5nZUEuc3RhcnREYXRlLCByYW5nZUIuc3RhcnREYXRlKSA9PT0gMCAmJlxuICAgICAgdGhpcy5jb21wYXJlRGF5cyhyYW5nZUEuZW5kRGF0ZSwgcmFuZ2VCLmVuZERhdGUpID09PSAwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGF0ZVJhbmdlKFxuICAgIHJvd3M6IEFycmF5PEFycmF5PFNreURhdGVwaWNrZXJEYXRlPj5cbiAgKTogU2t5RGF0ZVJhbmdlIHwgdW5kZWZpbmVkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChyb3dzICYmIHJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnREYXRlOiByb3dzWzBdWzBdLmRhdGUsXG4gICAgICAgIGVuZERhdGU6IHJvd3Nbcm93cy5sZW5ndGggLSAxXVtyb3dzW3Jvd3MubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gMV0uZGF0ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheSdcIiBjbGFzcz1cInNreS1kYXlwaWNrZXItd3JhcHBlclwiPlxuICA8dGFibGVcbiAgICBjbGFzcz1cInNreS1kYXlwaWNrZXItdGFibGVcIlxuICAgIHJvbGU9XCJncmlkXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VySWQgKyAnLXRpdGxlJ1wiXG4gID5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCBjbGFzcz1cInNreS1kYXRlcGlja2VyLWhlYWRlci1sZWZ0XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tcHJldmlvdXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIubW92ZUNhbGVuZGFyKCRldmVudCwgLTEpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uLWRlZmF1bHRcIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAgID48L3NreS1pY29uPlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvbi1tb2Rlcm5cIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgW2F0dHIuY29sc3Bhbl09XCI1XCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW2lkXT1cImRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy10aXRsZSdcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItY2FsZW5kYXItdGl0bGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIudG9nZ2xlTW9kZUNhbGVuZGFyKCRldmVudClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGVwaWNrZXIuZGF0ZXBpY2tlck1vZGUgPT09IGRhdGVwaWNrZXIubWF4TW9kZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdza3ktYnRuLWRpc2FibGVkJzpcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLmRhdGVwaWNrZXJNb2RlID09PSBkYXRlcGlja2VyLm1heE1vZGVcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLXJpZ2h0XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tbmV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5tb3ZlQ2FsZW5kYXIoJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvbi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uLW1vZGVyblwiXG4gICAgICAgICAgICAgIGljb249XCJjaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aFxuICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgbGFiZWxzXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNlbnRlciBza3ktZGF0ZXBpY2tlci13ZWVrZGF5c1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c21hbGwgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbC5mdWxsXCI+XG4gICAgICAgICAgICA8Yj57eyBsYWJlbC5hYmJyIH19PC9iPlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPCEtLSBXYWl0IGluZGljYXRvciBmb3IgYXN5bmMgY3VzdG9tIGRhdGUgc3RyZWFtIC0tPlxuICAgICAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwiaXNXYWl0aW5nXCI+IDwvc2t5LXdhaXQ+XG4gICAgICA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwicm93c1wiIGxldC1yb3c9XCIkaW1wbGljaXRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGUgb2Ygcm93XCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2VudGVyXCJcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICBbaWRdPVwiZGF0ZS51aWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxza3ktZGF5cGlja2VyLWNlbGxcbiAgICAgICAgICAgICAgW2FjdGl2ZURhdGVIYXNDaGFuZ2VkXT1cImFjdGl2ZURhdGVIYXNDaGFuZ2VkXCJcbiAgICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1kYXlwaWNrZXItY2VsbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXlwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2RheXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBYzVGOztHQUVHO0FBTUgsTUFBTSxPQUFPLHFCQUFxQjtJQStCaEMsWUFBbUIsVUFBK0M7O1FBckIzRCw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFFOUMsQ0FBQztRQUdHLGNBQVMsR0FBd0IsS0FBSyxDQUFDO1FBRXZDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixXQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ25CLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxTQUFJLEdBQW9DLEVBQUUsQ0FBQztRQUMzQyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUlsQyw2Q0FBOEI7WUFDNUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQy9DLEVBQUM7UUFDRixxREFBaUM7UUFDakMsK0NBQWlCLElBQUksT0FBTyxFQUFR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VSxxQkFBcUI7c0dBQXJCLHFCQUFxQixzTENsQ2xDLDJ2R0FrR0E7MkZEaEVhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzBIQU1kLFdBQVc7c0JBRHJCLEtBQUs7Z0JBU0MsdUJBQXVCO3NCQUQ3QixNQUFNO2dCQU1BLFNBQVM7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckN1c3RvbURhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItY3VzdG9tLWRhdGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckRhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItZGF0ZSc7XG5cbi8qKlxuICogSGVscGVyIGludGVyZmFjZSB0byBjb21wYXJlIGRhdGUgcmFuZ2VzLlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lEYXRlUmFuZ2Uge1xuICBlbmREYXRlOiBEYXRlO1xuXG4gIHN0YXJ0RGF0ZTogRGF0ZTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWRheXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZGF5cGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF5cGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNreURheVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjdXN0b21EYXRlcyh2YWx1ZTogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSB8IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNhcHBseUN1c3RvbURhdGVzKHZhbHVlLCB0aGlzLnJvd3MpO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB8IHVuZGVmaW5lZFxuICA+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzV2FpdGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBhY3RpdmVEYXRlSGFzQ2hhbmdlZCA9IGZhbHNlO1xuICBwdWJsaWMgbGFiZWxzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdGl0bGUgPSAnJztcbiAgcHVibGljIHJvd3M6IEFycmF5PEFycmF5PFNreURhdGVwaWNrZXJEYXRlPj4gPSBbXTtcbiAgcHVibGljIHdlZWtOdW1iZXJzOiBudW1iZXJbXSA9IFtdO1xuICBwdWJsaWMgZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQ7XG4gIHB1YmxpYyBDVVJSRU5UX1RIRU1FX1RFTVBMQVRFOiBhbnk7XG5cbiAgI2RheXNJbk1vbnRoOiBBcnJheTxudW1iZXI+ID0gW1xuICAgIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzEsXG4gIF07XG4gICNpbml0aWFsRGF0ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5kYXRlcGlja2VyID0gZGF0ZXBpY2tlcjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXIuc3RlcERheSA9IHsgbW9udGhzOiAxIH07XG4gICAgdGhpcy4jaW5pdGlhbERhdGUgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXREYXRlKCk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0UmVmcmVzaFZpZXdIYW5kbGVyKCgpID0+IHtcbiAgICAgIHRoaXMuI3JlZnJlc2hEYXlWaWV3KCk7XG4gICAgfSwgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldENvbXBhcmVIYW5kbGVyKHRoaXMuI2NvbXBhcmVEYXlzLCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0S2V5ZG93bkhhbmRsZXIoKGtleTogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgdGhpcy4ja2V5ZG93bkRheXMoa2V5LCBldmVudCk7XG4gICAgfSwgJ2RheScpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERhdGVzKHN0YXJ0RGF0ZTogRGF0ZSwgbjogbnVtYmVyKTogRGF0ZVtdIHtcbiAgICBjb25zdCBkYXRlczogRGF0ZVtdID0gbmV3IEFycmF5KG4pO1xuICAgIGxldCBjdXJyZW50ID0gbmV3IERhdGUoc3RhcnREYXRlLmdldFRpbWUoKSk7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBkYXRlOiBEYXRlO1xuICAgIHdoaWxlIChpIDwgbikge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnQuZ2V0VGltZSgpKTtcbiAgICAgIGRhdGUgPSB0aGlzLmRhdGVwaWNrZXIuZml4VGltZVpvbmUoZGF0ZSk7XG4gICAgICBkYXRlc1tpKytdID0gZGF0ZTtcbiAgICAgIGN1cnJlbnQgPSBuZXcgRGF0ZShcbiAgICAgICAgY3VycmVudC5nZXRGdWxsWWVhcigpLFxuICAgICAgICBjdXJyZW50LmdldE1vbnRoKCksXG4gICAgICAgIGN1cnJlbnQuZ2V0RGF0ZSgpICsgMVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGVzO1xuICB9XG5cbiAgI2NvbXBhcmVEYXlzKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZDEgPSBuZXcgRGF0ZShkYXRlMS5nZXRGdWxsWWVhcigpLCBkYXRlMS5nZXRNb250aCgpLCBkYXRlMS5nZXREYXRlKCkpO1xuICAgIGNvbnN0IGQyID0gbmV3IERhdGUoZGF0ZTIuZ2V0RnVsbFllYXIoKSwgZGF0ZTIuZ2V0TW9udGgoKSwgZGF0ZTIuZ2V0RGF0ZSgpKTtcbiAgICByZXR1cm4gZDEuZ2V0VGltZSgpIC0gZDIuZ2V0VGltZSgpO1xuICB9XG5cbiAgI3JlZnJlc2hEYXlWaWV3KCkge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMuZGF0ZXBpY2tlci5zdGFydGluZ0RheSAtIGZpcnN0RGF5T2ZNb250aC5nZXREYXkoKTtcbiAgICBjb25zdCBudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA9XG4gICAgICBkaWZmZXJlbmNlID4gMCA/IDcgLSBkaWZmZXJlbmNlIDogLWRpZmZlcmVuY2U7XG4gICAgY29uc3QgZmlyc3REYXRlID0gbmV3IERhdGUoZmlyc3REYXlPZk1vbnRoLmdldFRpbWUoKSk7XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RGF0ZSgpICE9PSB0aGlzLiNpbml0aWFsRGF0ZSkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlSGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAobnVtRGlzcGxheWVkRnJvbVByZXZpb3VzTW9udGggPiAwKSB7XG4gICAgICBmaXJzdERhdGUuc2V0RGF0ZSgtbnVtRGlzcGxheWVkRnJvbVByZXZpb3VzTW9udGggKyAxKTtcbiAgICB9XG5cbiAgICAvLyA0MiBpcyB0aGUgbnVtYmVyIG9mIGRheXMgb24gYSBzaXgtd2VlayBjYWxlbmRhclxuICAgIGNvbnN0IGRheXM6IERhdGVbXSA9IHRoaXMuZ2V0RGF0ZXMoZmlyc3REYXRlLCA0Mik7XG4gICAgY29uc3QgcGlja2VyRGF0ZXM6IEFycmF5PFNreURhdGVwaWNrZXJEYXRlPiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDI7IGkrKykge1xuICAgICAgY29uc3QgX2RhdGVPYmplY3QgPSB0aGlzLmRhdGVwaWNrZXIuY3JlYXRlRGF0ZU9iamVjdChcbiAgICAgICAgZGF5c1tpXSxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdERheSxcbiAgICAgICAgZGF5c1tpXS5nZXRNb250aCgpICE9PSBtb250aCxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmRhdGVwaWNrZXJJZCArICctJyArIGlcbiAgICAgICk7XG4gICAgICBwaWNrZXJEYXRlc1tpXSA9IF9kYXRlT2JqZWN0O1xuICAgIH1cblxuICAgIHRoaXMubGFiZWxzID0gW107XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCA3OyBqKyspIHtcbiAgICAgIHRoaXMubGFiZWxzW2pdID0ge307XG4gICAgICB0aGlzLmxhYmVsc1tqXS5hYmJyID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXIoXG4gICAgICAgIHBpY2tlckRhdGVzW2pdLmRhdGUsXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXREYXlIZWFkZXJcbiAgICAgICk7XG4gICAgICB0aGlzLmxhYmVsc1tqXS5mdWxsID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXIoXG4gICAgICAgIHBpY2tlckRhdGVzW2pdLmRhdGUsXG4gICAgICAgICdFRUVFJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnRpdGxlID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXIoXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZSxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXREYXlUaXRsZVxuICAgICk7XG5cbiAgICBjb25zdCBvbGREYXRlUmFuZ2UgPSB0aGlzLiNnZXREYXRlUmFuZ2UodGhpcy5yb3dzKTtcbiAgICB0aGlzLnJvd3MgPSB0aGlzLmRhdGVwaWNrZXIuY3JlYXRlQ2FsZW5kYXJSb3dzKHBpY2tlckRhdGVzLCA3KTtcbiAgICBjb25zdCBuZXdEYXRlUmFuZ2UgPSB0aGlzLiNnZXREYXRlUmFuZ2UodGhpcy5yb3dzKTtcblxuICAgIGlmICghdGhpcy4jZGF0ZVJhbmdlUm93c0FyZUVxdWFsKG9sZERhdGVSYW5nZSwgbmV3RGF0ZVJhbmdlKSkge1xuICAgICAgLy8gU2FmZXR5IGNoZWNrXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG5ld0RhdGVSYW5nZSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlLm5leHQoe1xuICAgICAgICAgIHN0YXJ0RGF0ZTogbmV3RGF0ZVJhbmdlLnN0YXJ0RGF0ZSxcbiAgICAgICAgICBlbmREYXRlOiBuZXdEYXRlUmFuZ2UuZW5kRGF0ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlLm5leHQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAja2V5ZG93bkRheXMoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXREYXRlKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoa2V5ID09PSAnbGVmdCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlIC0gMTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3VwJykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSA3O1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncmlnaHQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdkb3duJykge1xuICAgICAgZGF0ZSA9IGRhdGUgKyA3O1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncGFnZXVwJyB8fCBrZXkgPT09ICdwYWdlZG93bicpIHtcbiAgICAgIGNvbnN0IG1vbnRoID1cbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0TW9udGgoKSArIChrZXkgPT09ICdwYWdldXAnID8gLTEgOiAxKTtcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLnNldE1vbnRoKG1vbnRoLCAxKTtcbiAgICAgIGRhdGUgPSBNYXRoLm1pbihcbiAgICAgICAgdGhpcy4jZ2V0RGF5c0luTW9udGgoXG4gICAgICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpXG4gICAgICAgICksXG4gICAgICAgIGRhdGVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdob21lJykge1xuICAgICAgZGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdlbmQnKSB7XG4gICAgICBkYXRlID0gdGhpcy4jZ2V0RGF5c0luTW9udGgoXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLnNldERhdGUoZGF0ZSk7XG4gIH1cblxuICAjZ2V0RGF5c0luTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG1vbnRoID09PSAxICYmXG4gICAgICB5ZWFyICUgNCA9PT0gMCAmJlxuICAgICAgKHllYXIgJSA0MDAgPT09IDAgfHwgeWVhciAlIDEwMCAhPT0gMClcbiAgICAgID8gMjlcbiAgICAgIDogdGhpcy4jZGF5c0luTW9udGhbbW9udGhdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgY3VzdG9tIGRhdGUgcHJvcGVydGllcyB0byB0aGUgZXhpc3RpbmcgZGF0ZXMgZGlzcGxheWVkIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gICNhcHBseUN1c3RvbURhdGVzKFxuICAgIGN1c3RvbURhdGVzOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdLFxuICAgIGRhdGVSb3dzOiBTa3lEYXRlcGlja2VyRGF0ZVtdW11cbiAgKTogdm9pZCB7XG4gICAgbGV0IGRhdGU6IFNreURhdGVwaWNrZXJEYXRlO1xuICAgIGxldCBuZXdEYXRlOiBTa3lEYXRlcGlja2VyRGF0ZTtcbiAgICBsZXQgZGF0ZUluZGV4OiBudW1iZXI7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChjdXN0b21EYXRlcyAmJiBkYXRlUm93cykge1xuICAgICAgY3VzdG9tRGF0ZXMuZm9yRWFjaCgoY3VzdG9tRGF0ZSkgPT4ge1xuICAgICAgICBkYXRlSW5kZXggPSAtMTtcbiAgICAgICAgZGF0ZVJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGRhdGVJbmRleCA9IHJvdy5maW5kSW5kZXgoKGQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGQuZGF0ZS5nZXRUaW1lKCkgPT09IGN1c3RvbURhdGUuZGF0ZS5nZXRUaW1lKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChkYXRlSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICBkYXRlID0gcm93W2RhdGVJbmRleF07XG4gICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGRhdGUgd2l0aCBhIG5ldyBpbnN0YW5jZSBzbyB0aGUgZGlzcGxheSBnZXRzIHVwZGF0ZWQuXG4gICAgICAgICAgICAgIG5ld0RhdGUgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVudDogZGF0ZS5jdXJyZW50LFxuICAgICAgICAgICAgICAgIGRhdGU6IGRhdGUuZGF0ZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogISFkYXRlLmRpc2FibGVkIHx8ICEhY3VzdG9tRGF0ZS5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICBrZXlEYXRlOiAhIWN1c3RvbURhdGUua2V5RGF0ZSB8fCAhIWRhdGUua2V5RGF0ZSxcbiAgICAgICAgICAgICAgICBrZXlEYXRlVGV4dDogY3VzdG9tRGF0ZS5rZXlEYXRlVGV4dCB8fCBkYXRlLmtleURhdGVUZXh0LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBkYXRlLmxhYmVsLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeTogZGF0ZS5zZWNvbmRhcnksXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGRhdGUuc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgdWlkOiBkYXRlLnVpZCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcm93W2RhdGVJbmRleF0gPSBuZXdEYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjZGF0ZVJhbmdlUm93c0FyZUVxdWFsKFxuICAgIHJhbmdlQT86IFNreURhdGVSYW5nZSxcbiAgICByYW5nZUI/OiBTa3lEYXRlUmFuZ2VcbiAgKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFyYW5nZUEgJiYgIXJhbmdlQikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChyYW5nZUEgJiYgcmFuZ2VCKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLiNjb21wYXJlRGF5cyhyYW5nZUEuc3RhcnREYXRlLCByYW5nZUIuc3RhcnREYXRlKSA9PT0gMCAmJlxuICAgICAgICB0aGlzLiNjb21wYXJlRGF5cyhyYW5nZUEuZW5kRGF0ZSwgcmFuZ2VCLmVuZERhdGUpID09PSAwXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgI2dldERhdGVSYW5nZShcbiAgICByb3dzOiBBcnJheTxBcnJheTxTa3lEYXRlcGlja2VyRGF0ZT4+XG4gICk6IFNreURhdGVSYW5nZSB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocm93cyAmJiByb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0RGF0ZTogcm93c1swXVswXS5kYXRlLFxuICAgICAgICBlbmREYXRlOiByb3dzW3Jvd3MubGVuZ3RoIC0gMV1bcm93c1tyb3dzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIDFdLmRhdGUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheSdcIiBjbGFzcz1cInNreS1kYXlwaWNrZXItd3JhcHBlclwiPlxuICA8dGFibGVcbiAgICBjbGFzcz1cInNreS1kYXlwaWNrZXItdGFibGVcIlxuICAgIHJvbGU9XCJncmlkXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VySWQgKyAnLXRpdGxlJ1wiXG4gID5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCBjbGFzcz1cInNreS1kYXRlcGlja2VyLWhlYWRlci1sZWZ0XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tcHJldmlvdXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIubW92ZUNhbGVuZGFyKCRldmVudCwgLTEpXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uLWRlZmF1bHRcIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAgID48L3NreS1pY29uPlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvbi1tb2Rlcm5cIlxuICAgICAgICAgICAgICBpY29uPVwiY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgW2F0dHIuY29sc3Bhbl09XCI1XCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW2lkXT1cImRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy10aXRsZSdcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItY2FsZW5kYXItdGl0bGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIudG9nZ2xlTW9kZUNhbGVuZGFyKCRldmVudClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGVwaWNrZXIuZGF0ZXBpY2tlck1vZGUgPT09IGRhdGVwaWNrZXIubWF4TW9kZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdza3ktYnRuLWRpc2FibGVkJzpcbiAgICAgICAgICAgICAgICBkYXRlcGlja2VyLmRhdGVwaWNrZXJNb2RlID09PSBkYXRlcGlja2VyLm1heE1vZGVcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdGl0bGUgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLXJpZ2h0XCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tbmV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5tb3ZlQ2FsZW5kYXIoJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvbi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgPjwvc2t5LWljb24+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uLW1vZGVyblwiXG4gICAgICAgICAgICAgIGljb249XCJjaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgICA+PC9za3ktaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aFxuICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgbGFiZWxzXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNlbnRlciBza3ktZGF0ZXBpY2tlci13ZWVrZGF5c1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c21hbGwgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbC5mdWxsXCI+XG4gICAgICAgICAgICA8Yj57eyBsYWJlbC5hYmJyIH19PC9iPlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPCEtLSBXYWl0IGluZGljYXRvciBmb3IgYXN5bmMgY3VzdG9tIGRhdGUgc3RyZWFtIC0tPlxuICAgICAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwiaXNXYWl0aW5nXCI+IDwvc2t5LXdhaXQ+XG4gICAgICA8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwicm93c1wiIGxldC1yb3c9XCIkaW1wbGljaXRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGUgb2Ygcm93XCJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2VudGVyXCJcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICBbaWRdPVwiZGF0ZS51aWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxza3ktZGF5cGlja2VyLWNlbGxcbiAgICAgICAgICAgICAgW2FjdGl2ZURhdGVIYXNDaGFuZ2VkXT1cImFjdGl2ZURhdGVIYXNDaGFuZ2VkXCJcbiAgICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NreS1kYXlwaWNrZXItY2VsbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|