@sbb-esta/lyne-elements-experimental 1.8.0 → 1.10.0
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/core/timetable/access-leg-helper.d.ts +2 -1
- package/core/timetable/access-leg-helper.d.ts.map +1 -1
- package/core/timetable.js +111 -76
- package/custom-elements.json +44 -0
- package/development/core/timetable/access-leg-helper.d.ts +2 -1
- package/development/core/timetable/access-leg-helper.d.ts.map +1 -1
- package/development/core/timetable.js +57 -22
- package/development/journey-summary.js +2 -15
- package/development/pearl-chain/pearl-chain.sample-data.d.ts +1 -0
- package/development/pearl-chain/pearl-chain.sample-data.d.ts.map +1 -1
- package/development/pearl-chain-time/pearl-chain-time.d.ts +2 -0
- package/development/pearl-chain-time/pearl-chain-time.d.ts.map +1 -1
- package/development/pearl-chain-time.js +20 -20
- package/development/pearl-chain-vertical-item.js +2 -15
- package/development/pearl-chain-vertical.js +2 -15
- package/development/pearl-chain.js +3 -16
- package/development/timetable-duration.js +2 -15
- package/development/timetable-row/timetable-row.d.ts +7 -0
- package/development/timetable-row/timetable-row.d.ts.map +1 -1
- package/development/timetable-row/timetable-row.sample-data.d.ts +2 -0
- package/development/timetable-row/timetable-row.sample-data.d.ts.map +1 -1
- package/development/timetable-row.js +8 -16
- package/package.json +2 -2
- package/pearl-chain/pearl-chain.sample-data.d.ts +1 -0
- package/pearl-chain/pearl-chain.sample-data.d.ts.map +1 -1
- package/pearl-chain-time/pearl-chain-time.d.ts +2 -0
- package/pearl-chain-time/pearl-chain-time.d.ts.map +1 -1
- package/pearl-chain-time.js +37 -33
- package/pearl-chain.js +11 -11
- package/timetable-row/timetable-row.d.ts +7 -0
- package/timetable-row/timetable-row.d.ts.map +1 -1
- package/timetable-row/timetable-row.sample-data.d.ts +2 -0
- package/timetable-row/timetable-row.sample-data.d.ts.map +1 -1
- package/timetable-row.js +40 -35
|
@@ -10,12 +10,13 @@ interface IAccessAttribute {
|
|
|
10
10
|
* @param departureWalk: The walking distance in minutes from the departure point to the first leg.
|
|
11
11
|
* @param arrivalWalk: The walking distance in minutes from the last leg to the arrival point.
|
|
12
12
|
* @param currentLanguage: The current language for localization.
|
|
13
|
+
* @param a11yFootpath: Whether the a11y-icon should be shown.
|
|
13
14
|
* @returns renderDepartureTimeAttribute: A function that renders the element for the departure time attribute.
|
|
14
15
|
* @returns renderArrivalTimeAttribute: A function that renders the element for the arrival time attribute.
|
|
15
16
|
* @returns arrivalTimeAttribute: The access attribute for the arrival time.
|
|
16
17
|
* @returns departureTimeAttribute: The access attribute for the departure time.
|
|
17
18
|
*/
|
|
18
|
-
export declare function getDepartureArrivalTimeAttribute(legs: Leg[], departureWalk: number, arrivalWalk: number, currentLanguage: string): {
|
|
19
|
+
export declare function getDepartureArrivalTimeAttribute(legs: Leg[], departureWalk: number, arrivalWalk: number, currentLanguage: string, a11yFootpath?: boolean): {
|
|
19
20
|
renderDepartureTimeAttribute: () => TemplateResult;
|
|
20
21
|
renderArrivalTimeAttribute: () => TemplateResult;
|
|
21
22
|
departureTimeAttribute: IAccessAttribute | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-leg-helper.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/core/timetable/access-leg-helper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ1C,OAAO,KAAK,EAAE,GAAG,EAA8B,MAAM,2BAA2B,CAAC;AAEjF,OAAO,iCAAiC,CAAC;AAEzC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"access-leg-helper.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/core/timetable/access-leg-helper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ1C,OAAO,KAAK,EAAE,GAAG,EAA8B,MAAM,2BAA2B,CAAC;AAEjF,OAAO,iCAAiC,CAAC;AAEzC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAuID;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,GAAG,EAAE,EACX,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,OAAO,GACrB;IACD,4BAA4B,EAAE,MAAM,cAAc,CAAC;IACnD,0BAA0B,EAAE,MAAM,cAAc,CAAC;IACjD,sBAAsB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,oBAAoB,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC/C,CAiJA"}
|
package/core/timetable.js
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import { i18nWalkingDistanceDeparture as
|
|
2
|
-
import { html as
|
|
1
|
+
import { i18nWalkingDistanceDeparture as w, i18nWalkingDistanceArrival as T } from "@sbb-esta/lyne-elements/core/i18n.js";
|
|
2
|
+
import { html as f, nothing as b } from "lit";
|
|
3
3
|
import "@sbb-esta/lyne-elements/icon.js";
|
|
4
|
-
const
|
|
5
|
-
var
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
(
|
|
4
|
+
const $ = (t) => (t == null ? void 0 : t.__typename) === "PTRideLeg", _ = (t) => (t == null ? void 0 : t.__typename) === "PTConnectionLeg", v = (t) => {
|
|
5
|
+
var r, e, i, u, a, s;
|
|
6
|
+
const l = ((r = t == null ? void 0 : t.text) == null ? void 0 : r.template) && t.text.template.indexOf("(") + 1, n = (u = (e = t == null ? void 0 : t.text) == null ? void 0 : e.template) == null ? void 0 : u.substring(
|
|
7
|
+
l || 0,
|
|
8
|
+
(i = t == null ? void 0 : t.text) == null ? void 0 : i.template.indexOf(")")
|
|
9
9
|
);
|
|
10
10
|
return {
|
|
11
|
-
duration:
|
|
12
|
-
text: ((
|
|
11
|
+
duration: n && +n.substring(0, n.length - 1) || 0,
|
|
12
|
+
text: ((s = (a = t == null ? void 0 : t.text) == null ? void 0 : a.template) == null ? void 0 : s.split("(")[0]) || ""
|
|
13
13
|
};
|
|
14
14
|
};
|
|
15
|
-
function
|
|
16
|
-
var
|
|
17
|
-
const
|
|
18
|
-
return
|
|
19
|
-
duration: (
|
|
20
|
-
text: ((
|
|
15
|
+
function k(t, l) {
|
|
16
|
+
var e, i;
|
|
17
|
+
const n = _(t) ? t : null, r = n ? (e = n == null ? void 0 : n.notices) == null ? void 0 : e.filter((u) => l.includes(u.name))[0] : null;
|
|
18
|
+
return r ? {
|
|
19
|
+
duration: (n == null ? void 0 : n.duration) || 0,
|
|
20
|
+
text: ((i = r == null ? void 0 : r.text) == null ? void 0 : i.template) || "",
|
|
21
21
|
icon: "walk-small"
|
|
22
22
|
} : null;
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
var
|
|
26
|
-
const e =
|
|
27
|
-
(
|
|
28
|
-
)[0] : null,
|
|
24
|
+
function M(t, l, n, r) {
|
|
25
|
+
var u, a, s;
|
|
26
|
+
const e = $(t) ? (a = (u = t == null ? void 0 : t.serviceJourney) == null ? void 0 : u.notices) == null ? void 0 : a.filter(
|
|
27
|
+
(m) => ["CI"].includes(m.name)
|
|
28
|
+
)[0] : null, i = e && v(e);
|
|
29
29
|
return e ? {
|
|
30
|
-
duration: ((
|
|
31
|
-
text:
|
|
32
|
-
icon: `sa-${(s = e == null ? void 0 : e.name) == null ? void 0 : s.toLowerCase()}`
|
|
30
|
+
duration: ((i == null ? void 0 : i.duration) || 0) + (l || 0),
|
|
31
|
+
text: n ? w[r] : (i == null ? void 0 : i.text) || "",
|
|
32
|
+
icon: n ? "wheelchair-small" : `sa-${(s = e == null ? void 0 : e.name) == null ? void 0 : s.toLowerCase()}`
|
|
33
33
|
} : null;
|
|
34
34
|
}
|
|
35
|
-
function
|
|
36
|
-
var
|
|
37
|
-
const e =
|
|
38
|
-
(
|
|
39
|
-
)[0] : null,
|
|
35
|
+
function O(t, l, n, r) {
|
|
36
|
+
var u, a, s;
|
|
37
|
+
const e = $(t) ? (a = (u = t == null ? void 0 : t.serviceJourney) == null ? void 0 : u.notices) == null ? void 0 : a.filter(
|
|
38
|
+
(m) => ["CO"].includes(m.name)
|
|
39
|
+
)[0] : null, i = e && v(e);
|
|
40
40
|
return e ? {
|
|
41
|
-
duration: ((
|
|
42
|
-
text:
|
|
43
|
-
icon: `sa-${(s = e == null ? void 0 : e.name) == null ? void 0 : s.toLowerCase()}`
|
|
41
|
+
duration: ((i == null ? void 0 : i.duration) || 0) + (l || 0),
|
|
42
|
+
text: n ? T[r] : (i == null ? void 0 : i.text) || "",
|
|
43
|
+
icon: n ? "wheelchair-small" : `sa-${(s = e == null ? void 0 : e.name) == null ? void 0 : s.toLowerCase()}`
|
|
44
44
|
} : null;
|
|
45
45
|
}
|
|
46
|
-
function
|
|
47
|
-
return
|
|
48
|
-
<span class="sbb-pearl-chain__time-transfer sbb-pearl-chain__time-transfer--${
|
|
49
|
-
<sbb-icon name=${
|
|
46
|
+
function C(t, l, n, r, e) {
|
|
47
|
+
return f`
|
|
48
|
+
<span class="sbb-pearl-chain__time-transfer sbb-pearl-chain__time-transfer--${l}-${e}">
|
|
49
|
+
<sbb-icon name=${l}></sbb-icon>
|
|
50
50
|
<time datetime=${t + "M"}>
|
|
51
51
|
<span class="sbb-screen-reader-only">
|
|
52
|
-
${!
|
|
53
|
-
${
|
|
52
|
+
${!r && e ? e === "departure" ? w[n] : T[n] : b}
|
|
53
|
+
${r ? f`<span>${r}</span>` : b}
|
|
54
54
|
</span>
|
|
55
55
|
${t}
|
|
56
56
|
<span class="sbb-pearl-chain__time-walktime-prime-symbol" aria-hidden="true">'</span>
|
|
@@ -59,65 +59,100 @@ function T(t, i, e, n, r) {
|
|
|
59
59
|
</span>
|
|
60
60
|
`;
|
|
61
61
|
}
|
|
62
|
-
function
|
|
63
|
-
return
|
|
64
|
-
<span class="sbb-pearl-chain__time-walktime sbb-pearl-chain__time-walktime--${
|
|
65
|
-
<sbb-icon name
|
|
62
|
+
function p(t, l, n, r) {
|
|
63
|
+
return f`
|
|
64
|
+
<span class="sbb-pearl-chain__time-walktime sbb-pearl-chain__time-walktime--${r}-${n}">
|
|
65
|
+
<sbb-icon name=${r}></sbb-icon>
|
|
66
66
|
<time datetime=${t + "M"}>
|
|
67
|
-
<span class="sbb-screen-reader-only">${
|
|
67
|
+
<span class="sbb-screen-reader-only">${l}</span>
|
|
68
68
|
${t}
|
|
69
69
|
<span class="sbb-pearl-chain__time-walktime-prime-symbol" aria-hidden="true">'</span>
|
|
70
70
|
</time>
|
|
71
71
|
</span>
|
|
72
72
|
`;
|
|
73
73
|
}
|
|
74
|
-
function
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
74
|
+
function I(t, l, n, r, e) {
|
|
75
|
+
const i = t && t.filter((A) => $(A) || _(A))[0], u = ["YM", "YB", "Y", "YT"], a = k(i, u), s = M(
|
|
76
|
+
i,
|
|
77
|
+
l,
|
|
78
|
+
e,
|
|
79
|
+
r
|
|
80
|
+
), m = l ? {
|
|
81
|
+
text: w[r],
|
|
82
|
+
duration: l,
|
|
83
|
+
icon: e ? "wheelchair-small" : "walk-small"
|
|
84
|
+
} : null, D = () => a || (m && !s && !a ? m : s || null);
|
|
80
85
|
function L() {
|
|
81
|
-
return
|
|
82
|
-
${
|
|
83
|
-
${o && !a && !s ? f(o.duration, o.text, "left") : m}
|
|
84
|
-
${a ? T(
|
|
86
|
+
return f`
|
|
87
|
+
${a ? p(
|
|
85
88
|
a.duration,
|
|
86
|
-
a.icon,
|
|
87
|
-
n,
|
|
88
89
|
a.text,
|
|
90
|
+
"left",
|
|
91
|
+
a.icon
|
|
92
|
+
) : b}
|
|
93
|
+
${m && !s && !a ? p(
|
|
94
|
+
m.duration,
|
|
95
|
+
m.text,
|
|
96
|
+
"left",
|
|
97
|
+
m.icon
|
|
98
|
+
) : b}
|
|
99
|
+
${s ? e ? p(
|
|
100
|
+
s.duration,
|
|
101
|
+
s.text,
|
|
102
|
+
"left",
|
|
103
|
+
s.icon
|
|
104
|
+
) : C(
|
|
105
|
+
s.duration,
|
|
106
|
+
s.icon,
|
|
107
|
+
r,
|
|
108
|
+
s.text,
|
|
89
109
|
"departure"
|
|
90
|
-
) :
|
|
110
|
+
) : b}
|
|
91
111
|
`;
|
|
92
112
|
}
|
|
93
|
-
const
|
|
94
|
-
text:
|
|
95
|
-
duration:
|
|
96
|
-
icon: "walk-small"
|
|
97
|
-
} : null,
|
|
98
|
-
function
|
|
99
|
-
return
|
|
100
|
-
${c ?
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
113
|
+
const h = t && t[t.length - 1], x = (_(h) || $(h)) && h, c = x && k(x, u), o = x && O(x, n, e, r), d = n ? {
|
|
114
|
+
text: T[r],
|
|
115
|
+
duration: n,
|
|
116
|
+
icon: e ? "wheelchair-small" : "walk-small"
|
|
117
|
+
} : null, R = () => c || (d && !o && !c ? d : o || null);
|
|
118
|
+
function Y() {
|
|
119
|
+
return f`
|
|
120
|
+
${c ? p(
|
|
121
|
+
c.duration,
|
|
122
|
+
c.text,
|
|
123
|
+
"right",
|
|
124
|
+
c.icon
|
|
125
|
+
) : b}
|
|
126
|
+
${d && !o && !c ? p(
|
|
127
|
+
d.duration,
|
|
128
|
+
d.text,
|
|
129
|
+
"right",
|
|
130
|
+
d.icon
|
|
131
|
+
) : b}
|
|
132
|
+
${o ? e ? p(
|
|
133
|
+
o.duration,
|
|
134
|
+
o.text,
|
|
135
|
+
"right",
|
|
136
|
+
o.icon
|
|
137
|
+
) : C(
|
|
138
|
+
o.duration,
|
|
139
|
+
o.icon,
|
|
140
|
+
r,
|
|
141
|
+
o.text,
|
|
107
142
|
"arrival"
|
|
108
|
-
) :
|
|
143
|
+
) : b}
|
|
109
144
|
`;
|
|
110
145
|
}
|
|
111
146
|
return {
|
|
112
147
|
renderDepartureTimeAttribute: L,
|
|
113
|
-
renderArrivalTimeAttribute:
|
|
114
|
-
departureTimeAttribute:
|
|
115
|
-
arrivalTimeAttribute:
|
|
148
|
+
renderArrivalTimeAttribute: Y,
|
|
149
|
+
departureTimeAttribute: D(),
|
|
150
|
+
arrivalTimeAttribute: R()
|
|
116
151
|
};
|
|
117
152
|
}
|
|
118
153
|
export {
|
|
119
|
-
|
|
120
|
-
|
|
154
|
+
v as extractTimeAndStringFromNoticeText,
|
|
155
|
+
I as getDepartureArrivalTimeAttribute,
|
|
121
156
|
_ as isConnectionLeg,
|
|
122
|
-
|
|
157
|
+
$ as isRideLeg
|
|
123
158
|
};
|
package/custom-elements.json
CHANGED
|
@@ -312,6 +312,16 @@
|
|
|
312
312
|
"description": "Per default, the current location has a pulsating animation. You can\ndisable the animation with this property.",
|
|
313
313
|
"attribute": "disable-animation"
|
|
314
314
|
},
|
|
315
|
+
{
|
|
316
|
+
"kind": "field",
|
|
317
|
+
"name": "a11yFootpath",
|
|
318
|
+
"type": {
|
|
319
|
+
"text": "boolean | undefined"
|
|
320
|
+
},
|
|
321
|
+
"privacy": "public",
|
|
322
|
+
"description": "Optional prop to render wheelchair-small instead of walk-small",
|
|
323
|
+
"attribute": "a11y-footpath"
|
|
324
|
+
},
|
|
315
325
|
{
|
|
316
326
|
"kind": "field",
|
|
317
327
|
"name": "now",
|
|
@@ -388,6 +398,14 @@
|
|
|
388
398
|
"description": "Per default, the current location has a pulsating animation. You can\ndisable the animation with this property.",
|
|
389
399
|
"fieldName": "disableAnimation"
|
|
390
400
|
},
|
|
401
|
+
{
|
|
402
|
+
"name": "a11y-footpath",
|
|
403
|
+
"type": {
|
|
404
|
+
"text": "boolean | undefined"
|
|
405
|
+
},
|
|
406
|
+
"description": "Optional prop to render wheelchair-small instead of walk-small",
|
|
407
|
+
"fieldName": "a11yFootpath"
|
|
408
|
+
},
|
|
391
409
|
{
|
|
392
410
|
"name": "now",
|
|
393
411
|
"description": "A configured date which acts as the current date instead of the real current date. Recommended for testing purposes.",
|
|
@@ -1073,6 +1091,16 @@
|
|
|
1073
1091
|
"description": "The loading state -\nwhen this is true it will be render skeleton with an idling animation",
|
|
1074
1092
|
"attribute": "loading-trip"
|
|
1075
1093
|
},
|
|
1094
|
+
{
|
|
1095
|
+
"kind": "field",
|
|
1096
|
+
"name": "a11yFootpath",
|
|
1097
|
+
"type": {
|
|
1098
|
+
"text": "boolean | undefined"
|
|
1099
|
+
},
|
|
1100
|
+
"privacy": "public",
|
|
1101
|
+
"description": "The Footpath attribute for rendering different icons\ntrue: render a11y-icon\nfalse: render walk-icon\ndefault: render walk-icon",
|
|
1102
|
+
"attribute": "a11y-footpath"
|
|
1103
|
+
},
|
|
1076
1104
|
{
|
|
1077
1105
|
"kind": "field",
|
|
1078
1106
|
"name": "loadingPrice",
|
|
@@ -1251,6 +1279,14 @@
|
|
|
1251
1279
|
"description": "The loading state -\nwhen this is true it will be render skeleton with an idling animation",
|
|
1252
1280
|
"fieldName": "loadingTrip"
|
|
1253
1281
|
},
|
|
1282
|
+
{
|
|
1283
|
+
"name": "a11y-footpath",
|
|
1284
|
+
"type": {
|
|
1285
|
+
"text": "boolean | undefined"
|
|
1286
|
+
},
|
|
1287
|
+
"description": "The Footpath attribute for rendering different icons\ntrue: render a11y-icon\nfalse: render walk-icon\ndefault: render walk-icon",
|
|
1288
|
+
"fieldName": "a11yFootpath"
|
|
1289
|
+
},
|
|
1254
1290
|
{
|
|
1255
1291
|
"name": "loading-price",
|
|
1256
1292
|
"type": {
|
|
@@ -1487,6 +1523,14 @@
|
|
|
1487
1523
|
"text": "string"
|
|
1488
1524
|
},
|
|
1489
1525
|
"description": ": The current language for localization."
|
|
1526
|
+
},
|
|
1527
|
+
{
|
|
1528
|
+
"name": "a11yFootpath",
|
|
1529
|
+
"optional": true,
|
|
1530
|
+
"type": {
|
|
1531
|
+
"text": "boolean"
|
|
1532
|
+
},
|
|
1533
|
+
"description": ": Whether the a11y-icon should be shown."
|
|
1490
1534
|
}
|
|
1491
1535
|
]
|
|
1492
1536
|
},
|
|
@@ -10,12 +10,13 @@ interface IAccessAttribute {
|
|
|
10
10
|
* @param departureWalk: The walking distance in minutes from the departure point to the first leg.
|
|
11
11
|
* @param arrivalWalk: The walking distance in minutes from the last leg to the arrival point.
|
|
12
12
|
* @param currentLanguage: The current language for localization.
|
|
13
|
+
* @param a11yFootpath: Whether the a11y-icon should be shown.
|
|
13
14
|
* @returns renderDepartureTimeAttribute: A function that renders the element for the departure time attribute.
|
|
14
15
|
* @returns renderArrivalTimeAttribute: A function that renders the element for the arrival time attribute.
|
|
15
16
|
* @returns arrivalTimeAttribute: The access attribute for the arrival time.
|
|
16
17
|
* @returns departureTimeAttribute: The access attribute for the departure time.
|
|
17
18
|
*/
|
|
18
|
-
export declare function getDepartureArrivalTimeAttribute(legs: Leg[], departureWalk: number, arrivalWalk: number, currentLanguage: string): {
|
|
19
|
+
export declare function getDepartureArrivalTimeAttribute(legs: Leg[], departureWalk: number, arrivalWalk: number, currentLanguage: string, a11yFootpath?: boolean): {
|
|
19
20
|
renderDepartureTimeAttribute: () => TemplateResult;
|
|
20
21
|
renderArrivalTimeAttribute: () => TemplateResult;
|
|
21
22
|
departureTimeAttribute: IAccessAttribute | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-leg-helper.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/core/timetable/access-leg-helper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ1C,OAAO,KAAK,EAAE,GAAG,EAA8B,MAAM,2BAA2B,CAAC;AAEjF,OAAO,iCAAiC,CAAC;AAEzC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"access-leg-helper.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/core/timetable/access-leg-helper.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ1C,OAAO,KAAK,EAAE,GAAG,EAA8B,MAAM,2BAA2B,CAAC;AAEjF,OAAO,iCAAiC,CAAC;AAEzC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAuID;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,GAAG,EAAE,EACX,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,OAAO,GACrB;IACD,4BAA4B,EAAE,MAAM,cAAc,CAAC;IACnD,0BAA0B,EAAE,MAAM,cAAc,CAAC;IACjD,sBAAsB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,oBAAoB,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC/C,CAiJA"}
|
|
@@ -29,7 +29,7 @@ function getPTConnectionAttribute(leg, connectionLegNotice) {
|
|
|
29
29
|
icon: "walk-small"
|
|
30
30
|
} : null;
|
|
31
31
|
}
|
|
32
|
-
function getFirstExtendedLegAttribute(leg, departureWalk) {
|
|
32
|
+
function getFirstExtendedLegAttribute(leg, departureWalk, a11yFootpath, currentLanguage) {
|
|
33
33
|
var _a, _b, _c;
|
|
34
34
|
const extendedFirstLeg = isRideLeg(leg) ? (_b = (_a = leg == null ? void 0 : leg.serviceJourney) == null ? void 0 : _a.notices) == null ? void 0 : _b.filter(
|
|
35
35
|
(notice) => ["CI"].includes(notice.name)
|
|
@@ -37,11 +37,11 @@ function getFirstExtendedLegAttribute(leg, departureWalk) {
|
|
|
37
37
|
const extractTimeAndString = extendedFirstLeg && extractTimeAndStringFromNoticeText(extendedFirstLeg);
|
|
38
38
|
return extendedFirstLeg ? {
|
|
39
39
|
duration: ((extractTimeAndString == null ? void 0 : extractTimeAndString.duration) || 0) + (departureWalk || 0),
|
|
40
|
-
text: (extractTimeAndString == null ? void 0 : extractTimeAndString.text) || "",
|
|
41
|
-
icon: `sa-${(_c = extendedFirstLeg == null ? void 0 : extendedFirstLeg.name) == null ? void 0 : _c.toLowerCase()}`
|
|
40
|
+
text: a11yFootpath ? i18nWalkingDistanceDeparture[currentLanguage] : (extractTimeAndString == null ? void 0 : extractTimeAndString.text) || "",
|
|
41
|
+
icon: a11yFootpath ? "wheelchair-small" : `sa-${(_c = extendedFirstLeg == null ? void 0 : extendedFirstLeg.name) == null ? void 0 : _c.toLowerCase()}`
|
|
42
42
|
} : null;
|
|
43
43
|
}
|
|
44
|
-
function getLastExtendedLegAttribute(leg, arrivalWalk) {
|
|
44
|
+
function getLastExtendedLegAttribute(leg, arrivalWalk, a11yFootpath, currentLanguage) {
|
|
45
45
|
var _a, _b, _c;
|
|
46
46
|
const extendedLastLeg = isRideLeg(leg) ? (_b = (_a = leg == null ? void 0 : leg.serviceJourney) == null ? void 0 : _a.notices) == null ? void 0 : _b.filter(
|
|
47
47
|
(notice) => ["CO"].includes(notice.name)
|
|
@@ -49,13 +49,13 @@ function getLastExtendedLegAttribute(leg, arrivalWalk) {
|
|
|
49
49
|
const extractTimeAndString = extendedLastLeg && extractTimeAndStringFromNoticeText(extendedLastLeg);
|
|
50
50
|
return extendedLastLeg ? {
|
|
51
51
|
duration: ((extractTimeAndString == null ? void 0 : extractTimeAndString.duration) || 0) + (arrivalWalk || 0),
|
|
52
|
-
text: (extractTimeAndString == null ? void 0 : extractTimeAndString.text) || "",
|
|
53
|
-
icon: `sa-${(_c = extendedLastLeg == null ? void 0 : extendedLastLeg.name) == null ? void 0 : _c.toLowerCase()}`
|
|
52
|
+
text: a11yFootpath ? i18nWalkingDistanceArrival[currentLanguage] : (extractTimeAndString == null ? void 0 : extractTimeAndString.text) || "",
|
|
53
|
+
icon: a11yFootpath ? "wheelchair-small" : `sa-${(_c = extendedLastLeg == null ? void 0 : extendedLastLeg.name) == null ? void 0 : _c.toLowerCase()}`
|
|
54
54
|
} : null;
|
|
55
55
|
}
|
|
56
56
|
function renderTransferTime(duration, icon, currentLanguage, label, type) {
|
|
57
57
|
return html`
|
|
58
|
-
<span class="sbb-pearl-chain__time-transfer sbb-pearl-chain__time-transfer--${type}">
|
|
58
|
+
<span class="sbb-pearl-chain__time-transfer sbb-pearl-chain__time-transfer--${icon}-${type}">
|
|
59
59
|
<sbb-icon name=${icon}></sbb-icon>
|
|
60
60
|
<time datetime=${duration + "M"}>
|
|
61
61
|
<span class="sbb-screen-reader-only">
|
|
@@ -69,10 +69,10 @@ function renderTransferTime(duration, icon, currentLanguage, label, type) {
|
|
|
69
69
|
</span>
|
|
70
70
|
`;
|
|
71
71
|
}
|
|
72
|
-
function renderWalkTime(duration, label, variant) {
|
|
72
|
+
function renderWalkTime(duration, label, variant, icon) {
|
|
73
73
|
return html`
|
|
74
|
-
<span class="sbb-pearl-chain__time-walktime sbb-pearl-chain__time-walktime--${variant}">
|
|
75
|
-
<sbb-icon name
|
|
74
|
+
<span class="sbb-pearl-chain__time-walktime sbb-pearl-chain__time-walktime--${icon}-${variant}">
|
|
75
|
+
<sbb-icon name=${icon}></sbb-icon>
|
|
76
76
|
<time datetime=${duration + "M"}>
|
|
77
77
|
<span class="sbb-screen-reader-only">${label}</span>
|
|
78
78
|
${duration}
|
|
@@ -81,15 +81,20 @@ function renderWalkTime(duration, label, variant) {
|
|
|
81
81
|
</span>
|
|
82
82
|
`;
|
|
83
83
|
}
|
|
84
|
-
function getDepartureArrivalTimeAttribute(legs, departureWalk, arrivalWalk, currentLanguage) {
|
|
84
|
+
function getDepartureArrivalTimeAttribute(legs, departureWalk, arrivalWalk, currentLanguage, a11yFootpath) {
|
|
85
85
|
const connectionRideLeg = legs && legs.filter((leg) => isRideLeg(leg) || isConnectionLeg(leg))[0];
|
|
86
86
|
const connectionLegNotice = ["YM", "YB", "Y", "YT"];
|
|
87
87
|
const connectionFirstLeg = getPTConnectionAttribute(connectionRideLeg, connectionLegNotice);
|
|
88
|
-
const extendedFirstLeg = getFirstExtendedLegAttribute(
|
|
88
|
+
const extendedFirstLeg = getFirstExtendedLegAttribute(
|
|
89
|
+
connectionRideLeg,
|
|
90
|
+
departureWalk,
|
|
91
|
+
a11yFootpath,
|
|
92
|
+
currentLanguage
|
|
93
|
+
);
|
|
89
94
|
const departureWalkAttribute = departureWalk ? {
|
|
90
95
|
text: i18nWalkingDistanceDeparture[currentLanguage],
|
|
91
96
|
duration: departureWalk,
|
|
92
|
-
icon: "walk-small"
|
|
97
|
+
icon: a11yFootpath ? "wheelchair-small" : "walk-small"
|
|
93
98
|
} : null;
|
|
94
99
|
const getDepartureType = () => {
|
|
95
100
|
if (connectionFirstLeg) {
|
|
@@ -104,9 +109,24 @@ function getDepartureArrivalTimeAttribute(legs, departureWalk, arrivalWalk, curr
|
|
|
104
109
|
};
|
|
105
110
|
function renderDepartureTimeAttribute() {
|
|
106
111
|
return html`
|
|
107
|
-
${connectionFirstLeg ? renderWalkTime(
|
|
108
|
-
|
|
109
|
-
|
|
112
|
+
${connectionFirstLeg ? renderWalkTime(
|
|
113
|
+
connectionFirstLeg.duration,
|
|
114
|
+
connectionFirstLeg.text,
|
|
115
|
+
"left",
|
|
116
|
+
connectionFirstLeg.icon
|
|
117
|
+
) : nothing}
|
|
118
|
+
${departureWalkAttribute && !extendedFirstLeg && !connectionFirstLeg ? renderWalkTime(
|
|
119
|
+
departureWalkAttribute.duration,
|
|
120
|
+
departureWalkAttribute.text,
|
|
121
|
+
"left",
|
|
122
|
+
departureWalkAttribute.icon
|
|
123
|
+
) : nothing}
|
|
124
|
+
${extendedFirstLeg ? a11yFootpath ? renderWalkTime(
|
|
125
|
+
extendedFirstLeg.duration,
|
|
126
|
+
extendedFirstLeg.text,
|
|
127
|
+
"left",
|
|
128
|
+
extendedFirstLeg.icon
|
|
129
|
+
) : renderTransferTime(
|
|
110
130
|
extendedFirstLeg.duration,
|
|
111
131
|
extendedFirstLeg.icon,
|
|
112
132
|
currentLanguage,
|
|
@@ -118,11 +138,11 @@ function getDepartureArrivalTimeAttribute(legs, departureWalk, arrivalWalk, curr
|
|
|
118
138
|
const lastLeg = legs && legs[legs.length - 1];
|
|
119
139
|
const lastConnectionRideLeg = (isConnectionLeg(lastLeg) || isRideLeg(lastLeg)) && lastLeg;
|
|
120
140
|
const connectionLastLeg = lastConnectionRideLeg && getPTConnectionAttribute(lastConnectionRideLeg, connectionLegNotice);
|
|
121
|
-
const extendedLastLeg = lastConnectionRideLeg && getLastExtendedLegAttribute(lastConnectionRideLeg, arrivalWalk);
|
|
141
|
+
const extendedLastLeg = lastConnectionRideLeg && getLastExtendedLegAttribute(lastConnectionRideLeg, arrivalWalk, a11yFootpath, currentLanguage);
|
|
122
142
|
const arrivalWalkAttribute = arrivalWalk ? {
|
|
123
143
|
text: i18nWalkingDistanceArrival[currentLanguage],
|
|
124
144
|
duration: arrivalWalk,
|
|
125
|
-
icon: "walk-small"
|
|
145
|
+
icon: a11yFootpath ? "wheelchair-small" : "walk-small"
|
|
126
146
|
} : null;
|
|
127
147
|
const getArrivalType = () => {
|
|
128
148
|
if (connectionLastLeg) {
|
|
@@ -137,9 +157,24 @@ function getDepartureArrivalTimeAttribute(legs, departureWalk, arrivalWalk, curr
|
|
|
137
157
|
};
|
|
138
158
|
function renderArrivalTimeAttribute() {
|
|
139
159
|
return html`
|
|
140
|
-
${connectionLastLeg ? renderWalkTime(
|
|
141
|
-
|
|
142
|
-
|
|
160
|
+
${connectionLastLeg ? renderWalkTime(
|
|
161
|
+
connectionLastLeg.duration,
|
|
162
|
+
connectionLastLeg.text,
|
|
163
|
+
"right",
|
|
164
|
+
connectionLastLeg.icon
|
|
165
|
+
) : nothing}
|
|
166
|
+
${arrivalWalkAttribute && !extendedLastLeg && !connectionLastLeg ? renderWalkTime(
|
|
167
|
+
arrivalWalkAttribute.duration,
|
|
168
|
+
arrivalWalkAttribute.text,
|
|
169
|
+
"right",
|
|
170
|
+
arrivalWalkAttribute.icon
|
|
171
|
+
) : nothing}
|
|
172
|
+
${extendedLastLeg ? a11yFootpath ? renderWalkTime(
|
|
173
|
+
extendedLastLeg.duration,
|
|
174
|
+
extendedLastLeg.text,
|
|
175
|
+
"right",
|
|
176
|
+
extendedLastLeg.icon
|
|
177
|
+
) : renderTransferTime(
|
|
143
178
|
extendedLastLeg.duration,
|
|
144
179
|
extendedLastLeg.icon,
|
|
145
180
|
currentLanguage,
|
|
@@ -161,4 +196,4 @@ export {
|
|
|
161
196
|
isConnectionLeg,
|
|
162
197
|
isRideLeg
|
|
163
198
|
};
|
|
164
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2NvcmUvdGltZXRhYmxlL3RpbWV0YWJsZS1oZWxwZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2NvcmUvdGltZXRhYmxlL2FjY2Vzcy1sZWctaGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExlZywgTm90aWNlIH0gZnJvbSAnLi90aW1ldGFibGUtcHJvcGVydGllcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBpc1JpZGVMZWcgPSAobGVnOiBhbnkpOiBsZWcgaXMgRXh0cmFjdDxMZWcsIHsgX190eXBlbmFtZTogJ1BUUmlkZUxlZycgfT4gPT4ge1xuICByZXR1cm4gbGVnPy5fX3R5cGVuYW1lID09PSAnUFRSaWRlTGVnJztcbn07XG5cbmV4cG9ydCBjb25zdCBpc0Nvbm5lY3Rpb25MZWcgPSAoXG4gIGxlZzogYW55LFxuKTogbGVnIGlzIEV4dHJhY3Q8TGVnLCB7IF9fdHlwZW5hbWU6ICdQVENvbm5lY3Rpb25MZWcnIH0+ID0+IHtcbiAgcmV0dXJuIGxlZz8uX190eXBlbmFtZSA9PT0gJ1BUQ29ubmVjdGlvbkxlZyc7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdFRpbWVBbmRTdHJpbmdGcm9tTm90aWNlVGV4dCA9IChcbiAgbm90aWNlPzogTm90aWNlLFxuKTogeyBkdXJhdGlvbjogbnVtYmVyOyB0ZXh0OiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSBub3RpY2U/LnRleHQ/LnRlbXBsYXRlICYmIG5vdGljZS50ZXh0LnRlbXBsYXRlLmluZGV4T2YoJygnKSArIDE7XG4gIGNvbnN0IG5vdGljZUR1cmF0aW9uID0gbm90aWNlPy50ZXh0Py50ZW1wbGF0ZT8uc3Vic3RyaW5nKFxuICAgIGZpcnN0SW5kZXggfHwgMCxcbiAgICBub3RpY2U/LnRleHQ/LnRlbXBsYXRlLmluZGV4T2YoJyknKSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGR1cmF0aW9uOiAobm90aWNlRHVyYXRpb24gJiYgK25vdGljZUR1cmF0aW9uLnN1YnN0cmluZygwLCBub3RpY2VEdXJhdGlvbi5sZW5ndGggLSAxKSkgfHwgMCxcbiAgICB0ZXh0OiBub3RpY2U/LnRleHQ/LnRlbXBsYXRlPy5zcGxpdCgnKCcpWzBdIHx8ICcnLFxuICB9O1xufTtcbiIsIi8vIFRoaXMgaGVscGVyIGZpbGUgY29udGFpbnMgc2V2ZXJhbCBmdW5jdGlvbnMgcmVsYXRlZCB0byBhY2Nlc3NpbmcgYXR0cmlidXRlcyBmb3IgdGhlIGNvbm5lY3Rpb25zLlxuXG5pbXBvcnQge1xuICBpMThuV2Fsa2luZ0Rpc3RhbmNlQXJyaXZhbCxcbiAgaTE4bldhbGtpbmdEaXN0YW5jZURlcGFydHVyZSxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pMThuLmpzJztcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7XG4gIGV4dHJhY3RUaW1lQW5kU3RyaW5nRnJvbU5vdGljZVRleHQsXG4gIGlzQ29ubmVjdGlvbkxlZyxcbiAgaXNSaWRlTGVnLFxufSBmcm9tICcuL3RpbWV0YWJsZS1oZWxwZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBMZWcsIFB0Q29ubmVjdGlvbkxlZywgUHRSaWRlTGVnIH0gZnJvbSAnLi90aW1ldGFibGUtcHJvcGVydGllcy5qcyc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5qcyc7XG5cbmludGVyZmFjZSBJQWNjZXNzQXR0cmlidXRlIHtcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgdGV4dDogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHJldHVybnMgdGhlIGF0dHJpYnV0ZSBvZiBhIENvbm5lY3Rpb25MZWdcbiAqL1xuZnVuY3Rpb24gZ2V0UFRDb25uZWN0aW9uQXR0cmlidXRlKFxuICBsZWc6IFB0UmlkZUxlZyB8IFB0Q29ubmVjdGlvbkxlZyxcbiAgY29ubmVjdGlvbkxlZ05vdGljZTogc3RyaW5nW10sXG4pOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbCB7XG4gIGNvbnN0IGNvbm5lY3Rpb25GaXJzdExlZyA9IGlzQ29ubmVjdGlvbkxlZyhsZWcpID8gKGxlZyBhcyBQdENvbm5lY3Rpb25MZWcpIDogbnVsbDtcblxuICBjb25zdCBjb25uZWN0aW9uRmlyc3RMZWdOb3RpY2UgPSBjb25uZWN0aW9uRmlyc3RMZWdcbiAgICA/IGNvbm5lY3Rpb25GaXJzdExlZz8ubm90aWNlcz8uZmlsdGVyKChub3RpY2UpID0+IGNvbm5lY3Rpb25MZWdOb3RpY2UuaW5jbHVkZXMobm90aWNlLm5hbWUpKVswXVxuICAgIDogbnVsbDtcblxuICByZXR1cm4gY29ubmVjdGlvbkZpcnN0TGVnTm90aWNlXG4gICAgPyB7XG4gICAgICAgIGR1cmF0aW9uOiBjb25uZWN0aW9uRmlyc3RMZWc/LmR1cmF0aW9uIHx8IDAsXG4gICAgICAgIHRleHQ6IGNvbm5lY3Rpb25GaXJzdExlZ05vdGljZT8udGV4dD8udGVtcGxhdGUgfHwgJycsXG4gICAgICAgIGljb246ICd3YWxrLXNtYWxsJyxcbiAgICAgIH1cbiAgICA6IG51bGw7XG59XG5cbi8qKlxuICogQHJldHVybnMgdGhlIGV4dGVuZGVkIGVudGVyIGF0dHJpYnV0ZSBvZiB0aGUgUFRSaWRlTGVnXG4gKi9cbmZ1bmN0aW9uIGdldEZpcnN0RXh0ZW5kZWRMZWdBdHRyaWJ1dGUoXG4gIGxlZzogUHRSaWRlTGVnIHwgUHRDb25uZWN0aW9uTGVnLFxuICBkZXBhcnR1cmVXYWxrOiBudW1iZXIsXG4pOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbCB7XG4gIC8vIEV4dGVuZGVkIGVudGVyXG4gIGNvbnN0IGV4dGVuZGVkRmlyc3RMZWcgPSBpc1JpZGVMZWcobGVnKVxuICAgID8gKGxlZyBhcyBQdFJpZGVMZWcpPy5zZXJ2aWNlSm91cm5leT8ubm90aWNlcz8uZmlsdGVyKChub3RpY2UpID0+XG4gICAgICAgIFsnQ0knXS5pbmNsdWRlcyhub3RpY2UubmFtZSksXG4gICAgICApWzBdXG4gICAgOiBudWxsO1xuXG4gIGNvbnN0IGV4dHJhY3RUaW1lQW5kU3RyaW5nID1cbiAgICBleHRlbmRlZEZpcnN0TGVnICYmIGV4dHJhY3RUaW1lQW5kU3RyaW5nRnJvbU5vdGljZVRleHQoZXh0ZW5kZWRGaXJzdExlZyk7XG5cbiAgcmV0dXJuIGV4dGVuZGVkRmlyc3RMZWdcbiAgICA/IHtcbiAgICAgICAgZHVyYXRpb246IChleHRyYWN0VGltZUFuZFN0cmluZz8uZHVyYXRpb24gfHwgMCkgKyAoZGVwYXJ0dXJlV2FsayB8fCAwKSxcbiAgICAgICAgdGV4dDogZXh0cmFjdFRpbWVBbmRTdHJpbmc/LnRleHQgfHwgJycsXG4gICAgICAgIGljb246IGBzYS0ke2V4dGVuZGVkRmlyc3RMZWc/Lm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIH1cbiAgICA6IG51bGw7XG59XG5cbi8qKlxuICogQHJldHVybnMgdGhlIGV4dGVuZGVkIGV4aXQgYXR0cmlidXRlIG9mIHRoZSBQVFJpZGVMZWdcbiAqL1xuZnVuY3Rpb24gZ2V0TGFzdEV4dGVuZGVkTGVnQXR0cmlidXRlKGxlZzogTGVnLCBhcnJpdmFsV2FsazogbnVtYmVyKTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGwge1xuICAvLyBFeHRlbmRlZCBleGl0XG4gIGNvbnN0IGV4dGVuZGVkTGFzdExlZyA9IGlzUmlkZUxlZyhsZWcpXG4gICAgPyAobGVnIGFzIFB0UmlkZUxlZyk/LnNlcnZpY2VKb3VybmV5Py5ub3RpY2VzPy5maWx0ZXIoKG5vdGljZSkgPT5cbiAgICAgICAgWydDTyddLmluY2x1ZGVzKG5vdGljZS5uYW1lKSxcbiAgICAgIClbMF1cbiAgICA6IG51bGw7XG5cbiAgY29uc3QgZXh0cmFjdFRpbWVBbmRTdHJpbmcgPVxuICAgIGV4dGVuZGVkTGFzdExlZyAmJiBleHRyYWN0VGltZUFuZFN0cmluZ0Zyb21Ob3RpY2VUZXh0KGV4dGVuZGVkTGFzdExlZyk7XG5cbiAgcmV0dXJuIGV4dGVuZGVkTGFzdExlZ1xuICAgID8ge1xuICAgICAgICBkdXJhdGlvbjogKGV4dHJhY3RUaW1lQW5kU3RyaW5nPy5kdXJhdGlvbiB8fCAwKSArIChhcnJpdmFsV2FsayB8fCAwKSxcbiAgICAgICAgdGV4dDogZXh0cmFjdFRpbWVBbmRTdHJpbmc/LnRleHQgfHwgJycsXG4gICAgICAgIGljb246IGBzYS0ke2V4dGVuZGVkTGFzdExlZz8ubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgfVxuICAgIDogbnVsbDtcbn1cblxuLyoqXG4gKiByZW5kZXJzIHRoZSBleHRlbmRlZCBleGl0L2VudGVyIGljb24gd2l0aCB0aGUgZHVyYXRpb25cbiAqL1xuZnVuY3Rpb24gcmVuZGVyVHJhbnNmZXJUaW1lKFxuICBkdXJhdGlvbjogbnVtYmVyIHwgc3RyaW5nLFxuICBpY29uOiBzdHJpbmcsXG4gIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nLFxuICBsYWJlbD86IHN0cmluZyxcbiAgdHlwZT86ICdkZXBhcnR1cmUnIHwgJ2Fycml2YWwnLFxuKTogVGVtcGxhdGVSZXN1bHQge1xuICByZXR1cm4gaHRtbGBcbiAgICA8c3BhbiBjbGFzcz1cInNiYi1wZWFybC1jaGFpbl9fdGltZS10cmFuc2ZlciBzYmItcGVhcmwtY2hhaW5fX3RpbWUtdHJhbnNmZXItLSR7dHlwZX1cIj5cbiAgICAgIDxzYmItaWNvbiBuYW1lPSR7aWNvbn0+PC9zYmItaWNvbj5cbiAgICAgIDx0aW1lIGRhdGV0aW1lPSR7ZHVyYXRpb24gKyAnTSd9PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAkeyFsYWJlbCAmJiB0eXBlXG4gICAgICAgICAgICA/IHR5cGUgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgID8gaTE4bldhbGtpbmdEaXN0YW5jZURlcGFydHVyZVtjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICAgIDogaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWxbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICR7bGFiZWwgPyBodG1sYDxzcGFuPiR7bGFiZWx9PC9zcGFuPmAgOiBub3RoaW5nfSZuYnNwO1xuICAgICAgICA8L3NwYW4+XG4gICAgICAgICR7ZHVyYXRpb259XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX190aW1lLXdhbGt0aW1lLXByaW1lLXN5bWJvbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPic8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPm1pbjwvc3Bhbj5cbiAgICAgIDwvdGltZT5cbiAgICA8L3NwYW4+XG4gIGA7XG59XG5cbi8qKlxuICogcmVuZGVycyBhIHdhbGstdGltZSBpY29uIHdpdGggdGhlIHdhbGsgZHVyYXRpb25cbiAqL1xuZnVuY3Rpb24gcmVuZGVyV2Fsa1RpbWUoXG4gIGR1cmF0aW9uOiBudW1iZXIgfCBzdHJpbmcsXG4gIGxhYmVsOiBzdHJpbmcsXG4gIHZhcmlhbnQ6ICdsZWZ0JyB8ICdyaWdodCcsXG4pOiBUZW1wbGF0ZVJlc3VsdCB7XG4gIHJldHVybiBodG1sYFxuICAgIDxzcGFuIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX190aW1lLXdhbGt0aW1lIHNiYi1wZWFybC1jaGFpbl9fdGltZS13YWxrdGltZS0tJHt2YXJpYW50fVwiPlxuICAgICAgPHNiYi1pY29uIG5hbWU9XCJ3YWxrLXNtYWxsXCI+PC9zYmItaWNvbj5cbiAgICAgIDx0aW1lIGRhdGV0aW1lPSR7ZHVyYXRpb24gKyAnTSd9PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgJHtkdXJhdGlvbn1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItcGVhcmwtY2hhaW5fX3RpbWUtd2Fsa3RpbWUtcHJpbWUtc3ltYm9sXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Jzwvc3Bhbj5cbiAgICAgIDwvdGltZT5cbiAgICA8L3NwYW4+XG4gIGA7XG59XG5cbi8qKlxuICogQHBhcmFtIGxlZ3M6IEFuIGFycmF5IG9mIExlZyBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgam91cm5leSBsZWdzLlxuICogQHBhcmFtIGRlcGFydHVyZVdhbGs6IFRoZSB3YWxraW5nIGRpc3RhbmNlIGluIG1pbnV0ZXMgZnJvbSB0aGUgZGVwYXJ0dXJlIHBvaW50IHRvIHRoZSBmaXJzdCBsZWcuXG4gKiBAcGFyYW0gYXJyaXZhbFdhbGs6IFRoZSB3YWxraW5nIGRpc3RhbmNlIGluIG1pbnV0ZXMgZnJvbSB0aGUgbGFzdCBsZWcgdG8gdGhlIGFycml2YWwgcG9pbnQuXG4gKiBAcGFyYW0gY3VycmVudExhbmd1YWdlOiBUaGUgY3VycmVudCBsYW5ndWFnZSBmb3IgbG9jYWxpemF0aW9uLlxuICogQHJldHVybnMgcmVuZGVyRGVwYXJ0dXJlVGltZUF0dHJpYnV0ZTogQSBmdW5jdGlvbiB0aGF0IHJlbmRlcnMgdGhlIGVsZW1lbnQgZm9yIHRoZSBkZXBhcnR1cmUgdGltZSBhdHRyaWJ1dGUuXG4gKiBAcmV0dXJucyByZW5kZXJBcnJpdmFsVGltZUF0dHJpYnV0ZTogQSBmdW5jdGlvbiB0aGF0IHJlbmRlcnMgdGhlIGVsZW1lbnQgZm9yIHRoZSBhcnJpdmFsIHRpbWUgYXR0cmlidXRlLlxuICogQHJldHVybnMgYXJyaXZhbFRpbWVBdHRyaWJ1dGU6IFRoZSBhY2Nlc3MgYXR0cmlidXRlIGZvciB0aGUgYXJyaXZhbCB0aW1lLlxuICogQHJldHVybnMgZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZTogVGhlIGFjY2VzcyBhdHRyaWJ1dGUgZm9yIHRoZSBkZXBhcnR1cmUgdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlKFxuICBsZWdzOiBMZWdbXSxcbiAgZGVwYXJ0dXJlV2FsazogbnVtYmVyLFxuICBhcnJpdmFsV2FsazogbnVtYmVyLFxuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyxcbik6IHtcbiAgcmVuZGVyRGVwYXJ0dXJlVGltZUF0dHJpYnV0ZTogKCkgPT4gVGVtcGxhdGVSZXN1bHQ7XG4gIHJlbmRlckFycml2YWxUaW1lQXR0cmlidXRlOiAoKSA9PiBUZW1wbGF0ZVJlc3VsdDtcbiAgZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGw7XG4gIGFycml2YWxUaW1lQXR0cmlidXRlOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbDtcbn0ge1xuICBjb25zdCBjb25uZWN0aW9uUmlkZUxlZyA9XG4gICAgbGVncyAmJlxuICAgIChsZWdzLmZpbHRlcigobGVnKSA9PiBpc1JpZGVMZWcobGVnKSB8fCBpc0Nvbm5lY3Rpb25MZWcobGVnKSlbMF0gYXNcbiAgICAgIHwgUHRSaWRlTGVnXG4gICAgICB8IFB0Q29ubmVjdGlvbkxlZyk7XG5cbiAgY29uc3QgY29ubmVjdGlvbkxlZ05vdGljZSA9IFsnWU0nLCAnWUInLCAnWScsICdZVCddO1xuXG4gIGNvbnN0IGNvbm5lY3Rpb25GaXJzdExlZyA9IGdldFBUQ29ubmVjdGlvbkF0dHJpYnV0ZShjb25uZWN0aW9uUmlkZUxlZywgY29ubmVjdGlvbkxlZ05vdGljZSk7XG4gIGNvbnN0IGV4dGVuZGVkRmlyc3RMZWcgPSBnZXRGaXJzdEV4dGVuZGVkTGVnQXR0cmlidXRlKGNvbm5lY3Rpb25SaWRlTGVnLCBkZXBhcnR1cmVXYWxrKTtcbiAgY29uc3QgZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZSA9IGRlcGFydHVyZVdhbGtcbiAgICA/IHtcbiAgICAgICAgdGV4dDogaTE4bldhbGtpbmdEaXN0YW5jZURlcGFydHVyZVtjdXJyZW50TGFuZ3VhZ2VdLFxuICAgICAgICBkdXJhdGlvbjogZGVwYXJ0dXJlV2FsayxcbiAgICAgICAgaWNvbjogJ3dhbGstc21hbGwnLFxuICAgICAgfVxuICAgIDogbnVsbDtcblxuICBjb25zdCBnZXREZXBhcnR1cmVUeXBlID0gKCk6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsID0+IHtcbiAgICBpZiAoY29ubmVjdGlvbkZpcnN0TGVnKSB7XG4gICAgICByZXR1cm4gY29ubmVjdGlvbkZpcnN0TGVnO1xuICAgIH0gZWxzZSBpZiAoZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZSAmJiAhZXh0ZW5kZWRGaXJzdExlZyAmJiAhY29ubmVjdGlvbkZpcnN0TGVnKSB7XG4gICAgICByZXR1cm4gZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuZGVkRmlyc3RMZWcpIHtcbiAgICAgIHJldHVybiBleHRlbmRlZEZpcnN0TGVnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVuZGVyRGVwYXJ0dXJlVGltZUF0dHJpYnV0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke2Nvbm5lY3Rpb25GaXJzdExlZ1xuICAgICAgICA/IHJlbmRlcldhbGtUaW1lKGNvbm5lY3Rpb25GaXJzdExlZy5kdXJhdGlvbiwgY29ubmVjdGlvbkZpcnN0TGVnLnRleHQsICdsZWZ0JylcbiAgICAgICAgOiBub3RoaW5nfVxuICAgICAgJHtkZXBhcnR1cmVXYWxrQXR0cmlidXRlICYmICFleHRlbmRlZEZpcnN0TGVnICYmICFjb25uZWN0aW9uRmlyc3RMZWdcbiAgICAgICAgPyByZW5kZXJXYWxrVGltZShkZXBhcnR1cmVXYWxrQXR0cmlidXRlLmR1cmF0aW9uLCBkZXBhcnR1cmVXYWxrQXR0cmlidXRlLnRleHQsICdsZWZ0JylcbiAgICAgICAgOiBub3RoaW5nfVxuICAgICAgJHtleHRlbmRlZEZpcnN0TGVnXG4gICAgICAgID8gcmVuZGVyVHJhbnNmZXJUaW1lKFxuICAgICAgICAgICAgZXh0ZW5kZWRGaXJzdExlZy5kdXJhdGlvbixcbiAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcuaWNvbixcbiAgICAgICAgICAgIGN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcudGV4dCxcbiAgICAgICAgICAgICdkZXBhcnR1cmUnLFxuICAgICAgICAgIClcbiAgICAgICAgOiBub3RoaW5nfVxuICAgIGA7XG4gIH1cblxuICBjb25zdCBsYXN0TGVnID0gbGVncyAmJiBsZWdzW2xlZ3MubGVuZ3RoIC0gMV07XG4gIGNvbnN0IGxhc3RDb25uZWN0aW9uUmlkZUxlZyA9XG4gICAgKGlzQ29ubmVjdGlvbkxlZyhsYXN0TGVnKSB8fCBpc1JpZGVMZWcobGFzdExlZykpICYmIChsYXN0TGVnIGFzIFB0Q29ubmVjdGlvbkxlZyB8IFB0UmlkZUxlZyk7XG5cbiAgY29uc3QgY29ubmVjdGlvbkxhc3RMZWcgPVxuICAgIGxhc3RDb25uZWN0aW9uUmlkZUxlZyAmJiBnZXRQVENvbm5lY3Rpb25BdHRyaWJ1dGUobGFzdENvbm5lY3Rpb25SaWRlTGVnLCBjb25uZWN0aW9uTGVnTm90aWNlKTtcbiAgY29uc3QgZXh0ZW5kZWRMYXN0TGVnID1cbiAgICBsYXN0Q29ubmVjdGlvblJpZGVMZWcgJiYgZ2V0TGFzdEV4dGVuZGVkTGVnQXR0cmlidXRlKGxhc3RDb25uZWN0aW9uUmlkZUxlZywgYXJyaXZhbFdhbGspO1xuICBjb25zdCBhcnJpdmFsV2Fsa0F0dHJpYnV0ZSA9IGFycml2YWxXYWxrXG4gICAgPyB7XG4gICAgICAgIHRleHQ6IGkxOG5XYWxraW5nRGlzdGFuY2VBcnJpdmFsW2N1cnJlbnRMYW5ndWFnZV0sXG4gICAgICAgIGR1cmF0aW9uOiBhcnJpdmFsV2FsayxcbiAgICAgICAgaWNvbjogJ3dhbGstc21hbGwnLFxuICAgICAgfVxuICAgIDogbnVsbDtcblxuICBjb25zdCBnZXRBcnJpdmFsVHlwZSA9ICgpOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbm5lY3Rpb25MYXN0TGVnKSB7XG4gICAgICByZXR1cm4gY29ubmVjdGlvbkxhc3RMZWc7XG4gICAgfSBlbHNlIGlmIChhcnJpdmFsV2Fsa0F0dHJpYnV0ZSAmJiAhZXh0ZW5kZWRMYXN0TGVnICYmICFjb25uZWN0aW9uTGFzdExlZykge1xuICAgICAgcmV0dXJuIGFycml2YWxXYWxrQXR0cmlidXRlO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5kZWRMYXN0TGVnKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kZWRMYXN0TGVnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVuZGVyQXJyaXZhbFRpbWVBdHRyaWJ1dGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHtjb25uZWN0aW9uTGFzdExlZ1xuICAgICAgICA/IHJlbmRlcldhbGtUaW1lKGNvbm5lY3Rpb25MYXN0TGVnLmR1cmF0aW9uLCBjb25uZWN0aW9uTGFzdExlZy50ZXh0LCAncmlnaHQnKVxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAke2Fycml2YWxXYWxrQXR0cmlidXRlICYmICFleHRlbmRlZExhc3RMZWcgJiYgIWNvbm5lY3Rpb25MYXN0TGVnXG4gICAgICAgID8gcmVuZGVyV2Fsa1RpbWUoYXJyaXZhbFdhbGtBdHRyaWJ1dGUuZHVyYXRpb24sIGFycml2YWxXYWxrQXR0cmlidXRlLnRleHQsICdyaWdodCcpXG4gICAgICAgIDogbm90aGluZ31cbiAgICAgICR7ZXh0ZW5kZWRMYXN0TGVnXG4gICAgICAgID8gcmVuZGVyVHJhbnNmZXJUaW1lKFxuICAgICAgICAgICAgZXh0ZW5kZWRMYXN0TGVnLmR1cmF0aW9uLFxuICAgICAgICAgICAgZXh0ZW5kZWRMYXN0TGVnLmljb24sXG4gICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICBleHRlbmRlZExhc3RMZWcudGV4dCxcbiAgICAgICAgICAgICdhcnJpdmFsJyxcbiAgICAgICAgICApXG4gICAgICAgIDogbm90aGluZ31cbiAgICBgO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZW5kZXJEZXBhcnR1cmVUaW1lQXR0cmlidXRlLFxuICAgIHJlbmRlckFycml2YWxUaW1lQXR0cmlidXRlLFxuICAgIGRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6IGdldERlcGFydHVyZVR5cGUoKSxcbiAgICBhcnJpdmFsVGltZUF0dHJpYnV0ZTogZ2V0QXJyaXZhbFR5cGUoKSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJYSxNQUFBLFlBQVksQ0FBQyxRQUErRDtBQUN2RixVQUFPLDJCQUFLLGdCQUFlO0FBQzdCO0FBRWEsTUFBQSxrQkFBa0IsQ0FDN0IsUUFDMkQ7QUFDM0QsVUFBTywyQkFBSyxnQkFBZTtBQUM3QjtBQUVhLE1BQUEscUNBQXFDLENBQ2hELFdBQ3VDOztBQUNqQyxRQUFBLGVBQWEsc0NBQVEsU0FBUixtQkFBYyxhQUFZLE9BQU8sS0FBSyxTQUFTLFFBQVEsR0FBRyxJQUFJO0FBQzNFLFFBQUEsa0JBQWlCLDRDQUFRLFNBQVIsbUJBQWMsYUFBZCxtQkFBd0I7QUFBQSxJQUM3QyxjQUFjO0FBQUEsS0FDZCxzQ0FBUSxTQUFSLG1CQUFjLFNBQVMsUUFBUTtBQUFBO0FBRzFCLFNBQUE7QUFBQSxJQUNMLFVBQVcsa0JBQWtCLENBQUMsZUFBZSxVQUFVLEdBQUcsZUFBZSxTQUFTLENBQUMsS0FBTTtBQUFBLElBQ3pGLFFBQU0sNENBQVEsU0FBUixtQkFBYyxhQUFkLG1CQUF3QixNQUFNLEtBQUssT0FBTTtBQUFBLEVBQUE7QUFFbkQ7QUNBQSxTQUFTLHlCQUNQLEtBQ0EscUJBQ3lCOztBQUN6QixRQUFNLHFCQUFxQixnQkFBZ0IsR0FBRyxJQUFLLE1BQTBCO0FBRTdFLFFBQU0sMkJBQTJCLHNCQUM3Qiw4REFBb0IsWUFBcEIsbUJBQTZCLE9BQU8sQ0FBQyxX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
|
|
199
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2NvcmUvdGltZXRhYmxlL3RpbWV0YWJsZS1oZWxwZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL2NvcmUvdGltZXRhYmxlL2FjY2Vzcy1sZWctaGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExlZywgTm90aWNlIH0gZnJvbSAnLi90aW1ldGFibGUtcHJvcGVydGllcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBpc1JpZGVMZWcgPSAobGVnOiBhbnkpOiBsZWcgaXMgRXh0cmFjdDxMZWcsIHsgX190eXBlbmFtZTogJ1BUUmlkZUxlZycgfT4gPT4ge1xuICByZXR1cm4gbGVnPy5fX3R5cGVuYW1lID09PSAnUFRSaWRlTGVnJztcbn07XG5cbmV4cG9ydCBjb25zdCBpc0Nvbm5lY3Rpb25MZWcgPSAoXG4gIGxlZzogYW55LFxuKTogbGVnIGlzIEV4dHJhY3Q8TGVnLCB7IF9fdHlwZW5hbWU6ICdQVENvbm5lY3Rpb25MZWcnIH0+ID0+IHtcbiAgcmV0dXJuIGxlZz8uX190eXBlbmFtZSA9PT0gJ1BUQ29ubmVjdGlvbkxlZyc7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdFRpbWVBbmRTdHJpbmdGcm9tTm90aWNlVGV4dCA9IChcbiAgbm90aWNlPzogTm90aWNlLFxuKTogeyBkdXJhdGlvbjogbnVtYmVyOyB0ZXh0OiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSBub3RpY2U/LnRleHQ/LnRlbXBsYXRlICYmIG5vdGljZS50ZXh0LnRlbXBsYXRlLmluZGV4T2YoJygnKSArIDE7XG4gIGNvbnN0IG5vdGljZUR1cmF0aW9uID0gbm90aWNlPy50ZXh0Py50ZW1wbGF0ZT8uc3Vic3RyaW5nKFxuICAgIGZpcnN0SW5kZXggfHwgMCxcbiAgICBub3RpY2U/LnRleHQ/LnRlbXBsYXRlLmluZGV4T2YoJyknKSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGR1cmF0aW9uOiAobm90aWNlRHVyYXRpb24gJiYgK25vdGljZUR1cmF0aW9uLnN1YnN0cmluZygwLCBub3RpY2VEdXJhdGlvbi5sZW5ndGggLSAxKSkgfHwgMCxcbiAgICB0ZXh0OiBub3RpY2U/LnRleHQ/LnRlbXBsYXRlPy5zcGxpdCgnKCcpWzBdIHx8ICcnLFxuICB9O1xufTtcbiIsIi8vIFRoaXMgaGVscGVyIGZpbGUgY29udGFpbnMgc2V2ZXJhbCBmdW5jdGlvbnMgcmVsYXRlZCB0byBhY2Nlc3NpbmcgYXR0cmlidXRlcyBmb3IgdGhlIGNvbm5lY3Rpb25zLlxuXG5pbXBvcnQge1xuICBpMThuV2Fsa2luZ0Rpc3RhbmNlQXJyaXZhbCxcbiAgaTE4bldhbGtpbmdEaXN0YW5jZURlcGFydHVyZSxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pMThuLmpzJztcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7XG4gIGV4dHJhY3RUaW1lQW5kU3RyaW5nRnJvbU5vdGljZVRleHQsXG4gIGlzQ29ubmVjdGlvbkxlZyxcbiAgaXNSaWRlTGVnLFxufSBmcm9tICcuL3RpbWV0YWJsZS1oZWxwZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBMZWcsIFB0Q29ubmVjdGlvbkxlZywgUHRSaWRlTGVnIH0gZnJvbSAnLi90aW1ldGFibGUtcHJvcGVydGllcy5qcyc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5qcyc7XG5cbmludGVyZmFjZSBJQWNjZXNzQXR0cmlidXRlIHtcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgdGV4dDogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHJldHVybnMgdGhlIGF0dHJpYnV0ZSBvZiBhIENvbm5lY3Rpb25MZWdcbiAqL1xuZnVuY3Rpb24gZ2V0UFRDb25uZWN0aW9uQXR0cmlidXRlKFxuICBsZWc6IFB0UmlkZUxlZyB8IFB0Q29ubmVjdGlvbkxlZyxcbiAgY29ubmVjdGlvbkxlZ05vdGljZTogc3RyaW5nW10sXG4pOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbCB7XG4gIGNvbnN0IGNvbm5lY3Rpb25GaXJzdExlZyA9IGlzQ29ubmVjdGlvbkxlZyhsZWcpID8gKGxlZyBhcyBQdENvbm5lY3Rpb25MZWcpIDogbnVsbDtcblxuICBjb25zdCBjb25uZWN0aW9uRmlyc3RMZWdOb3RpY2UgPSBjb25uZWN0aW9uRmlyc3RMZWdcbiAgICA/IGNvbm5lY3Rpb25GaXJzdExlZz8ubm90aWNlcz8uZmlsdGVyKChub3RpY2UpID0+IGNvbm5lY3Rpb25MZWdOb3RpY2UuaW5jbHVkZXMobm90aWNlLm5hbWUpKVswXVxuICAgIDogbnVsbDtcblxuICByZXR1cm4gY29ubmVjdGlvbkZpcnN0TGVnTm90aWNlXG4gICAgPyB7XG4gICAgICAgIGR1cmF0aW9uOiBjb25uZWN0aW9uRmlyc3RMZWc/LmR1cmF0aW9uIHx8IDAsXG4gICAgICAgIHRleHQ6IGNvbm5lY3Rpb25GaXJzdExlZ05vdGljZT8udGV4dD8udGVtcGxhdGUgfHwgJycsXG4gICAgICAgIGljb246ICd3YWxrLXNtYWxsJyxcbiAgICAgIH1cbiAgICA6IG51bGw7XG59XG5cbi8qKlxuICogQHJldHVybnMgdGhlIGV4dGVuZGVkIGVudGVyIGF0dHJpYnV0ZSBvZiB0aGUgUFRSaWRlTGVnXG4gKi9cbmZ1bmN0aW9uIGdldEZpcnN0RXh0ZW5kZWRMZWdBdHRyaWJ1dGUoXG4gIGxlZzogUHRSaWRlTGVnIHwgUHRDb25uZWN0aW9uTGVnLFxuICBkZXBhcnR1cmVXYWxrOiBudW1iZXIsXG4gIGExMXlGb290cGF0aDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgY3VycmVudExhbmd1YWdlOiBzdHJpbmcsXG4pOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbCB7XG4gIC8vIEV4dGVuZGVkIGVudGVyXG4gIGNvbnN0IGV4dGVuZGVkRmlyc3RMZWcgPSBpc1JpZGVMZWcobGVnKVxuICAgID8gKGxlZyBhcyBQdFJpZGVMZWcpPy5zZXJ2aWNlSm91cm5leT8ubm90aWNlcz8uZmlsdGVyKChub3RpY2UpID0+XG4gICAgICAgIFsnQ0knXS5pbmNsdWRlcyhub3RpY2UubmFtZSksXG4gICAgICApWzBdXG4gICAgOiBudWxsO1xuXG4gIGNvbnN0IGV4dHJhY3RUaW1lQW5kU3RyaW5nID1cbiAgICBleHRlbmRlZEZpcnN0TGVnICYmIGV4dHJhY3RUaW1lQW5kU3RyaW5nRnJvbU5vdGljZVRleHQoZXh0ZW5kZWRGaXJzdExlZyk7XG5cbiAgcmV0dXJuIGV4dGVuZGVkRmlyc3RMZWdcbiAgICA/IHtcbiAgICAgICAgZHVyYXRpb246IChleHRyYWN0VGltZUFuZFN0cmluZz8uZHVyYXRpb24gfHwgMCkgKyAoZGVwYXJ0dXJlV2FsayB8fCAwKSxcbiAgICAgICAgdGV4dDogYTExeUZvb3RwYXRoXG4gICAgICAgICAgPyBpMThuV2Fsa2luZ0Rpc3RhbmNlRGVwYXJ0dXJlW2N1cnJlbnRMYW5ndWFnZV1cbiAgICAgICAgICA6IGV4dHJhY3RUaW1lQW5kU3RyaW5nPy50ZXh0IHx8ICcnLFxuICAgICAgICBpY29uOiBhMTF5Rm9vdHBhdGggPyAnd2hlZWxjaGFpci1zbWFsbCcgOiBgc2EtJHtleHRlbmRlZEZpcnN0TGVnPy5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICB9XG4gICAgOiBudWxsO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBleGl0IGF0dHJpYnV0ZSBvZiB0aGUgUFRSaWRlTGVnXG4gKi9cbmZ1bmN0aW9uIGdldExhc3RFeHRlbmRlZExlZ0F0dHJpYnV0ZShcbiAgbGVnOiBMZWcsXG4gIGFycml2YWxXYWxrOiBudW1iZXIsXG4gIGExMXlGb290cGF0aDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgY3VycmVudExhbmd1YWdlOiBzdHJpbmcsXG4pOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbCB7XG4gIC8vIEV4dGVuZGVkIGV4aXRcbiAgY29uc3QgZXh0ZW5kZWRMYXN0TGVnID0gaXNSaWRlTGVnKGxlZylcbiAgICA/IChsZWcgYXMgUHRSaWRlTGVnKT8uc2VydmljZUpvdXJuZXk/Lm5vdGljZXM/LmZpbHRlcigobm90aWNlKSA9PlxuICAgICAgICBbJ0NPJ10uaW5jbHVkZXMobm90aWNlLm5hbWUpLFxuICAgICAgKVswXVxuICAgIDogbnVsbDtcblxuICBjb25zdCBleHRyYWN0VGltZUFuZFN0cmluZyA9XG4gICAgZXh0ZW5kZWRMYXN0TGVnICYmIGV4dHJhY3RUaW1lQW5kU3RyaW5nRnJvbU5vdGljZVRleHQoZXh0ZW5kZWRMYXN0TGVnKTtcblxuICByZXR1cm4gZXh0ZW5kZWRMYXN0TGVnXG4gICAgPyB7XG4gICAgICAgIGR1cmF0aW9uOiAoZXh0cmFjdFRpbWVBbmRTdHJpbmc/LmR1cmF0aW9uIHx8IDApICsgKGFycml2YWxXYWxrIHx8IDApLFxuICAgICAgICB0ZXh0OiBhMTF5Rm9vdHBhdGhcbiAgICAgICAgICA/IGkxOG5XYWxraW5nRGlzdGFuY2VBcnJpdmFsW2N1cnJlbnRMYW5ndWFnZV1cbiAgICAgICAgICA6IGV4dHJhY3RUaW1lQW5kU3RyaW5nPy50ZXh0IHx8ICcnLFxuICAgICAgICBpY29uOiBhMTF5Rm9vdHBhdGggPyAnd2hlZWxjaGFpci1zbWFsbCcgOiBgc2EtJHtleHRlbmRlZExhc3RMZWc/Lm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgIH1cbiAgICA6IG51bGw7XG59XG5cbi8qKlxuICogcmVuZGVycyB0aGUgZXh0ZW5kZWQgZXhpdC9lbnRlciBpY29uIHdpdGggdGhlIGR1cmF0aW9uXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclRyYW5zZmVyVGltZShcbiAgZHVyYXRpb246IG51bWJlciB8IHN0cmluZyxcbiAgaWNvbjogc3RyaW5nLFxuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyxcbiAgbGFiZWw/OiBzdHJpbmcsXG4gIHR5cGU/OiAnZGVwYXJ0dXJlJyB8ICdhcnJpdmFsJyxcbik6IFRlbXBsYXRlUmVzdWx0IHtcbiAgcmV0dXJuIGh0bWxgXG4gICAgPHNwYW4gY2xhc3M9XCJzYmItcGVhcmwtY2hhaW5fX3RpbWUtdHJhbnNmZXIgc2JiLXBlYXJsLWNoYWluX190aW1lLXRyYW5zZmVyLS0ke2ljb259LSR7dHlwZX1cIj5cbiAgICAgIDxzYmItaWNvbiBuYW1lPSR7aWNvbn0+PC9zYmItaWNvbj5cbiAgICAgIDx0aW1lIGRhdGV0aW1lPSR7ZHVyYXRpb24gKyAnTSd9PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAkeyFsYWJlbCAmJiB0eXBlXG4gICAgICAgICAgICA/IHR5cGUgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgID8gaTE4bldhbGtpbmdEaXN0YW5jZURlcGFydHVyZVtjdXJyZW50TGFuZ3VhZ2VdXG4gICAgICAgICAgICAgIDogaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWxbY3VycmVudExhbmd1YWdlXVxuICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICR7bGFiZWwgPyBodG1sYDxzcGFuPiR7bGFiZWx9PC9zcGFuPmAgOiBub3RoaW5nfSZuYnNwO1xuICAgICAgICA8L3NwYW4+XG4gICAgICAgICR7ZHVyYXRpb259XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXBlYXJsLWNoYWluX190aW1lLXdhbGt0aW1lLXByaW1lLXN5bWJvbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPic8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPm1pbjwvc3Bhbj5cbiAgICAgIDwvdGltZT5cbiAgICA8L3NwYW4+XG4gIGA7XG59XG5cbi8qKlxuICogcmVuZGVycyBhIHdhbGstdGltZSBpY29uIHdpdGggdGhlIHdhbGsgZHVyYXRpb25cbiAqL1xuZnVuY3Rpb24gcmVuZGVyV2Fsa1RpbWUoXG4gIGR1cmF0aW9uOiBudW1iZXIgfCBzdHJpbmcsXG4gIGxhYmVsOiBzdHJpbmcsXG4gIHZhcmlhbnQ6ICdsZWZ0JyB8ICdyaWdodCcsXG4gIGljb246IHN0cmluZyxcbik6IFRlbXBsYXRlUmVzdWx0IHtcbiAgcmV0dXJuIGh0bWxgXG4gICAgPHNwYW4gY2xhc3M9XCJzYmItcGVhcmwtY2hhaW5fX3RpbWUtd2Fsa3RpbWUgc2JiLXBlYXJsLWNoYWluX190aW1lLXdhbGt0aW1lLS0ke2ljb259LSR7dmFyaWFudH1cIj5cbiAgICAgIDxzYmItaWNvbiBuYW1lPSR7aWNvbn0+PC9zYmItaWNvbj5cbiAgICAgIDx0aW1lIGRhdGV0aW1lPSR7ZHVyYXRpb24gKyAnTSd9PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke2xhYmVsfTwvc3Bhbj5cbiAgICAgICAgJHtkdXJhdGlvbn1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItcGVhcmwtY2hhaW5fX3RpbWUtd2Fsa3RpbWUtcHJpbWUtc3ltYm9sXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Jzwvc3Bhbj5cbiAgICAgIDwvdGltZT5cbiAgICA8L3NwYW4+XG4gIGA7XG59XG5cbi8qKlxuICogQHBhcmFtIGxlZ3M6IEFuIGFycmF5IG9mIExlZyBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgam91cm5leSBsZWdzLlxuICogQHBhcmFtIGRlcGFydHVyZVdhbGs6IFRoZSB3YWxraW5nIGRpc3RhbmNlIGluIG1pbnV0ZXMgZnJvbSB0aGUgZGVwYXJ0dXJlIHBvaW50IHRvIHRoZSBmaXJzdCBsZWcuXG4gKiBAcGFyYW0gYXJyaXZhbFdhbGs6IFRoZSB3YWxraW5nIGRpc3RhbmNlIGluIG1pbnV0ZXMgZnJvbSB0aGUgbGFzdCBsZWcgdG8gdGhlIGFycml2YWwgcG9pbnQuXG4gKiBAcGFyYW0gY3VycmVudExhbmd1YWdlOiBUaGUgY3VycmVudCBsYW5ndWFnZSBmb3IgbG9jYWxpemF0aW9uLlxuICogQHBhcmFtIGExMXlGb290cGF0aDogV2hldGhlciB0aGUgYTExeS1pY29uIHNob3VsZCBiZSBzaG93bi5cbiAqIEByZXR1cm5zIHJlbmRlckRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6IEEgZnVuY3Rpb24gdGhhdCByZW5kZXJzIHRoZSBlbGVtZW50IGZvciB0aGUgZGVwYXJ0dXJlIHRpbWUgYXR0cmlidXRlLlxuICogQHJldHVybnMgcmVuZGVyQXJyaXZhbFRpbWVBdHRyaWJ1dGU6IEEgZnVuY3Rpb24gdGhhdCByZW5kZXJzIHRoZSBlbGVtZW50IGZvciB0aGUgYXJyaXZhbCB0aW1lIGF0dHJpYnV0ZS5cbiAqIEByZXR1cm5zIGFycml2YWxUaW1lQXR0cmlidXRlOiBUaGUgYWNjZXNzIGF0dHJpYnV0ZSBmb3IgdGhlIGFycml2YWwgdGltZS5cbiAqIEByZXR1cm5zIGRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6IFRoZSBhY2Nlc3MgYXR0cmlidXRlIGZvciB0aGUgZGVwYXJ0dXJlIHRpbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXBhcnR1cmVBcnJpdmFsVGltZUF0dHJpYnV0ZShcbiAgbGVnczogTGVnW10sXG4gIGRlcGFydHVyZVdhbGs6IG51bWJlcixcbiAgYXJyaXZhbFdhbGs6IG51bWJlcixcbiAgY3VycmVudExhbmd1YWdlOiBzdHJpbmcsXG4gIGExMXlGb290cGF0aD86IGJvb2xlYW4sXG4pOiB7XG4gIHJlbmRlckRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6ICgpID0+IFRlbXBsYXRlUmVzdWx0O1xuICByZW5kZXJBcnJpdmFsVGltZUF0dHJpYnV0ZTogKCkgPT4gVGVtcGxhdGVSZXN1bHQ7XG4gIGRlcGFydHVyZVRpbWVBdHRyaWJ1dGU6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsO1xuICBhcnJpdmFsVGltZUF0dHJpYnV0ZTogSUFjY2Vzc0F0dHJpYnV0ZSB8IG51bGw7XG59IHtcbiAgY29uc3QgY29ubmVjdGlvblJpZGVMZWcgPVxuICAgIGxlZ3MgJiZcbiAgICAobGVncy5maWx0ZXIoKGxlZykgPT4gaXNSaWRlTGVnKGxlZykgfHwgaXNDb25uZWN0aW9uTGVnKGxlZykpWzBdIGFzXG4gICAgICB8IFB0UmlkZUxlZ1xuICAgICAgfCBQdENvbm5lY3Rpb25MZWcpO1xuXG4gIGNvbnN0IGNvbm5lY3Rpb25MZWdOb3RpY2UgPSBbJ1lNJywgJ1lCJywgJ1knLCAnWVQnXTtcblxuICBjb25zdCBjb25uZWN0aW9uRmlyc3RMZWcgPSBnZXRQVENvbm5lY3Rpb25BdHRyaWJ1dGUoY29ubmVjdGlvblJpZGVMZWcsIGNvbm5lY3Rpb25MZWdOb3RpY2UpO1xuICBjb25zdCBleHRlbmRlZEZpcnN0TGVnID0gZ2V0Rmlyc3RFeHRlbmRlZExlZ0F0dHJpYnV0ZShcbiAgICBjb25uZWN0aW9uUmlkZUxlZyxcbiAgICBkZXBhcnR1cmVXYWxrLFxuICAgIGExMXlGb290cGF0aCxcbiAgICBjdXJyZW50TGFuZ3VhZ2UsXG4gICk7XG4gIGNvbnN0IGRlcGFydHVyZVdhbGtBdHRyaWJ1dGUgPSBkZXBhcnR1cmVXYWxrXG4gICAgPyB7XG4gICAgICAgIHRleHQ6IGkxOG5XYWxraW5nRGlzdGFuY2VEZXBhcnR1cmVbY3VycmVudExhbmd1YWdlXSxcbiAgICAgICAgZHVyYXRpb246IGRlcGFydHVyZVdhbGssXG4gICAgICAgIGljb246IGExMXlGb290cGF0aCA/ICd3aGVlbGNoYWlyLXNtYWxsJyA6ICd3YWxrLXNtYWxsJyxcbiAgICAgIH1cbiAgICA6IG51bGw7XG5cbiAgY29uc3QgZ2V0RGVwYXJ0dXJlVHlwZSA9ICgpOiBJQWNjZXNzQXR0cmlidXRlIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbm5lY3Rpb25GaXJzdExlZykge1xuICAgICAgcmV0dXJuIGNvbm5lY3Rpb25GaXJzdExlZztcbiAgICB9IGVsc2UgaWYgKGRlcGFydHVyZVdhbGtBdHRyaWJ1dGUgJiYgIWV4dGVuZGVkRmlyc3RMZWcgJiYgIWNvbm5lY3Rpb25GaXJzdExlZykge1xuICAgICAgcmV0dXJuIGRlcGFydHVyZVdhbGtBdHRyaWJ1dGU7XG4gICAgfSBlbHNlIGlmIChleHRlbmRlZEZpcnN0TGVnKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kZWRGaXJzdExlZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHJlbmRlckRlcGFydHVyZVRpbWVBdHRyaWJ1dGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHtjb25uZWN0aW9uRmlyc3RMZWdcbiAgICAgICAgPyByZW5kZXJXYWxrVGltZShcbiAgICAgICAgICAgIGNvbm5lY3Rpb25GaXJzdExlZy5kdXJhdGlvbixcbiAgICAgICAgICAgIGNvbm5lY3Rpb25GaXJzdExlZy50ZXh0LFxuICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgY29ubmVjdGlvbkZpcnN0TGVnLmljb24sXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAke2RlcGFydHVyZVdhbGtBdHRyaWJ1dGUgJiYgIWV4dGVuZGVkRmlyc3RMZWcgJiYgIWNvbm5lY3Rpb25GaXJzdExlZ1xuICAgICAgICA/IHJlbmRlcldhbGtUaW1lKFxuICAgICAgICAgICAgZGVwYXJ0dXJlV2Fsa0F0dHJpYnV0ZS5kdXJhdGlvbixcbiAgICAgICAgICAgIGRlcGFydHVyZVdhbGtBdHRyaWJ1dGUudGV4dCxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgIGRlcGFydHVyZVdhbGtBdHRyaWJ1dGUuaWNvbixcbiAgICAgICAgICApXG4gICAgICAgIDogbm90aGluZ31cbiAgICAgICR7ZXh0ZW5kZWRGaXJzdExlZ1xuICAgICAgICA/IGExMXlGb290cGF0aFxuICAgICAgICAgID8gcmVuZGVyV2Fsa1RpbWUoXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcuZHVyYXRpb24sXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcudGV4dCxcbiAgICAgICAgICAgICAgJ2xlZnQnLFxuICAgICAgICAgICAgICBleHRlbmRlZEZpcnN0TGVnLmljb24sXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiByZW5kZXJUcmFuc2ZlclRpbWUoXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcuZHVyYXRpb24sXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlyc3RMZWcuaWNvbixcbiAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICBleHRlbmRlZEZpcnN0TGVnLnRleHQsXG4gICAgICAgICAgICAgICdkZXBhcnR1cmUnLFxuICAgICAgICAgICAgKVxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIGNvbnN0IGxhc3RMZWcgPSBsZWdzICYmIGxlZ3NbbGVncy5sZW5ndGggLSAxXTtcbiAgY29uc3QgbGFzdENvbm5lY3Rpb25SaWRlTGVnID1cbiAgICAoaXNDb25uZWN0aW9uTGVnKGxhc3RMZWcpIHx8IGlzUmlkZUxlZyhsYXN0TGVnKSkgJiYgKGxhc3RMZWcgYXMgUHRDb25uZWN0aW9uTGVnIHwgUHRSaWRlTGVnKTtcblxuICBjb25zdCBjb25uZWN0aW9uTGFzdExlZyA9XG4gICAgbGFzdENvbm5lY3Rpb25SaWRlTGVnICYmIGdldFBUQ29ubmVjdGlvbkF0dHJpYnV0ZShsYXN0Q29ubmVjdGlvblJpZGVMZWcsIGNvbm5lY3Rpb25MZWdOb3RpY2UpO1xuICBjb25zdCBleHRlbmRlZExhc3RMZWcgPVxuICAgIGxhc3RDb25uZWN0aW9uUmlkZUxlZyAmJlxuICAgIGdldExhc3RFeHRlbmRlZExlZ0F0dHJpYnV0ZShsYXN0Q29ubmVjdGlvblJpZGVMZWcsIGFycml2YWxXYWxrLCBhMTF5Rm9vdHBhdGgsIGN1cnJlbnRMYW5ndWFnZSk7XG4gIGNvbnN0IGFycml2YWxXYWxrQXR0cmlidXRlID0gYXJyaXZhbFdhbGtcbiAgICA/IHtcbiAgICAgICAgdGV4dDogaTE4bldhbGtpbmdEaXN0YW5jZUFycml2YWxbY3VycmVudExhbmd1YWdlXSxcbiAgICAgICAgZHVyYXRpb246IGFycml2YWxXYWxrLFxuICAgICAgICBpY29uOiBhMTF5Rm9vdHBhdGggPyAnd2hlZWxjaGFpci1zbWFsbCcgOiAnd2Fsay1zbWFsbCcsXG4gICAgICB9XG4gICAgOiBudWxsO1xuXG4gIGNvbnN0IGdldEFycml2YWxUeXBlID0gKCk6IElBY2Nlc3NBdHRyaWJ1dGUgfCBudWxsID0+IHtcbiAgICBpZiAoY29ubmVjdGlvbkxhc3RMZWcpIHtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uTGFzdExlZztcbiAgICB9IGVsc2UgaWYgKGFycml2YWxXYWxrQXR0cmlidXRlICYmICFleHRlbmRlZExhc3RMZWcgJiYgIWNvbm5lY3Rpb25MYXN0TGVnKSB7XG4gICAgICByZXR1cm4gYXJyaXZhbFdhbGtBdHRyaWJ1dGU7XG4gICAgfSBlbHNlIGlmIChleHRlbmRlZExhc3RMZWcpIHtcbiAgICAgIHJldHVybiBleHRlbmRlZExhc3RMZWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiByZW5kZXJBcnJpdmFsVGltZUF0dHJpYnV0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke2Nvbm5lY3Rpb25MYXN0TGVnXG4gICAgICAgID8gcmVuZGVyV2Fsa1RpbWUoXG4gICAgICAgICAgICBjb25uZWN0aW9uTGFzdExlZy5kdXJhdGlvbixcbiAgICAgICAgICAgIGNvbm5lY3Rpb25MYXN0TGVnLnRleHQsXG4gICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgY29ubmVjdGlvbkxhc3RMZWcuaWNvbixcbiAgICAgICAgICApXG4gICAgICAgIDogbm90aGluZ31cbiAgICAgICR7YXJyaXZhbFdhbGtBdHRyaWJ1dGUgJiYgIWV4dGVuZGVkTGFzdExlZyAmJiAhY29ubmVjdGlvbkxhc3RMZWdcbiAgICAgICAgPyByZW5kZXJXYWxrVGltZShcbiAgICAgICAgICAgIGFycml2YWxXYWxrQXR0cmlidXRlLmR1cmF0aW9uLFxuICAgICAgICAgICAgYXJyaXZhbFdhbGtBdHRyaWJ1dGUudGV4dCxcbiAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICBhcnJpdmFsV2Fsa0F0dHJpYnV0ZS5pY29uLFxuICAgICAgICAgIClcbiAgICAgICAgOiBub3RoaW5nfVxuICAgICAgJHtleHRlbmRlZExhc3RMZWdcbiAgICAgICAgPyBhMTF5Rm9vdHBhdGhcbiAgICAgICAgICA/IHJlbmRlcldhbGtUaW1lKFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcuZHVyYXRpb24sXG4gICAgICAgICAgICAgIGV4dGVuZGVkTGFzdExlZy50ZXh0LFxuICAgICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcuaWNvbixcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IHJlbmRlclRyYW5zZmVyVGltZShcbiAgICAgICAgICAgICAgZXh0ZW5kZWRMYXN0TGVnLmR1cmF0aW9uLFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcuaWNvbixcbiAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICBleHRlbmRlZExhc3RMZWcudGV4dCxcbiAgICAgICAgICAgICAgJ2Fycml2YWwnLFxuICAgICAgICAgICAgKVxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVuZGVyRGVwYXJ0dXJlVGltZUF0dHJpYnV0ZSxcbiAgICByZW5kZXJBcnJpdmFsVGltZUF0dHJpYnV0ZSxcbiAgICBkZXBhcnR1cmVUaW1lQXR0cmlidXRlOiBnZXREZXBhcnR1cmVUeXBlKCksXG4gICAgYXJyaXZhbFRpbWVBdHRyaWJ1dGU6IGdldEFycml2YWxUeXBlKCksXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSWEsTUFBQSxZQUFZ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
|