@sbb-esta/lyne-elements-experimental 2.5.1 → 2.7.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.
Files changed (104) hide show
  1. package/core/datetime/date-helper.js +191 -0
  2. package/core/datetime.d.ts +3 -0
  3. package/core/datetime.d.ts.map +1 -1
  4. package/core/datetime.js +3 -189
  5. package/core/timetable/access-leg-helper.js +94 -0
  6. package/core/timetable/timetable-helper.js +13 -0
  7. package/core/timetable/timetable-properties.js +1 -0
  8. package/core/timetable.d.ts +3 -0
  9. package/core/timetable.d.ts.map +1 -1
  10. package/core/timetable.js +6 -102
  11. package/custom-elements.json +602 -433
  12. package/development/core/datetime/date-helper.js +285 -0
  13. package/development/core/datetime.d.ts +3 -0
  14. package/development/core/datetime.d.ts.map +1 -1
  15. package/development/core/datetime.js +2 -281
  16. package/development/core/timetable/access-leg-helper.js +128 -0
  17. package/development/core/timetable/timetable-helper.js +21 -0
  18. package/development/core/timetable/timetable-properties.js +2 -0
  19. package/development/core/timetable.d.ts +3 -0
  20. package/development/core/timetable.d.ts.map +1 -1
  21. package/development/core/timetable.js +3 -139
  22. package/development/{differenceInMinutes-Cmyza6nm.js → differenceInMinutes-CHSyWiQs.js} +2 -2
  23. package/development/{format-BU7bjY-L.js → format-D0-yhzi4.js} +3 -3
  24. package/development/{isValid-DO_pHwcW.js → isValid-Bo4R7iA7.js} +2 -2
  25. package/development/journey-summary/journey-summary.js +297 -0
  26. package/development/journey-summary.d.ts +3 -0
  27. package/development/journey-summary.d.ts.map +1 -1
  28. package/development/journey-summary.js +2 -294
  29. package/development/pearl-chain/pearl-chain.js +649 -0
  30. package/development/pearl-chain-time/pearl-chain-time.js +315 -0
  31. package/development/pearl-chain-time.d.ts +3 -0
  32. package/development/pearl-chain-time.d.ts.map +1 -1
  33. package/development/pearl-chain-time.js +2 -312
  34. package/development/pearl-chain-vertical/pearl-chain-vertical.js +45 -0
  35. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.js +395 -0
  36. package/development/pearl-chain-vertical-item.d.ts +3 -0
  37. package/development/pearl-chain-vertical-item.d.ts.map +1 -1
  38. package/development/pearl-chain-vertical-item.js +2 -392
  39. package/development/pearl-chain-vertical.d.ts +3 -0
  40. package/development/pearl-chain-vertical.d.ts.map +1 -1
  41. package/development/pearl-chain-vertical.js +2 -42
  42. package/development/pearl-chain.d.ts +3 -0
  43. package/development/pearl-chain.d.ts.map +1 -1
  44. package/development/pearl-chain.js +2 -646
  45. package/development/timetable-duration/timetable-duration.js +119 -0
  46. package/development/timetable-duration.d.ts +3 -0
  47. package/development/timetable-duration.d.ts.map +1 -1
  48. package/development/timetable-duration.js +2 -116
  49. package/development/timetable-row/timetable-row.d.ts +1 -0
  50. package/development/timetable-row/timetable-row.d.ts.map +1 -1
  51. package/development/timetable-row/timetable-row.js +820 -0
  52. package/development/timetable-row.d.ts +3 -0
  53. package/development/timetable-row.d.ts.map +1 -1
  54. package/development/timetable-row.js +2 -788
  55. package/development/{toDate-B6IBgPYH.js → toDate-D_Vjps95.js} +5 -5
  56. package/{differenceInMinutes-BI2zjbtS.js → differenceInMinutes-BMqUZdhj.js} +1 -1
  57. package/{format-CUYwLzoN.js → format-Dg8rkk7h.js} +2 -2
  58. package/index.d.ts +7 -7
  59. package/index.js +7 -7
  60. package/{isValid-mroh13Xp.js → isValid-DJ69OMZJ.js} +6 -6
  61. package/journey-summary/journey-summary.js +190 -0
  62. package/journey-summary.d.ts +3 -0
  63. package/journey-summary.d.ts.map +1 -1
  64. package/journey-summary.js +2 -188
  65. package/package.json +3 -3
  66. package/pearl-chain/pearl-chain.js +177 -0
  67. package/pearl-chain-time/pearl-chain-time.js +153 -0
  68. package/pearl-chain-time.d.ts +3 -0
  69. package/pearl-chain-time.d.ts.map +1 -1
  70. package/pearl-chain-time.js +2 -151
  71. package/pearl-chain-vertical/pearl-chain-vertical.js +23 -0
  72. package/pearl-chain-vertical-item/pearl-chain-vertical-item.js +71 -0
  73. package/pearl-chain-vertical-item.d.ts +3 -0
  74. package/pearl-chain-vertical-item.d.ts.map +1 -1
  75. package/pearl-chain-vertical-item.js +2 -69
  76. package/pearl-chain-vertical.d.ts +3 -0
  77. package/pearl-chain-vertical.d.ts.map +1 -1
  78. package/pearl-chain-vertical.js +2 -21
  79. package/pearl-chain.d.ts +3 -0
  80. package/pearl-chain.d.ts.map +1 -1
  81. package/pearl-chain.js +2 -175
  82. package/timetable-duration/timetable-duration.js +55 -0
  83. package/timetable-duration.d.ts +3 -0
  84. package/timetable-duration.d.ts.map +1 -1
  85. package/timetable-duration.js +2 -53
  86. package/timetable-row/timetable-row.d.ts +1 -0
  87. package/timetable-row/timetable-row.d.ts.map +1 -1
  88. package/timetable-row/timetable-row.js +462 -0
  89. package/timetable-row.d.ts +3 -0
  90. package/timetable-row.d.ts.map +1 -1
  91. package/timetable-row.js +9 -439
  92. package/{toDate-DQg4ZFnf.js → toDate-BCXKL_wM.js} +4 -4
  93. package/development/pearl-chain/pearl-chain.sample-data.d.ts +0 -140
  94. package/development/pearl-chain/pearl-chain.sample-data.d.ts.map +0 -1
  95. package/development/timetable-duration/timetable-duration.sample-data.d.ts +0 -6
  96. package/development/timetable-duration/timetable-duration.sample-data.d.ts.map +0 -1
  97. package/development/timetable-row/timetable-row.sample-data.d.ts +0 -24
  98. package/development/timetable-row/timetable-row.sample-data.d.ts.map +0 -1
  99. package/pearl-chain/pearl-chain.sample-data.d.ts +0 -140
  100. package/pearl-chain/pearl-chain.sample-data.d.ts.map +0 -1
  101. package/timetable-duration/timetable-duration.sample-data.d.ts +0 -6
  102. package/timetable-duration/timetable-duration.sample-data.d.ts.map +0 -1
  103. package/timetable-row/timetable-row.sample-data.d.ts +0 -24
  104. package/timetable-row/timetable-row.sample-data.d.ts.map +0 -1
@@ -1,790 +1,4 @@
1
- var __typeError = (msg) => {
2
- throw TypeError(msg);
3
- };
4
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
- import { __runInitializers, __esDecorate } from "tslib";
9
- import { SbbLanguageController } from "@sbb-esta/lyne-elements/core/controllers.js";
10
- import { defaultDateAdapter } from "@sbb-esta/lyne-elements/core/datetime.js";
11
- import { forceType } from "@sbb-esta/lyne-elements/core/decorators.js";
12
- import { setOrRemoveAttribute } from "@sbb-esta/lyne-elements/core/dom.js";
13
- import { i18nFromPlatform, i18nDeparture, i18nMeansOfTransport, i18nDirection, i18nRealTimeInfo, i18nSupersaver, i18nTransferProcedures, i18nArrival, i18nClass, i18nOccupancy, i18nTravelhints, i18nTripDuration, i18nNew, i18nTripQuayChange } from "@sbb-esta/lyne-elements/core/i18n.js";
14
- import { css, LitElement, nothing, html } from "lit";
15
- import { customElement, property } from "lit/decorators.js";
16
- import { removeTimezoneFromISOTimeString, durationToTime } from "./core/datetime.js";
17
- import { isRideLeg, getDepartureArrivalTimeAttribute } from "./core/timetable.js";
18
- import "@sbb-esta/lyne-elements/card.js";
19
- import "@sbb-esta/lyne-elements/icon.js";
20
- import "@sbb-esta/lyne-elements/timetable-occupancy.js";
21
- import "./pearl-chain-time.js";
22
- import { f as format } from "./format-BU7bjY-L.js";
23
- const style = css`*,
24
- ::before,
25
- ::after {
26
- box-sizing: border-box;
27
- }
28
-
29
- :host {
30
- --sbb-timetable-row-gap: var(--sbb-spacing-fixed-2x);
31
- --sbb-timetable-row-height: 1.5625rem;
32
- --sbb-timetable-row-height-header: 1.25rem;
33
- --sbb-timetable-row-height-footer: 1rem;
34
- --sbb-timetable-row-skeleton-pulse-duration: 1800ms;
35
- display: block;
36
- }
37
-
38
- :host([disable-animation]) {
39
- --sbb-timetable-row-skeleton-pulse-duration: 0;
40
- }
41
-
42
- .sbb-timetable__row-transport-icon {
43
- --sbb-icon-svg-width: 1.25rem;
44
- --sbb-icon-svg-height: 1.25rem;
45
- }
46
-
47
- .sbb-travel-hints__item {
48
- --sbb-icon-svg-height: 0.875rem;
49
- }
50
-
51
- .sbb-screen-reader-only {
52
- border: 0;
53
- clip: rect(0 0 0 0);
54
- height: 1px;
55
- margin: -1px;
56
- overflow: hidden;
57
- padding: 0;
58
- position: absolute;
59
- white-space: nowrap;
60
- width: 1px;
61
- }
62
-
63
- .sbb-timetable__row--quay {
64
- margin-inline-end: var(--sbb-spacing-fixed-1x);
65
- }
66
-
67
- .sbb-timetable__row--quay-type {
68
- float: left;
69
- }
70
-
71
- ul {
72
- list-style: none;
73
- margin: 0;
74
- padding: 0;
75
- font-size: inherit;
76
- display: inline-flex;
77
- }
78
-
79
- li {
80
- display: inline-flex;
81
- align-self: center;
82
- }
83
-
84
- .sbb-timetable__row-transport {
85
- display: inline-flex;
86
- align-self: center;
87
- }
88
-
89
- .sbb-timetable__row-transportnumber,
90
- .sbb-timetable__row-time {
91
- --sbb-text-font-size: var(--sbb-font-size-text-s);
92
- font-family: var(--sbb-typo-font-family);
93
- font-weight: normal;
94
- line-height: var(--sbb-typo-line-height-body-text);
95
- letter-spacing: var(--sbb-typo-letter-spacing-body-text);
96
- font-size: var(--sbb-text-font-size);
97
- font-weight: bold;
98
- line-height: unset;
99
- white-space: nowrap;
100
- align-self: center;
101
- }
102
-
103
- .sbb-timetable__row {
104
- --sbb-text-font-size: var(--sbb-font-size-text-s);
105
- font-family: var(--sbb-typo-font-family);
106
- font-weight: normal;
107
- line-height: var(--sbb-typo-line-height-body-text);
108
- letter-spacing: var(--sbb-typo-letter-spacing-body-text);
109
- font-size: var(--sbb-text-font-size);
110
- display: flex;
111
- flex-direction: column;
112
- gap: var(--sbb-timetable-row-gap);
113
- }
114
-
115
- .sbb-timetable__row-header,
116
- .sbb-timetable__row-footer {
117
- animation: none;
118
- }
119
-
120
- .sbb-timetable__row-header {
121
- display: flex;
122
- gap: var(--sbb-spacing-fixed-2x);
123
- align-items: center;
124
- line-height: var(--sbb-timetable-row-height-header);
125
- }
126
-
127
- .sbb-timetable__row-details,
128
- .sbb-timetable__row-hints {
129
- display: inline-flex;
130
- gap: var(--sbb-spacing-fixed-1x);
131
- align-items: center;
132
- }
133
-
134
- .sbb-timetable__row-header p {
135
- overflow: hidden;
136
- white-space: nowrap;
137
- text-overflow: ellipsis;
138
- margin: 0;
139
- align-self: center;
140
- }
141
-
142
- .sbb-timetable__row-footer {
143
- display: flex;
144
- flex-wrap: wrap;
145
- justify-content: space-between;
146
- align-items: center;
147
- gap: var(--sbb-spacing-fixed-2x);
148
- line-height: var(--sbb-timetable-row-height-footer);
149
- }
150
- .sbb-timetable__row-footer > span {
151
- align-self: center;
152
- }
153
- .sbb-timetable__row-footer :only-child {
154
- margin-inline-start: auto;
155
- }
156
-
157
- .sbb-timetable__row-quay--changed {
158
- color: var(--sbb-color-red);
159
- }
160
-
161
- .sbb-timetable__row-transport-wrapper,
162
- .sbb-timetable__row-warning {
163
- display: inline-flex;
164
- }
165
-
166
- .sbb-loading {
167
- pointer-events: none;
168
- }
169
-
170
- .sbb-loading__wrapper {
171
- display: flex;
172
- flex-direction: column;
173
- gap: var(--sbb-spacing-fixed-2x);
174
- }
175
-
176
- .sbb-loading__row {
177
- width: 100%;
178
- border-radius: var(--sbb-border-radius-1x);
179
- height: var(--sbb-timetable-row-height);
180
- }
181
- @media (min-width: calc(52.5rem)) {
182
- .sbb-loading__row {
183
- height: 1.75rem;
184
- }
185
- }
186
- @media (forced-colors: active) {
187
- .sbb-loading__row {
188
- border: var(--sbb-border-width-1x) solid ButtonBorder !important;
189
- }
190
- }
191
-
192
- .sbb-loading__row,
193
- .sbb-loading__badge {
194
- background: var(--sbb-color-cloud);
195
- animation: skeleton-pulse var(--sbb-timetable-row-skeleton-pulse-duration) ease-out infinite;
196
- }
197
-
198
- .sbb-loading__row:first-of-type {
199
- height: var(--sbb-timetable-row-height-header);
200
- width: 50%;
201
- }
202
-
203
- .sbb-loading__row:last-of-type {
204
- height: var(--sbb-timetable-row-height-footer);
205
- }
206
-
207
- .sbb-loading__badge {
208
- margin-inline: auto calc(var(--sbb-spacing-fixed-3x) * -1);
209
- padding-inline-end: var(--sbb-spacing-fixed-6x);
210
- border-end-start-radius: var(--sbb-border-radius-4x);
211
- transform: skew(16deg, 0deg);
212
- width: 7.1875rem;
213
- height: 1.25rem;
214
- }
215
-
216
- @keyframes skeleton-pulse {
217
- 0% {
218
- background: var(--sbb-color-cloud);
219
- }
220
- 17% {
221
- background: var(--sbb-color-cloud);
222
- }
223
- 50% {
224
- background: var(--sbb-color-milk);
225
- }
226
- 67% {
227
- background: var(--sbb-color-milk);
228
- }
229
- 100% {
230
- background: var(--sbb-color-cloud);
231
- }
232
- }`;
233
- const renderIconProduct = (icon, name) => {
234
- return html`<span class="sbb-timetable__row-transport">
235
- <sbb-icon name=${icon}></sbb-icon>
236
- <span class="sbb-screen-reader-only">${name}</span>
237
- </span>`;
238
- };
239
- const renderStringProduct = (vehicleName, line) => {
240
- const space = ["M", "B", "T"].includes(vehicleName) ? " " : "";
241
- return html`<span class="sbb-timetable__row-transportnumber">
242
- ${line !== null ? vehicleName + space + line : vehicleName}
243
- </span>`;
244
- };
245
- const getReachableText = (legs) => {
246
- var _a, _b, _c;
247
- return (_c = (_b = (_a = legs == null ? void 0 : legs.find((leg) => {
248
- var _a2, _b2;
249
- return (_b2 = (_a2 = leg.serviceJourney) == null ? void 0 : _a2.serviceAlteration) == null ? void 0 : _b2.reachableText;
250
- })) == null ? void 0 : _a.serviceJourney) == null ? void 0 : _b.serviceAlteration) == null ? void 0 : _c.reachableText;
251
- };
252
- const getDelayText = (legs) => {
253
- var _a, _b, _c;
254
- return (_c = (_b = (_a = legs == null ? void 0 : legs.find((leg) => {
255
- var _a2, _b2;
256
- return (_b2 = (_a2 = leg.serviceJourney) == null ? void 0 : _a2.serviceAlteration) == null ? void 0 : _b2.delayText;
257
- })) == null ? void 0 : _a.serviceJourney) == null ? void 0 : _b.serviceAlteration) == null ? void 0 : _c.delayText;
258
- };
259
- const getRedirectedText = (legs) => {
260
- var _a, _b, _c;
261
- return (_c = (_b = (_a = legs == null ? void 0 : legs.find((leg) => {
262
- var _a2, _b2;
263
- return !!((_b2 = (_a2 = leg.serviceJourney) == null ? void 0 : _a2.serviceAlteration) == null ? void 0 : _b2.redirectedText);
264
- })) == null ? void 0 : _a.serviceJourney) == null ? void 0 : _b.serviceAlteration) == null ? void 0 : _c.redirectedText;
265
- };
266
- const getUnplannedStop = (legs) => {
267
- var _a, _b, _c;
268
- return (_c = (_b = (_a = legs == null ? void 0 : legs.find((leg) => {
269
- var _a2, _b2;
270
- return !!((_b2 = (_a2 = leg.serviceJourney) == null ? void 0 : _a2.serviceAlteration) == null ? void 0 : _b2.unplannedStopPointsText);
271
- })) == null ? void 0 : _a.serviceJourney) == null ? void 0 : _b.serviceAlteration) == null ? void 0 : _c.unplannedStopPointsText;
272
- };
273
- const sortSituation = (situations) => {
274
- var _a;
275
- const priorities = {
276
- DISTURBANCE: 0,
277
- INFORMATION: 1,
278
- DELAY: 2,
279
- TRAIN_REPLACEMENT_BY_BUS: 3,
280
- CONSTRUCTION_SITE: 4,
281
- END_MESSAGE: 5
282
- };
283
- return (_a = [...situations]) == null ? void 0 : _a.sort((a, b) => priorities[a.cause] - priorities[b.cause]);
284
- };
285
- const getHimIcon = (situation) => {
286
- var _a;
287
- switch (situation == null ? void 0 : situation.cause) {
288
- case "DISTURBANCE":
289
- return {
290
- name: "disruption",
291
- text: ((_a = situation == null ? void 0 : situation.broadcastMessages) == null ? void 0 : _a.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
292
- };
293
- case "INFORMATION":
294
- return {
295
- name: "info",
296
- text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
297
- };
298
- case "DELAY":
299
- return {
300
- name: "delay",
301
- text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
302
- };
303
- case "TRAIN_REPLACEMENT_BY_BUS":
304
- return {
305
- name: "replacementbus",
306
- text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
307
- };
308
- case "CONSTRUCTION_SITE":
309
- return {
310
- name: "construction",
311
- text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
312
- };
313
- default:
314
- return {
315
- name: "info",
316
- text: (situation == null ? void 0 : situation.broadcastMessages.length) ? situation == null ? void 0 : situation.broadcastMessages[0].title : ""
317
- };
318
- }
319
- };
320
- const getCus = (trip, currentLanguage) => {
321
- const { summary, legs } = trip || {};
322
- const rideLegs = legs == null ? void 0 : legs.filter((leg) => isRideLeg(leg));
323
- const { tripStatus } = summary || {};
324
- if ((tripStatus == null ? void 0 : tripStatus.cancelled) || (tripStatus == null ? void 0 : tripStatus.partiallyCancelled))
325
- return { name: "cancellation", text: tripStatus == null ? void 0 : tripStatus.cancelledText };
326
- if (getReachableText(rideLegs))
327
- return { name: "missed-connection", text: getReachableText(rideLegs) };
328
- if (tripStatus == null ? void 0 : tripStatus.alternative)
329
- return { name: "alternative", text: tripStatus.alternativeText };
330
- if (getRedirectedText(rideLegs))
331
- return { name: "reroute", text: getRedirectedText(rideLegs) };
332
- if (getUnplannedStop(rideLegs))
333
- return { name: "add-stop", text: getUnplannedStop(rideLegs) };
334
- if ((tripStatus == null ? void 0 : tripStatus.delayed) || (tripStatus == null ? void 0 : tripStatus.delayedUnknown))
335
- return { name: "delay", text: getDelayText(rideLegs) };
336
- if (tripStatus == null ? void 0 : tripStatus.quayChanged) {
337
- const departure = rideLegs[0].departure;
338
- return {
339
- name: "platform-change",
340
- text: departure.quayChanged ? departure.quayChangedText : i18nTripQuayChange[currentLanguage]
341
- };
342
- }
343
- return {};
344
- };
345
- const findAndReplaceNotice = (notices) => {
346
- const reservationNotice = ["RR", "RK", "RC", "RL", "RM", "RS", "RU", "XP", "XR", "XT"];
347
- return notices.reduce((foundNotice, notice) => {
348
- if (foundNotice)
349
- return foundNotice;
350
- if (reservationNotice.includes(notice.name)) {
351
- return { ...notice, name: "RR" };
352
- }
353
- }, void 0);
354
- };
355
- const filterNotices = (notices) => {
356
- const allowedNames = ["Z", "SB", "SZ", "VR", "TG"];
357
- const filterNotice = notices.filter((notice, index) => {
358
- return notices.findIndex((n) => n.name === notice.name) === index;
359
- });
360
- return filterNotice.filter((notice) => allowedNames.includes(notice.name)).sort((a, b) => allowedNames.indexOf(a.name) - allowedNames.indexOf(b.name));
361
- };
362
- const handleNotices = (notices) => {
363
- const reservationNotice = findAndReplaceNotice(notices);
364
- const filteredNotices = filterNotices(notices);
365
- if (reservationNotice === void 0)
366
- return filteredNotices;
367
- if (!filteredNotices.length)
368
- return [reservationNotice];
369
- if (filteredNotices[0].name === "Z" && filteredNotices[1]) {
370
- return [filteredNotices[0], reservationNotice, filteredNotices[1]].concat(filteredNotices.slice(2));
371
- }
372
- return [reservationNotice, ...filteredNotices];
373
- };
374
- let SbbTimetableRowElement = (() => {
375
- var _trip_accessor_storage, _price_accessor_storage, _disableAnimation_accessor_storage, _boarding_accessor_storage, _loadingTrip_accessor_storage, _a11yFootpath_accessor_storage, _loadingPrice_accessor_storage, _cardActionLabel_accessor_storage, _accessibilityExpanded_accessor_storage, _active_accessor_storage, _a;
376
- let _classDecorators = [customElement("sbb-timetable-row")];
377
- let _classDescriptor;
378
- let _classExtraInitializers = [];
379
- let _classThis;
380
- let _classSuper = LitElement;
381
- let _instanceExtraInitializers = [];
382
- let _trip_decorators;
383
- let _trip_initializers = [];
384
- let _trip_extraInitializers = [];
385
- let _price_decorators;
386
- let _price_initializers = [];
387
- let _price_extraInitializers = [];
388
- let _disableAnimation_decorators;
389
- let _disableAnimation_initializers = [];
390
- let _disableAnimation_extraInitializers = [];
391
- let _boarding_decorators;
392
- let _boarding_initializers = [];
393
- let _boarding_extraInitializers = [];
394
- let _loadingTrip_decorators;
395
- let _loadingTrip_initializers = [];
396
- let _loadingTrip_extraInitializers = [];
397
- let _a11yFootpath_decorators;
398
- let _a11yFootpath_initializers = [];
399
- let _a11yFootpath_extraInitializers = [];
400
- let _loadingPrice_decorators;
401
- let _loadingPrice_initializers = [];
402
- let _loadingPrice_extraInitializers = [];
403
- let _cardActionLabel_decorators;
404
- let _cardActionLabel_initializers = [];
405
- let _cardActionLabel_extraInitializers = [];
406
- let _accessibilityExpanded_decorators;
407
- let _accessibilityExpanded_initializers = [];
408
- let _accessibilityExpanded_extraInitializers = [];
409
- let _active_decorators;
410
- let _active_initializers = [];
411
- let _active_extraInitializers = [];
412
- let _set_now_decorators;
413
- _a = class extends _classSuper {
414
- constructor() {
415
- super(...arguments);
416
- __privateAdd(this, _trip_accessor_storage);
417
- __privateAdd(this, _price_accessor_storage);
418
- __privateAdd(this, _disableAnimation_accessor_storage);
419
- __privateAdd(this, _boarding_accessor_storage);
420
- __privateAdd(this, _loadingTrip_accessor_storage);
421
- __privateAdd(this, _a11yFootpath_accessor_storage);
422
- __privateAdd(this, _loadingPrice_accessor_storage);
423
- __privateAdd(this, _cardActionLabel_accessor_storage);
424
- __privateAdd(this, _accessibilityExpanded_accessor_storage);
425
- __privateAdd(this, _active_accessor_storage);
426
- __privateSet(this, _trip_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _trip_initializers, null)));
427
- __privateSet(this, _price_accessor_storage, (__runInitializers(this, _trip_extraInitializers), __runInitializers(this, _price_initializers, null)));
428
- __privateSet(this, _disableAnimation_accessor_storage, (__runInitializers(this, _price_extraInitializers), __runInitializers(this, _disableAnimation_initializers, false)));
429
- __privateSet(this, _boarding_accessor_storage, (__runInitializers(this, _disableAnimation_extraInitializers), __runInitializers(this, _boarding_initializers, null)));
430
- __privateSet(this, _loadingTrip_accessor_storage, (__runInitializers(this, _boarding_extraInitializers), __runInitializers(this, _loadingTrip_initializers, false)));
431
- __privateSet(this, _a11yFootpath_accessor_storage, (__runInitializers(this, _loadingTrip_extraInitializers), __runInitializers(this, _a11yFootpath_initializers, false)));
432
- __privateSet(this, _loadingPrice_accessor_storage, (__runInitializers(this, _a11yFootpath_extraInitializers), __runInitializers(this, _loadingPrice_initializers, false)));
433
- __privateSet(this, _cardActionLabel_accessor_storage, (__runInitializers(this, _loadingPrice_extraInitializers), __runInitializers(this, _cardActionLabel_initializers, "")));
434
- __privateSet(this, _accessibilityExpanded_accessor_storage, (__runInitializers(this, _cardActionLabel_extraInitializers), __runInitializers(this, _accessibilityExpanded_initializers, false)));
435
- __privateSet(this, _active_accessor_storage, (__runInitializers(this, _accessibilityExpanded_extraInitializers), __runInitializers(this, _active_initializers, false)));
436
- this._now = (__runInitializers(this, _active_extraInitializers), null);
437
- this._language = new SbbLanguageController(this);
438
- }
439
- /** The trip Prop. */
440
- get trip() {
441
- return __privateGet(this, _trip_accessor_storage);
442
- }
443
- set trip(value) {
444
- __privateSet(this, _trip_accessor_storage, value);
445
- }
446
- /** The price Prop, which consists of the data for the badge. */
447
- get price() {
448
- return __privateGet(this, _price_accessor_storage);
449
- }
450
- set price(value) {
451
- __privateSet(this, _price_accessor_storage, value);
452
- }
453
- /** This will be forwarded to the sbb-pearl-chain component - if true the position won't be animated. */
454
- get disableAnimation() {
455
- return __privateGet(this, _disableAnimation_accessor_storage);
456
- }
457
- set disableAnimation(value) {
458
- __privateSet(this, _disableAnimation_accessor_storage, value);
459
- }
460
- /** This will be forwarded to the notices section */
461
- get boarding() {
462
- return __privateGet(this, _boarding_accessor_storage);
463
- }
464
- set boarding(value) {
465
- __privateSet(this, _boarding_accessor_storage, value);
466
- }
467
- /**
468
- * The loading state -
469
- * when this is true it will be render skeleton with an idling animation
470
- */
471
- get loadingTrip() {
472
- return __privateGet(this, _loadingTrip_accessor_storage);
473
- }
474
- set loadingTrip(value) {
475
- __privateSet(this, _loadingTrip_accessor_storage, value);
476
- }
477
- /**
478
- * The Footpath attribute for rendering different icons
479
- * true: render a11y-icon
480
- * false: render walk-icon
481
- * default: render walk-icon
482
- */
483
- get a11yFootpath() {
484
- return __privateGet(this, _a11yFootpath_accessor_storage);
485
- }
486
- set a11yFootpath(value) {
487
- __privateSet(this, _a11yFootpath_accessor_storage, value);
488
- }
489
- /**
490
- * The loading state -
491
- * when this is true it will be render skeleton with an idling animation
492
- */
493
- get loadingPrice() {
494
- return __privateGet(this, _loadingPrice_accessor_storage);
495
- }
496
- set loadingPrice(value) {
497
- __privateSet(this, _loadingPrice_accessor_storage, value);
498
- }
499
- /**
500
- * Hidden label for the card action. It overrides the automatically generated accessibility text for the component. Use this prop to provide custom accessibility information for the component.
501
- */
502
- get cardActionLabel() {
503
- return __privateGet(this, _cardActionLabel_accessor_storage);
504
- }
505
- set cardActionLabel(value) {
506
- __privateSet(this, _cardActionLabel_accessor_storage, value);
507
- }
508
- /** This will be forwarded to the sbb-card component as aria-expanded. */
509
- get accessibilityExpanded() {
510
- return __privateGet(this, _accessibilityExpanded_accessor_storage);
511
- }
512
- set accessibilityExpanded(value) {
513
- __privateSet(this, _accessibilityExpanded_accessor_storage, value);
514
- }
515
- /** When this prop is true the sbb-card will be in the active state. */
516
- get active() {
517
- return __privateGet(this, _active_accessor_storage);
518
- }
519
- set active(value) {
520
- __privateSet(this, _active_accessor_storage, value);
521
- }
522
- /** A configured date which acts as the current date instead of the real current date. Recommended for testing purposes. */
523
- set now(value) {
524
- this._now = defaultDateAdapter.getValidDateOrNull(defaultDateAdapter.deserialize(value));
525
- }
526
- get now() {
527
- return this._now ?? /* @__PURE__ */ new Date();
528
- }
529
- willUpdate(changedProperties) {
530
- super.willUpdate(changedProperties);
531
- if (changedProperties.has("loadingTrip")) {
532
- setOrRemoveAttribute(this, "role", !this.loadingTrip ? "rowgroup" : null);
533
- }
534
- }
535
- /** The skeleton render function for the loading state */
536
- _renderSkeleton() {
537
- return html`
538
- <sbb-card size="l" class="sbb-loading">
539
- ${this.loadingPrice ? html`<sbb-card-badge class="sbb-loading__badge"></sbb-card-badge>` : nothing}
540
- <div class="sbb-loading__wrapper">
541
- <div class="sbb-loading__row"></div>
542
- <div class="sbb-loading__row"></div>
543
- <div class="sbb-loading__row"></div>
544
- </div>
545
- </sbb-card>
546
- `;
547
- }
548
- _getQuayTypeStrings() {
549
- var _a2, _b, _c;
550
- if (!((_a2 = this.trip.summary) == null ? void 0 : _a2.product))
551
- return null;
552
- const rideLegs = (_b = this.trip.legs) == null ? void 0 : _b.filter((leg) => isRideLeg(leg));
553
- const isShort = ((_c = this.trip.summary.product) == null ? void 0 : _c.vehicleMode) === "TRAIN";
554
- const short = isShort ? rideLegs[0].serviceJourney.quayTypeShortName || "" : rideLegs[0].serviceJourney.quayTypeName || "";
555
- return {
556
- long: i18nFromPlatform[this._language.current] + " " + short,
557
- short
558
- };
559
- }
560
- /** map Quay */
561
- _renderQuayType() {
562
- var _a2;
563
- if (!((_a2 = this.trip.summary) == null ? void 0 : _a2.product))
564
- return void 0;
565
- const quayTypeStrings = this._getQuayTypeStrings();
566
- return html`
567
- <span class="sbb-timetable__row--quay">
568
- <span class="sbb-screen-reader-only">${quayTypeStrings == null ? void 0 : quayTypeStrings.long}&nbsp;</span>
569
- <span class="sbb-timetable__row--quay-type" aria-hidden="true"
570
- >${quayTypeStrings == null ? void 0 : quayTypeStrings.short}</span
571
- >
572
- </span>
573
- `;
574
- }
575
- _handleHimCus(trip) {
576
- var _a2;
577
- const { situations } = trip || {};
578
- const sortedSituations = situations && sortSituation(situations);
579
- const cus = getCus(trip, this._language.current);
580
- return {
581
- cus: ((_a2 = Object.keys(cus)) == null ? void 0 : _a2.length) ? cus : null,
582
- him: (situations == null ? void 0 : situations.length) ? getHimIcon(sortedSituations[0]) : null
583
- };
584
- }
585
- _getAccessibilityText(trip) {
586
- var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
587
- const { summary, legs, notices } = trip || {};
588
- const { departureWalk, arrivalWalk, departure, arrival, product, direction, occupancy, duration } = summary || {};
589
- const { departureTimeAttribute, arrivalTimeAttribute } = getDepartureArrivalTimeAttribute(legs, departureWalk || 0, arrivalWalk || 0, this._language.current, this.a11yFootpath);
590
- const departureTime = (departure == null ? void 0 : departure.time) ? removeTimezoneFromISOTimeString(departure.time) : void 0;
591
- const arrivalTime = (arrival == null ? void 0 : arrival.time) ? removeTimezoneFromISOTimeString(arrival.time) : void 0;
592
- const departureWalkText = departureTimeAttribute ? `${departureTimeAttribute.text} ${departureTimeAttribute.duration}, ` : "";
593
- const arrivalWalkText = arrivalTimeAttribute ? `${arrivalTimeAttribute.text} ${arrivalTimeAttribute.duration}, ` : "";
594
- const departureTimeText = departureTime ? `${i18nDeparture[this._language.current]}: ${format(departureTime, "HH:mm")}, ` : "";
595
- const getDepartureQuayText = () => {
596
- var _a3;
597
- if (!(departure == null ? void 0 : departure.quayFormatted)) {
598
- return "";
599
- }
600
- const changedQuayPrefix = (departure == null ? void 0 : departure.quayChanged) ? `${i18nNew[this._language.current]} ` : "";
601
- return `${changedQuayPrefix}${(_a3 = this._getQuayTypeStrings()) == null ? void 0 : _a3.long} ${departure == null ? void 0 : departure.quayFormatted}, `;
602
- };
603
- const meansOfTransportText = product && product.vehicleMode ? i18nMeansOfTransport[product.vehicleMode.toLowerCase()] && `${i18nMeansOfTransport[product.vehicleMode.toLowerCase()][this._language.current]}, ` : "";
604
- const vehicleSubModeText = (product == null ? void 0 : product.vehicleSubModeShortName) ? `${product.vehicleSubModeShortName} ${product.line || ""}, ` : "";
605
- const directionText = `${i18nDirection[this._language.current]} ${direction}, `;
606
- const himCus = this._handleHimCus(trip);
607
- const cusText = ((_a2 = himCus == null ? void 0 : himCus.cus) == null ? void 0 : _a2.text) ? `${i18nRealTimeInfo[this._language.current]}: ${(_b = himCus == null ? void 0 : himCus.cus) == null ? void 0 : _b.text}, ` : "";
608
- const himText = ((_c = himCus == null ? void 0 : himCus.him) == null ? void 0 : _c.text) ? `${i18nRealTimeInfo[this._language.current]}: ${(_d = himCus == null ? void 0 : himCus.him) == null ? void 0 : _d.text}, ` : "";
609
- const boardingText = this.boarding ? `${this.boarding.text}, ` : "";
610
- const priceText = `${((_e = this.price) == null ? void 0 : _e.isDiscount) ? i18nSupersaver[this._language.current] : ""} ${((_f = this.price) == null ? void 0 : _f.text) && ((_g = this.price) == null ? void 0 : _g.price) ? (((_h = this.price) == null ? void 0 : _h.text) || "") + " " + (((_i = this.price) == null ? void 0 : _i.price) || "") + ", " : ""}`;
611
- const transferProcedures = (legs == null ? void 0 : legs.length) > 1 ? `${(legs == null ? void 0 : legs.length) - 1} ${i18nTransferProcedures[this._language.current]}, ` : "";
612
- const arrivalTimeText = arrivalTime ? `${i18nArrival[this._language.current]}: ${format(arrivalTime, "HH:mm")}, ` : "";
613
- let occupancyText = "";
614
- if (occupancy) {
615
- if (occupancy.firstClass && occupancy.firstClass !== "UNKNOWN") {
616
- occupancyText += `${i18nClass.first[this._language.current]} ${(_j = i18nOccupancy[occupancy.firstClass.toLowerCase()]) == null ? void 0 : _j[this._language.current]}.`;
617
- }
618
- if (occupancy.secondClass && occupancy.secondClass !== "UNKNOWN") {
619
- occupancyText += ` ${i18nClass.second[this._language.current]} ${(_k = i18nOccupancy[occupancy.secondClass.toLowerCase()]) == null ? void 0 : _k[this._language.current]}.`;
620
- }
621
- }
622
- const attributes = notices && handleNotices(notices).length && ((_l = handleNotices(notices)) == null ? void 0 : _l.map((notice, index) => {
623
- var _a3;
624
- return index < 4 && ((_a3 = notice.text) == null ? void 0 : _a3.template);
625
- }).join(", ")) + ", ";
626
- const attributesText = attributes ? `${i18nTravelhints[this._language.current]}: ${attributes}` : "";
627
- const durationText = !!duration && duration > 0 ? `${i18nTripDuration[this._language.current]} ${durationToTime(duration, this._language.current).long}, ` : "";
628
- return `${departureWalkText} ${departureTimeText} ${getDepartureQuayText()} ${meansOfTransportText} ${vehicleSubModeText} ${directionText} ${cusText} ${boardingText} ${priceText} ${cusText ? "" : himText} ${arrivalTimeText} ${arrivalWalkText} ${durationText} ${transferProcedures} ${occupancyText} ${attributesText}`;
629
- }
630
- render() {
631
- var _a2, _b, _c, _d;
632
- if (this.loadingTrip) {
633
- return this._renderSkeleton();
634
- }
635
- const { legs, id, notices, summary } = this.trip || {};
636
- const { product, direction, departureWalk, departure, arrival, arrivalWalk, occupancy, duration } = summary || {};
637
- const himCus = this._handleHimCus(this.trip);
638
- const hasHimCus = !!himCus.cus || !!himCus.him;
639
- const noticeAttributes = notices && handleNotices(notices);
640
- const durationObj = duration ? durationToTime(duration, this._language.current) : null;
641
- return html`
642
- <sbb-card size="l" id=${id}>
643
- <sbb-card-button
644
- ?active=${this.active}
645
- aria-expanded=${this.accessibilityExpanded ? "true" : nothing}
646
- >
647
- ${this.cardActionLabel ? this.cardActionLabel : this._getAccessibilityText(this.trip)}
648
- </sbb-card-button>
649
- ${this.loadingPrice ? html`<sbb-card-badge class="sbb-loading__badge"></sbb-card-badge>` : nothing}
650
- ${this.price && !this.loadingPrice ? html`<sbb-card-badge color=${this.price.isDiscount ? "charcoal" : "white"}>
651
- ${this.price.isDiscount ? html`<span aria-hidden="true">
652
- %<span class="sbb-screen-reader-only"
653
- >${i18nSupersaver[this._language.current]}</span
654
- >
655
- </span>` : nothing}
656
- ${this.price.text ? html`<span>${this.price.text}</span>` : nothing}
657
- ${this.price.price ? html`<span>${this.price.price}</span>` : nothing}
658
- </sbb-card-badge>` : nothing}
659
- <div class="sbb-timetable__row" role="row">
660
- <div class="sbb-timetable__row-header" role="gridcell">
661
- <div class="sbb-timetable__row-details">
662
- ${(product == null ? void 0 : product.corporateIdentityPictogram) && html`<span class="sbb-timetable__row-transport-wrapper">
663
- <sbb-icon
664
- class="sbb-timetable__row-transport-icon"
665
- name="picto:${product.corporateIdentityPictogram}"
666
- ></sbb-icon>
667
- <span class="sbb-screen-reader-only">
668
- ${product && product.vehicleMode && i18nMeansOfTransport[product.vehicleMode.toLowerCase()] && i18nMeansOfTransport[product.vehicleMode.toLowerCase()][this._language.current]}
669
- &nbsp;
670
- </span>
671
- </span>`}
672
- ${product && (product.corporateIdentityIcon ? renderIconProduct(product.corporateIdentityIcon, product.name) : product.vehicleSubModeShortName && renderStringProduct(product.vehicleSubModeShortName, product == null ? void 0 : product.line))}
673
- </div>
674
- ${direction ? html`<p>${`${i18nDirection[this._language.current]} ${direction}`}</p>` : nothing}
675
- </div>
676
- <sbb-pearl-chain-time
677
- role="gridcell"
678
- .legs=${legs}
679
- .departureTime=${departure == null ? void 0 : departure.time}
680
- .arrivalTime=${arrival == null ? void 0 : arrival.time}
681
- .departureWalk=${departureWalk}
682
- .arrivalWalk=${arrivalWalk}
683
- ?disable-animation=${this.disableAnimation}
684
- ?a11y-footpath=${this.a11yFootpath}
685
- .now=${this.now}
686
- ></sbb-pearl-chain-time>
687
- <div class="sbb-timetable__row-footer" role="gridcell">
688
- ${product && (departure == null ? void 0 : departure.quayFormatted) ? html`<span
689
- class=${(departure == null ? void 0 : departure.quayChanged) ? `sbb-timetable__row-quay--changed` : nothing}
690
- >
691
- <span class="sbb-screen-reader-only">
692
- ${`${i18nDeparture[this._language.current]} ${(departure == null ? void 0 : departure.quayChanged) ? i18nNew[this._language.current] : ""}`}
693
- &nbsp;
694
- </span>
695
- ${this._renderQuayType()} ${departure == null ? void 0 : departure.quayFormatted}
696
- </span>` : nothing}
697
- ${(occupancy == null ? void 0 : occupancy.firstClass) && (occupancy == null ? void 0 : occupancy.firstClass) !== "UNKNOWN" || (occupancy == null ? void 0 : occupancy.secondClass) && occupancy.secondClass !== "UNKNOWN" ? html`<sbb-timetable-occupancy
698
- .firstClassOccupancy=${(_a2 = occupancy == null ? void 0 : occupancy.firstClass) == null ? void 0 : _a2.toLowerCase()}
699
- .secondClassOccupancy=${(_b = occupancy == null ? void 0 : occupancy.secondClass) == null ? void 0 : _b.toLowerCase()}
700
- ></sbb-timetable-occupancy>` : nothing}
701
- ${noticeAttributes && noticeAttributes.length || this.boarding ? html`<ul class="sbb-timetable__row-hints" role="list">
702
- ${noticeAttributes == null ? void 0 : noticeAttributes.map((notice, index) => {
703
- var _a3, _b2;
704
- return index < 4 ? html`<li>
705
- <sbb-icon
706
- class="sbb-travel-hints__item"
707
- name=${"sa-" + ((_a3 = notice.name) == null ? void 0 : _a3.toLowerCase())}
708
- ></sbb-icon>
709
- <span class="sbb-screen-reader-only">${(_b2 = notice.text) == null ? void 0 : _b2.template}</span>
710
- </li>` : nothing;
711
- })}
712
- ${this.boarding ? html`<li>
713
- <sbb-icon
714
- class="sbb-travel-hints__item"
715
- name=${(_c = this.boarding) == null ? void 0 : _c.name}
716
- aria-label=${(_d = this.boarding) == null ? void 0 : _d.text}
717
- aria-hidden="false"
718
- ></sbb-icon>
719
- </li>` : nothing}
720
- </ul>` : nothing}
721
- ${duration && duration > 0 ? html`<time>
722
- <span class="sbb-screen-reader-only">
723
- ${`${i18nTripDuration[this._language.current]} ${durationObj.long}`}
724
- </span>
725
- <span aria-hidden="true">${durationObj.short}</span>
726
- </time>` : nothing}
727
- ${hasHimCus && (himCus.cus || himCus.him) ? html`<span class="sbb-timetable__row-warning">
728
- <sbb-icon name=${(himCus.cus || himCus.him).name}></sbb-icon>
729
- <span class="sbb-screen-reader-only">${(himCus.cus || himCus.him).text}</span>
730
- </span>` : nothing}
731
- </div>
732
- </div>
733
- </sbb-card>
734
- `;
735
- }
736
- }, _trip_accessor_storage = new WeakMap(), _price_accessor_storage = new WeakMap(), _disableAnimation_accessor_storage = new WeakMap(), _boarding_accessor_storage = new WeakMap(), _loadingTrip_accessor_storage = new WeakMap(), _a11yFootpath_accessor_storage = new WeakMap(), _loadingPrice_accessor_storage = new WeakMap(), _cardActionLabel_accessor_storage = new WeakMap(), _accessibilityExpanded_accessor_storage = new WeakMap(), _active_accessor_storage = new WeakMap(), _classThis = _a, (() => {
737
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
738
- _trip_decorators = [property({ type: Object })];
739
- _price_decorators = [property({ type: Object })];
740
- _disableAnimation_decorators = [forceType(), property({ attribute: "disable-animation", reflect: true, type: Boolean })];
741
- _boarding_decorators = [property({ type: Object })];
742
- _loadingTrip_decorators = [forceType(), property({ attribute: "loading-trip", type: Boolean })];
743
- _a11yFootpath_decorators = [forceType(), property({ attribute: "a11y-footpath", type: Boolean })];
744
- _loadingPrice_decorators = [forceType(), property({ attribute: "loading-price", type: Boolean })];
745
- _cardActionLabel_decorators = [forceType(), property({ attribute: "card-action-label" })];
746
- _accessibilityExpanded_decorators = [forceType(), property({ attribute: "accessibility-expanded", type: Boolean })];
747
- _active_decorators = [forceType(), property({ type: Boolean })];
748
- _set_now_decorators = [property()];
749
- __esDecorate(_a, null, _trip_decorators, { kind: "accessor", name: "trip", static: false, private: false, access: { has: (obj) => "trip" in obj, get: (obj) => obj.trip, set: (obj, value) => {
750
- obj.trip = value;
751
- } }, metadata: _metadata }, _trip_initializers, _trip_extraInitializers);
752
- __esDecorate(_a, null, _price_decorators, { kind: "accessor", name: "price", static: false, private: false, access: { has: (obj) => "price" in obj, get: (obj) => obj.price, set: (obj, value) => {
753
- obj.price = value;
754
- } }, metadata: _metadata }, _price_initializers, _price_extraInitializers);
755
- __esDecorate(_a, null, _disableAnimation_decorators, { kind: "accessor", name: "disableAnimation", static: false, private: false, access: { has: (obj) => "disableAnimation" in obj, get: (obj) => obj.disableAnimation, set: (obj, value) => {
756
- obj.disableAnimation = value;
757
- } }, metadata: _metadata }, _disableAnimation_initializers, _disableAnimation_extraInitializers);
758
- __esDecorate(_a, null, _boarding_decorators, { kind: "accessor", name: "boarding", static: false, private: false, access: { has: (obj) => "boarding" in obj, get: (obj) => obj.boarding, set: (obj, value) => {
759
- obj.boarding = value;
760
- } }, metadata: _metadata }, _boarding_initializers, _boarding_extraInitializers);
761
- __esDecorate(_a, null, _loadingTrip_decorators, { kind: "accessor", name: "loadingTrip", static: false, private: false, access: { has: (obj) => "loadingTrip" in obj, get: (obj) => obj.loadingTrip, set: (obj, value) => {
762
- obj.loadingTrip = value;
763
- } }, metadata: _metadata }, _loadingTrip_initializers, _loadingTrip_extraInitializers);
764
- __esDecorate(_a, null, _a11yFootpath_decorators, { kind: "accessor", name: "a11yFootpath", static: false, private: false, access: { has: (obj) => "a11yFootpath" in obj, get: (obj) => obj.a11yFootpath, set: (obj, value) => {
765
- obj.a11yFootpath = value;
766
- } }, metadata: _metadata }, _a11yFootpath_initializers, _a11yFootpath_extraInitializers);
767
- __esDecorate(_a, null, _loadingPrice_decorators, { kind: "accessor", name: "loadingPrice", static: false, private: false, access: { has: (obj) => "loadingPrice" in obj, get: (obj) => obj.loadingPrice, set: (obj, value) => {
768
- obj.loadingPrice = value;
769
- } }, metadata: _metadata }, _loadingPrice_initializers, _loadingPrice_extraInitializers);
770
- __esDecorate(_a, null, _cardActionLabel_decorators, { kind: "accessor", name: "cardActionLabel", static: false, private: false, access: { has: (obj) => "cardActionLabel" in obj, get: (obj) => obj.cardActionLabel, set: (obj, value) => {
771
- obj.cardActionLabel = value;
772
- } }, metadata: _metadata }, _cardActionLabel_initializers, _cardActionLabel_extraInitializers);
773
- __esDecorate(_a, null, _accessibilityExpanded_decorators, { kind: "accessor", name: "accessibilityExpanded", static: false, private: false, access: { has: (obj) => "accessibilityExpanded" in obj, get: (obj) => obj.accessibilityExpanded, set: (obj, value) => {
774
- obj.accessibilityExpanded = value;
775
- } }, metadata: _metadata }, _accessibilityExpanded_initializers, _accessibilityExpanded_extraInitializers);
776
- __esDecorate(_a, null, _active_decorators, { kind: "accessor", name: "active", static: false, private: false, access: { has: (obj) => "active" in obj, get: (obj) => obj.active, set: (obj, value) => {
777
- obj.active = value;
778
- } }, metadata: _metadata }, _active_initializers, _active_extraInitializers);
779
- __esDecorate(_a, null, _set_now_decorators, { kind: "setter", name: "now", static: false, private: false, access: { has: (obj) => "now" in obj, set: (obj, value) => {
780
- obj.now = value;
781
- } }, metadata: _metadata }, null, _instanceExtraInitializers);
782
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
783
- _classThis = _classDescriptor.value;
784
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
785
- })(), _a.styles = style, __runInitializers(_classThis, _classExtraInitializers), _a;
786
- return _classThis;
787
- })();
1
+ import { SbbTimetableRowElement, filterNotices, getCus, getHimIcon, handleNotices, renderIconProduct, renderStringProduct, sortSituation } from "./timetable-row/timetable-row.js";
788
2
  export {
789
3
  SbbTimetableRowElement,
790
4
  filterNotices,
@@ -795,4 +9,4 @@ export {
795
9
  renderStringProduct,
796
10
  sortSituation
797
11
  };
798
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC90aW1ldGFibGUtcm93L3RpbWV0YWJsZS1yb3cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBzZXRPclJlbW92ZUF0dHJpYnV0ZSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7XG4gIGkxOG5BcnJpdmFsLFxuICBpMThuQ2xhc3MsXG4gIGkxOG5EZXBhcnR1cmUsXG4gIGkxOG5EaXJlY3Rpb24sXG4gIGkxOG5Gcm9tUGxhdGZvcm0sXG4gIGkxOG5NZWFuc09mVHJhbnNwb3J0LFxuICBpMThuTmV3LFxuICBpMThuT2NjdXBhbmN5LFxuICBpMThuUmVhbFRpbWVJbmZvLFxuICBpMThuU3VwZXJzYXZlcixcbiAgaTE4blRyYW5zZmVyUHJvY2VkdXJlcyxcbiAgaTE4blRyYXZlbGhpbnRzLFxuICBpMThuVHJpcER1cmF0aW9uLFxuICBpMThuVHJpcFF1YXlDaGFuZ2UsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlLCBTYmJPY2N1cGFuY3kgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGR1cmF0aW9uVG9UaW1lLCByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nIH0gZnJvbSAnLi4vY29yZS9kYXRldGltZS5qcyc7XG5pbXBvcnQgdHlwZSB7IElUcmlwSXRlbSwgTm90aWNlLCBQdFJpZGVMZWcsIFB0U2l0dWF0aW9uIH0gZnJvbSAnLi4vY29yZS90aW1ldGFibGUuanMnO1xuaW1wb3J0IHsgZ2V0RGVwYXJ0dXJlQXJyaXZhbFRpbWVBdHRyaWJ1dGUsIGlzUmlkZUxlZyB9IGZyb20gJy4uL2NvcmUvdGltZXRhYmxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdGltZXRhYmxlLXJvdy5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NhcmQuanMnO1xuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9pY29uLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvdGltZXRhYmxlLW9jY3VwYW5jeS5qcyc7XG5pbXBvcnQgJy4uL3BlYXJsLWNoYWluLXRpbWUuanMnO1xuXG4vKiogSGltQ3VzIGludGVyZmFjZSBmb3IgbWFwcGVkIGljb24gbmFtZSBhbmQgdGV4dCAqL1xuZXhwb3J0IGludGVyZmFjZSBIaW1DdXMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKiogQm9hcmRpbmcgaWNvbiBpbnRlcmZhY2UgZm9yIG1hcHBlZCBpY29uIG5hbWUgYW5kIHRleHQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9hcmRpbmcge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmljZSB7XG4gIHByaWNlPzogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nO1xuICBpc0Rpc2NvdW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHJlbmRlckljb25Qcm9kdWN0ID0gKGljb246IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgPT4ge1xuICByZXR1cm4gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnRcIj5cbiAgICA8c2JiLWljb24gbmFtZT0ke2ljb259Pjwvc2JiLWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtuYW1lfTwvc3Bhbj5cbiAgPC9zcGFuPmA7XG59O1xuXG5leHBvcnQgY29uc3QgcmVuZGVyU3RyaW5nUHJvZHVjdCA9ICh2ZWhpY2xlTmFtZTogc3RyaW5nLCBsaW5lPzogc3RyaW5nIHwgbnVsbCk6IFRlbXBsYXRlUmVzdWx0ID0+IHtcbiAgY29uc3Qgc3BhY2UgPSBbJ00nLCAnQicsICdUJ10uaW5jbHVkZXModmVoaWNsZU5hbWUpID8gJyAnIDogJyc7XG4gIHJldHVybiBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXRyYW5zcG9ydG51bWJlclwiPlxuICAgICR7bGluZSAhPT0gbnVsbCA/IHZlaGljbGVOYW1lICsgc3BhY2UgKyBsaW5lIDogdmVoaWNsZU5hbWV9XG4gIDwvc3Bhbj5gO1xufTtcblxuY29uc3QgZ2V0UmVhY2hhYmxlVGV4dCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiBsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWFjaGFibGVUZXh0KT8uc2VydmljZUpvdXJuZXlcbiAgICA/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWFjaGFibGVUZXh0O1xufTtcblxuY29uc3QgZ2V0RGVsYXlUZXh0ID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+IGxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LmRlbGF5VGV4dCk/LnNlcnZpY2VKb3VybmV5XG4gICAgPy5zZXJ2aWNlQWx0ZXJhdGlvbj8uZGVsYXlUZXh0O1xufTtcblxuY29uc3QgZ2V0UmVkaXJlY3RlZFRleHQgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gISFsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5yZWRpcmVjdGVkVGV4dClcbiAgICA/LnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVkaXJlY3RlZFRleHQ7XG59O1xuXG5jb25zdCBnZXRVbnBsYW5uZWRTdG9wID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+ICEhbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8udW5wbGFubmVkU3RvcFBvaW50c1RleHQpXG4gICAgPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnVucGxhbm5lZFN0b3BQb2ludHNUZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IHNvcnRTaXR1YXRpb24gPSAoc2l0dWF0aW9uczogUHRTaXR1YXRpb25bXSk6IFB0U2l0dWF0aW9uW10gPT4ge1xuICBjb25zdCBwcmlvcml0aWVzID0ge1xuICAgIERJU1RVUkJBTkNFOiAwLFxuICAgIElORk9STUFUSU9OOiAxLFxuICAgIERFTEFZOiAyLFxuICAgIFRSQUlOX1JFUExBQ0VNRU5UX0JZX0JVUzogMyxcbiAgICBDT05TVFJVQ1RJT05fU0lURTogNCxcbiAgICBFTkRfTUVTU0FHRTogNSxcbiAgfTtcblxuICByZXR1cm4gWy4uLnNpdHVhdGlvbnNdPy5zb3J0KFxuICAgIChhOiBQdFNpdHVhdGlvbiwgYjogUHRTaXR1YXRpb24pID0+IHByaW9yaXRpZXNbYS5jYXVzZSFdIC0gcHJpb3JpdGllc1tiLmNhdXNlIV0sXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGltSWNvbiA9IChzaXR1YXRpb246IFB0U2l0dWF0aW9uKTogSGltQ3VzID0+IHtcbiAgc3dpdGNoIChzaXR1YXRpb24/LmNhdXNlKSB7XG4gICAgY2FzZSAnRElTVFVSQkFOQ0UnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ2Rpc3J1cHRpb24nLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzPy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0lORk9STUFUSU9OJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdpbmZvJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0RFTEFZJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdkZWxheScsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdUUkFJTl9SRVBMQUNFTUVOVF9CWV9CVVMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogJ3JlcGxhY2VtZW50YnVzJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGNhc2UgJ0NPTlNUUlVDVElPTl9TSVRFJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdjb25zdHJ1Y3Rpb24nLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdpbmZvJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VzID0gKHRyaXA6IElUcmlwSXRlbSwgY3VycmVudExhbmd1YWdlOiBzdHJpbmcpOiBIaW1DdXMgPT4ge1xuICBjb25zdCB7IHN1bW1hcnksIGxlZ3MgfSA9IHRyaXAgfHwge307XG4gIGNvbnN0IHJpZGVMZWdzID0gbGVncz8uZmlsdGVyKChsZWcpID0+IGlzUmlkZUxlZyhsZWcpKSBhcyBQdFJpZGVMZWdbXTtcbiAgY29uc3QgeyB0cmlwU3RhdHVzIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gIGlmICh0cmlwU3RhdHVzPy5jYW5jZWxsZWQgfHwgdHJpcFN0YXR1cz8ucGFydGlhbGx5Q2FuY2VsbGVkKVxuICAgIHJldHVybiB7IG5hbWU6ICdjYW5jZWxsYXRpb24nLCB0ZXh0OiB0cmlwU3RhdHVzPy5jYW5jZWxsZWRUZXh0IH07XG4gIGlmIChnZXRSZWFjaGFibGVUZXh0KHJpZGVMZWdzKSlcbiAgICByZXR1cm4geyBuYW1lOiAnbWlzc2VkLWNvbm5lY3Rpb24nLCB0ZXh0OiBnZXRSZWFjaGFibGVUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAodHJpcFN0YXR1cz8uYWx0ZXJuYXRpdmUpIHJldHVybiB7IG5hbWU6ICdhbHRlcm5hdGl2ZScsIHRleHQ6IHRyaXBTdGF0dXMuYWx0ZXJuYXRpdmVUZXh0IH07XG4gIGlmIChnZXRSZWRpcmVjdGVkVGV4dChyaWRlTGVncykpIHJldHVybiB7IG5hbWU6ICdyZXJvdXRlJywgdGV4dDogZ2V0UmVkaXJlY3RlZFRleHQocmlkZUxlZ3MpIH07XG4gIGlmIChnZXRVbnBsYW5uZWRTdG9wKHJpZGVMZWdzKSkgcmV0dXJuIHsgbmFtZTogJ2FkZC1zdG9wJywgdGV4dDogZ2V0VW5wbGFubmVkU3RvcChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LmRlbGF5ZWQgfHwgdHJpcFN0YXR1cz8uZGVsYXllZFVua25vd24pXG4gICAgcmV0dXJuIHsgbmFtZTogJ2RlbGF5JywgdGV4dDogZ2V0RGVsYXlUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAodHJpcFN0YXR1cz8ucXVheUNoYW5nZWQpIHtcbiAgICBjb25zdCBkZXBhcnR1cmUgPSByaWRlTGVnc1swXS5kZXBhcnR1cmU7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdwbGF0Zm9ybS1jaGFuZ2UnLFxuICAgICAgdGV4dDogZGVwYXJ0dXJlLnF1YXlDaGFuZ2VkID8gZGVwYXJ0dXJlLnF1YXlDaGFuZ2VkVGV4dCA6IGkxOG5UcmlwUXVheUNoYW5nZVtjdXJyZW50TGFuZ3VhZ2VdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge30gYXMgSGltQ3VzO1xufTtcblxuY29uc3QgZmluZEFuZFJlcGxhY2VOb3RpY2UgPSAobm90aWNlczogTm90aWNlW10pOiBOb3RpY2UgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCByZXNlcnZhdGlvbk5vdGljZSA9IFsnUlInLCAnUksnLCAnUkMnLCAnUkwnLCAnUk0nLCAnUlMnLCAnUlUnLCAnWFAnLCAnWFInLCAnWFQnXTtcblxuICByZXR1cm4gbm90aWNlcy5yZWR1Y2UoKGZvdW5kTm90aWNlOiBOb3RpY2UgfCB1bmRlZmluZWQsIG5vdGljZTogTm90aWNlKTogTm90aWNlIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoZm91bmROb3RpY2UpIHJldHVybiBmb3VuZE5vdGljZTtcbiAgICBpZiAocmVzZXJ2YXRpb25Ob3RpY2UuaW5jbHVkZXMobm90aWNlLm5hbWUpKSB7XG4gICAgICByZXR1cm4geyAuLi5ub3RpY2UsIG5hbWU6ICdSUicgfSBhcyBOb3RpY2U7XG4gICAgfVxuICB9LCB1bmRlZmluZWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlck5vdGljZXMgPSAobm90aWNlczogTm90aWNlW10pOiBOb3RpY2VbXSA9PiB7XG4gIGNvbnN0IGFsbG93ZWROYW1lcyA9IFsnWicsICdTQicsICdTWicsICdWUicsICdURyddO1xuXG4gIGNvbnN0IGZpbHRlck5vdGljZSA9IG5vdGljZXMuZmlsdGVyKChub3RpY2UsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIG5vdGljZXMuZmluZEluZGV4KChuKSA9PiBuLm5hbWUgPT09IG5vdGljZS5uYW1lKSA9PT0gaW5kZXg7XG4gIH0pO1xuXG4gIHJldHVybiBmaWx0ZXJOb3RpY2VcbiAgICAuZmlsdGVyKChub3RpY2UpID0+IGFsbG93ZWROYW1lcy5pbmNsdWRlcyhub3RpY2UubmFtZSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGFsbG93ZWROYW1lcy5pbmRleE9mKGEubmFtZSkgLSBhbGxvd2VkTmFtZXMuaW5kZXhPZihiLm5hbWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVOb3RpY2VzID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlW10gPT4ge1xuICBjb25zdCByZXNlcnZhdGlvbk5vdGljZSA9IGZpbmRBbmRSZXBsYWNlTm90aWNlKG5vdGljZXMpO1xuICBjb25zdCBmaWx0ZXJlZE5vdGljZXMgPSBmaWx0ZXJOb3RpY2VzKG5vdGljZXMpO1xuXG4gIGlmIChyZXNlcnZhdGlvbk5vdGljZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmlsdGVyZWROb3RpY2VzO1xuICBpZiAoIWZpbHRlcmVkTm90aWNlcy5sZW5ndGgpIHJldHVybiBbcmVzZXJ2YXRpb25Ob3RpY2VdO1xuXG4gIGlmIChmaWx0ZXJlZE5vdGljZXNbMF0ubmFtZSA9PT0gJ1onICYmIGZpbHRlcmVkTm90aWNlc1sxXSkge1xuICAgIHJldHVybiBbZmlsdGVyZWROb3RpY2VzWzBdLCByZXNlcnZhdGlvbk5vdGljZSwgZmlsdGVyZWROb3RpY2VzWzFdXS5jb25jYXQoXG4gICAgICBmaWx0ZXJlZE5vdGljZXMuc2xpY2UoMiksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBbcmVzZXJ2YXRpb25Ob3RpY2UsIC4uLmZpbHRlcmVkTm90aWNlc107XG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0cmlwLCBhY3RpbmcgYXMgYSBjb250YWluZXIgZm9yIGFsbCB0aGUgYHNiYi10aW1ldGFibGUtKmAgY29tcG9uZW50cy5cbiAqICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdGltZXRhYmxlLXJvdycpXG5jbGFzcyBTYmJUaW1ldGFibGVSb3dFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBUaGUgdHJpcCBQcm9wLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIGFjY2Vzc29yIHRyaXA6IElUcmlwSXRlbSA9IG51bGwhO1xuXG4gIC8qKiBUaGUgcHJpY2UgUHJvcCwgd2hpY2ggY29uc2lzdHMgb2YgdGhlIGRhdGEgZm9yIHRoZSBiYWRnZS4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogT2JqZWN0IH0pIHB1YmxpYyBhY2Nlc3NvciBwcmljZTogUHJpY2UgPSBudWxsITtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgc2JiLXBlYXJsLWNoYWluIGNvbXBvbmVudCAtIGlmIHRydWUgdGhlIHBvc2l0aW9uIHdvbid0IGJlIGFuaW1hdGVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGlzYWJsZS1hbmltYXRpb24nLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNhYmxlQW5pbWF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIG5vdGljZXMgc2VjdGlvbiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIGFjY2Vzc29yIGJvYXJkaW5nOiBCb2FyZGluZyA9IG51bGwhO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZGluZyBzdGF0ZSAtXG4gICAqIHdoZW4gdGhpcyBpcyB0cnVlIGl0IHdpbGwgYmUgcmVuZGVyIHNrZWxldG9uIHdpdGggYW4gaWRsaW5nIGFuaW1hdGlvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvYWRpbmctdHJpcCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGxvYWRpbmdUcmlwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBGb290cGF0aCBhdHRyaWJ1dGUgZm9yIHJlbmRlcmluZyBkaWZmZXJlbnQgaWNvbnNcbiAgICogdHJ1ZTogcmVuZGVyIGExMXktaWNvblxuICAgKiBmYWxzZTogcmVuZGVyIHdhbGstaWNvblxuICAgKiBkZWZhdWx0OiByZW5kZXIgd2Fsay1pY29uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYTExeS1mb290cGF0aCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGExMXlGb290cGF0aDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZGluZyBzdGF0ZSAtXG4gICAqIHdoZW4gdGhpcyBpcyB0cnVlIGl0IHdpbGwgYmUgcmVuZGVyIHNrZWxldG9uIHdpdGggYW4gaWRsaW5nIGFuaW1hdGlvblxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvYWRpbmctcHJpY2UnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsb2FkaW5nUHJpY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSGlkZGVuIGxhYmVsIGZvciB0aGUgY2FyZCBhY3Rpb24uIEl0IG92ZXJyaWRlcyB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYWNjZXNzaWJpbGl0eSB0ZXh0IGZvciB0aGUgY29tcG9uZW50LiBVc2UgdGhpcyBwcm9wIHRvIHByb3ZpZGUgY3VzdG9tIGFjY2Vzc2liaWxpdHkgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2FyZC1hY3Rpb24tbGFiZWwnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjYXJkQWN0aW9uTGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoZSBzYmItY2FyZCBjb21wb25lbnQgYXMgYXJpYS1leHBhbmRlZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktZXhwYW5kZWQnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5RXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hlbiB0aGlzIHByb3AgaXMgdHJ1ZSB0aGUgc2JiLWNhcmQgd2lsbCBiZSBpbiB0aGUgYWN0aXZlIHN0YXRlLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEEgY29uZmlndXJlZCBkYXRlIHdoaWNoIGFjdHMgYXMgdGhlIGN1cnJlbnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSByZWFsIGN1cnJlbnQgZGF0ZS4gUmVjb21tZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbm93KHZhbHVlOiBTYmJEYXRlTGlrZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX25vdyA9IGRlZmF1bHREYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoZGVmYXVsdERhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gIH1cbiAgcHVibGljIGdldCBub3coKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX25vdyA/PyBuZXcgRGF0ZSgpO1xuICB9XG4gIHByaXZhdGUgX25vdzogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2xvYWRpbmdUcmlwJykpIHtcbiAgICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMsICdyb2xlJywgIXRoaXMubG9hZGluZ1RyaXAgPyAncm93Z3JvdXAnIDogbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBza2VsZXRvbiByZW5kZXIgZnVuY3Rpb24gZm9yIHRoZSBsb2FkaW5nIHN0YXRlICovXG4gIHByaXZhdGUgX3JlbmRlclNrZWxldG9uKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItY2FyZCBzaXplPVwibFwiIGNsYXNzPVwic2JiLWxvYWRpbmdcIj5cbiAgICAgICAgJHt0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY2xhc3M9XCJzYmItbG9hZGluZ19fYmFkZ2VcIj48L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fd3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fcm93XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1sb2FkaW5nX19yb3dcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3Jvd1wiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2JiLWNhcmQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFF1YXlUeXBlU3RyaW5ncygpOiB7IGxvbmc6IHN0cmluZzsgc2hvcnQ6IHN0cmluZyB9IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnRyaXAuc3VtbWFyeT8ucHJvZHVjdCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmlkZUxlZ3MgPSB0aGlzLnRyaXAubGVncz8uZmlsdGVyKChsZWcpID0+IGlzUmlkZUxlZyhsZWcpKSBhcyBQdFJpZGVMZWdbXTtcbiAgICBjb25zdCBpc1Nob3J0ID0gdGhpcy50cmlwLnN1bW1hcnkucHJvZHVjdD8udmVoaWNsZU1vZGUgPT09ICdUUkFJTic7XG4gICAgY29uc3Qgc2hvcnQgPSBpc1Nob3J0XG4gICAgICA/IHJpZGVMZWdzWzBdLnNlcnZpY2VKb3VybmV5LnF1YXlUeXBlU2hvcnROYW1lIHx8ICcnXG4gICAgICA6IHJpZGVMZWdzWzBdLnNlcnZpY2VKb3VybmV5LnF1YXlUeXBlTmFtZSB8fCAnJztcblxuICAgIHJldHVybiB7XG4gICAgICBsb25nOiBpMThuRnJvbVBsYXRmb3JtW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdICsgJyAnICsgc2hvcnQsXG4gICAgICBzaG9ydCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIG1hcCBRdWF5ICovXG4gIHByaXZhdGUgX3JlbmRlclF1YXlUeXBlKCk6IFRlbXBsYXRlUmVzdWx0IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMudHJpcC5zdW1tYXJ5Py5wcm9kdWN0KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHF1YXlUeXBlU3RyaW5ncyA9IHRoaXMuX2dldFF1YXlUeXBlU3RyaW5ncygpO1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctLXF1YXlcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtxdWF5VHlwZVN0cmluZ3M/Lmxvbmd9Jm5ic3A7PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy0tcXVheS10eXBlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICA+JHtxdWF5VHlwZVN0cmluZ3M/LnNob3J0fTwvc3BhblxuICAgICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUhpbUN1cyh0cmlwOiBJVHJpcEl0ZW0pOiB7IGN1czogSGltQ3VzIHwgbnVsbDsgaGltOiBIaW1DdXMgfCBudWxsIH0ge1xuICAgIGNvbnN0IHsgc2l0dWF0aW9ucyB9ID0gdHJpcCB8fCB7fTtcbiAgICBjb25zdCBzb3J0ZWRTaXR1YXRpb25zID0gc2l0dWF0aW9ucyAmJiBzb3J0U2l0dWF0aW9uKHNpdHVhdGlvbnMpO1xuICAgIGNvbnN0IGN1cyA9IGdldEN1cyh0cmlwLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBjdXM6IE9iamVjdC5rZXlzKGN1cyk/Lmxlbmd0aCA/IGN1cyA6IG51bGwsXG4gICAgICBoaW06IHNpdHVhdGlvbnM/Lmxlbmd0aCA/IGdldEhpbUljb24oc29ydGVkU2l0dWF0aW9uc1swXSkgOiBudWxsLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9nZXRBY2Nlc3NpYmlsaXR5VGV4dCh0cmlwOiBJVHJpcEl0ZW0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgc3VtbWFyeSwgbGVncywgbm90aWNlcyB9ID0gdHJpcCB8fCB7fTtcbiAgICBjb25zdCB7XG4gICAgICBkZXBhcnR1cmVXYWxrLFxuICAgICAgYXJyaXZhbFdhbGssXG4gICAgICBkZXBhcnR1cmUsXG4gICAgICBhcnJpdmFsLFxuICAgICAgcHJvZHVjdCxcbiAgICAgIGRpcmVjdGlvbixcbiAgICAgIG9jY3VwYW5jeSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gICAgY29uc3QgeyBkZXBhcnR1cmVUaW1lQXR0cmlidXRlLCBhcnJpdmFsVGltZUF0dHJpYnV0ZSB9ID0gZ2V0RGVwYXJ0dXJlQXJyaXZhbFRpbWVBdHRyaWJ1dGUoXG4gICAgICBsZWdzLFxuICAgICAgZGVwYXJ0dXJlV2FsayB8fCAwLFxuICAgICAgYXJyaXZhbFdhbGsgfHwgMCxcbiAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICB0aGlzLmExMXlGb290cGF0aCxcbiAgICApO1xuXG4gICAgY29uc3QgZGVwYXJ0dXJlVGltZTogRGF0ZSB8IHVuZGVmaW5lZCA9IGRlcGFydHVyZT8udGltZVxuICAgICAgPyByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKGRlcGFydHVyZS50aW1lKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZTogRGF0ZSB8IHVuZGVmaW5lZCA9IGFycml2YWw/LnRpbWVcbiAgICAgID8gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhhcnJpdmFsLnRpbWUpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRlcGFydHVyZVdhbGtUZXh0ID0gZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZVxuICAgICAgPyBgJHtkZXBhcnR1cmVUaW1lQXR0cmlidXRlLnRleHR9ICR7ZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZS5kdXJhdGlvbn0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsV2Fsa1RleHQgPSBhcnJpdmFsVGltZUF0dHJpYnV0ZVxuICAgICAgPyBgJHthcnJpdmFsVGltZUF0dHJpYnV0ZS50ZXh0fSAke2Fycml2YWxUaW1lQXR0cmlidXRlLmR1cmF0aW9ufSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGRlcGFydHVyZVRpbWVUZXh0ID0gZGVwYXJ0dXJlVGltZVxuICAgICAgPyBgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHtmb3JtYXQoZGVwYXJ0dXJlVGltZSwgJ0hIOm1tJyl9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgZ2V0RGVwYXJ0dXJlUXVheVRleHQgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIGlmICghZGVwYXJ0dXJlPy5xdWF5Rm9ybWF0dGVkKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIHByZWZpeCBcIm5ld1wiIGlmIHF1YXkgd2FzIGNoYW5nZWRcbiAgICAgIGNvbnN0IGNoYW5nZWRRdWF5UHJlZml4ID0gZGVwYXJ0dXJlPy5xdWF5Q2hhbmdlZCA/IGAke2kxOG5OZXdbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19IGAgOiAnJztcbiAgICAgIHJldHVybiBgJHtjaGFuZ2VkUXVheVByZWZpeH0ke1xuICAgICAgICB0aGlzLl9nZXRRdWF5VHlwZVN0cmluZ3MoKT8ubG9uZ1xuICAgICAgfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH0sIGA7XG4gICAgfTtcblxuICAgIGNvbnN0IG1lYW5zT2ZUcmFuc3BvcnRUZXh0ID1cbiAgICAgIHByb2R1Y3QgJiYgcHJvZHVjdC52ZWhpY2xlTW9kZVxuICAgICAgICA/IGkxOG5NZWFuc09mVHJhbnNwb3J0W3Byb2R1Y3QudmVoaWNsZU1vZGUudG9Mb3dlckNhc2UoKV0gJiZcbiAgICAgICAgICBgJHtpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgdmVoaWNsZVN1Yk1vZGVUZXh0ID0gcHJvZHVjdD8udmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWVcbiAgICAgID8gYCR7cHJvZHVjdC52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZX0gJHtwcm9kdWN0LmxpbmUgfHwgJyd9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgZGlyZWN0aW9uVGV4dCA9IGAke2kxOG5EaXJlY3Rpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7ZGlyZWN0aW9ufSwgYDtcblxuICAgIGNvbnN0IGhpbUN1cyA9IHRoaXMuX2hhbmRsZUhpbUN1cyh0cmlwKTtcbiAgICBjb25zdCBjdXNUZXh0ID0gaGltQ3VzPy5jdXM/LnRleHRcbiAgICAgID8gYCR7aTE4blJlYWxUaW1lSW5mb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7aGltQ3VzPy5jdXM/LnRleHR9LCBgXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IGhpbVRleHQgPSBoaW1DdXM/LmhpbT8udGV4dFxuICAgICAgPyBgJHtpMThuUmVhbFRpbWVJbmZvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHtoaW1DdXM/LmhpbT8udGV4dH0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBib2FyZGluZ1RleHQgPSB0aGlzLmJvYXJkaW5nID8gYCR7dGhpcy5ib2FyZGluZy50ZXh0fSwgYCA6ICcnO1xuXG4gICAgY29uc3QgcHJpY2VUZXh0ID0gYCR7dGhpcy5wcmljZT8uaXNEaXNjb3VudCA/IGkxOG5TdXBlcnNhdmVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJyd9ICR7XG4gICAgICB0aGlzLnByaWNlPy50ZXh0ICYmIHRoaXMucHJpY2U/LnByaWNlXG4gICAgICAgID8gKHRoaXMucHJpY2U/LnRleHQgfHwgJycpICsgJyAnICsgKHRoaXMucHJpY2U/LnByaWNlIHx8ICcnKSArICcsICdcbiAgICAgICAgOiAnJ1xuICAgIH1gO1xuXG4gICAgY29uc3QgdHJhbnNmZXJQcm9jZWR1cmVzID1cbiAgICAgIGxlZ3M/Lmxlbmd0aCA+IDFcbiAgICAgICAgPyBgJHtsZWdzPy5sZW5ndGggLSAxfSAke2kxOG5UcmFuc2ZlclByb2NlZHVyZXNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19LCBgXG4gICAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZVRleHQgPSBhcnJpdmFsVGltZVxuICAgICAgPyBgJHtpMThuQXJyaXZhbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGFycml2YWxUaW1lLCAnSEg6bW0nKX0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBsZXQgb2NjdXBhbmN5VGV4dDogc3RyaW5nID0gJyc7XG4gICAgaWYgKG9jY3VwYW5jeSkge1xuICAgICAgaWYgKG9jY3VwYW5jeS5maXJzdENsYXNzICYmIG9jY3VwYW5jeS5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHtcbiAgICAgICAgb2NjdXBhbmN5VGV4dCArPSBgJHtpMThuQ2xhc3MuZmlyc3RbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuZmlyc3RDbGFzcy50b0xvd2VyQ2FzZSgpIGFzIFNiYk9jY3VwYW5jeV0gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICAgICk/Llt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XVxuICAgICAgICB9LmA7XG4gICAgICB9XG4gICAgICBpZiAob2NjdXBhbmN5LnNlY29uZENsYXNzICYmIG9jY3VwYW5jeS5zZWNvbmRDbGFzcyAhPT0gJ1VOS05PV04nKSB7XG4gICAgICAgIG9jY3VwYW5jeVRleHQgKz0gYCAke2kxOG5DbGFzcy5zZWNvbmRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuc2Vjb25kQ2xhc3MudG9Mb3dlckNhc2UoKSBhcyBTYmJPY2N1cGFuY3ldIGFzIFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICApPy5bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgfS5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgICAgbm90aWNlcyAmJlxuICAgICAgaGFuZGxlTm90aWNlcyhub3RpY2VzKS5sZW5ndGggJiZcbiAgICAgIGhhbmRsZU5vdGljZXMobm90aWNlcylcbiAgICAgICAgPy5tYXAoKG5vdGljZSwgaW5kZXgpID0+IGluZGV4IDwgNCAmJiBub3RpY2UudGV4dD8udGVtcGxhdGUpXG4gICAgICAgIC5qb2luKCcsICcpICsgJywgJztcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXNUZXh0ID0gYXR0cmlidXRlc1xuICAgICAgPyBgJHtpMThuVHJhdmVsaGludHNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2F0dHJpYnV0ZXN9YFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGR1cmF0aW9uVGV4dCA9XG4gICAgICAhIWR1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICA/IGAke2kxOG5UcmlwRHVyYXRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgICBkdXJhdGlvblRvVGltZShkdXJhdGlvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkubG9uZ1xuICAgICAgICAgIH0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIHJldHVybiBgJHtkZXBhcnR1cmVXYWxrVGV4dH0gJHtkZXBhcnR1cmVUaW1lVGV4dH0gJHtnZXREZXBhcnR1cmVRdWF5VGV4dCgpfSAke21lYW5zT2ZUcmFuc3BvcnRUZXh0fSAke3ZlaGljbGVTdWJNb2RlVGV4dH0gJHtkaXJlY3Rpb25UZXh0fSAke2N1c1RleHR9ICR7Ym9hcmRpbmdUZXh0fSAke3ByaWNlVGV4dH0gJHtcbiAgICAgIGN1c1RleHQgPyAnJyA6IGhpbVRleHRcbiAgICB9ICR7YXJyaXZhbFRpbWVUZXh0fSAke2Fycml2YWxXYWxrVGV4dH0gJHtkdXJhdGlvblRleHR9ICR7dHJhbnNmZXJQcm9jZWR1cmVzfSAke29jY3VwYW5jeVRleHR9ICR7YXR0cmlidXRlc1RleHR9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGlmICh0aGlzLmxvYWRpbmdUcmlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2tlbGV0b24oKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxlZ3MsIGlkLCBub3RpY2VzLCBzdW1tYXJ5IH0gPSB0aGlzLnRyaXAgfHwge307XG5cbiAgICBjb25zdCB7XG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIG9jY3VwYW5jeSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gICAgY29uc3QgaGltQ3VzID0gdGhpcy5faGFuZGxlSGltQ3VzKHRoaXMudHJpcCk7XG4gICAgY29uc3QgaGFzSGltQ3VzID0gISFoaW1DdXMuY3VzIHx8ICEhaGltQ3VzLmhpbTtcblxuICAgIGNvbnN0IG5vdGljZUF0dHJpYnV0ZXMgPSBub3RpY2VzICYmIGhhbmRsZU5vdGljZXMobm90aWNlcyk7XG5cbiAgICBjb25zdCBkdXJhdGlvbk9iaiA9IGR1cmF0aW9uID8gZHVyYXRpb25Ub1RpbWUoZHVyYXRpb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpIDogbnVsbDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1jYXJkIHNpemU9XCJsXCIgaWQ9JHtpZH0+XG4gICAgICAgIDxzYmItY2FyZC1idXR0b25cbiAgICAgICAgICA/YWN0aXZlPSR7dGhpcy5hY3RpdmV9XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD0ke3RoaXMuYWNjZXNzaWJpbGl0eUV4cGFuZGVkID8gJ3RydWUnIDogbm90aGluZ31cbiAgICAgICAgPlxuICAgICAgICAgICR7dGhpcy5jYXJkQWN0aW9uTGFiZWwgPyB0aGlzLmNhcmRBY3Rpb25MYWJlbCA6IHRoaXMuX2dldEFjY2Vzc2liaWxpdHlUZXh0KHRoaXMudHJpcCl9XG4gICAgICAgIDwvc2JiLWNhcmQtYnV0dG9uPlxuICAgICAgICAke3RoaXMubG9hZGluZ1ByaWNlXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FyZC1iYWRnZSBjbGFzcz1cInNiYi1sb2FkaW5nX19iYWRnZVwiPjwvc2JiLWNhcmQtYmFkZ2U+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgJHt0aGlzLnByaWNlICYmICF0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY29sb3I9JHt0aGlzLnByaWNlLmlzRGlzY291bnQgPyAnY2hhcmNvYWwnIDogJ3doaXRlJ30+XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS5pc0Rpc2NvdW50XG4gICAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAlPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICA+JHtpMThuU3VwZXJzYXZlclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPmBcbiAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS50ZXh0ID8gaHRtbGA8c3Bhbj4ke3RoaXMucHJpY2UudGV4dH08L3NwYW4+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7dGhpcy5wcmljZS5wcmljZSA/IGh0bWxgPHNwYW4+JHt0aGlzLnByaWNlLnByaWNlfTwvc3Bhbj5gIDogbm90aGluZ31cbiAgICAgICAgICAgIDwvc2JiLWNhcmQtYmFkZ2U+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvd1wiIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhlYWRlclwiIHJvbGU9XCJncmlkY2VsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICR7cHJvZHVjdD8uY29ycG9yYXRlSWRlbnRpdHlQaWN0b2dyYW0gJiZcbiAgICAgICAgICAgICAgaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzYmItaWNvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0LWljb25cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInBpY3RvOiR7cHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eVBpY3RvZ3JhbX1cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICAgJHtwcm9kdWN0ICYmXG4gICAgICAgICAgICAgICAgICBwcm9kdWN0LnZlaGljbGVNb2RlICYmXG4gICAgICAgICAgICAgICAgICBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldICYmXG4gICAgICAgICAgICAgICAgICBpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+YH1cbiAgICAgICAgICAgICAgJHtwcm9kdWN0ICYmXG4gICAgICAgICAgICAgIChwcm9kdWN0LmNvcnBvcmF0ZUlkZW50aXR5SWNvblxuICAgICAgICAgICAgICAgID8gcmVuZGVySWNvblByb2R1Y3QocHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eUljb24sIHByb2R1Y3QubmFtZSlcbiAgICAgICAgICAgICAgICA6IHByb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWUgJiZcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0cmluZ1Byb2R1Y3QocHJvZHVjdC52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZSwgcHJvZHVjdD8ubGluZSkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAke2RpcmVjdGlvblxuICAgICAgICAgICAgICA/IGh0bWxgPHA+JHtgJHtpMThuRGlyZWN0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2RpcmVjdGlvbn1gfTwvcD5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2JiLXBlYXJsLWNoYWluLXRpbWVcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAubGVncz0ke2xlZ3N9XG4gICAgICAgICAgICAuZGVwYXJ0dXJlVGltZT0ke2RlcGFydHVyZT8udGltZX1cbiAgICAgICAgICAgIC5hcnJpdmFsVGltZT0ke2Fycml2YWw/LnRpbWV9XG4gICAgICAgICAgICAuZGVwYXJ0dXJlV2Fsaz0ke2RlcGFydHVyZVdhbGt9XG4gICAgICAgICAgICAuYXJyaXZhbFdhbGs9JHthcnJpdmFsV2Fsa31cbiAgICAgICAgICAgID9kaXNhYmxlLWFuaW1hdGlvbj0ke3RoaXMuZGlzYWJsZUFuaW1hdGlvbn1cbiAgICAgICAgICAgID9hMTF5LWZvb3RwYXRoPSR7dGhpcy5hMTF5Rm9vdHBhdGh9XG4gICAgICAgICAgICAubm93PSR7dGhpcy5ub3d9XG4gICAgICAgICAgPjwvc2JiLXBlYXJsLWNoYWluLXRpbWU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1mb290ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgICR7cHJvZHVjdCAmJiBkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWRcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz0ke2RlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgc2JiLXRpbWV0YWJsZV9fcm93LXF1YXktLWNoYW5nZWRgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJydcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJRdWF5VHlwZSgpfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAkeyhvY2N1cGFuY3k/LmZpcnN0Q2xhc3MgJiYgb2NjdXBhbmN5Py5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHx8XG4gICAgICAgICAgICAob2NjdXBhbmN5Py5zZWNvbmRDbGFzcyAmJiBvY2N1cGFuY3kuc2Vjb25kQ2xhc3MgIT09ICdVTktOT1dOJylcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItdGltZXRhYmxlLW9jY3VwYW5jeVxuICAgICAgICAgICAgICAgICAgLmZpcnN0Q2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LmZpcnN0Q2xhc3M/LnRvTG93ZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAuc2Vjb25kQ2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LnNlY29uZENsYXNzPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgID48L3NiYi10aW1ldGFibGUtb2NjdXBhbmN5PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHsobm90aWNlQXR0cmlidXRlcyAmJiBub3RpY2VBdHRyaWJ1dGVzLmxlbmd0aCkgfHwgdGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICA/IGh0bWxgPHVsIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhpbnRzXCIgcm9sZT1cImxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICR7bm90aWNlQXR0cmlidXRlcz8ubWFwKChub3RpY2UsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBpbmRleCA8IDRcbiAgICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmF2ZWwtaGludHNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHsnc2EtJyArIG5vdGljZS5uYW1lPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtub3RpY2UudGV4dD8udGVtcGxhdGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRyYXZlbC1oaW50c19faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHt0aGlzLmJvYXJkaW5nPy5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5ib2FyZGluZz8udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPmBcbiAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAgIDwvdWw+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAke2R1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICAgICAgICA/IGh0bWxgPHRpbWU+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuVHJpcER1cmF0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2R1cmF0aW9uT2JqIS5sb25nfWB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2R1cmF0aW9uT2JqIS5zaG9ydH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aW1lPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHtoYXNIaW1DdXMgJiYgKGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSlcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxzYmItaWNvbiBuYW1lPSR7KGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSkhLm5hbWV9Pjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4keyhoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pIS50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zYmItY2FyZD5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGltZXRhYmxlLXJvdyc6IFNiYlRpbWV0YWJsZVJvd0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYiIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdURhLE1BQUEsb0JBQW9CLENBQUMsTUFBYyxTQUFnQztBQUN2RSxTQUFBO0FBQUEscUJBQ1ksSUFBSTtBQUFBLDJDQUNrQixJQUFJO0FBQUE7QUFFL0M7QUFFYSxNQUFBLHNCQUFzQixDQUFDLGFBQXFCLFNBQXdDO0FBQ3pGLFFBQUEsUUFBUSxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUUsU0FBUyxXQUFXLElBQUksTUFBTTtBQUNyRCxTQUFBO0FBQUEsTUFDSCxTQUFTLE9BQU8sY0FBYyxRQUFRLE9BQU8sV0FBVztBQUFBO0FBRTlEO0FBRUEsTUFBTSxtQkFBbUIsQ0FBQyxTQUFnRDs7QUFDakUsVUFBQSw4Q0FBTSxLQUFLLENBQUM7O0FBQVEsWUFBQUEsT0FBQUMsTUFBQSxJQUFJLG1CQUFKLGdCQUFBQSxJQUFvQixzQkFBcEIsZ0JBQUFELElBQXVDO0FBQUEsU0FBM0QsbUJBQTJFLG1CQUEzRSxtQkFDSCxzQkFERyxtQkFDZ0I7QUFDekI7QUFFQSxNQUFNLGVBQWUsQ0FBQyxTQUFnRDs7QUFDN0QsVUFBQSw4Q0FBTSxLQUFLLENBQUM7O0FBQVEsWUFBQUEsT0FBQUMsTUFBQSxJQUFJLG1CQUFKLGdCQUFBQSxJQUFvQixzQkFBcEIsZ0JBQUFELElBQXVDO0FBQUEsU0FBM0QsbUJBQXVFLG1CQUF2RSxtQkFDSCxzQkFERyxtQkFD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
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=