@acorex/core 7.3.1 → 7.4.1
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/config/lib/configs.d.ts +6 -9
- package/config/lib/configs.service.d.ts +6 -1
- package/dateTime/index.d.ts +2 -0
- package/dateTime/lib/calendar.service.d.ts +13 -0
- package/dateTime/lib/dateTime.config.d.ts +12 -0
- package/dateTime/lib/datetime.class.d.ts +61 -26
- package/dateTime/lib/datetime.module.d.ts +0 -1
- package/dateTime/lib/datetime.pipe.d.ts +3 -2
- package/dateTime/lib/georgian.calendar.d.ts +6 -6
- package/dateTime/lib/jalali.calendar.d.ts +7 -7
- package/esm2022/config/lib/configs.mjs +7 -24
- package/esm2022/config/lib/configs.service.mjs +20 -16
- package/esm2022/dateTime/index.mjs +3 -1
- package/esm2022/dateTime/lib/calendar.service.mjs +41 -0
- package/esm2022/dateTime/lib/dateTime.config.mjs +65 -0
- package/esm2022/dateTime/lib/datetime.class.mjs +43 -64
- package/esm2022/dateTime/lib/datetime.module.mjs +8 -28
- package/esm2022/dateTime/lib/datetime.pipe.mjs +18 -12
- package/esm2022/dateTime/lib/georgian.calendar.mjs +69 -72
- package/esm2022/dateTime/lib/jalali.calendar.mjs +50 -49
- package/esm2022/events/lib/event.service.mjs +3 -3
- package/esm2022/file/lib/file.service.mjs +3 -3
- package/esm2022/http/lib/http.module.mjs +4 -4
- package/esm2022/http/lib/http.service.mjs +3 -3
- package/esm2022/image/lib/image.service.mjs +3 -3
- package/esm2022/pipes/lib/pipes.module.mjs +4 -4
- package/esm2022/pipes/lib/safe.pipe.mjs +3 -3
- package/esm2022/platform/lib/platform.service.mjs +24 -13
- package/esm2022/translation/lib/translation.module.mjs +4 -4
- package/esm2022/translation/lib/translator.pipe.mjs +3 -3
- package/esm2022/types/acorex-core-types.mjs +5 -0
- package/esm2022/types/index.mjs +2 -0
- package/esm2022/utils/index.mjs +1 -2
- package/esm2022/utils/lib/auto-unsubscribe.mjs +3 -3
- package/esm2022/utils/lib/string-util.mjs +1 -1
- package/fesm2022/acorex-core-config.mjs +24 -39
- package/fesm2022/acorex-core-config.mjs.map +1 -1
- package/fesm2022/acorex-core-dateTime.mjs +408 -345
- package/fesm2022/acorex-core-dateTime.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-file.mjs +3 -3
- package/fesm2022/acorex-core-http.mjs +7 -7
- package/fesm2022/acorex-core-image.mjs +3 -3
- package/fesm2022/acorex-core-pipes.mjs +7 -7
- package/fesm2022/acorex-core-platform.mjs +23 -12
- package/fesm2022/acorex-core-platform.mjs.map +1 -1
- package/fesm2022/acorex-core-translation.mjs +7 -7
- package/fesm2022/acorex-core-types.mjs +6 -0
- package/fesm2022/acorex-core-types.mjs.map +1 -0
- package/fesm2022/acorex-core-utils.mjs +4 -43
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/package.json +21 -17
- package/platform/lib/platform.service.d.ts +2 -1
- package/types/README.md +3 -0
- package/types/index.d.ts +2 -0
- package/utils/index.d.ts +0 -1
- package/esm2022/utils/lib/object-util.mjs +0 -39
- package/utils/lib/object-util.d.ts +0 -4
@@ -1,44 +1,32 @@
|
|
1
|
-
import { AXConfig } from '@acorex/core/config';
|
2
1
|
import { orderBy } from 'lodash-es';
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
month: 1,
|
22
|
-
date: 1,
|
23
|
-
hours: 0,
|
24
|
-
minutes: 0,
|
25
|
-
seconds: 0,
|
26
|
-
ms: 0,
|
27
|
-
}) {
|
28
|
-
return AXDateTime.resolveCalendar(value.calendar).create(value);
|
29
|
-
}
|
30
|
-
static resolveCalendar(calendar) {
|
31
|
-
return typeof calendar == 'string'
|
32
|
-
? AXConfig.get(`dateTime.calendars.${calendar}.class`)
|
33
|
-
: calendar;
|
2
|
+
export class AXCalendar {
|
3
|
+
/**
|
4
|
+
* @ignore
|
5
|
+
*/
|
6
|
+
constructor(config) {
|
7
|
+
this._config = config;
|
8
|
+
}
|
9
|
+
get weekend() {
|
10
|
+
return this._config.weekend;
|
11
|
+
}
|
12
|
+
get formats() {
|
13
|
+
return this._config.formats;
|
14
|
+
}
|
15
|
+
get dayNames() {
|
16
|
+
return this._config.dayNames;
|
17
|
+
}
|
18
|
+
get monthNames() {
|
19
|
+
return this._config.monthNames;
|
34
20
|
}
|
21
|
+
}
|
22
|
+
export class AXDateTime {
|
35
23
|
get date() {
|
36
24
|
return this._date;
|
37
25
|
}
|
38
26
|
get calendar() {
|
39
27
|
return this._calendar;
|
40
28
|
}
|
41
|
-
constructor(value
|
29
|
+
constructor(value, calendar) {
|
42
30
|
this._formatKeys = {
|
43
31
|
ss: () => this.pad(this.date.getSeconds(), 2),
|
44
32
|
s: () => this.date.getSeconds().toString(),
|
@@ -49,17 +37,18 @@ export class AXDateTime {
|
|
49
37
|
mm: () => this.pad(this.date.getMinutes(), 2),
|
50
38
|
m: () => this.date.getMinutes().toString(),
|
51
39
|
//
|
52
|
-
MMMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1],
|
53
|
-
MMM: () => this.calendar.
|
40
|
+
MMMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1].long,
|
41
|
+
MMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1].short,
|
54
42
|
MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),
|
43
|
+
M: () => this.calendar.monthOfYear(this.date),
|
55
44
|
//
|
56
|
-
DDDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1],
|
57
|
-
DDD: () => this.calendar.
|
45
|
+
DDDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1].long,
|
46
|
+
DDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1].short,
|
58
47
|
//
|
59
|
-
yyyy: () => this.calendar.year(this.date)
|
60
|
-
YYYY: () => this.calendar.year(this.date)
|
61
|
-
yy: () => this.calendar.year(this.date)
|
62
|
-
YY: () => this.calendar.year(this.date)
|
48
|
+
yyyy: () => this.pad(this.calendar.year(this.date), 4),
|
49
|
+
YYYY: () => this.pad(this.calendar.year(this.date), 4),
|
50
|
+
yy: () => this.pad(this.calendar.year(this.date), 4).substring(2),
|
51
|
+
YY: () => this.pad(this.calendar.year(this.date), 4).substring(2),
|
63
52
|
//
|
64
53
|
HH: () => this.pad(this.date.getHours(), 2),
|
65
54
|
H: () => this.date.getHours().toString(),
|
@@ -70,14 +59,8 @@ export class AXDateTime {
|
|
70
59
|
A: () => (this.date.getHours() < 12 ? 'am' : 'pm'),
|
71
60
|
a: () => (this.date.getHours() < 12 ? 'am' : 'pm'),
|
72
61
|
};
|
73
|
-
this._calendar =
|
74
|
-
|
75
|
-
this._date = value;
|
76
|
-
}
|
77
|
-
else {
|
78
|
-
//TODO: parse jalali
|
79
|
-
this._date = new Date(value);
|
80
|
-
}
|
62
|
+
this._calendar = calendar;
|
63
|
+
this._date = value;
|
81
64
|
}
|
82
65
|
clone() {
|
83
66
|
return new AXDateTime(this.date, this.calendar);
|
@@ -118,8 +101,10 @@ export class AXDateTime {
|
|
118
101
|
set(unit = 'day', value) {
|
119
102
|
return this._calendar.set(this.date, unit, value);
|
120
103
|
}
|
121
|
-
duration(end
|
122
|
-
const
|
104
|
+
duration(end) {
|
105
|
+
const date = end instanceof AXDateTime ? end.date : end;
|
106
|
+
const val = new AXDateTime(date, this.calendar);
|
107
|
+
const range = new AXDateTimeRange(this, val);
|
123
108
|
return range.duration();
|
124
109
|
}
|
125
110
|
startOf(unit = 'day') {
|
@@ -128,7 +113,7 @@ export class AXDateTime {
|
|
128
113
|
endOf(unit = 'day') {
|
129
114
|
return this._calendar.endOf(this.date, unit);
|
130
115
|
}
|
131
|
-
format(format =
|
116
|
+
format(format = this.calendar.formats.dateTimeDisplay) {
|
132
117
|
const re = new RegExp(orderBy(Object.keys(this._formatKeys), (c) => c.length, ['desc']).join('|'), 'gi');
|
133
118
|
return format.replace(re, (matched) => {
|
134
119
|
return this._formatKeys[matched]();
|
@@ -138,14 +123,12 @@ export class AXDateTime {
|
|
138
123
|
n = n + '';
|
139
124
|
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
|
140
125
|
}
|
141
|
-
toString(format = AXConfig.get('dateTime.shortDateFormat')) {
|
142
|
-
return this.format(format);
|
143
|
-
}
|
144
126
|
equal(value, unit = 'day') {
|
145
127
|
return this.compare(value, unit) == 0;
|
146
128
|
}
|
147
129
|
compare(value, unit = 'day') {
|
148
|
-
const
|
130
|
+
const date = value instanceof AXDateTime ? value.date : value;
|
131
|
+
const val = new AXDateTime(date, this.calendar);
|
149
132
|
const func = (v1, v2) => {
|
150
133
|
if (v1 == v2) {
|
151
134
|
return 0;
|
@@ -183,9 +166,6 @@ export class AXDateTime {
|
|
183
166
|
return func(this.date.getTime(), val.date.getTime());
|
184
167
|
}
|
185
168
|
}
|
186
|
-
convert(calendar) {
|
187
|
-
return AXDateTime.convert(this, calendar);
|
188
|
-
}
|
189
169
|
}
|
190
170
|
export class AXCalendarMonth {
|
191
171
|
get range() {
|
@@ -194,6 +174,9 @@ export class AXCalendarMonth {
|
|
194
174
|
set range(v) {
|
195
175
|
this._range = v;
|
196
176
|
}
|
177
|
+
get totalDays() {
|
178
|
+
return this.range.endTime.dayOfMonth;
|
179
|
+
}
|
197
180
|
constructor(date) {
|
198
181
|
this.index = date.date.getMonth();
|
199
182
|
this.name = date.format('MMMM');
|
@@ -280,9 +263,5 @@ export class AXDateTimeRange {
|
|
280
263
|
}
|
281
264
|
return result;
|
282
265
|
}
|
283
|
-
includes(value, unit = 'day') {
|
284
|
-
// TODO: ??
|
285
|
-
return true;
|
286
|
-
}
|
287
266
|
}
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZVRpbWUvc3JjL2xpYi9kYXRldGltZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQWlEcEMsV0FBVztBQUNYLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQ1osS0FBaUMsRUFDakMsV0FBbUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztRQUVwRCxJQUFJLElBQWdCLENBQUM7UUFDckIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtZQUN4RCxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xEO2FBQU0sSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO1lBQ2hDLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDaEQ7YUFBTSxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDdEMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLElBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUNULFFBQXFCO1FBQ25CLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQzNDLElBQUksRUFBRSxDQUFDO1FBQ1AsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLEVBQUUsQ0FBQztRQUNQLEtBQUssRUFBRSxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsQ0FBQztRQUNWLEVBQUUsRUFBRSxDQUFDO0tBQ047UUFFRCxPQUFPLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUE2QjtRQUNsRCxPQUFPLE9BQU8sUUFBUSxJQUFJLFFBQVE7WUFDaEMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLFFBQVEsUUFBUSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDZixDQUFDO0lBSUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQ0UsUUFBdUIsSUFBSSxJQUFJLEVBQUUsRUFDakMsV0FBZ0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztRQTRFM0QsZ0JBQVcsR0FBRztZQUNwQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDMUMsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDdkQsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUMxQyxFQUFFO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEYsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRCxFQUFFO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUUsRUFBRTtZQUNGLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3BELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3BELEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMvRCxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxFQUFFO1lBQ0YsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RCxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDckQsRUFBRTtZQUNGLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNsRCxD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Q0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkI7WUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWlCLEVBQUUsT0FBaUIsS0FBSztRQUNoRCxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBWUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJ0BhY29yZXgvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB0eXBlIFRpbWVVbml0ID0gJ21zJyB8ICdzZWNvbmQnIHwgJ21pbnV0ZScgfCAnaG91cicgfCAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgfCAnd2Vlayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVmFsdWUge1xuICB5ZWFyOiBudW1iZXI7XG4gIG1vbnRoOiBudW1iZXI7XG4gIGRhdGU6IG51bWJlcjtcbiAgaG91cnM/OiBudW1iZXI7XG4gIG1pbnV0ZXM/OiBudW1iZXI7XG4gIHNlY29uZHM/OiBudW1iZXI7XG4gIG1zPzogbnVtYmVyO1xuICBjYWxlbmRhcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsZW5kYXIge1xuICBtb250aE5hbWVzOiBzdHJpbmdbXTtcblxuICBtb250aFNob3J0TmFtZXM6IHN0cmluZ1tdO1xuXG4gIGRheU5hbWVzOiBzdHJpbmdbXTtcblxuICBkYXlTaG9ydE5hbWVzOiBzdHJpbmdbXTtcblxuICBuYW1lKCk6IHN0cmluZztcblxuICBkYXlPZk1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgZGF5T2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgbW9udGhPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcblxuICB3ZWVrT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgeWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFkZChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lO1xuXG4gIHNldChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgdmFsdWU6IG51bWJlcik6IEFYRGF0ZVRpbWU7XG5cbiAgc3RhcnRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWU7XG5cbiAgZW5kT2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lO1xuXG4gIGNyZWF0ZSh2YWx1ZTogQVhEYXRlVmFsdWUpOiBBWERhdGVUaW1lO1xufVxuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWUge1xuICBzdGF0aWMgY29udmVydChcbiAgICB2YWx1ZTogRGF0ZSB8IEFYRGF0ZVRpbWUgfCBzdHJpbmcsXG4gICAgY2FsZW5kYXI6IHN0cmluZyA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuY2FsZW5kYXInKVxuICApOiBBWERhdGVUaW1lIHtcbiAgICBsZXQgZGF0ZTogQVhEYXRlVGltZTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgZGF0ZSA9IG5ldyBBWERhdGVUaW1lKHZhbHVlIGFzIHN0cmluZywgY2FsZW5kYXIpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBkYXRlID0gbmV3IEFYRGF0ZVRpbWUodmFsdWUgYXMgRGF0ZSwgY2FsZW5kYXIpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XG4gICAgICBkYXRlID0gbmV3IEFYRGF0ZVRpbWUodmFsdWUuZGF0ZSwgY2FsZW5kYXIpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZSE7XG4gIH1cblxuICBzdGF0aWMgZnJvbShcbiAgICB2YWx1ZTogQVhEYXRlVmFsdWUgPSB7XG4gICAgICBjYWxlbmRhcjogQVhDb25maWcuZ2V0KCdkYXRlVGltZS5jYWxlbmRhcicpLFxuICAgICAgeWVhcjogMSxcbiAgICAgIG1vbnRoOiAxLFxuICAgICAgZGF0ZTogMSxcbiAgICAgIGhvdXJzOiAwLFxuICAgICAgbWludXRlczogMCxcbiAgICAgIHNlY29uZHM6IDAsXG4gICAgICBtczogMCxcbiAgICB9XG4gICk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBBWERhdGVUaW1lLnJlc29sdmVDYWxlbmRhcih2YWx1ZS5jYWxlbmRhcikuY3JlYXRlKHZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlQ2FsZW5kYXIoY2FsZW5kYXI6IHN0cmluZyB8IEFYQ2FsZW5kYXIpOiBBWENhbGVuZGFyIHtcbiAgICByZXR1cm4gdHlwZW9mIGNhbGVuZGFyID09ICdzdHJpbmcnXG4gICAgICA/IEFYQ29uZmlnLmdldChgZGF0ZVRpbWUuY2FsZW5kYXJzLiR7Y2FsZW5kYXJ9LmNsYXNzYClcbiAgICAgIDogY2FsZW5kYXI7XG4gIH1cblxuICBwcml2YXRlIF9kYXRlOiBEYXRlO1xuXG4gIGdldCBkYXRlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9kYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXI6IEFYQ2FsZW5kYXI7XG4gIGdldCBjYWxlbmRhcigpOiBBWENhbGVuZGFyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICB2YWx1ZTogRGF0ZSB8IHN0cmluZyA9IG5ldyBEYXRlKCksXG4gICAgY2FsZW5kYXI6IHN0cmluZyB8IEFYQ2FsZW5kYXIgPSBBWENvbmZpZy5nZXQoYGRhdGVUaW1lLmNhbGVuZGFyYClcbiAgKSB7XG4gICAgdGhpcy5fY2FsZW5kYXIgPSBBWERhdGVUaW1lLnJlc29sdmVDYWxlbmRhcihjYWxlbmRhcik7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdGhpcy5fZGF0ZSA9IHZhbHVlIGFzIERhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vVE9ETzogcGFyc2UgamFsYWxpXG4gICAgICB0aGlzLl9kYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb25lKCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZSh0aGlzLmRhdGUsIHRoaXMuY2FsZW5kYXIpO1xuICB9XG5cbiAgZ2V0IGRheU9mTW9udGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZNb250aCh0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IGRheU9mWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZlllYXIodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBkYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgaG91cigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldEhvdXJzKCk7XG4gIH1cblxuICBnZXQgbWludXRlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0TWludXRlcygpO1xuICB9XG5cbiAgZ2V0IHNlY29uZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldFNlY29uZHMoKTtcbiAgfVxuXG4gIGdldCB5ZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnllYXIodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBtb250aE9mWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IHdlZWtPZlllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIud2Vla09mWWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IG1vbnRoKCk6IEFYQ2FsZW5kYXJNb250aCB7XG4gICAgcmV0dXJuIG5ldyBBWENhbGVuZGFyTW9udGgodGhpcyk7XG4gIH1cblxuICBhZGQodW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmFkZCh0aGlzLmRhdGUsIHVuaXQsIGFtb3VudCk7XG4gIH1cblxuICBzZXQodW5pdDogVGltZVVuaXQgPSAnZGF5JywgdmFsdWU6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zZXQodGhpcy5kYXRlLCB1bml0LCB2YWx1ZSk7XG4gIH1cblxuICBkdXJhdGlvbihlbmQ6IERhdGUgfCBBWERhdGVUaW1lLCB1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhUaW1lU3BhbiB7XG4gICAgY29uc3QgcmFuZ2UgPSBuZXcgQVhEYXRlVGltZVJhbmdlKHRoaXMsIEFYRGF0ZVRpbWUuY29udmVydChlbmQsIHRoaXMuY2FsZW5kYXIubmFtZSgpKSk7XG4gICAgcmV0dXJuIHJhbmdlLmR1cmF0aW9uKCk7XG4gIH1cblxuICBzdGFydE9mKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuc3RhcnRPZih0aGlzLmRhdGUsIHVuaXQpO1xuICB9XG5cbiAgZW5kT2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5lbmRPZih0aGlzLmRhdGUsIHVuaXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9ybWF0S2V5cyA9IHtcbiAgICBzczogKCkgPT4gdGhpcy5wYWQodGhpcy5kYXRlLmdldFNlY29uZHMoKSwgMiksXG4gICAgczogKCkgPT4gdGhpcy5kYXRlLmdldFNlY29uZHMoKS50b1N0cmluZygpLFxuICAgIC8vXG4gICAgZGQ6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIuZGF5T2ZNb250aCh0aGlzLmRhdGUpLCAyKSxcbiAgICBkOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vXG4gICAgbW06ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCksIDIpLFxuICAgIG06ICgpID0+IHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIE1NTU06ICgpID0+IHRoaXMuY2FsZW5kYXIubW9udGhOYW1lc1t0aGlzLmNhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSkgLSAxXSxcbiAgICBNTU06ICgpID0+IHRoaXMuY2FsZW5kYXIubW9udGhTaG9ydE5hbWVzW3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDFdLFxuICAgIE1NOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSksIDIpLFxuICAgIC8vXG4gICAgRERERDogKCkgPT4gdGhpcy5jYWxlbmRhci5kYXlOYW1lc1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV0sXG4gICAgREREOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheVNob3J0TmFtZXNbdGhpcy5jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKSAtIDFdLFxuICAgIC8vXG4gICAgeXl5eTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKSxcbiAgICBZWVlZOiAoKSA9PiB0aGlzLmNhbGVuZGFyLnllYXIodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIHl5OiAoKSA9PiB0aGlzLmNhbGVuZGFyLnllYXIodGhpcy5kYXRlKS50b1N0cmluZygpLnN1YnN0cmluZygyKSxcbiAgICBZWTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXG4gICAgLy9cbiAgICBISDogKCkgPT4gdGhpcy5wYWQodGhpcy5kYXRlLmdldEhvdXJzKCksIDIpLFxuICAgIEg6ICgpID0+IHRoaXMuZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCksXG4gICAgLy9cbiAgICBoaDogKCkgPT4gdGhpcy5wYWQodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMiwgMiksXG4gICAgaDogKCkgPT4gKHRoaXMuZGF0ZS5nZXRIb3VycygpICUgMTIgfHwgMTIpLnRvU3RyaW5nKCksXG4gICAgLy9cbiAgICBBOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nKSxcbiAgICBhOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nKSxcbiAgfTtcblxuICBmb3JtYXQoZm9ybWF0OiBzdHJpbmcgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLnNob3J0RGF0ZUZvcm1hdCcpKTogc3RyaW5nIHtcbiAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoXG4gICAgICBvcmRlckJ5KE9iamVjdC5rZXlzKHRoaXMuX2Zvcm1hdEtleXMpLCAoYykgPT4gYy5sZW5ndGgsIFsnZGVzYyddKS5qb2luKCd8JyksXG4gICAgICAnZ2knXG4gICAgKTtcbiAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UocmUsIChtYXRjaGVkKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ybWF0S2V5c1ttYXRjaGVkXSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWQobiwgd2lkdGgsIHogPSAnMCcpIHtcbiAgICBuID0gbiArICcnO1xuICAgIHJldHVybiBuLmxlbmd0aCA+PSB3aWR0aCA/IG4gOiBuZXcgQXJyYXkod2lkdGggLSBuLmxlbmd0aCArIDEpLmpvaW4oeikgKyBuO1xuICB9XG5cbiAgdG9TdHJpbmcoZm9ybWF0OiBzdHJpbmcgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLnNob3J0RGF0ZUZvcm1hdCcpKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQoZm9ybWF0KTtcbiAgfVxuXG4gIGVxdWFsKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xuICAgIHJldHVybiB0aGlzLmNvbXBhcmUodmFsdWUsIHVuaXQpID09IDA7XG4gIH1cblxuICBjb21wYXJlKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IHZhbCA9IEFYRGF0ZVRpbWUuY29udmVydCh2YWx1ZSwgdGhpcy5jYWxlbmRhci5uYW1lKCkpO1xuICAgIGNvbnN0IGZ1bmMgPSAodjE6IG51bWJlciwgdjI6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKHYxID09IHYyKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIGlmICh2MSA+IHYyKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IHAgPSAwO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMueWVhciwgdmFsLnllYXIpO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLndlZWtPZlllYXIsIHZhbC53ZWVrT2ZZZWFyKSA6IHA7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1vbnRoT2ZZZWFyLCB2YWwubW9udGhPZlllYXIpIDogcDtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLmRheU9mWWVhciwgdmFsLmRheU9mWWVhcikgOiBwO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnZGF5Jyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuaG91ciwgdmFsLmhvdXIpIDogcDtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnaG91cicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1pbnV0ZSwgdmFsLm1pbnV0ZSkgOiBwO1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgcCA9IHRoaXMuY29tcGFyZSh2YWwsICdtaW51dGUnKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5zZWNvbmQsIHZhbC5zZWNvbmQpIDogcDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMuZGF0ZS5nZXRUaW1lKCksIHZhbC5kYXRlLmdldFRpbWUoKSk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydChjYWxlbmRhcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEFYRGF0ZVRpbWUuY29udmVydCh0aGlzLCBjYWxlbmRhcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJNb250aCB7XG4gIHByaXZhdGUgX3JhbmdlOiBBWERhdGVUaW1lUmFuZ2U7XG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogQVhEYXRlVGltZVJhbmdlIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XG4gIH1cbiAgcHVibGljIHNldCByYW5nZSh2OiBBWERhdGVUaW1lUmFuZ2UpIHtcbiAgICB0aGlzLl9yYW5nZSA9IHY7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5pbmRleCA9IGRhdGUuZGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMubmFtZSA9IGRhdGUuZm9ybWF0KCdNTU1NJyk7XG4gICAgdGhpcy5yYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLnN0YXJ0T2YoJ21vbnRoJykuZGF0ZSwgZGF0ZS5jYWxlbmRhciksXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLmVuZE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUaW1lU3BhblRvdGFsIHtcbiAgbWlsaXNlY29uZHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBtaW51dGVzOiBudW1iZXI7XG4gIGhvdXJzOiBudW1iZXI7XG4gIGRheXM6IG51bWJlcjtcbiAgd2Vla3M6IG51bWJlcjtcbiAgbW9udGhzOiBudW1iZXI7XG4gIHllYXJzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUaW1lU3BhbiB7XG4gIG1pbGlzZWNvbmRzOiBudW1iZXI7XG4gIHNlY29uZHM6IG51bWJlcjtcbiAgbWludXRlczogbnVtYmVyO1xuICBob3VyczogbnVtYmVyO1xuICBkYXlzOiBudW1iZXI7XG4gIG1vbnRoczogbnVtYmVyO1xuICB5ZWFyczogbnVtYmVyO1xuICB0b3RhbDogQVhUaW1lU3BhblRvdGFsO1xufVxuXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVJhbmdlIHtcbiAgcHJpdmF0ZSBfc3RhcnRUaW1lOiBBWERhdGVUaW1lO1xuICBwcml2YXRlIF9lbmRUaW1lOiBBWERhdGVUaW1lO1xuXG4gIHB1YmxpYyBnZXQgc3RhcnRUaW1lKCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuZFRpbWUoKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzdGFydFRpbWU6IEFYRGF0ZVRpbWUsIGVuZFRpbWU6IEFYRGF0ZVRpbWUpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBzdGFydFRpbWU7XG4gICAgdGhpcy5fZW5kVGltZSA9IGVuZFRpbWU7XG4gIH1cblxuICBkdXJhdGlvbigpOiBBWFRpbWVTcGFuIHtcbiAgICBjb25zdCByZXN1bHQ6IEFYVGltZVNwYW4gPSB7XG4gICAgICBtaWxpc2Vjb25kczogMCxcbiAgICAgIHNlY29uZHM6IDAsXG4gICAgICBtaW51dGVzOiAwLFxuICAgICAgaG91cnM6IDAsXG4gICAgICBkYXlzOiAwLFxuICAgICAgbW9udGhzOiAwLFxuICAgICAgeWVhcnM6IDAsXG4gICAgICB0b3RhbDoge1xuICAgICAgICBtaWxpc2Vjb25kczogMCxcbiAgICAgICAgc2Vjb25kczogMCxcbiAgICAgICAgbWludXRlczogMCxcbiAgICAgICAgaG91cnM6IDAsXG4gICAgICAgIGRheXM6IDAsXG4gICAgICAgIHdlZWtzOiAwLFxuICAgICAgICBtb250aHM6IDAsXG4gICAgICAgIHllYXJzOiAwLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgb25lX3NlY29uZCA9IDEwMDA7XG4gICAgY29uc3Qgb25lX21pbiA9IG9uZV9zZWNvbmQgKiA2MDtcbiAgICBjb25zdCBvbmVfaG91ciA9IG9uZV9taW4gKiA2MDtcbiAgICBjb25zdCBvbmVfZGF5ID0gb25lX2hvdXIgKiAyNDtcbiAgICBjb25zdCBvbmVfd2VlayA9IG9uZV9kYXkgKiA3O1xuICAgIGNvbnN0IG9uZV95ZWFyID0gMzY1LjI1ICogb25lX2RheTtcbiAgICBjb25zdCBvbmVfbW9udGggPSBvbmVfeWVhciAvIDEyO1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuX3N0YXJ0VGltZS5kYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCBlbmRUaW1lID0gdGhpcy5fZW5kVGltZS5kYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoZW5kVGltZSAtIHN0YXJ0VGltZSk7XG4gICAgLy9cbiAgICByZXN1bHQudG90YWwubWlsaXNlY29uZHMgPSBkaWZmO1xuICAgIHJlc3VsdC50b3RhbC5zZWNvbmRzID0gTnVtYmVyKChkaWZmIC8gb25lX3NlY29uZCkudG9GaXhlZCgyKSk7XG4gICAgcmVzdWx0LnRvdGFsLm1pbnV0ZXMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfbWluKS50b0ZpeGVkKDIpKTtcbiAgICByZXN1bHQudG90YWwuaG91cnMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfaG91cikudG9GaXhlZCgyKSk7XG4gICAgcmVzdWx0LnRvdGFsLmRheXMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfZGF5KS50b0ZpeGVkKDIpKTtcbiAgICByZXN1bHQudG90YWwud2Vla3MgPSBOdW1iZXIoKGRpZmYgLyBvbmVfd2VlaykudG9GaXhlZCgyKSk7XG4gICAgLy9cbiAgICAvLyBsZXQgbW9udGhzID0gKHRoaXMuZW5kVGltZS55ZWFyIC0gdGhpcy5zdGFydFRpbWUueWVhcikgKiAxMjtcbiAgICAvLyBtb250aHMgKz0gdGhpcy5lbmRUaW1lLm1vbnRoT2ZZZWFyIC0gdGhpcy5zdGFydFRpbWUubW9udGhPZlllYXIgKyAxO1xuICAgIC8vIGlmICh0aGlzLmVuZFRpbWUuZGF5T2ZZZWFyIDwgdGhpcy5zdGFydFRpbWUuZGF5T2ZZZWFyKSB7XG4gICAgLy8gICAgIG1vbnRocy0tO1xuICAgIC8vIH1cbiAgICAvLyByZXN1bHQudG90YWwubW9udGhzID0gTWF0aC5hYnMobW9udGhzKTtcbiAgICAvLyBUT0RPOiByZXZpZXdcbiAgICByZXN1bHQudG90YWwubW9udGhzID0gTnVtYmVyKChkaWZmIC8gb25lX21vbnRoKS50b0ZpeGVkKDIpKTtcbiAgICByZXN1bHQudG90YWwueWVhcnMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfeWVhcikudG9GaXhlZCgyKSk7XG4gICAgLy9cbiAgICByZXN1bHQubWlsaXNlY29uZHMgPSByZXN1bHQudG90YWwubWlsaXNlY29uZHMgJSAxMDAwO1xuICAgIHJlc3VsdC5zZWNvbmRzID0gTnVtYmVyKChyZXN1bHQudG90YWwuc2Vjb25kcyAlIDYwKS50b0ZpeGVkKDApKTtcbiAgICByZXN1bHQubWludXRlcyA9IE51bWJlcigocmVzdWx0LnRvdGFsLm1pbnV0ZXMgJSA2MCkudG9GaXhlZCgwKSk7XG4gICAgcmVzdWx0LmhvdXJzID0gTnVtYmVyKChyZXN1bHQudG90YWwuaG91cnMgJSAyNCkudG9GaXhlZCgwKSk7XG4gICAgLy8gVE9ETzogcmV2aWV3XG4gICAgcmVzdWx0LmRheXMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5kYXlzICUgMzAuNCkudG9GaXhlZCgwKSk7XG4gICAgcmVzdWx0Lm1vbnRocyA9IE51bWJlcigocmVzdWx0LnRvdGFsLm1vbnRocyAlIDEyKS50b0ZpeGVkKDApKTtcbiAgICByZXN1bHQueWVhcnMgPSBOdW1iZXIocmVzdWx0LnRvdGFsLnllYXJzLnRvRml4ZWQoMCkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBlbnVtdXJhdGUodW5pdDogVGltZVVuaXQgPSAnZGF5JywgYW1vdW50OiBudW1iZXIgPSAxKTogQVhEYXRlVGltZVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IEFYRGF0ZVRpbWVbXSA9IFtdO1xuICAgIGxldCBpdGVtID0gdGhpcy5fc3RhcnRUaW1lLmNsb25lKCk7XG4gICAgd2hpbGUgKGl0ZW0uY29tcGFyZSh0aGlzLl9lbmRUaW1lLCB1bml0KSA8IDEpIHtcbiAgICAgIGlmICghcmVzdWx0LnNvbWUoKGMpID0+IGMuZXF1YWwoaXRlbSwgdW5pdCkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgaXRlbSA9IGl0ZW0uYWRkKHVuaXQsIGFtb3VudCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpbmNsdWRlcyh2YWx1ZTogQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IGJvb2xlYW4ge1xuICAgIC8vIFRPRE86ID8/XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBnZXRWaWV3Q29tcGFpcmUodmlldykge1xuICAvLyAgICAgc3dpdGNoICh2aWV3KSB7XG4gIC8vICAgICAgICAgY2FzZSAnZGF5JzpcbiAgLy8gICAgICAgICAgICAgcmV0dXJuICdZTUQnO1xuICAvLyAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgLy8gICAgICAgICAgICAgcmV0dXJuICdZTSc7XG4gIC8vICAgICAgICAgY2FzZSAneWVhcic6XG4gIC8vICAgICAgICAgICAgIHJldHVybiAnWSc7XG4gIC8vICAgICB9XG4gIC8vIH1cbn1cbiJdfQ==
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZGF0ZVRpbWUvc3JjL2xpYi9kYXRldGltZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBc0RwQyxNQUFNLE9BQWdCLFVBQVU7SUFJOUI7O09BRUc7SUFDSCxZQUFZLE1BQXdCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0NBeUJGO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFJckIsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVksS0FBVyxFQUFFLFFBQW9CO1FBd0VyQyxnQkFBVyxHQUFHO1lBQ3BCLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUMxQyxFQUFFO1lBQ0YsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRCxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN2RCxFQUFFO1lBQ0YsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzFDLEVBQUU7WUFDRixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbkYsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ25GLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0QsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDN0MsRUFBRTtZQUNGLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMvRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDL0UsRUFBRTtZQUNGLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0RCxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNqRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNqRSxFQUFFO1lBQ0YsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFB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QztRQUM1RCxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBaUIsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkI7WUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBaUJGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB0eXBlIFRpbWVVbml0ID0gJ21zJyB8ICdzZWNvbmQnIHwgJ21pbnV0ZScgfCAnaG91cicgfCAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgfCAnd2Vlayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVmFsdWUge1xuICB5ZWFyOiBudW1iZXI7XG4gIG1vbnRoOiBudW1iZXI7XG4gIGRhdGU6IG51bWJlcjtcbiAgaG91cnM/OiBudW1iZXI7XG4gIG1pbnV0ZXM/OiBudW1iZXI7XG4gIHNlY29uZHM/OiBudW1iZXI7XG4gIG1zPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVGltZURpc3BsYXlGb3JtYXRzIHtcbiAgZGF0ZUlucHV0OiBzdHJpbmcsXG4gIHRpbWVJbnB1dDogc3RyaW5nLFxuICBkYXRlVGltZUlucHV0OiBzdHJpbmcsXG4gIGRhdGVEaXNwbGF5OiBzdHJpbmcsXG4gIHRpbWVEaXNwbGF5OiBzdHJpbmcsXG4gIGRhdGVUaW1lRGlzcGxheTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEFYRGF0ZVRpbWVVbml0TmFtZXMgPSB7IGxvbmc6IHN0cmluZywgc2hvcnQ6IHN0cmluZywgbGV0dGVyOiBzdHJpbmcgfVtdO1xuXG5cbmV4cG9ydCB0eXBlIEFYRGF0ZVRpbWVQYXJ0ID0ge1xuICBrZXk6IHN0cmluZyxcbiAgcGxhY2Vob2xkZXI6IHN0cmluZyxcbiAgcGxhY2Vob2xkZXJzOiBzdHJpbmdbXSxcbiAgdHlwZWRWYWx1ZT86IHN0cmluZyB8IG51bGwsXG4gIGRlZmF1bHQ6IG51bWJlcixcbiAgZW5hYmxlZDogYm9vbGVhbixcbiAgcmVhbFZhbHVlOiAoKSA9PiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQVhEYXRlVGltZVBhcnRzID0ge1xuICB5ZWFyOiBBWERhdGVUaW1lUGFydCxcbiAgbW9udGg6IEFYRGF0ZVRpbWVQYXJ0LFxuICBkYXk6IEFYRGF0ZVRpbWVQYXJ0LFxuICBob3VyOiBBWERhdGVUaW1lUGFydCxcbiAgbWludXRlOiBBWERhdGVUaW1lUGFydCxcbiAgc2Vjb25kOiBBWERhdGVUaW1lUGFydFxufVxuXG5cblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyQ29uZmlnIHtcbiAgd2Vla2VuZDogbnVtYmVyW10sXG4gIGZvcm1hdHM6IEFYRGF0ZVRpbWVEaXNwbGF5Rm9ybWF0cyxcbiAgZGF5TmFtZXM6IEFYRGF0ZVRpbWVVbml0TmFtZXMsXG4gIG1vbnRoTmFtZXM6IEFYRGF0ZVRpbWVVbml0TmFtZXNcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQ2FsZW5kYXIge1xuXG4gIHByaXZhdGUgX2NvbmZpZzogQVhDYWxlbmRhckNvbmZpZztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBBWENhbGVuZGFyQ29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldCB3ZWVrZW5kKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLndlZWtlbmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcm1hdHMoKTogQVhEYXRlVGltZURpc3BsYXlGb3JtYXRzIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmZvcm1hdHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRheU5hbWVzKCk6IEFYRGF0ZVRpbWVVbml0TmFtZXMge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuZGF5TmFtZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vbnRoTmFtZXMoKTogQVhEYXRlVGltZVVuaXROYW1lcyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5tb250aE5hbWVzO1xuICB9XG5cbiAgYWJzdHJhY3QgbmFtZSgpOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3QgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IGRheU9mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IGRheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3Qgd2Vla09mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IHllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcblxuICBhYnN0cmFjdCBhZGQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZTtcblxuICBhYnN0cmFjdCBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IHN0YXJ0T2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZTtcblxuICBhYnN0cmFjdCBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlKTogQVhEYXRlVGltZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWUge1xuXG4gIHByaXZhdGUgX2RhdGU6IERhdGU7XG5cbiAgZ2V0IGRhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XG4gIH1cblxuICBwcml2YXRlIF9jYWxlbmRhcjogQVhDYWxlbmRhcjtcbiAgZ2V0IGNhbGVuZGFyKCk6IEFYQ2FsZW5kYXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBEYXRlLCBjYWxlbmRhcjogQVhDYWxlbmRhcikge1xuICAgIHRoaXMuX2NhbGVuZGFyID0gY2FsZW5kYXI7XG4gICAgdGhpcy5fZGF0ZSA9IHZhbHVlXG4gIH1cblxuICBjbG9uZSgpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUodGhpcy5kYXRlLCB0aGlzLmNhbGVuZGFyKTtcbiAgfVxuXG4gIGdldCBkYXlPZk1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBkYXlPZlllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZZZWFyKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgZGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IGhvdXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRIb3VycygpO1xuICB9XG5cbiAgZ2V0IG1pbnV0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldE1pbnV0ZXMoKTtcbiAgfVxuXG4gIGdldCBzZWNvbmQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRTZWNvbmRzKCk7XG4gIH1cblxuICBnZXQgeWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgbW9udGhPZlllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCB3ZWVrT2ZZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLndlZWtPZlllYXIodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBtb250aCgpOiBBWENhbGVuZGFyTW9udGgge1xuICAgIHJldHVybiBuZXcgQVhDYWxlbmRhck1vbnRoKHRoaXMpO1xuICB9XG5cbiAgYWRkKHVuaXQ6IFRpbWVVbml0LCBhbW91bnQ6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5hZGQodGhpcy5kYXRlLCB1bml0LCBhbW91bnQpO1xuICB9XG5cbiAgc2V0KHVuaXQ6IFRpbWVVbml0ID0gJ2RheScsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuc2V0KHRoaXMuZGF0ZSwgdW5pdCwgdmFsdWUpO1xuICB9XG5cbiAgZHVyYXRpb24oZW5kOiBEYXRlIHwgQVhEYXRlVGltZSk6IEFYVGltZVNwYW4ge1xuICAgIGNvbnN0IGRhdGUgPSBlbmQgaW5zdGFuY2VvZiBBWERhdGVUaW1lID8gZW5kLmRhdGUgOiBlbmQgYXMgRGF0ZTtcbiAgICBjb25zdCB2YWwgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzLmNhbGVuZGFyKTtcbiAgICBjb25zdCByYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UodGhpcywgdmFsKTtcbiAgICByZXR1cm4gcmFuZ2UuZHVyYXRpb24oKTtcbiAgfVxuXG4gIHN0YXJ0T2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zdGFydE9mKHRoaXMuZGF0ZSwgdW5pdCk7XG4gIH1cblxuICBlbmRPZih1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmVuZE9mKHRoaXMuZGF0ZSwgdW5pdCk7XG4gIH1cblxuICBwcml2YXRlIF9mb3JtYXRLZXlzID0ge1xuICAgIHNzOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpLCAyKSxcbiAgICBzOiAoKSA9PiB0aGlzLmRhdGUuZ2V0U2Vjb25kcygpLnRvU3RyaW5nKCksXG4gICAgLy9cbiAgICBkZDogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSksIDIpLFxuICAgIGQ6ICgpID0+IHRoaXMuY2FsZW5kYXIuZGF5T2ZNb250aCh0aGlzLmRhdGUpLnRvU3RyaW5nKCksXG4gICAgLy9cbiAgICBtbTogKCkgPT4gdGhpcy5wYWQodGhpcy5kYXRlLmdldE1pbnV0ZXMoKSwgMiksXG4gICAgbTogKCkgPT4gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLFxuICAgIC8vXG4gICAgTU1NTTogKCkgPT4gdGhpcy5jYWxlbmRhci5tb250aE5hbWVzW3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDFdLmxvbmcsXG4gICAgTU1NOiAoKSA9PiB0aGlzLmNhbGVuZGFyLm1vbnRoTmFtZXNbdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpIC0gMV0uc2hvcnQsXG4gICAgTU06ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSwgMiksXG4gICAgTTogKCkgPT4gdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpLFxuICAgIC8vXG4gICAgRERERDogKCkgPT4gdGhpcy5jYWxlbmRhci5kYXlOYW1lc1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV0ubG9uZyxcbiAgICBEREQ6ICgpID0+IHRoaXMuY2FsZW5kYXIuZGF5TmFtZXNbdGhpcy5jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKSAtIDFdLnNob3J0LFxuICAgIC8vXG4gICAgeXl5eTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLFxuICAgIFlZWVk6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLCA0KSxcbiAgICB5eTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLnN1YnN0cmluZygyKSxcbiAgICBZWTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLnN1YnN0cmluZygyKSxcbiAgICAvL1xuICAgIEhIOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0SG91cnMoKSwgMiksXG4gICAgSDogKCkgPT4gdGhpcy5kYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIGhoOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyLCAyKSxcbiAgICBoOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMikudG9TdHJpbmcoKSxcbiAgICAvL1xuICAgIEE6ICgpID0+ICh0aGlzLmRhdGUuZ2V0SG91cnMoKSA8IDEyID8gJ2FtJyA6ICdwbScpLFxuICAgIGE6ICgpID0+ICh0aGlzLmRhdGUuZ2V0SG91cnMoKSA8IDEyID8gJ2FtJyA6ICdwbScpLFxuICB9O1xuXG4gIGZvcm1hdChmb3JtYXQ6IHN0cmluZyA9IHRoaXMuY2FsZW5kYXIuZm9ybWF0cy5kYXRlVGltZURpc3BsYXkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChvcmRlckJ5KE9iamVjdC5rZXlzKHRoaXMuX2Zvcm1hdEtleXMpLCAoYykgPT4gYy5sZW5ndGgsIFsnZGVzYyddKS5qb2luKCd8JyksICdnaScpO1xuICAgIHJldHVybiBmb3JtYXQucmVwbGFjZShyZSwgKG1hdGNoZWQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtYXRLZXlzW21hdGNoZWRdKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBhZChuLCB3aWR0aCwgeiA9ICcwJykge1xuICAgIG4gPSBuICsgJyc7XG4gICAgcmV0dXJuIG4ubGVuZ3RoID49IHdpZHRoID8gbiA6IG5ldyBBcnJheSh3aWR0aCAtIG4ubGVuZ3RoICsgMSkuam9pbih6KSArIG47XG4gIH1cblxuXG4gIGVxdWFsKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xuICAgIHJldHVybiB0aGlzLmNvbXBhcmUodmFsdWUsIHVuaXQpID09IDA7XG4gIH1cblxuICBjb21wYXJlKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUgPyB2YWx1ZS5kYXRlIDogdmFsdWUgYXMgRGF0ZTtcbiAgICBjb25zdCB2YWwgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzLmNhbGVuZGFyKTtcbiAgICBjb25zdCBmdW5jID0gKHYxOiBudW1iZXIsIHYyOiBudW1iZXIpID0+IHtcbiAgICAgIGlmICh2MSA9PSB2Mikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSBpZiAodjEgPiB2Mikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGxldCBwID0gMDtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICByZXR1cm4gZnVuYyh0aGlzLnllYXIsIHZhbC55ZWFyKTtcbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy53ZWVrT2ZZZWFyLCB2YWwud2Vla09mWWVhcikgOiBwO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5tb250aE9mWWVhciwgdmFsLm1vbnRoT2ZZZWFyKSA6IHA7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5kYXlPZlllYXIsIHZhbC5kYXlPZlllYXIpIDogcDtcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2RheScpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLmhvdXIsIHZhbC5ob3VyKSA6IHA7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2hvdXInKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5taW51dGUsIHZhbC5taW51dGUpIDogcDtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnbWludXRlJyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuc2Vjb25kLCB2YWwuc2Vjb25kKSA6IHA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZnVuYyh0aGlzLmRhdGUuZ2V0VGltZSgpLCB2YWwuZGF0ZS5nZXRUaW1lKCkpO1xuICAgIH1cbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyTW9udGgge1xuICBwcml2YXRlIF9yYW5nZTogQVhEYXRlVGltZVJhbmdlO1xuICBwdWJsaWMgZ2V0IHJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xuICB9XG4gIHB1YmxpYyBzZXQgcmFuZ2UodjogQVhEYXRlVGltZVJhbmdlKSB7XG4gICAgdGhpcy5fcmFuZ2UgPSB2O1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbERheXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZS5lbmRUaW1lLmRheU9mTW9udGg7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5pbmRleCA9IGRhdGUuZGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMubmFtZSA9IGRhdGUuZm9ybWF0KCdNTU1NJyk7XG4gICAgdGhpcy5yYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLnN0YXJ0T2YoJ21vbnRoJykuZGF0ZSwgZGF0ZS5jYWxlbmRhciksXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLmVuZE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW5Ub3RhbCB7XG4gIG1pbGlzZWNvbmRzOiBudW1iZXI7XG4gIHNlY29uZHM6IG51bWJlcjtcbiAgbWludXRlczogbnVtYmVyO1xuICBob3VyczogbnVtYmVyO1xuICBkYXlzOiBudW1iZXI7XG4gIHdlZWtzOiBudW1iZXI7XG4gIG1vbnRoczogbnVtYmVyO1xuICB5ZWFyczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW4ge1xuICBtaWxpc2Vjb25kczogbnVtYmVyO1xuICBzZWNvbmRzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbiAgaG91cnM6IG51bWJlcjtcbiAgZGF5czogbnVtYmVyO1xuICBtb250aHM6IG51bWJlcjtcbiAgeWVhcnM6IG51bWJlcjtcbiAgdG90YWw6IEFYVGltZVNwYW5Ub3RhbDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWVSYW5nZSB7XG4gIHByaXZhdGUgX3N0YXJ0VGltZTogQVhEYXRlVGltZTtcbiAgcHJpdmF0ZSBfZW5kVGltZTogQVhEYXRlVGltZTtcblxuICBwdWJsaWMgZ2V0IHN0YXJ0VGltZSgpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmRUaW1lKCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9lbmRUaW1lO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc3RhcnRUaW1lOiBBWERhdGVUaW1lLCBlbmRUaW1lOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gc3RhcnRUaW1lO1xuICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lO1xuICB9XG5cbiAgZHVyYXRpb24oKTogQVhUaW1lU3BhbiB7XG4gICAgY29uc3QgcmVzdWx0OiBBWFRpbWVTcGFuID0ge1xuICAgICAgbWlsaXNlY29uZHM6IDAsXG4gICAgICBzZWNvbmRzOiAwLFxuICAgICAgbWludXRlczogMCxcbiAgICAgIGhvdXJzOiAwLFxuICAgICAgZGF5czogMCxcbiAgICAgIG1vbnRoczogMCxcbiAgICAgIHllYXJzOiAwLFxuICAgICAgdG90YWw6IHtcbiAgICAgICAgbWlsaXNlY29uZHM6IDAsXG4gICAgICAgIHNlY29uZHM6IDAsXG4gICAgICAgIG1pbnV0ZXM6IDAsXG4gICAgICAgIGhvdXJzOiAwLFxuICAgICAgICBkYXlzOiAwLFxuICAgICAgICB3ZWVrczogMCxcbiAgICAgICAgbW9udGhzOiAwLFxuICAgICAgICB5ZWFyczogMCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IG9uZV9zZWNvbmQgPSAxMDAwO1xuICAgIGNvbnN0IG9uZV9taW4gPSBvbmVfc2Vjb25kICogNjA7XG4gICAgY29uc3Qgb25lX2hvdXIgPSBvbmVfbWluICogNjA7XG4gICAgY29uc3Qgb25lX2RheSA9IG9uZV9ob3VyICogMjQ7XG4gICAgY29uc3Qgb25lX3dlZWsgPSBvbmVfZGF5ICogNztcbiAgICBjb25zdCBvbmVfeWVhciA9IDM2NS4yNSAqIG9uZV9kYXk7XG4gICAgY29uc3Qgb25lX21vbnRoID0gb25lX3llYXIgLyAxMjtcbiAgICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLl9zdGFydFRpbWUuZGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgZW5kVGltZSA9IHRoaXMuX2VuZFRpbWUuZGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGVuZFRpbWUgLSBzdGFydFRpbWUpO1xuICAgIC8vXG4gICAgcmVzdWx0LnRvdGFsLm1pbGlzZWNvbmRzID0gZGlmZjtcbiAgICByZXN1bHQudG90YWwuc2Vjb25kcyA9IE51bWJlcigoZGlmZiAvIG9uZV9zZWNvbmQpLnRvRml4ZWQoMikpO1xuICAgIHJlc3VsdC50b3RhbC5taW51dGVzID0gTnVtYmVyKChkaWZmIC8gb25lX21pbikudG9GaXhlZCgyKSk7XG4gICAgcmVzdWx0LnRvdGFsLmhvdXJzID0gTnVtYmVyKChkaWZmIC8gb25lX2hvdXIpLnRvRml4ZWQoMikpO1xuICAgIHJlc3VsdC50b3RhbC5kYXlzID0gTnVtYmVyKChkaWZmIC8gb25lX2RheSkudG9GaXhlZCgyKSk7XG4gICAgcmVzdWx0LnRvdGFsLndlZWtzID0gTnVtYmVyKChkaWZmIC8gb25lX3dlZWspLnRvRml4ZWQoMikpO1xuICAgIC8vXG4gICAgLy8gbGV0IG1vbnRocyA9ICh0aGlzLmVuZFRpbWUueWVhciAtIHRoaXMuc3RhcnRUaW1lLnllYXIpICogMTI7XG4gICAgLy8gbW9udGhzICs9IHRoaXMuZW5kVGltZS5tb250aE9mWWVhciAtIHRoaXMuc3RhcnRUaW1lLm1vbnRoT2ZZZWFyICsgMTtcbiAgICAvLyBpZiAodGhpcy5lbmRUaW1lLmRheU9mWWVhciA8IHRoaXMuc3RhcnRUaW1lLmRheU9mWWVhcikge1xuICAgIC8vICAgICBtb250aHMtLTtcbiAgICAvLyB9XG4gICAgLy8gcmVzdWx0LnRvdGFsLm1vbnRocyA9IE1hdGguYWJzKG1vbnRocyk7XG4gICAgLy8gVE9ETzogcmV2aWV3XG4gICAgcmVzdWx0LnRvdGFsLm1vbnRocyA9IE51bWJlcigoZGlmZiAvIG9uZV9tb250aCkudG9GaXhlZCgyKSk7XG4gICAgcmVzdWx0LnRvdGFsLnllYXJzID0gTnVtYmVyKChkaWZmIC8gb25lX3llYXIpLnRvRml4ZWQoMikpO1xuICAgIC8vXG4gICAgcmVzdWx0Lm1pbGlzZWNvbmRzID0gcmVzdWx0LnRvdGFsLm1pbGlzZWNvbmRzICUgMTAwMDtcbiAgICByZXN1bHQuc2Vjb25kcyA9IE51bWJlcigocmVzdWx0LnRvdGFsLnNlY29uZHMgJSA2MCkudG9GaXhlZCgwKSk7XG4gICAgcmVzdWx0Lm1pbnV0ZXMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5taW51dGVzICUgNjApLnRvRml4ZWQoMCkpO1xuICAgIHJlc3VsdC5ob3VycyA9IE51bWJlcigocmVzdWx0LnRvdGFsLmhvdXJzICUgMjQpLnRvRml4ZWQoMCkpO1xuICAgIC8vIFRPRE86IHJldmlld1xuICAgIHJlc3VsdC5kYXlzID0gTnVtYmVyKChyZXN1bHQudG90YWwuZGF5cyAlIDMwLjQpLnRvRml4ZWQoMCkpO1xuICAgIHJlc3VsdC5tb250aHMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5tb250aHMgJSAxMikudG9GaXhlZCgwKSk7XG4gICAgcmVzdWx0LnllYXJzID0gTnVtYmVyKHJlc3VsdC50b3RhbC55ZWFycy50b0ZpeGVkKDApKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZW51bXVyYXRlKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScsIGFtb3VudCA9IDEpOiBBWERhdGVUaW1lW10ge1xuICAgIGNvbnN0IHJlc3VsdDogQVhEYXRlVGltZVtdID0gW107XG4gICAgbGV0IGl0ZW0gPSB0aGlzLl9zdGFydFRpbWUuY2xvbmUoKTtcbiAgICB3aGlsZSAoaXRlbS5jb21wYXJlKHRoaXMuX2VuZFRpbWUsIHVuaXQpIDwgMSkge1xuICAgICAgaWYgKCFyZXN1bHQuc29tZSgoYykgPT4gYy5lcXVhbChpdGVtLCB1bml0KSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICBpdGVtID0gaXRlbS5hZGQodW5pdCwgYW1vdW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGluY2x1ZGVzKHZhbHVlOiBBWERhdGVUaW1lLCB1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogYm9vbGVhbiB7XG4gIC8vICAgLy8gVE9ETzogPz9cbiAgLy8gICByZXR1cm4gdHJ1ZTtcbiAgLy8gfVxuXG4gIC8vIGdldFZpZXdDb21wYWlyZSh2aWV3KSB7XG4gIC8vICAgICBzd2l0Y2ggKHZpZXcpIHtcbiAgLy8gICAgICAgICBjYXNlICdkYXknOlxuICAvLyAgICAgICAgICAgICByZXR1cm4gJ1lNRCc7XG4gIC8vICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAvLyAgICAgICAgICAgICByZXR1cm4gJ1lNJztcbiAgLy8gICAgICAgICBjYXNlICd5ZWFyJzpcbiAgLy8gICAgICAgICAgICAgcmV0dXJuICdZJztcbiAgLy8gICAgIH1cbiAgLy8gfVxufVxuIl19
|
@@ -1,39 +1,19 @@
|
|
1
1
|
import { NgModule } from '@angular/core';
|
2
|
-
import { AXConfig } from '@acorex/core/config';
|
3
2
|
import { AXDateTimePipe } from './datetime.pipe';
|
4
|
-
import {
|
5
|
-
import { JalaliCalendar } from './jalali.calendar';
|
3
|
+
import { AXCalendarService } from './calendar.service';
|
6
4
|
import * as i0 from "@angular/core";
|
7
5
|
export class AXDateTimeModule {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
calendars: {
|
12
|
-
jalali: {
|
13
|
-
"class": new JalaliCalendar(),
|
14
|
-
weekend: [6, 7]
|
15
|
-
},
|
16
|
-
gregorian: {
|
17
|
-
"class": new GeorgianCalendar(),
|
18
|
-
weekend: [7, 1]
|
19
|
-
}
|
20
|
-
},
|
21
|
-
calendar: 'gregorian',
|
22
|
-
shortDateFormat: 'DDDD, d MMM yyyy'
|
23
|
-
}
|
24
|
-
});
|
25
|
-
}
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
27
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], exports: [AXDateTimePipe] }); }
|
28
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AXDateTimeModule }); }
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.9", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.9", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], exports: [AXDateTimePipe] }); }
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.9", ngImport: i0, type: AXDateTimeModule, providers: [AXCalendarService] }); }
|
29
9
|
}
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.9", ngImport: i0, type: AXDateTimeModule, decorators: [{
|
31
11
|
type: NgModule,
|
32
12
|
args: [{
|
33
13
|
imports: [],
|
34
14
|
exports: [AXDateTimePipe],
|
35
15
|
declarations: [AXDateTimePipe],
|
36
|
-
providers: [],
|
16
|
+
providers: [AXCalendarService],
|
37
17
|
}]
|
38
|
-
}]
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
18
|
+
}] });
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGVUaW1lL3NyYy9saWIvZGF0ZXRpbWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVN2RCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFIVixjQUFjLGFBRG5CLGNBQWM7K0dBSWYsZ0JBQWdCLGFBRmQsQ0FBQyxpQkFBaUIsQ0FBQzs7MkZBRXJCLGdCQUFnQjtrQkFONUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDOUIsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGF0ZVRpbWVQaXBlIH0gZnJvbSAnLi9kYXRldGltZS5waXBlJztcbmltcG9ydCB7IEFYQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtdLFxuICAgIGV4cG9ydHM6IFtBWERhdGVUaW1lUGlwZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQVhEYXRlVGltZVBpcGVdLFxuICAgIHByb3ZpZGVyczogW0FYQ2FsZW5kYXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZU1vZHVsZSB7XG5cbn1cbiJdfQ==
|
@@ -1,26 +1,32 @@
|
|
1
|
-
import { Pipe } from '@angular/core';
|
2
|
-
import { AXConfig } from '@acorex/core/config';
|
1
|
+
import { Pipe, inject } from '@angular/core';
|
3
2
|
import { AXDateTime } from './datetime.class';
|
3
|
+
import { AXCalendarService } from './calendar.service';
|
4
4
|
import * as i0 from "@angular/core";
|
5
5
|
export class AXDateTimePipe {
|
6
|
-
constructor() {
|
7
|
-
|
6
|
+
constructor() {
|
7
|
+
this._calendarService = inject(AXCalendarService);
|
8
|
+
}
|
9
|
+
transform(value, format, calendarName) {
|
8
10
|
if (value == null) {
|
9
11
|
return '';
|
10
12
|
}
|
11
|
-
|
13
|
+
let calendar = this._calendarService.calendar;
|
14
|
+
if (calendarName) {
|
15
|
+
calendar = this._calendarService.resolveCalendar(calendarName);
|
16
|
+
}
|
17
|
+
const val = value instanceof AXDateTime ? value.clone() : new AXDateTime(value, calendar);
|
12
18
|
if (!format) {
|
13
|
-
return
|
19
|
+
return val.format(calendar.formats.dateDisplay);
|
14
20
|
}
|
15
21
|
else {
|
16
|
-
return
|
22
|
+
return val.format(format);
|
17
23
|
}
|
18
24
|
}
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.
|
20
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.9", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
26
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.9", ngImport: i0, type: AXDateTimePipe, name: "axDate" }); }
|
21
27
|
}
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.9", ngImport: i0, type: AXDateTimePipe, decorators: [{
|
23
29
|
type: Pipe,
|
24
30
|
args: [{ name: 'axDate' }]
|
25
|
-
}]
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
31
|
+
}] });
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRlVGltZS9zcmMvbGliL2RhdGV0aW1lLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFHWSxxQkFBZ0IsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FrQjNFO0lBaEJHLFNBQVMsQ0FBQyxLQUF3QixFQUFFLE1BQWUsRUFBRSxZQUFxQjtRQUN0RSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDZixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztRQUM5QyxJQUFJLFlBQVksRUFBRTtZQUNkLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsTUFBTSxHQUFHLEdBQWUsS0FBSyxZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ25EO2FBQ0k7WUFDRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7SUFDTCxDQUFDOzhHQW5CUSxjQUFjOzRHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZVRyYW5zZm9ybSwgUGlwZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWERhdGVUaW1lIH0gZnJvbSAnLi9kYXRldGltZS5jbGFzcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4vY2FsZW5kYXIuc2VydmljZSc7XG5cbkBQaXBlKHsgbmFtZTogJ2F4RGF0ZScgfSlcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHJpdmF0ZSBfY2FsZW5kYXJTZXJ2aWNlOiBBWENhbGVuZGFyU2VydmljZSA9IGluamVjdChBWENhbGVuZGFyU2VydmljZSk7XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IERhdGUgfCBBWERhdGVUaW1lLCBmb3JtYXQ/OiBzdHJpbmcsIGNhbGVuZGFyTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNhbGVuZGFyID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyO1xuICAgICAgICBpZiAoY2FsZW5kYXJOYW1lKSB7XG4gICAgICAgICAgICBjYWxlbmRhciA9IHRoaXMuX2NhbGVuZGFyU2VydmljZS5yZXNvbHZlQ2FsZW5kYXIoY2FsZW5kYXJOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWw6IEFYRGF0ZVRpbWUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUgPyB2YWx1ZS5jbG9uZSgpIDogbmV3IEFYRGF0ZVRpbWUodmFsdWUsIGNhbGVuZGFyKTtcbiAgICAgICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwuZm9ybWF0KGNhbGVuZGFyLmZvcm1hdHMuZGF0ZURpc3BsYXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbC5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
|