@sbb-esta/lyne-elements-experimental 0.52.0 → 0.52.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/datetime.js +6 -12
- package/core/timetable.js +17 -17
- package/development/core/datetime.js +8 -15
- package/development/{format-WI2gcVKN.js → format-BOXfsJCN.js} +7 -13
- package/development/journey-summary/journey-summary.d.ts +2 -2
- package/development/journey-summary.js +3 -4
- package/development/pearl-chain/pearl-chain.d.ts +1 -1
- package/development/pearl-chain-time/pearl-chain-time.d.ts +1 -1
- package/development/pearl-chain-time.js +3 -4
- package/development/pearl-chain-vertical-item.js +2 -3
- package/development/pearl-chain-vertical.js +2 -3
- package/development/pearl-chain.js +3 -5
- package/development/timetable-duration.js +2 -3
- package/development/timetable-row/timetable-row.d.ts +1 -1
- package/development/timetable-row.js +11 -20
- package/{format-CEz7IGRJ.js → format-qHhIvnY8.js} +4 -8
- package/journey-summary/journey-summary.d.ts +2 -2
- package/journey-summary.js +57 -57
- package/package.json +2 -2
- package/pearl-chain/pearl-chain.d.ts +1 -1
- package/pearl-chain-time/pearl-chain-time.d.ts +1 -1
- package/pearl-chain-time.js +29 -29
- package/pearl-chain.js +69 -70
- package/timetable-duration.js +15 -15
- package/timetable-row/timetable-row.d.ts +1 -1
- package/timetable-row.js +192 -198
|
@@ -10,7 +10,7 @@ import "@sbb-esta/lyne-elements/card.js";
|
|
|
10
10
|
import "@sbb-esta/lyne-elements/icon.js";
|
|
11
11
|
import "@sbb-esta/lyne-elements/timetable-occupancy.js";
|
|
12
12
|
import "./pearl-chain-time.js";
|
|
13
|
-
import { f as format } from "./format-
|
|
13
|
+
import { f as format } from "./format-BOXfsJCN.js";
|
|
14
14
|
const style = css`/**
|
|
15
15
|
* Better font rendering (on OS X)
|
|
16
16
|
* http://maximilianhoffmann.com/posts/better-font-rendering-on-osx
|
|
@@ -242,8 +242,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
242
242
|
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
243
243
|
if (decorator = decorators[i])
|
|
244
244
|
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
245
|
-
if (kind && result)
|
|
246
|
-
__defProp(target, key, result);
|
|
245
|
+
if (kind && result) __defProp(target, key, result);
|
|
247
246
|
return result;
|
|
248
247
|
};
|
|
249
248
|
const renderIconProduct = (icon, name) => {
|
|
@@ -343,12 +342,9 @@ const getCus = (trip, currentLanguage) => {
|
|
|
343
342
|
return { name: "cancellation", text: tripStatus == null ? void 0 : tripStatus.cancelledText };
|
|
344
343
|
if (getReachableText(rideLegs))
|
|
345
344
|
return { name: "missed-connection", text: getReachableText(rideLegs) };
|
|
346
|
-
if (tripStatus == null ? void 0 : tripStatus.alternative)
|
|
347
|
-
|
|
348
|
-
if (
|
|
349
|
-
return { name: "reroute", text: getRedirectedText(rideLegs) };
|
|
350
|
-
if (getUnplannedStop(rideLegs))
|
|
351
|
-
return { name: "add-stop", text: getUnplannedStop(rideLegs) };
|
|
345
|
+
if (tripStatus == null ? void 0 : tripStatus.alternative) return { name: "alternative", text: tripStatus.alternativeText };
|
|
346
|
+
if (getRedirectedText(rideLegs)) return { name: "reroute", text: getRedirectedText(rideLegs) };
|
|
347
|
+
if (getUnplannedStop(rideLegs)) return { name: "add-stop", text: getUnplannedStop(rideLegs) };
|
|
352
348
|
if ((tripStatus == null ? void 0 : tripStatus.delayed) || (tripStatus == null ? void 0 : tripStatus.delayedUnknown))
|
|
353
349
|
return { name: "delay", text: getDelayText(rideLegs) };
|
|
354
350
|
if (tripStatus == null ? void 0 : tripStatus.quayChanged) {
|
|
@@ -363,8 +359,7 @@ const getCus = (trip, currentLanguage) => {
|
|
|
363
359
|
const findAndReplaceNotice = (notices) => {
|
|
364
360
|
const reservationNotice = ["RR", "RK", "RC", "RL", "RM", "RS", "RU", "XP", "XR", "XT"];
|
|
365
361
|
return notices.reduce((foundNotice, notice) => {
|
|
366
|
-
if (foundNotice)
|
|
367
|
-
return foundNotice;
|
|
362
|
+
if (foundNotice) return foundNotice;
|
|
368
363
|
if (reservationNotice.includes(notice.name)) {
|
|
369
364
|
return { ...notice, name: "RR" };
|
|
370
365
|
}
|
|
@@ -380,10 +375,8 @@ const filterNotices = (notices) => {
|
|
|
380
375
|
const handleNotices = (notices) => {
|
|
381
376
|
const reservationNotice = findAndReplaceNotice(notices);
|
|
382
377
|
const filteredNotices = filterNotices(notices);
|
|
383
|
-
if (reservationNotice === void 0)
|
|
384
|
-
|
|
385
|
-
if (!filteredNotices.length)
|
|
386
|
-
return [reservationNotice];
|
|
378
|
+
if (reservationNotice === void 0) return filteredNotices;
|
|
379
|
+
if (!filteredNotices.length) return [reservationNotice];
|
|
387
380
|
if (filteredNotices[0].name === "Z" && filteredNotices[1]) {
|
|
388
381
|
return [filteredNotices[0], reservationNotice, filteredNotices[1]].concat(
|
|
389
382
|
filteredNotices.slice(2)
|
|
@@ -440,8 +433,7 @@ let SbbTimetableRowElement = class extends LitElement {
|
|
|
440
433
|
}
|
|
441
434
|
_getQuayTypeStrings() {
|
|
442
435
|
var _a, _b;
|
|
443
|
-
if (!((_a = this.trip.summary) == null ? void 0 : _a.product))
|
|
444
|
-
return null;
|
|
436
|
+
if (!((_a = this.trip.summary) == null ? void 0 : _a.product)) return null;
|
|
445
437
|
const quayType = this._getQuayType((_b = this.trip.summary.product) == null ? void 0 : _b.vehicleMode);
|
|
446
438
|
return {
|
|
447
439
|
long: quayType == null ? void 0 : quayType.long[this._language.current],
|
|
@@ -451,8 +443,7 @@ let SbbTimetableRowElement = class extends LitElement {
|
|
|
451
443
|
/** map Quay */
|
|
452
444
|
_renderQuayType() {
|
|
453
445
|
var _a;
|
|
454
|
-
if (!((_a = this.trip.summary) == null ? void 0 : _a.product))
|
|
455
|
-
return void 0;
|
|
446
|
+
if (!((_a = this.trip.summary) == null ? void 0 : _a.product)) return void 0;
|
|
456
447
|
const quayTypeStrings = this._getQuayTypeStrings();
|
|
457
448
|
return html`
|
|
458
449
|
<span class="sbb-timetable__row--quay">
|
|
@@ -693,4 +684,4 @@ export {
|
|
|
693
684
|
renderStringProduct,
|
|
694
685
|
sortSituation
|
|
695
686
|
};
|
|
696
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC90aW1ldGFibGUtcm93L3RpbWV0YWJsZS1yb3cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kb20uanMnO1xuaW1wb3J0IHtcbiAgaTE4bkFycml2YWwsXG4gIGkxOG5DbGFzcyxcbiAgaTE4bkRlcGFydHVyZSxcbiAgaTE4bkRpcmVjdGlvbixcbiAgaTE4bkZyb21QaWVyLFxuICBpMThuRnJvbVBsYXRmb3JtLFxuICBpMThuRnJvbVN0YW5kLFxuICBpMThuTWVhbnNPZlRyYW5zcG9ydCxcbiAgaTE4bk5ldyxcbiAgaTE4bk9jY3VwYW5jeSxcbiAgaTE4blJlYWxUaW1lSW5mbyxcbiAgaTE4blN1cGVyc2F2ZXIsXG4gIGkxOG5UcmFuc2ZlclByb2NlZHVyZXMsXG4gIGkxOG5UcmF2ZWxoaW50cyxcbiAgaTE4blRyaXBEdXJhdGlvbixcbiAgaTE4blRyaXBRdWF5Q2hhbmdlLFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlTGlrZSwgU2JiT2NjdXBhbmN5IH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBkdXJhdGlvblRvVGltZSwgcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyB9IGZyb20gJy4uL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHR5cGUgeyBJVHJpcEl0ZW0sIE5vdGljZSwgUHRSaWRlTGVnLCBQdFNpdHVhdGlvbiB9IGZyb20gJy4uL2NvcmUvdGltZXRhYmxlLmpzJztcbmltcG9ydCB7IGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlLCBpc1JpZGVMZWcgfSBmcm9tICcuLi9jb3JlL3RpbWV0YWJsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RpbWV0YWJsZS1yb3cuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jYXJkLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5qcyc7XG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3RpbWV0YWJsZS1vY2N1cGFuY3kuanMnO1xuaW1wb3J0ICcuLi9wZWFybC1jaGFpbi10aW1lLmpzJztcblxuLyoqIEhpbUN1cyBpbnRlcmZhY2UgZm9yIG1hcHBlZCBpY29uIG5hbWUgYW5kIHRleHQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGltQ3VzIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqIEJvYXJkaW5nIGljb24gaW50ZXJmYWNlIGZvciBtYXBwZWQgaWNvbiBuYW1lIGFuZCB0ZXh0ICovXG5leHBvcnQgaW50ZXJmYWNlIEJvYXJkaW5nIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2Uge1xuICBwcmljZT86IHN0cmluZztcbiAgdGV4dD86IHN0cmluZztcbiAgaXNEaXNjb3VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCByZW5kZXJJY29uUHJvZHVjdCA9IChpY29uOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0ID0+IHtcbiAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0XCI+XG4gICAgPHNiYi1pY29uIG5hbWU9JHtpY29ufT48L3NiYi1pY29uPlxuICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7bmFtZX08L3NwYW4+XG4gIDwvc3Bhbj5gO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlclN0cmluZ1Byb2R1Y3QgPSAodmVoaWNsZU5hbWU6IHN0cmluZywgbGluZT86IHN0cmluZyB8IG51bGwpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIGNvbnN0IHNwYWNlID0gWydNJywgJ0InLCAnVCddLmluY2x1ZGVzKHZlaGljbGVOYW1lKSA/ICcgJyA6ICcnO1xuICByZXR1cm4gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnRudW1iZXJcIj5cbiAgICAke2xpbmUgIT09IG51bGwgPyB2ZWhpY2xlTmFtZSArIHNwYWNlICsgbGluZSA6IHZlaGljbGVOYW1lfVxuICA8L3NwYW4+YDtcbn07XG5cbmNvbnN0IGdldFJlYWNoYWJsZVRleHQgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVhY2hhYmxlVGV4dCk/LnNlcnZpY2VKb3VybmV5XG4gICAgPy5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVhY2hhYmxlVGV4dDtcbn07XG5cbmNvbnN0IGdldERlbGF5VGV4dCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiBsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5kZWxheVRleHQpPy5zZXJ2aWNlSm91cm5leVxuICAgID8uc2VydmljZUFsdGVyYXRpb24/LmRlbGF5VGV4dDtcbn07XG5cbmNvbnN0IGdldFJlZGlyZWN0ZWRUZXh0ID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+ICEhbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVkaXJlY3RlZFRleHQpXG4gICAgPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnJlZGlyZWN0ZWRUZXh0O1xufTtcblxuY29uc3QgZ2V0VW5wbGFubmVkU3RvcCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiAhIWxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnVucGxhbm5lZFN0b3BQb2ludHNUZXh0KVxuICAgID8uc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy51bnBsYW5uZWRTdG9wUG9pbnRzVGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBzb3J0U2l0dWF0aW9uID0gKHNpdHVhdGlvbnM6IFB0U2l0dWF0aW9uW10pOiBQdFNpdHVhdGlvbltdID0+IHtcbiAgY29uc3QgcHJpb3JpdGllcyA9IHtcbiAgICBESVNUVVJCQU5DRTogMCxcbiAgICBJTkZPUk1BVElPTjogMSxcbiAgICBERUxBWTogMixcbiAgICBUUkFJTl9SRVBMQUNFTUVOVF9CWV9CVVM6IDMsXG4gICAgQ09OU1RSVUNUSU9OX1NJVEU6IDQsXG4gICAgRU5EX01FU1NBR0U6IDUsXG4gIH07XG5cbiAgcmV0dXJuIFsuLi5zaXR1YXRpb25zXT8uc29ydChcbiAgICAoYTogUHRTaXR1YXRpb24sIGI6IFB0U2l0dWF0aW9uKSA9PiBwcmlvcml0aWVzW2EuY2F1c2UhXSAtIHByaW9yaXRpZXNbYi5jYXVzZSFdLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpbUljb24gPSAoc2l0dWF0aW9uOiBQdFNpdHVhdGlvbik6IEhpbUN1cyA9PiB7XG4gIHN3aXRjaCAoc2l0dWF0aW9uPy5jYXVzZSkge1xuICAgIGNhc2UgJ0RJU1RVUkJBTkNFJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdkaXNydXB0aW9uJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcz8ubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdJTkZPUk1BVElPTic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnaW5mbycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdERUxBWSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnZGVsYXknLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgY2FzZSAnVFJBSU5fUkVQTEFDRU1FTlRfQllfQlVTJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdyZXBsYWNlbWVudGJ1cycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdDT05TVFJVQ1RJT05fU0lURSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnY29uc3RydWN0aW9uJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnaW5mbycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cyA9ICh0cmlwOiBJVHJpcEl0ZW0sIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nKTogSGltQ3VzID0+IHtcbiAgY29uc3QgeyBzdW1tYXJ5LCBsZWdzIH0gPSB0cmlwIHx8IHt9O1xuICBjb25zdCByaWRlTGVncyA9IGxlZ3M/LmZpbHRlcigobGVnKSA9PiBpc1JpZGVMZWcobGVnKSkgYXMgUHRSaWRlTGVnW107XG4gIGNvbnN0IHsgdHJpcFN0YXR1cyB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICBpZiAodHJpcFN0YXR1cz8uY2FuY2VsbGVkIHx8IHRyaXBTdGF0dXM/LnBhcnRpYWxseUNhbmNlbGxlZClcbiAgICByZXR1cm4geyBuYW1lOiAnY2FuY2VsbGF0aW9uJywgdGV4dDogdHJpcFN0YXR1cz8uY2FuY2VsbGVkVGV4dCB9O1xuICBpZiAoZ2V0UmVhY2hhYmxlVGV4dChyaWRlTGVncykpXG4gICAgcmV0dXJuIHsgbmFtZTogJ21pc3NlZC1jb25uZWN0aW9uJywgdGV4dDogZ2V0UmVhY2hhYmxlVGV4dChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LmFsdGVybmF0aXZlKSByZXR1cm4geyBuYW1lOiAnYWx0ZXJuYXRpdmUnLCB0ZXh0OiB0cmlwU3RhdHVzLmFsdGVybmF0aXZlVGV4dCB9O1xuICBpZiAoZ2V0UmVkaXJlY3RlZFRleHQocmlkZUxlZ3MpKSByZXR1cm4geyBuYW1lOiAncmVyb3V0ZScsIHRleHQ6IGdldFJlZGlyZWN0ZWRUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAoZ2V0VW5wbGFubmVkU3RvcChyaWRlTGVncykpIHJldHVybiB7IG5hbWU6ICdhZGQtc3RvcCcsIHRleHQ6IGdldFVucGxhbm5lZFN0b3AocmlkZUxlZ3MpIH07XG4gIGlmICh0cmlwU3RhdHVzPy5kZWxheWVkIHx8IHRyaXBTdGF0dXM/LmRlbGF5ZWRVbmtub3duKVxuICAgIHJldHVybiB7IG5hbWU6ICdkZWxheScsIHRleHQ6IGdldERlbGF5VGV4dChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LnF1YXlDaGFuZ2VkKSB7XG4gICAgY29uc3QgZGVwYXJ0dXJlID0gcmlkZUxlZ3NbMF0uZGVwYXJ0dXJlO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAncGxhdGZvcm0tY2hhbmdlJyxcbiAgICAgIHRleHQ6IGRlcGFydHVyZS5xdWF5Q2hhbmdlZCA/IGRlcGFydHVyZS5xdWF5Q2hhbmdlZFRleHQgOiBpMThuVHJpcFF1YXlDaGFuZ2VbY3VycmVudExhbmd1YWdlXSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHt9IGFzIEhpbUN1cztcbn07XG5cbmNvbnN0IGZpbmRBbmRSZXBsYWNlTm90aWNlID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmVzZXJ2YXRpb25Ob3RpY2UgPSBbJ1JSJywgJ1JLJywgJ1JDJywgJ1JMJywgJ1JNJywgJ1JTJywgJ1JVJywgJ1hQJywgJ1hSJywgJ1hUJ107XG5cbiAgcmV0dXJuIG5vdGljZXMucmVkdWNlKChmb3VuZE5vdGljZTogTm90aWNlIHwgdW5kZWZpbmVkLCBub3RpY2U6IE5vdGljZSk6IE5vdGljZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGZvdW5kTm90aWNlKSByZXR1cm4gZm91bmROb3RpY2U7XG4gICAgaWYgKHJlc2VydmF0aW9uTm90aWNlLmluY2x1ZGVzKG5vdGljZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIHsgLi4ubm90aWNlLCBuYW1lOiAnUlInIH0gYXMgTm90aWNlO1xuICAgIH1cbiAgfSwgdW5kZWZpbmVkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJOb3RpY2VzID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlW10gPT4ge1xuICBjb25zdCBhbGxvd2VkTmFtZXMgPSBbJ1onLCAnU0InLCAnU1onLCAnVlInLCAnVEcnXTtcblxuICBjb25zdCBmaWx0ZXJOb3RpY2UgPSBub3RpY2VzLmZpbHRlcigobm90aWNlLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBub3RpY2VzLmZpbmRJbmRleCgobikgPT4gbi5uYW1lID09PSBub3RpY2UubmFtZSkgPT09IGluZGV4O1xuICB9KTtcblxuICByZXR1cm4gZmlsdGVyTm90aWNlXG4gICAgLmZpbHRlcigobm90aWNlKSA9PiBhbGxvd2VkTmFtZXMuaW5jbHVkZXMobm90aWNlLm5hbWUpKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhbGxvd2VkTmFtZXMuaW5kZXhPZihhLm5hbWUpIC0gYWxsb3dlZE5hbWVzLmluZGV4T2YoYi5uYW1lKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlTm90aWNlcyA9IChub3RpY2VzOiBOb3RpY2VbXSk6IE5vdGljZVtdID0+IHtcbiAgY29uc3QgcmVzZXJ2YXRpb25Ob3RpY2UgPSBmaW5kQW5kUmVwbGFjZU5vdGljZShub3RpY2VzKTtcbiAgY29uc3QgZmlsdGVyZWROb3RpY2VzID0gZmlsdGVyTm90aWNlcyhub3RpY2VzKTtcblxuICBpZiAocmVzZXJ2YXRpb25Ob3RpY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZpbHRlcmVkTm90aWNlcztcbiAgaWYgKCFmaWx0ZXJlZE5vdGljZXMubGVuZ3RoKSByZXR1cm4gW3Jlc2VydmF0aW9uTm90aWNlXTtcblxuICBpZiAoZmlsdGVyZWROb3RpY2VzWzBdLm5hbWUgPT09ICdaJyAmJiBmaWx0ZXJlZE5vdGljZXNbMV0pIHtcbiAgICByZXR1cm4gW2ZpbHRlcmVkTm90aWNlc1swXSwgcmVzZXJ2YXRpb25Ob3RpY2UsIGZpbHRlcmVkTm90aWNlc1sxXV0uY29uY2F0KFxuICAgICAgZmlsdGVyZWROb3RpY2VzLnNsaWNlKDIpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gW3Jlc2VydmF0aW9uTm90aWNlLCAuLi5maWx0ZXJlZE5vdGljZXNdO1xufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJpcCwgYWN0aW5nIGFzIGEgY29udGFpbmVyIGZvciBhbGwgdGhlIGBzYmItdGltZXRhYmxlLSpgIGNvbXBvbmVudHMuXG4gKiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi10aW1ldGFibGUtcm93JylcbmV4cG9ydCBjbGFzcyBTYmJUaW1ldGFibGVSb3dFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBUaGUgdHJpcCBQcm9wLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIHRyaXAhOiBJVHJpcEl0ZW07XG5cbiAgLyoqIFRoZSBwcmljZSBQcm9wLCB3aGljaCBjb25zaXN0cyBvZiB0aGUgZGF0YSBmb3IgdGhlIGJhZGdlLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIHByaWNlPzogUHJpY2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIHNiYi1wZWFybC1jaGFpbiBjb21wb25lbnQgLSBpZiB0cnVlIHRoZSBwb3NpdGlvbiB3b24ndCBiZSBhbmltYXRlZC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGlzYWJsZS1hbmltYXRpb24nLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhbjtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgbm90aWNlcyBzZWN0aW9uICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IE9iamVjdCB9KSBwdWJsaWMgYm9hcmRpbmc/OiBCb2FyZGluZztcblxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgc3RhdGUgLVxuICAgKiB3aGVuIHRoaXMgaXMgdHJ1ZSBpdCB3aWxsIGJlIHJlbmRlciBza2VsZXRvbiB3aXRoIGFuIGlkbGluZyBhbmltYXRpb25cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvYWRpbmctdHJpcCcsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGxvYWRpbmdUcmlwID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2FkaW5nIHN0YXRlIC1cbiAgICogd2hlbiB0aGlzIGlzIHRydWUgaXQgd2lsbCBiZSByZW5kZXIgc2tlbGV0b24gd2l0aCBhbiBpZGxpbmcgYW5pbWF0aW9uXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb2FkaW5nLXByaWNlJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgbG9hZGluZ1ByaWNlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhpZGRlbiBsYWJlbCBmb3IgdGhlIGNhcmQgYWN0aW9uLiBJdCBvdmVycmlkZXMgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFjY2Vzc2liaWxpdHkgdGV4dCBmb3IgdGhlIGNvbXBvbmVudC4gVXNlIHRoaXMgcHJvcCB0byBwcm92aWRlIGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2FyZC1hY3Rpb24tbGFiZWwnIH0pIHB1YmxpYyBjYXJkQWN0aW9uTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIHNiYi1jYXJkIGNvbXBvbmVudCBhcyBhcmlhLWV4cGFuZGVkLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWV4cGFuZGVkJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzaWJpbGl0eUV4cGFuZGVkPzogYm9vbGVhbjtcblxuICAvKiogV2hlbiB0aGlzIHByb3AgaXMgdHJ1ZSB0aGUgc2JiLWNhcmQgd2lsbCBiZSBpbiB0aGUgYWN0aXZlIHN0YXRlLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBhY3RpdmU/OiBib29sZWFuO1xuXG4gIC8qKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2UgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ub3cgPSBkZWZhdWx0RGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKGRlZmF1bHREYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyBnZXQgbm93KCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9ub3cgPz8gbmV3IERhdGUoKTtcbiAgfVxuICBwcml2YXRlIF9ub3c6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsb2FkaW5nVHJpcCcpKSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLCAncm9sZScsICF0aGlzLmxvYWRpbmdUcmlwID8gJ3Jvd2dyb3VwJyA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgc2tlbGV0b24gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGluZyBzdGF0ZSAqL1xuICBwcml2YXRlIF9yZW5kZXJTa2VsZXRvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLWNhcmQgc2l6ZT1cImxcIiBjbGFzcz1cInNiYi1sb2FkaW5nXCI+XG4gICAgICAgICR7dGhpcy5sb2FkaW5nUHJpY2VcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYXJkLWJhZGdlIGNsYXNzPVwic2JiLWxvYWRpbmdfX2JhZGdlXCI+PC9zYmItY2FyZC1iYWRnZT5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3Jvd1wiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fcm93XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1sb2FkaW5nX19yb3dcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NiYi1jYXJkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRRdWF5VHlwZSh2ZWhpY2xlTW9kZTogc3RyaW5nKTogYW55IHtcbiAgICBzd2l0Y2ggKHZlaGljbGVNb2RlKSB7XG4gICAgICBjYXNlICdUUkFJTic6XG4gICAgICAgIHJldHVybiBpMThuRnJvbVBsYXRmb3JtO1xuICAgICAgY2FzZSAnU0hJUCc6XG4gICAgICAgIHJldHVybiBpMThuRnJvbVBpZXI7XG4gICAgICBjYXNlICdUUkFNV0FZJzpcbiAgICAgICAgcmV0dXJuIGkxOG5Gcm9tU3RhbmQ7XG4gICAgICBjYXNlICdCVVMnOlxuICAgICAgICByZXR1cm4gaTE4bkZyb21TdGFuZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UXVheVR5cGVTdHJpbmdzKCk6IHsgbG9uZzogc3RyaW5nOyBzaG9ydDogc3RyaW5nIH0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMudHJpcC5zdW1tYXJ5Py5wcm9kdWN0KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBxdWF5VHlwZSA9IHRoaXMuX2dldFF1YXlUeXBlKHRoaXMudHJpcC5zdW1tYXJ5LnByb2R1Y3Q/LnZlaGljbGVNb2RlKTtcbiAgICByZXR1cm4ge1xuICAgICAgbG9uZzogcXVheVR5cGU/LmxvbmdbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0sXG4gICAgICBzaG9ydDogcXVheVR5cGU/LnNob3J0W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdLFxuICAgIH07XG4gIH1cblxuICAvKiogbWFwIFF1YXkgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyUXVheVR5cGUoKTogVGVtcGxhdGVSZXN1bHQgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy50cmlwLnN1bW1hcnk/LnByb2R1Y3QpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcXVheVR5cGVTdHJpbmdzID0gdGhpcy5fZ2V0UXVheVR5cGVTdHJpbmdzKCk7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy0tcXVheVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke3F1YXlUeXBlU3RyaW5ncz8ubG9uZ30mbmJzcDs8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LS1xdWF5LXR5cGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID4ke3F1YXlUeXBlU3RyaW5ncz8uc2hvcnR9PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSGltQ3VzKHRyaXA6IElUcmlwSXRlbSk6IHsgY3VzOiBIaW1DdXMgfCBudWxsOyBoaW06IEhpbUN1cyB8IG51bGwgfSB7XG4gICAgY29uc3QgeyBzaXR1YXRpb25zIH0gPSB0cmlwIHx8IHt9O1xuICAgIGNvbnN0IHNvcnRlZFNpdHVhdGlvbnMgPSBzaXR1YXRpb25zICYmIHNvcnRTaXR1YXRpb24oc2l0dWF0aW9ucyk7XG4gICAgY29uc3QgY3VzID0gZ2V0Q3VzKHRyaXAsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGN1czogT2JqZWN0LmtleXMoY3VzKT8ubGVuZ3RoID8gY3VzIDogbnVsbCxcbiAgICAgIGhpbTogc2l0dWF0aW9ucz8ubGVuZ3RoID8gZ2V0SGltSWNvbihzb3J0ZWRTaXR1YXRpb25zWzBdKSA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEFjY2Vzc2liaWxpdHlUZXh0KHRyaXA6IElUcmlwSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBzdW1tYXJ5LCBsZWdzLCBub3RpY2VzIH0gPSB0cmlwIHx8IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIGRlcGFydHVyZVdhbGssXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgb2NjdXBhbmN5LFxuICAgICAgZHVyYXRpb24sXG4gICAgfSA9IHN1bW1hcnkgfHwge307XG5cbiAgICBjb25zdCB7IGRlcGFydHVyZVRpbWVBdHRyaWJ1dGUsIGFycml2YWxUaW1lQXR0cmlidXRlIH0gPSBnZXREZXBhcnR1cmVBcnJpdmFsVGltZUF0dHJpYnV0ZShcbiAgICAgIGxlZ3MsXG4gICAgICBkZXBhcnR1cmVXYWxrIHx8IDAsXG4gICAgICBhcnJpdmFsV2FsayB8fCAwLFxuICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICApO1xuXG4gICAgY29uc3QgZGVwYXJ0dXJlVGltZTogRGF0ZSB8IHVuZGVmaW5lZCA9IGRlcGFydHVyZT8udGltZVxuICAgICAgPyByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKGRlcGFydHVyZS50aW1lKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZTogRGF0ZSB8IHVuZGVmaW5lZCA9IGFycml2YWw/LnRpbWVcbiAgICAgID8gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhhcnJpdmFsLnRpbWUpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRlcGFydHVyZVdhbGtUZXh0ID0gZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZVxuICAgICAgPyBgJHtkZXBhcnR1cmVUaW1lQXR0cmlidXRlLnRleHR9ICR7ZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZS5kdXJhdGlvbn0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsV2Fsa1RleHQgPSBhcnJpdmFsVGltZUF0dHJpYnV0ZVxuICAgICAgPyBgJHthcnJpdmFsVGltZUF0dHJpYnV0ZS50ZXh0fSAke2Fycml2YWxUaW1lQXR0cmlidXRlLmR1cmF0aW9ufSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGRlcGFydHVyZVRpbWVUZXh0ID0gZGVwYXJ0dXJlVGltZVxuICAgICAgPyBgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHtmb3JtYXQoZGVwYXJ0dXJlVGltZSwgJ0hIOm1tJyl9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgZ2V0RGVwYXJ0dXJlUXVheVRleHQgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIGlmICghZGVwYXJ0dXJlPy5xdWF5Rm9ybWF0dGVkKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIHByZWZpeCBcIm5ld1wiIGlmIHF1YXkgd2FzIGNoYW5nZWRcbiAgICAgIGNvbnN0IGNoYW5nZWRRdWF5UHJlZml4ID0gZGVwYXJ0dXJlPy5xdWF5Q2hhbmdlZCA/IGAke2kxOG5OZXdbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19IGAgOiAnJztcbiAgICAgIHJldHVybiBgJHtjaGFuZ2VkUXVheVByZWZpeH0ke1xuICAgICAgICB0aGlzLl9nZXRRdWF5VHlwZVN0cmluZ3MoKT8ubG9uZ1xuICAgICAgfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH0sIGA7XG4gICAgfTtcblxuICAgIGNvbnN0IG1lYW5zT2ZUcmFuc3BvcnRUZXh0ID1cbiAgICAgIHByb2R1Y3QgJiYgcHJvZHVjdC52ZWhpY2xlTW9kZVxuICAgICAgICA/IGkxOG5NZWFuc09mVHJhbnNwb3J0W3Byb2R1Y3QudmVoaWNsZU1vZGUudG9Mb3dlckNhc2UoKV0gJiZcbiAgICAgICAgICBgJHtpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgdmVoaWNsZVN1Yk1vZGVUZXh0ID0gcHJvZHVjdD8udmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWVcbiAgICAgID8gYCR7cHJvZHVjdC52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZX0gJHtwcm9kdWN0LmxpbmUgfHwgJyd9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgZGlyZWN0aW9uVGV4dCA9IGAke2kxOG5EaXJlY3Rpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7ZGlyZWN0aW9ufSwgYDtcblxuICAgIGNvbnN0IGhpbUN1cyA9IHRoaXMuX2hhbmRsZUhpbUN1cyh0cmlwKTtcbiAgICBjb25zdCBjdXNUZXh0ID0gaGltQ3VzPy5jdXM/LnRleHRcbiAgICAgID8gYCR7aTE4blJlYWxUaW1lSW5mb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7aGltQ3VzPy5jdXM/LnRleHR9LCBgXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IGhpbVRleHQgPSBoaW1DdXM/LmhpbT8udGV4dFxuICAgICAgPyBgJHtpMThuUmVhbFRpbWVJbmZvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHtoaW1DdXM/LmhpbT8udGV4dH0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBib2FyZGluZ1RleHQgPSB0aGlzLmJvYXJkaW5nID8gYCR7dGhpcy5ib2FyZGluZy50ZXh0fSwgYCA6ICcnO1xuXG4gICAgY29uc3QgcHJpY2VUZXh0ID0gYCR7dGhpcy5wcmljZT8uaXNEaXNjb3VudCA/IGkxOG5TdXBlcnNhdmVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJyd9ICR7XG4gICAgICB0aGlzLnByaWNlPy50ZXh0ICYmIHRoaXMucHJpY2U/LnByaWNlXG4gICAgICAgID8gKHRoaXMucHJpY2U/LnRleHQgfHwgJycpICsgJyAnICsgKHRoaXMucHJpY2U/LnByaWNlIHx8ICcnKSArICcsICdcbiAgICAgICAgOiAnJ1xuICAgIH1gO1xuXG4gICAgY29uc3QgdHJhbnNmZXJQcm9jZWR1cmVzID1cbiAgICAgIGxlZ3M/Lmxlbmd0aCA+IDFcbiAgICAgICAgPyBgJHtsZWdzPy5sZW5ndGggLSAxfSAke2kxOG5UcmFuc2ZlclByb2NlZHVyZXNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19LCBgXG4gICAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZVRleHQgPSBhcnJpdmFsVGltZVxuICAgICAgPyBgJHtpMThuQXJyaXZhbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGFycml2YWxUaW1lLCAnSEg6bW0nKX0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBsZXQgb2NjdXBhbmN5VGV4dDogc3RyaW5nID0gJyc7XG4gICAgaWYgKG9jY3VwYW5jeSkge1xuICAgICAgaWYgKG9jY3VwYW5jeS5maXJzdENsYXNzICYmIG9jY3VwYW5jeS5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHtcbiAgICAgICAgb2NjdXBhbmN5VGV4dCArPSBgJHtpMThuQ2xhc3MuZmlyc3RbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuZmlyc3RDbGFzcy50b0xvd2VyQ2FzZSgpIGFzIFNiYk9jY3VwYW5jeV0gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICAgICk/Llt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XVxuICAgICAgICB9LmA7XG4gICAgICB9XG4gICAgICBpZiAob2NjdXBhbmN5LnNlY29uZENsYXNzICYmIG9jY3VwYW5jeS5zZWNvbmRDbGFzcyAhPT0gJ1VOS05PV04nKSB7XG4gICAgICAgIG9jY3VwYW5jeVRleHQgKz0gYCAke2kxOG5DbGFzcy5zZWNvbmRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuc2Vjb25kQ2xhc3MudG9Mb3dlckNhc2UoKSBhcyBTYmJPY2N1cGFuY3ldIGFzIFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICApPy5bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgfS5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgICAgbm90aWNlcyAmJlxuICAgICAgaGFuZGxlTm90aWNlcyhub3RpY2VzKS5sZW5ndGggJiZcbiAgICAgIGhhbmRsZU5vdGljZXMobm90aWNlcylcbiAgICAgICAgPy5tYXAoKG5vdGljZSwgaW5kZXgpID0+IGluZGV4IDwgNCAmJiBub3RpY2UudGV4dD8udGVtcGxhdGUpXG4gICAgICAgIC5qb2luKCcsICcpICsgJywgJztcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXNUZXh0ID0gYXR0cmlidXRlc1xuICAgICAgPyBgJHtpMThuVHJhdmVsaGludHNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2F0dHJpYnV0ZXN9YFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGR1cmF0aW9uVGV4dCA9XG4gICAgICAhIWR1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICA/IGAke2kxOG5UcmlwRHVyYXRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgICBkdXJhdGlvblRvVGltZShkdXJhdGlvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkubG9uZ1xuICAgICAgICAgIH0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIHJldHVybiBgJHtkZXBhcnR1cmVXYWxrVGV4dH0gJHtkZXBhcnR1cmVUaW1lVGV4dH0gJHtnZXREZXBhcnR1cmVRdWF5VGV4dCgpfSAke21lYW5zT2ZUcmFuc3BvcnRUZXh0fSAke3ZlaGljbGVTdWJNb2RlVGV4dH0gJHtkaXJlY3Rpb25UZXh0fSAke2N1c1RleHR9ICR7Ym9hcmRpbmdUZXh0fSAke3ByaWNlVGV4dH0gJHtcbiAgICAgIGN1c1RleHQgPyAnJyA6IGhpbVRleHRcbiAgICB9ICR7YXJyaXZhbFRpbWVUZXh0fSAke2Fycml2YWxXYWxrVGV4dH0gJHtkdXJhdGlvblRleHR9ICR7dHJhbnNmZXJQcm9jZWR1cmVzfSAke29jY3VwYW5jeVRleHR9ICR7YXR0cmlidXRlc1RleHR9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGlmICh0aGlzLmxvYWRpbmdUcmlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2tlbGV0b24oKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxlZ3MsIGlkLCBub3RpY2VzLCBzdW1tYXJ5IH0gPSB0aGlzLnRyaXAgfHwge307XG5cbiAgICBjb25zdCB7XG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIG9jY3VwYW5jeSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gICAgY29uc3QgaGltQ3VzID0gdGhpcy5faGFuZGxlSGltQ3VzKHRoaXMudHJpcCk7XG4gICAgY29uc3QgaGFzSGltQ3VzID0gISFoaW1DdXMuY3VzIHx8ICEhaGltQ3VzLmhpbTtcblxuICAgIGNvbnN0IG5vdGljZUF0dHJpYnV0ZXMgPSBub3RpY2VzICYmIGhhbmRsZU5vdGljZXMobm90aWNlcyk7XG5cbiAgICBjb25zdCBkdXJhdGlvbk9iaiA9IGR1cmF0aW9uID8gZHVyYXRpb25Ub1RpbWUoZHVyYXRpb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpIDogbnVsbDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1jYXJkIHNpemU9XCJsXCIgaWQ9JHtpZH0+XG4gICAgICAgIDxzYmItY2FyZC1idXR0b25cbiAgICAgICAgICA/YWN0aXZlPSR7dGhpcy5hY3RpdmV9XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD0ke3RoaXMuYWNjZXNzaWJpbGl0eUV4cGFuZGVkPy50b1N0cmluZygpID8/IG5vdGhpbmd9XG4gICAgICAgID5cbiAgICAgICAgICAke3RoaXMuY2FyZEFjdGlvbkxhYmVsID8gdGhpcy5jYXJkQWN0aW9uTGFiZWwgOiB0aGlzLl9nZXRBY2Nlc3NpYmlsaXR5VGV4dCh0aGlzLnRyaXApfVxuICAgICAgICA8L3NiYi1jYXJkLWJ1dHRvbj5cbiAgICAgICAgJHt0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY2xhc3M9XCJzYmItbG9hZGluZ19fYmFkZ2VcIj48L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICR7dGhpcy5wcmljZSAmJiAhdGhpcy5sb2FkaW5nUHJpY2VcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYXJkLWJhZGdlIGNvbG9yPSR7dGhpcy5wcmljZS5pc0Rpc2NvdW50ID8gJ2NoYXJjb2FsJyA6ICd3aGl0ZSd9PlxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UuaXNEaXNjb3VudFxuICAgICAgICAgICAgICAgID8gaHRtbGA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgJTxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiR7aTE4blN1cGVyc2F2ZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5gXG4gICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UudGV4dCA/IGh0bWxgPHNwYW4+JHt0aGlzLnByaWNlLnRleHR9PC9zcGFuPmAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UucHJpY2UgPyBodG1sYDxzcGFuPiR7dGhpcy5wcmljZS5wcmljZX08L3NwYW4+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgICA8L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3dcIiByb2xlPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1oZWFkZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAke3Byb2R1Y3Q/LmNvcnBvcmF0ZUlkZW50aXR5UGljdG9ncmFtICYmXG4gICAgICAgICAgICAgIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXRyYW5zcG9ydC1pY29uXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJwaWN0bzoke3Byb2R1Y3QuY29ycG9yYXRlSWRlbnRpdHlQaWN0b2dyYW19XCJcbiAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICR7cHJvZHVjdCAmJlxuICAgICAgICAgICAgICAgICAgcHJvZHVjdC52ZWhpY2xlTW9kZSAmJlxuICAgICAgICAgICAgICAgICAgaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXSAmJlxuICAgICAgICAgICAgICAgICAgaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPmB9XG4gICAgICAgICAgICAgICR7cHJvZHVjdCAmJlxuICAgICAgICAgICAgICAocHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eUljb25cbiAgICAgICAgICAgICAgICA/IHJlbmRlckljb25Qcm9kdWN0KHByb2R1Y3QuY29ycG9yYXRlSWRlbnRpdHlJY29uLCBwcm9kdWN0Lm5hbWUpXG4gICAgICAgICAgICAgICAgOiBwcm9kdWN0LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgICByZW5kZXJTdHJpbmdQcm9kdWN0KHByb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWUsIHByb2R1Y3Q/LmxpbmUpKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtkaXJlY3Rpb25cbiAgICAgICAgICAgICAgPyBodG1sYDxwPiR7YCR7aTE4bkRpcmVjdGlvblt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkaXJlY3Rpb259YH08L3A+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNiYi1wZWFybC1jaGFpbi10aW1lXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgLmxlZ3M9JHtsZWdzfVxuICAgICAgICAgICAgLmRlcGFydHVyZVRpbWU9JHtkZXBhcnR1cmU/LnRpbWV9XG4gICAgICAgICAgICAuYXJyaXZhbFRpbWU9JHthcnJpdmFsPy50aW1lfVxuICAgICAgICAgICAgLmRlcGFydHVyZVdhbGs9JHtkZXBhcnR1cmVXYWxrfVxuICAgICAgICAgICAgLmFycml2YWxXYWxrPSR7YXJyaXZhbFdhbGt9XG4gICAgICAgICAgICA/ZGlzYWJsZS1hbmltYXRpb249JHt0aGlzLmRpc2FibGVBbmltYXRpb259XG4gICAgICAgICAgICAubm93PSR7dGhpcy5ub3d9XG4gICAgICAgICAgPjwvc2JiLXBlYXJsLWNoYWluLXRpbWU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1mb290ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgICR7cHJvZHVjdCAmJiB0aGlzLl9nZXRRdWF5VHlwZShwcm9kdWN0LnZlaGljbGVNb2RlKSAmJiBkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWRcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz0ke2RlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgc2JiLXRpbWV0YWJsZV9fcm93LXF1YXktLWNoYW5nZWRgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJydcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJRdWF5VHlwZSgpfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAkeyhvY2N1cGFuY3k/LmZpcnN0Q2xhc3MgJiYgb2NjdXBhbmN5Py5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHx8XG4gICAgICAgICAgICAob2NjdXBhbmN5Py5zZWNvbmRDbGFzcyAmJiBvY2N1cGFuY3kuc2Vjb25kQ2xhc3MgIT09ICdVTktOT1dOJylcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItdGltZXRhYmxlLW9jY3VwYW5jeVxuICAgICAgICAgICAgICAgICAgLmZpcnN0Q2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LmZpcnN0Q2xhc3M/LnRvTG93ZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAuc2Vjb25kQ2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LnNlY29uZENsYXNzPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgID48L3NiYi10aW1ldGFibGUtb2NjdXBhbmN5PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHsobm90aWNlQXR0cmlidXRlcyAmJiBub3RpY2VBdHRyaWJ1dGVzLmxlbmd0aCkgfHwgdGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICA/IGh0bWxgPHVsIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhpbnRzXCIgcm9sZT1cImxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICR7bm90aWNlQXR0cmlidXRlcz8ubWFwKChub3RpY2UsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBpbmRleCA8IDRcbiAgICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmF2ZWwtaGludHNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHsnc2EtJyArIG5vdGljZS5uYW1lPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtub3RpY2UudGV4dD8udGVtcGxhdGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRyYXZlbC1oaW50c19faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHt0aGlzLmJvYXJkaW5nPy5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5ib2FyZGluZz8udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPmBcbiAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAgIDwvdWw+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAke2R1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICAgICAgICA/IGh0bWxgPHRpbWU+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuVHJpcER1cmF0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2R1cmF0aW9uT2JqIS5sb25nfWB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2R1cmF0aW9uT2JqIS5zaG9ydH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aW1lPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHtoYXNIaW1DdXMgJiYgKGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSlcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxzYmItaWNvbiBuYW1lPSR7KGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSkhLm5hbWV9Pjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4keyhoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pIS50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zYmItY2FyZD5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGltZXRhYmxlLXJvdyc6IFNiYlRpbWV0YWJsZVJvd0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYiIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdEYSxNQUFBLG9CQUFvQixDQUFDLE1BQWMsU0FBaUM7QUFDeEUsU0FBQTtBQUFBLHFCQUNZLElBQUk7QUFBQSwyQ0FDa0IsSUFBSTtBQUFBO0FBRS9DO0FBRWEsTUFBQSxzQkFBc0IsQ0FBQyxhQUFxQixTQUF5QztBQUMxRixR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
|
|
687
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXRhYmxlLXJvdy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC90aW1ldGFibGUtcm93L3RpbWV0YWJsZS1yb3cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kb20uanMnO1xuaW1wb3J0IHtcbiAgaTE4bkFycml2YWwsXG4gIGkxOG5DbGFzcyxcbiAgaTE4bkRlcGFydHVyZSxcbiAgaTE4bkRpcmVjdGlvbixcbiAgaTE4bkZyb21QaWVyLFxuICBpMThuRnJvbVBsYXRmb3JtLFxuICBpMThuRnJvbVN0YW5kLFxuICBpMThuTWVhbnNPZlRyYW5zcG9ydCxcbiAgaTE4bk5ldyxcbiAgaTE4bk9jY3VwYW5jeSxcbiAgaTE4blJlYWxUaW1lSW5mbyxcbiAgaTE4blN1cGVyc2F2ZXIsXG4gIGkxOG5UcmFuc2ZlclByb2NlZHVyZXMsXG4gIGkxOG5UcmF2ZWxoaW50cyxcbiAgaTE4blRyaXBEdXJhdGlvbixcbiAgaTE4blRyaXBRdWF5Q2hhbmdlLFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlTGlrZSwgU2JiT2NjdXBhbmN5IH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBkdXJhdGlvblRvVGltZSwgcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyB9IGZyb20gJy4uL2NvcmUvZGF0ZXRpbWUuanMnO1xuaW1wb3J0IHR5cGUgeyBJVHJpcEl0ZW0sIE5vdGljZSwgUHRSaWRlTGVnLCBQdFNpdHVhdGlvbiB9IGZyb20gJy4uL2NvcmUvdGltZXRhYmxlLmpzJztcbmltcG9ydCB7IGdldERlcGFydHVyZUFycml2YWxUaW1lQXR0cmlidXRlLCBpc1JpZGVMZWcgfSBmcm9tICcuLi9jb3JlL3RpbWV0YWJsZS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RpbWV0YWJsZS1yb3cuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jYXJkLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5qcyc7XG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3RpbWV0YWJsZS1vY2N1cGFuY3kuanMnO1xuaW1wb3J0ICcuLi9wZWFybC1jaGFpbi10aW1lLmpzJztcblxuLyoqIEhpbUN1cyBpbnRlcmZhY2UgZm9yIG1hcHBlZCBpY29uIG5hbWUgYW5kIHRleHQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGltQ3VzIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0Pzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqIEJvYXJkaW5nIGljb24gaW50ZXJmYWNlIGZvciBtYXBwZWQgaWNvbiBuYW1lIGFuZCB0ZXh0ICovXG5leHBvcnQgaW50ZXJmYWNlIEJvYXJkaW5nIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2Uge1xuICBwcmljZT86IHN0cmluZztcbiAgdGV4dD86IHN0cmluZztcbiAgaXNEaXNjb3VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCByZW5kZXJJY29uUHJvZHVjdCA9IChpY29uOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0ID0+IHtcbiAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0XCI+XG4gICAgPHNiYi1pY29uIG5hbWU9JHtpY29ufT48L3NiYi1pY29uPlxuICAgIDxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiPiR7bmFtZX08L3NwYW4+XG4gIDwvc3Bhbj5gO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlclN0cmluZ1Byb2R1Y3QgPSAodmVoaWNsZU5hbWU6IHN0cmluZywgbGluZT86IHN0cmluZyB8IG51bGwpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIGNvbnN0IHNwYWNlID0gWydNJywgJ0InLCAnVCddLmluY2x1ZGVzKHZlaGljbGVOYW1lKSA/ICcgJyA6ICcnO1xuICByZXR1cm4gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy10cmFuc3BvcnRudW1iZXJcIj5cbiAgICAke2xpbmUgIT09IG51bGwgPyB2ZWhpY2xlTmFtZSArIHNwYWNlICsgbGluZSA6IHZlaGljbGVOYW1lfVxuICA8L3NwYW4+YDtcbn07XG5cbmNvbnN0IGdldFJlYWNoYWJsZVRleHQgPSAobGVnczogUHRSaWRlTGVnW10pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGxlZ3M/LmZpbmQoKGxlZykgPT4gbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVhY2hhYmxlVGV4dCk/LnNlcnZpY2VKb3VybmV5XG4gICAgPy5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVhY2hhYmxlVGV4dDtcbn07XG5cbmNvbnN0IGdldERlbGF5VGV4dCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiBsZWcuc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy5kZWxheVRleHQpPy5zZXJ2aWNlSm91cm5leVxuICAgID8uc2VydmljZUFsdGVyYXRpb24/LmRlbGF5VGV4dDtcbn07XG5cbmNvbnN0IGdldFJlZGlyZWN0ZWRUZXh0ID0gKGxlZ3M6IFB0UmlkZUxlZ1tdKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBsZWdzPy5maW5kKChsZWcpID0+ICEhbGVnLnNlcnZpY2VKb3VybmV5Py5zZXJ2aWNlQWx0ZXJhdGlvbj8ucmVkaXJlY3RlZFRleHQpXG4gICAgPy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnJlZGlyZWN0ZWRUZXh0O1xufTtcblxuY29uc3QgZ2V0VW5wbGFubmVkU3RvcCA9IChsZWdzOiBQdFJpZGVMZWdbXSk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPT4ge1xuICByZXR1cm4gbGVncz8uZmluZCgobGVnKSA9PiAhIWxlZy5zZXJ2aWNlSm91cm5leT8uc2VydmljZUFsdGVyYXRpb24/LnVucGxhbm5lZFN0b3BQb2ludHNUZXh0KVxuICAgID8uc2VydmljZUpvdXJuZXk/LnNlcnZpY2VBbHRlcmF0aW9uPy51bnBsYW5uZWRTdG9wUG9pbnRzVGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBzb3J0U2l0dWF0aW9uID0gKHNpdHVhdGlvbnM6IFB0U2l0dWF0aW9uW10pOiBQdFNpdHVhdGlvbltdID0+IHtcbiAgY29uc3QgcHJpb3JpdGllcyA9IHtcbiAgICBESVNUVVJCQU5DRTogMCxcbiAgICBJTkZPUk1BVElPTjogMSxcbiAgICBERUxBWTogMixcbiAgICBUUkFJTl9SRVBMQUNFTUVOVF9CWV9CVVM6IDMsXG4gICAgQ09OU1RSVUNUSU9OX1NJVEU6IDQsXG4gICAgRU5EX01FU1NBR0U6IDUsXG4gIH07XG5cbiAgcmV0dXJuIFsuLi5zaXR1YXRpb25zXT8uc29ydChcbiAgICAoYTogUHRTaXR1YXRpb24sIGI6IFB0U2l0dWF0aW9uKSA9PiBwcmlvcml0aWVzW2EuY2F1c2UhXSAtIHByaW9yaXRpZXNbYi5jYXVzZSFdLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpbUljb24gPSAoc2l0dWF0aW9uOiBQdFNpdHVhdGlvbik6IEhpbUN1cyA9PiB7XG4gIHN3aXRjaCAoc2l0dWF0aW9uPy5jYXVzZSkge1xuICAgIGNhc2UgJ0RJU1RVUkJBTkNFJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdkaXNydXB0aW9uJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcz8ubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdJTkZPUk1BVElPTic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnaW5mbycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdERUxBWSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnZGVsYXknLFxuICAgICAgICB0ZXh0OiBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzLmxlbmd0aCA/IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXNbMF0udGl0bGUgOiAnJyxcbiAgICAgIH07XG4gICAgY2FzZSAnVFJBSU5fUkVQTEFDRU1FTlRfQllfQlVTJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6ICdyZXBsYWNlbWVudGJ1cycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgICBjYXNlICdDT05TVFJVQ1RJT05fU0lURSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnY29uc3RydWN0aW9uJyxcbiAgICAgICAgdGV4dDogc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlcy5sZW5ndGggPyBzaXR1YXRpb24/LmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnRpdGxlIDogJycsXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiAnaW5mbycsXG4gICAgICAgIHRleHQ6IHNpdHVhdGlvbj8uYnJvYWRjYXN0TWVzc2FnZXMubGVuZ3RoID8gc2l0dWF0aW9uPy5icm9hZGNhc3RNZXNzYWdlc1swXS50aXRsZSA6ICcnLFxuICAgICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cyA9ICh0cmlwOiBJVHJpcEl0ZW0sIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nKTogSGltQ3VzID0+IHtcbiAgY29uc3QgeyBzdW1tYXJ5LCBsZWdzIH0gPSB0cmlwIHx8IHt9O1xuICBjb25zdCByaWRlTGVncyA9IGxlZ3M/LmZpbHRlcigobGVnKSA9PiBpc1JpZGVMZWcobGVnKSkgYXMgUHRSaWRlTGVnW107XG4gIGNvbnN0IHsgdHJpcFN0YXR1cyB9ID0gc3VtbWFyeSB8fCB7fTtcblxuICBpZiAodHJpcFN0YXR1cz8uY2FuY2VsbGVkIHx8IHRyaXBTdGF0dXM/LnBhcnRpYWxseUNhbmNlbGxlZClcbiAgICByZXR1cm4geyBuYW1lOiAnY2FuY2VsbGF0aW9uJywgdGV4dDogdHJpcFN0YXR1cz8uY2FuY2VsbGVkVGV4dCB9O1xuICBpZiAoZ2V0UmVhY2hhYmxlVGV4dChyaWRlTGVncykpXG4gICAgcmV0dXJuIHsgbmFtZTogJ21pc3NlZC1jb25uZWN0aW9uJywgdGV4dDogZ2V0UmVhY2hhYmxlVGV4dChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LmFsdGVybmF0aXZlKSByZXR1cm4geyBuYW1lOiAnYWx0ZXJuYXRpdmUnLCB0ZXh0OiB0cmlwU3RhdHVzLmFsdGVybmF0aXZlVGV4dCB9O1xuICBpZiAoZ2V0UmVkaXJlY3RlZFRleHQocmlkZUxlZ3MpKSByZXR1cm4geyBuYW1lOiAncmVyb3V0ZScsIHRleHQ6IGdldFJlZGlyZWN0ZWRUZXh0KHJpZGVMZWdzKSB9O1xuICBpZiAoZ2V0VW5wbGFubmVkU3RvcChyaWRlTGVncykpIHJldHVybiB7IG5hbWU6ICdhZGQtc3RvcCcsIHRleHQ6IGdldFVucGxhbm5lZFN0b3AocmlkZUxlZ3MpIH07XG4gIGlmICh0cmlwU3RhdHVzPy5kZWxheWVkIHx8IHRyaXBTdGF0dXM/LmRlbGF5ZWRVbmtub3duKVxuICAgIHJldHVybiB7IG5hbWU6ICdkZWxheScsIHRleHQ6IGdldERlbGF5VGV4dChyaWRlTGVncykgfTtcbiAgaWYgKHRyaXBTdGF0dXM/LnF1YXlDaGFuZ2VkKSB7XG4gICAgY29uc3QgZGVwYXJ0dXJlID0gcmlkZUxlZ3NbMF0uZGVwYXJ0dXJlO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAncGxhdGZvcm0tY2hhbmdlJyxcbiAgICAgIHRleHQ6IGRlcGFydHVyZS5xdWF5Q2hhbmdlZCA/IGRlcGFydHVyZS5xdWF5Q2hhbmdlZFRleHQgOiBpMThuVHJpcFF1YXlDaGFuZ2VbY3VycmVudExhbmd1YWdlXSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHt9IGFzIEhpbUN1cztcbn07XG5cbmNvbnN0IGZpbmRBbmRSZXBsYWNlTm90aWNlID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmVzZXJ2YXRpb25Ob3RpY2UgPSBbJ1JSJywgJ1JLJywgJ1JDJywgJ1JMJywgJ1JNJywgJ1JTJywgJ1JVJywgJ1hQJywgJ1hSJywgJ1hUJ107XG5cbiAgcmV0dXJuIG5vdGljZXMucmVkdWNlKChmb3VuZE5vdGljZTogTm90aWNlIHwgdW5kZWZpbmVkLCBub3RpY2U6IE5vdGljZSk6IE5vdGljZSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGZvdW5kTm90aWNlKSByZXR1cm4gZm91bmROb3RpY2U7XG4gICAgaWYgKHJlc2VydmF0aW9uTm90aWNlLmluY2x1ZGVzKG5vdGljZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIHsgLi4ubm90aWNlLCBuYW1lOiAnUlInIH0gYXMgTm90aWNlO1xuICAgIH1cbiAgfSwgdW5kZWZpbmVkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJOb3RpY2VzID0gKG5vdGljZXM6IE5vdGljZVtdKTogTm90aWNlW10gPT4ge1xuICBjb25zdCBhbGxvd2VkTmFtZXMgPSBbJ1onLCAnU0InLCAnU1onLCAnVlInLCAnVEcnXTtcblxuICBjb25zdCBmaWx0ZXJOb3RpY2UgPSBub3RpY2VzLmZpbHRlcigobm90aWNlLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBub3RpY2VzLmZpbmRJbmRleCgobikgPT4gbi5uYW1lID09PSBub3RpY2UubmFtZSkgPT09IGluZGV4O1xuICB9KTtcblxuICByZXR1cm4gZmlsdGVyTm90aWNlXG4gICAgLmZpbHRlcigobm90aWNlKSA9PiBhbGxvd2VkTmFtZXMuaW5jbHVkZXMobm90aWNlLm5hbWUpKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhbGxvd2VkTmFtZXMuaW5kZXhPZihhLm5hbWUpIC0gYWxsb3dlZE5hbWVzLmluZGV4T2YoYi5uYW1lKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlTm90aWNlcyA9IChub3RpY2VzOiBOb3RpY2VbXSk6IE5vdGljZVtdID0+IHtcbiAgY29uc3QgcmVzZXJ2YXRpb25Ob3RpY2UgPSBmaW5kQW5kUmVwbGFjZU5vdGljZShub3RpY2VzKTtcbiAgY29uc3QgZmlsdGVyZWROb3RpY2VzID0gZmlsdGVyTm90aWNlcyhub3RpY2VzKTtcblxuICBpZiAocmVzZXJ2YXRpb25Ob3RpY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZpbHRlcmVkTm90aWNlcztcbiAgaWYgKCFmaWx0ZXJlZE5vdGljZXMubGVuZ3RoKSByZXR1cm4gW3Jlc2VydmF0aW9uTm90aWNlXTtcblxuICBpZiAoZmlsdGVyZWROb3RpY2VzWzBdLm5hbWUgPT09ICdaJyAmJiBmaWx0ZXJlZE5vdGljZXNbMV0pIHtcbiAgICByZXR1cm4gW2ZpbHRlcmVkTm90aWNlc1swXSwgcmVzZXJ2YXRpb25Ob3RpY2UsIGZpbHRlcmVkTm90aWNlc1sxXV0uY29uY2F0KFxuICAgICAgZmlsdGVyZWROb3RpY2VzLnNsaWNlKDIpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gW3Jlc2VydmF0aW9uTm90aWNlLCAuLi5maWx0ZXJlZE5vdGljZXNdO1xufTtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJpcCwgYWN0aW5nIGFzIGEgY29udGFpbmVyIGZvciBhbGwgdGhlIGBzYmItdGltZXRhYmxlLSpgIGNvbXBvbmVudHMuXG4gKiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi10aW1ldGFibGUtcm93JylcbmV4cG9ydCBjbGFzcyBTYmJUaW1ldGFibGVSb3dFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBUaGUgdHJpcCBQcm9wLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIHRyaXAhOiBJVHJpcEl0ZW07XG5cbiAgLyoqIFRoZSBwcmljZSBQcm9wLCB3aGljaCBjb25zaXN0cyBvZiB0aGUgZGF0YSBmb3IgdGhlIGJhZGdlLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBPYmplY3QgfSkgcHVibGljIHByaWNlPzogUHJpY2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIHNiYi1wZWFybC1jaGFpbiBjb21wb25lbnQgLSBpZiB0cnVlIHRoZSBwb3NpdGlvbiB3b24ndCBiZSBhbmltYXRlZC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGlzYWJsZS1hbmltYXRpb24nLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhbjtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGUgbm90aWNlcyBzZWN0aW9uICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IE9iamVjdCB9KSBwdWJsaWMgYm9hcmRpbmc/OiBCb2FyZGluZztcblxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgc3RhdGUgLVxuICAgKiB3aGVuIHRoaXMgaXMgdHJ1ZSBpdCB3aWxsIGJlIHJlbmRlciBza2VsZXRvbiB3aXRoIGFuIGlkbGluZyBhbmltYXRpb25cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2xvYWRpbmctdHJpcCcsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGxvYWRpbmdUcmlwID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2FkaW5nIHN0YXRlIC1cbiAgICogd2hlbiB0aGlzIGlzIHRydWUgaXQgd2lsbCBiZSByZW5kZXIgc2tlbGV0b24gd2l0aCBhbiBpZGxpbmcgYW5pbWF0aW9uXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb2FkaW5nLXByaWNlJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgbG9hZGluZ1ByaWNlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhpZGRlbiBsYWJlbCBmb3IgdGhlIGNhcmQgYWN0aW9uLiBJdCBvdmVycmlkZXMgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGFjY2Vzc2liaWxpdHkgdGV4dCBmb3IgdGhlIGNvbXBvbmVudC4gVXNlIHRoaXMgcHJvcCB0byBwcm92aWRlIGN1c3RvbSBhY2Nlc3NpYmlsaXR5IGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY2FyZC1hY3Rpb24tbGFiZWwnIH0pIHB1YmxpYyBjYXJkQWN0aW9uTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlIHNiYi1jYXJkIGNvbXBvbmVudCBhcyBhcmlhLWV4cGFuZGVkLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWV4cGFuZGVkJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzaWJpbGl0eUV4cGFuZGVkPzogYm9vbGVhbjtcblxuICAvKiogV2hlbiB0aGlzIHByb3AgaXMgdHJ1ZSB0aGUgc2JiLWNhcmQgd2lsbCBiZSBpbiB0aGUgYWN0aXZlIHN0YXRlLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBhY3RpdmU/OiBib29sZWFuO1xuXG4gIC8qKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG5vdyh2YWx1ZTogU2JiRGF0ZUxpa2UgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ub3cgPSBkZWZhdWx0RGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKGRlZmF1bHREYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyBnZXQgbm93KCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9ub3cgPz8gbmV3IERhdGUoKTtcbiAgfVxuICBwcml2YXRlIF9ub3c6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsb2FkaW5nVHJpcCcpKSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLCAncm9sZScsICF0aGlzLmxvYWRpbmdUcmlwID8gJ3Jvd2dyb3VwJyA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgc2tlbGV0b24gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGluZyBzdGF0ZSAqL1xuICBwcml2YXRlIF9yZW5kZXJTa2VsZXRvbigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLWNhcmQgc2l6ZT1cImxcIiBjbGFzcz1cInNiYi1sb2FkaW5nXCI+XG4gICAgICAgICR7dGhpcy5sb2FkaW5nUHJpY2VcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYXJkLWJhZGdlIGNsYXNzPVwic2JiLWxvYWRpbmdfX2JhZGdlXCI+PC9zYmItY2FyZC1iYWRnZT5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWxvYWRpbmdfX3Jvd1wiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbG9hZGluZ19fcm93XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1sb2FkaW5nX19yb3dcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NiYi1jYXJkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRRdWF5VHlwZSh2ZWhpY2xlTW9kZTogc3RyaW5nKTogYW55IHtcbiAgICBzd2l0Y2ggKHZlaGljbGVNb2RlKSB7XG4gICAgICBjYXNlICdUUkFJTic6XG4gICAgICAgIHJldHVybiBpMThuRnJvbVBsYXRmb3JtO1xuICAgICAgY2FzZSAnU0hJUCc6XG4gICAgICAgIHJldHVybiBpMThuRnJvbVBpZXI7XG4gICAgICBjYXNlICdUUkFNV0FZJzpcbiAgICAgICAgcmV0dXJuIGkxOG5Gcm9tU3RhbmQ7XG4gICAgICBjYXNlICdCVVMnOlxuICAgICAgICByZXR1cm4gaTE4bkZyb21TdGFuZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UXVheVR5cGVTdHJpbmdzKCk6IHsgbG9uZzogc3RyaW5nOyBzaG9ydDogc3RyaW5nIH0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMudHJpcC5zdW1tYXJ5Py5wcm9kdWN0KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBxdWF5VHlwZSA9IHRoaXMuX2dldFF1YXlUeXBlKHRoaXMudHJpcC5zdW1tYXJ5LnByb2R1Y3Q/LnZlaGljbGVNb2RlKTtcbiAgICByZXR1cm4ge1xuICAgICAgbG9uZzogcXVheVR5cGU/LmxvbmdbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0sXG4gICAgICBzaG9ydDogcXVheVR5cGU/LnNob3J0W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdLFxuICAgIH07XG4gIH1cblxuICAvKiogbWFwIFF1YXkgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyUXVheVR5cGUoKTogVGVtcGxhdGVSZXN1bHQgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy50cmlwLnN1bW1hcnk/LnByb2R1Y3QpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcXVheVR5cGVTdHJpbmdzID0gdGhpcy5fZ2V0UXVheVR5cGVTdHJpbmdzKCk7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy0tcXVheVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4ke3F1YXlUeXBlU3RyaW5ncz8ubG9uZ30mbmJzcDs8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LS1xdWF5LXR5cGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID4ke3F1YXlUeXBlU3RyaW5ncz8uc2hvcnR9PC9zcGFuXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSGltQ3VzKHRyaXA6IElUcmlwSXRlbSk6IHsgY3VzOiBIaW1DdXMgfCBudWxsOyBoaW06IEhpbUN1cyB8IG51bGwgfSB7XG4gICAgY29uc3QgeyBzaXR1YXRpb25zIH0gPSB0cmlwIHx8IHt9O1xuICAgIGNvbnN0IHNvcnRlZFNpdHVhdGlvbnMgPSBzaXR1YXRpb25zICYmIHNvcnRTaXR1YXRpb24oc2l0dWF0aW9ucyk7XG4gICAgY29uc3QgY3VzID0gZ2V0Q3VzKHRyaXAsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGN1czogT2JqZWN0LmtleXMoY3VzKT8ubGVuZ3RoID8gY3VzIDogbnVsbCxcbiAgICAgIGhpbTogc2l0dWF0aW9ucz8ubGVuZ3RoID8gZ2V0SGltSWNvbihzb3J0ZWRTaXR1YXRpb25zWzBdKSA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEFjY2Vzc2liaWxpdHlUZXh0KHRyaXA6IElUcmlwSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBzdW1tYXJ5LCBsZWdzLCBub3RpY2VzIH0gPSB0cmlwIHx8IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIGRlcGFydHVyZVdhbGssXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgb2NjdXBhbmN5LFxuICAgICAgZHVyYXRpb24sXG4gICAgfSA9IHN1bW1hcnkgfHwge307XG5cbiAgICBjb25zdCB7IGRlcGFydHVyZVRpbWVBdHRyaWJ1dGUsIGFycml2YWxUaW1lQXR0cmlidXRlIH0gPSBnZXREZXBhcnR1cmVBcnJpdmFsVGltZUF0dHJpYnV0ZShcbiAgICAgIGxlZ3MsXG4gICAgICBkZXBhcnR1cmVXYWxrIHx8IDAsXG4gICAgICBhcnJpdmFsV2FsayB8fCAwLFxuICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICApO1xuXG4gICAgY29uc3QgZGVwYXJ0dXJlVGltZTogRGF0ZSB8IHVuZGVmaW5lZCA9IGRlcGFydHVyZT8udGltZVxuICAgICAgPyByZW1vdmVUaW1lem9uZUZyb21JU09UaW1lU3RyaW5nKGRlcGFydHVyZS50aW1lKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZTogRGF0ZSB8IHVuZGVmaW5lZCA9IGFycml2YWw/LnRpbWVcbiAgICAgID8gcmVtb3ZlVGltZXpvbmVGcm9tSVNPVGltZVN0cmluZyhhcnJpdmFsLnRpbWUpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRlcGFydHVyZVdhbGtUZXh0ID0gZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZVxuICAgICAgPyBgJHtkZXBhcnR1cmVUaW1lQXR0cmlidXRlLnRleHR9ICR7ZGVwYXJ0dXJlVGltZUF0dHJpYnV0ZS5kdXJhdGlvbn0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsV2Fsa1RleHQgPSBhcnJpdmFsVGltZUF0dHJpYnV0ZVxuICAgICAgPyBgJHthcnJpdmFsVGltZUF0dHJpYnV0ZS50ZXh0fSAke2Fycml2YWxUaW1lQXR0cmlidXRlLmR1cmF0aW9ufSwgYFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGRlcGFydHVyZVRpbWVUZXh0ID0gZGVwYXJ0dXJlVGltZVxuICAgICAgPyBgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHtmb3JtYXQoZGVwYXJ0dXJlVGltZSwgJ0hIOm1tJyl9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgZ2V0RGVwYXJ0dXJlUXVheVRleHQgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIGlmICghZGVwYXJ0dXJlPy5xdWF5Rm9ybWF0dGVkKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIHByZWZpeCBcIm5ld1wiIGlmIHF1YXkgd2FzIGNoYW5nZWRcbiAgICAgIGNvbnN0IGNoYW5nZWRRdWF5UHJlZml4ID0gZGVwYXJ0dXJlPy5xdWF5Q2hhbmdlZCA/IGAke2kxOG5OZXdbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19IGAgOiAnJztcbiAgICAgIHJldHVybiBgJHtjaGFuZ2VkUXVheVByZWZpeH0ke1xuICAgICAgICB0aGlzLl9nZXRRdWF5VHlwZVN0cmluZ3MoKT8ubG9uZ1xuICAgICAgfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH0sIGA7XG4gICAgfTtcblxuICAgIGNvbnN0IG1lYW5zT2ZUcmFuc3BvcnRUZXh0ID1cbiAgICAgIHByb2R1Y3QgJiYgcHJvZHVjdC52ZWhpY2xlTW9kZVxuICAgICAgICA/IGkxOG5NZWFuc09mVHJhbnNwb3J0W3Byb2R1Y3QudmVoaWNsZU1vZGUudG9Mb3dlckNhc2UoKV0gJiZcbiAgICAgICAgICBgJHtpMThuTWVhbnNPZlRyYW5zcG9ydFtwcm9kdWN0LnZlaGljbGVNb2RlLnRvTG93ZXJDYXNlKCldW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSwgYFxuICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgdmVoaWNsZVN1Yk1vZGVUZXh0ID0gcHJvZHVjdD8udmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWVcbiAgICAgID8gYCR7cHJvZHVjdC52ZWhpY2xlU3ViTW9kZVNob3J0TmFtZX0gJHtwcm9kdWN0LmxpbmUgfHwgJyd9LCBgXG4gICAgICA6ICcnO1xuXG4gICAgY29uc3QgZGlyZWN0aW9uVGV4dCA9IGAke2kxOG5EaXJlY3Rpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7ZGlyZWN0aW9ufSwgYDtcblxuICAgIGNvbnN0IGhpbUN1cyA9IHRoaXMuX2hhbmRsZUhpbUN1cyh0cmlwKTtcbiAgICBjb25zdCBjdXNUZXh0ID0gaGltQ3VzPy5jdXM/LnRleHRcbiAgICAgID8gYCR7aTE4blJlYWxUaW1lSW5mb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7aGltQ3VzPy5jdXM/LnRleHR9LCBgXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IGhpbVRleHQgPSBoaW1DdXM/LmhpbT8udGV4dFxuICAgICAgPyBgJHtpMThuUmVhbFRpbWVJbmZvW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfTogJHtoaW1DdXM/LmhpbT8udGV4dH0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBjb25zdCBib2FyZGluZ1RleHQgPSB0aGlzLmJvYXJkaW5nID8gYCR7dGhpcy5ib2FyZGluZy50ZXh0fSwgYCA6ICcnO1xuXG4gICAgY29uc3QgcHJpY2VUZXh0ID0gYCR7dGhpcy5wcmljZT8uaXNEaXNjb3VudCA/IGkxOG5TdXBlcnNhdmVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJyd9ICR7XG4gICAgICB0aGlzLnByaWNlPy50ZXh0ICYmIHRoaXMucHJpY2U/LnByaWNlXG4gICAgICAgID8gKHRoaXMucHJpY2U/LnRleHQgfHwgJycpICsgJyAnICsgKHRoaXMucHJpY2U/LnByaWNlIHx8ICcnKSArICcsICdcbiAgICAgICAgOiAnJ1xuICAgIH1gO1xuXG4gICAgY29uc3QgdHJhbnNmZXJQcm9jZWR1cmVzID1cbiAgICAgIGxlZ3M/Lmxlbmd0aCA+IDFcbiAgICAgICAgPyBgJHtsZWdzPy5sZW5ndGggLSAxfSAke2kxOG5UcmFuc2ZlclByb2NlZHVyZXNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19LCBgXG4gICAgICAgIDogJyc7XG5cbiAgICBjb25zdCBhcnJpdmFsVGltZVRleHQgPSBhcnJpdmFsVGltZVxuICAgICAgPyBgJHtpMThuQXJyaXZhbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX06ICR7Zm9ybWF0KGFycml2YWxUaW1lLCAnSEg6bW0nKX0sIGBcbiAgICAgIDogJyc7XG5cbiAgICBsZXQgb2NjdXBhbmN5VGV4dDogc3RyaW5nID0gJyc7XG4gICAgaWYgKG9jY3VwYW5jeSkge1xuICAgICAgaWYgKG9jY3VwYW5jeS5maXJzdENsYXNzICYmIG9jY3VwYW5jeS5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHtcbiAgICAgICAgb2NjdXBhbmN5VGV4dCArPSBgJHtpMThuQ2xhc3MuZmlyc3RbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuZmlyc3RDbGFzcy50b0xvd2VyQ2FzZSgpIGFzIFNiYk9jY3VwYW5jeV0gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICAgICk/Llt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XVxuICAgICAgICB9LmA7XG4gICAgICB9XG4gICAgICBpZiAob2NjdXBhbmN5LnNlY29uZENsYXNzICYmIG9jY3VwYW5jeS5zZWNvbmRDbGFzcyAhPT0gJ1VOS05PV04nKSB7XG4gICAgICAgIG9jY3VwYW5jeVRleHQgKz0gYCAke2kxOG5DbGFzcy5zZWNvbmRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgaTE4bk9jY3VwYW5jeVtvY2N1cGFuY3kuc2Vjb25kQ2xhc3MudG9Mb3dlckNhc2UoKSBhcyBTYmJPY2N1cGFuY3ldIGFzIFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICApPy5bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgfS5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgICAgbm90aWNlcyAmJlxuICAgICAgaGFuZGxlTm90aWNlcyhub3RpY2VzKS5sZW5ndGggJiZcbiAgICAgIGhhbmRsZU5vdGljZXMobm90aWNlcylcbiAgICAgICAgPy5tYXAoKG5vdGljZSwgaW5kZXgpID0+IGluZGV4IDwgNCAmJiBub3RpY2UudGV4dD8udGVtcGxhdGUpXG4gICAgICAgIC5qb2luKCcsICcpICsgJywgJztcblxuICAgIGNvbnN0IGF0dHJpYnV0ZXNUZXh0ID0gYXR0cmlidXRlc1xuICAgICAgPyBgJHtpMThuVHJhdmVsaGludHNbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19OiAke2F0dHJpYnV0ZXN9YFxuICAgICAgOiAnJztcblxuICAgIGNvbnN0IGR1cmF0aW9uVGV4dCA9XG4gICAgICAhIWR1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICA/IGAke2kxOG5UcmlwRHVyYXRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7XG4gICAgICAgICAgICBkdXJhdGlvblRvVGltZShkdXJhdGlvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkubG9uZ1xuICAgICAgICAgIH0sIGBcbiAgICAgICAgOiAnJztcblxuICAgIHJldHVybiBgJHtkZXBhcnR1cmVXYWxrVGV4dH0gJHtkZXBhcnR1cmVUaW1lVGV4dH0gJHtnZXREZXBhcnR1cmVRdWF5VGV4dCgpfSAke21lYW5zT2ZUcmFuc3BvcnRUZXh0fSAke3ZlaGljbGVTdWJNb2RlVGV4dH0gJHtkaXJlY3Rpb25UZXh0fSAke2N1c1RleHR9ICR7Ym9hcmRpbmdUZXh0fSAke3ByaWNlVGV4dH0gJHtcbiAgICAgIGN1c1RleHQgPyAnJyA6IGhpbVRleHRcbiAgICB9ICR7YXJyaXZhbFRpbWVUZXh0fSAke2Fycml2YWxXYWxrVGV4dH0gJHtkdXJhdGlvblRleHR9ICR7dHJhbnNmZXJQcm9jZWR1cmVzfSAke29jY3VwYW5jeVRleHR9ICR7YXR0cmlidXRlc1RleHR9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGlmICh0aGlzLmxvYWRpbmdUcmlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2tlbGV0b24oKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxlZ3MsIGlkLCBub3RpY2VzLCBzdW1tYXJ5IH0gPSB0aGlzLnRyaXAgfHwge307XG5cbiAgICBjb25zdCB7XG4gICAgICBwcm9kdWN0LFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgZGVwYXJ0dXJlV2FsayxcbiAgICAgIGRlcGFydHVyZSxcbiAgICAgIGFycml2YWwsXG4gICAgICBhcnJpdmFsV2FsayxcbiAgICAgIG9jY3VwYW5jeSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0gPSBzdW1tYXJ5IHx8IHt9O1xuXG4gICAgY29uc3QgaGltQ3VzID0gdGhpcy5faGFuZGxlSGltQ3VzKHRoaXMudHJpcCk7XG4gICAgY29uc3QgaGFzSGltQ3VzID0gISFoaW1DdXMuY3VzIHx8ICEhaGltQ3VzLmhpbTtcblxuICAgIGNvbnN0IG5vdGljZUF0dHJpYnV0ZXMgPSBub3RpY2VzICYmIGhhbmRsZU5vdGljZXMobm90aWNlcyk7XG5cbiAgICBjb25zdCBkdXJhdGlvbk9iaiA9IGR1cmF0aW9uID8gZHVyYXRpb25Ub1RpbWUoZHVyYXRpb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpIDogbnVsbDtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1jYXJkIHNpemU9XCJsXCIgaWQ9JHtpZH0+XG4gICAgICAgIDxzYmItY2FyZC1idXR0b25cbiAgICAgICAgICA/YWN0aXZlPSR7dGhpcy5hY3RpdmV9XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD0ke3RoaXMuYWNjZXNzaWJpbGl0eUV4cGFuZGVkPy50b1N0cmluZygpID8/IG5vdGhpbmd9XG4gICAgICAgID5cbiAgICAgICAgICAke3RoaXMuY2FyZEFjdGlvbkxhYmVsID8gdGhpcy5jYXJkQWN0aW9uTGFiZWwgOiB0aGlzLl9nZXRBY2Nlc3NpYmlsaXR5VGV4dCh0aGlzLnRyaXApfVxuICAgICAgICA8L3NiYi1jYXJkLWJ1dHRvbj5cbiAgICAgICAgJHt0aGlzLmxvYWRpbmdQcmljZVxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhcmQtYmFkZ2UgY2xhc3M9XCJzYmItbG9hZGluZ19fYmFkZ2VcIj48L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICR7dGhpcy5wcmljZSAmJiAhdGhpcy5sb2FkaW5nUHJpY2VcbiAgICAgICAgICA/IGh0bWxgPHNiYi1jYXJkLWJhZGdlIGNvbG9yPSR7dGhpcy5wcmljZS5pc0Rpc2NvdW50ID8gJ2NoYXJjb2FsJyA6ICd3aGl0ZSd9PlxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UuaXNEaXNjb3VudFxuICAgICAgICAgICAgICAgID8gaHRtbGA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgJTxzcGFuIGNsYXNzPVwic2JiLXNjcmVlbi1yZWFkZXItb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiR7aTE4blN1cGVyc2F2ZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5gXG4gICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UudGV4dCA/IGh0bWxgPHNwYW4+JHt0aGlzLnByaWNlLnRleHR9PC9zcGFuPmAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3RoaXMucHJpY2UucHJpY2UgPyBodG1sYDxzcGFuPiR7dGhpcy5wcmljZS5wcmljZX08L3NwYW4+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgICA8L3NiYi1jYXJkLWJhZGdlPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3dcIiByb2xlPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1oZWFkZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAke3Byb2R1Y3Q/LmNvcnBvcmF0ZUlkZW50aXR5UGljdG9ncmFtICYmXG4gICAgICAgICAgICAgIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItdGltZXRhYmxlX19yb3ctdHJhbnNwb3J0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXRyYW5zcG9ydC1pY29uXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJwaWN0bzoke3Byb2R1Y3QuY29ycG9yYXRlSWRlbnRpdHlQaWN0b2dyYW19XCJcbiAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICR7cHJvZHVjdCAmJlxuICAgICAgICAgICAgICAgICAgcHJvZHVjdC52ZWhpY2xlTW9kZSAmJlxuICAgICAgICAgICAgICAgICAgaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXSAmJlxuICAgICAgICAgICAgICAgICAgaTE4bk1lYW5zT2ZUcmFuc3BvcnRbcHJvZHVjdC52ZWhpY2xlTW9kZS50b0xvd2VyQ2FzZSgpXVt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPmB9XG4gICAgICAgICAgICAgICR7cHJvZHVjdCAmJlxuICAgICAgICAgICAgICAocHJvZHVjdC5jb3Jwb3JhdGVJZGVudGl0eUljb25cbiAgICAgICAgICAgICAgICA/IHJlbmRlckljb25Qcm9kdWN0KHByb2R1Y3QuY29ycG9yYXRlSWRlbnRpdHlJY29uLCBwcm9kdWN0Lm5hbWUpXG4gICAgICAgICAgICAgICAgOiBwcm9kdWN0LnZlaGljbGVTdWJNb2RlU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgICByZW5kZXJTdHJpbmdQcm9kdWN0KHByb2R1Y3QudmVoaWNsZVN1Yk1vZGVTaG9ydE5hbWUsIHByb2R1Y3Q/LmxpbmUpKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtkaXJlY3Rpb25cbiAgICAgICAgICAgICAgPyBodG1sYDxwPiR7YCR7aTE4bkRpcmVjdGlvblt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkaXJlY3Rpb259YH08L3A+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNiYi1wZWFybC1jaGFpbi10aW1lXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgLmxlZ3M9JHtsZWdzfVxuICAgICAgICAgICAgLmRlcGFydHVyZVRpbWU9JHtkZXBhcnR1cmU/LnRpbWV9XG4gICAgICAgICAgICAuYXJyaXZhbFRpbWU9JHthcnJpdmFsPy50aW1lfVxuICAgICAgICAgICAgLmRlcGFydHVyZVdhbGs9JHtkZXBhcnR1cmVXYWxrfVxuICAgICAgICAgICAgLmFycml2YWxXYWxrPSR7YXJyaXZhbFdhbGt9XG4gICAgICAgICAgICA/ZGlzYWJsZS1hbmltYXRpb249JHt0aGlzLmRpc2FibGVBbmltYXRpb259XG4gICAgICAgICAgICAubm93PSR7dGhpcy5ub3d9XG4gICAgICAgICAgPjwvc2JiLXBlYXJsLWNoYWluLXRpbWU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi10aW1ldGFibGVfX3Jvdy1mb290ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgICR7cHJvZHVjdCAmJiB0aGlzLl9nZXRRdWF5VHlwZShwcm9kdWN0LnZlaGljbGVNb2RlKSAmJiBkZXBhcnR1cmU/LnF1YXlGb3JtYXR0ZWRcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz0ke2RlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBgc2JiLXRpbWV0YWJsZV9fcm93LXF1YXktLWNoYW5nZWRgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuRGVwYXJ0dXJlW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke1xuICAgICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZT8ucXVheUNoYW5nZWQgPyBpMThuTmV3W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdIDogJydcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJRdWF5VHlwZSgpfSAke2RlcGFydHVyZT8ucXVheUZvcm1hdHRlZH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAkeyhvY2N1cGFuY3k/LmZpcnN0Q2xhc3MgJiYgb2NjdXBhbmN5Py5maXJzdENsYXNzICE9PSAnVU5LTk9XTicpIHx8XG4gICAgICAgICAgICAob2NjdXBhbmN5Py5zZWNvbmRDbGFzcyAmJiBvY2N1cGFuY3kuc2Vjb25kQ2xhc3MgIT09ICdVTktOT1dOJylcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItdGltZXRhYmxlLW9jY3VwYW5jeVxuICAgICAgICAgICAgICAgICAgLmZpcnN0Q2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LmZpcnN0Q2xhc3M/LnRvTG93ZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAuc2Vjb25kQ2xhc3NPY2N1cGFuY3k9JHtvY2N1cGFuY3k/LnNlY29uZENsYXNzPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgID48L3NiYi10aW1ldGFibGUtb2NjdXBhbmN5PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHsobm90aWNlQXR0cmlidXRlcyAmJiBub3RpY2VBdHRyaWJ1dGVzLmxlbmd0aCkgfHwgdGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICA/IGh0bWxgPHVsIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LWhpbnRzXCIgcm9sZT1cImxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICR7bm90aWNlQXR0cmlidXRlcz8ubWFwKChub3RpY2UsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBpbmRleCA8IDRcbiAgICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmF2ZWwtaGludHNfX2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHsnc2EtJyArIG5vdGljZS5uYW1lPy50b0xvd2VyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCI+JHtub3RpY2UudGV4dD8udGVtcGxhdGV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5gXG4gICAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5ib2FyZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLXRyYXZlbC1oaW50c19faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9JHt0aGlzLmJvYXJkaW5nPy5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5ib2FyZGluZz8udGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2xpPmBcbiAgICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAgIDwvdWw+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAke2R1cmF0aW9uICYmIGR1cmF0aW9uID4gMFxuICAgICAgICAgICAgICA/IGh0bWxgPHRpbWU+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgJHtgJHtpMThuVHJpcER1cmF0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke2R1cmF0aW9uT2JqIS5sb25nfWB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2R1cmF0aW9uT2JqIS5zaG9ydH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90aW1lPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgJHtoYXNIaW1DdXMgJiYgKGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSlcbiAgICAgICAgICAgICAgPyBodG1sYDxzcGFuIGNsYXNzPVwic2JiLXRpbWV0YWJsZV9fcm93LXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxzYmItaWNvbiBuYW1lPSR7KGhpbUN1cy5jdXMgfHwgaGltQ3VzLmhpbSkhLm5hbWV9Pjwvc2JiLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIj4keyhoaW1DdXMuY3VzIHx8IGhpbUN1cy5oaW0pIS50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zYmItY2FyZD5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGltZXRhYmxlLXJvdyc6IFNiYlRpbWV0YWJsZVJvd0VsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYiIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0RhLE1BQUEsb0JBQW9CLENBQUMsTUFBYyxTQUFpQztBQUN4RSxTQUFBO0FBQUEscUJBQ1ksSUFBSTtBQUFBLDJDQUNrQixJQUFJO0FBQUE7QUFFL0M7QUFFYSxNQUFBLHNCQUFzQixDQUFDLGFBQXFCLFNBQXlDO0FBQzFGLFFB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
|
|
@@ -334,11 +334,9 @@ function it(t, e) {
|
|
|
334
334
|
function ot(t) {
|
|
335
335
|
return (e, n = {}) => {
|
|
336
336
|
const r = e.match(t.matchPattern);
|
|
337
|
-
if (!r)
|
|
338
|
-
return null;
|
|
337
|
+
if (!r) return null;
|
|
339
338
|
const a = r[0], i = e.match(t.parsePattern);
|
|
340
|
-
if (!i)
|
|
341
|
-
return null;
|
|
339
|
+
if (!i) return null;
|
|
342
340
|
let s = t.valueCallback ? t.valueCallback(i[0]) : i[0];
|
|
343
341
|
s = n.valueCallback ? n.valueCallback(s) : s;
|
|
344
342
|
const u = e.slice(a.length);
|
|
@@ -1110,8 +1108,7 @@ function Et(t) {
|
|
|
1110
1108
|
}
|
|
1111
1109
|
function Ft(t, e, n) {
|
|
1112
1110
|
const r = qt(t, e, n);
|
|
1113
|
-
if (console.warn(r), Tt.includes(t))
|
|
1114
|
-
throw new RangeError(r);
|
|
1111
|
+
if (console.warn(r), Tt.includes(t)) throw new RangeError(r);
|
|
1115
1112
|
}
|
|
1116
1113
|
function qt(t, e, n) {
|
|
1117
1114
|
const r = t[0] === "Y" ? "years" : "days of the month";
|
|
@@ -1151,8 +1148,7 @@ function Bt(t, e, n) {
|
|
|
1151
1148
|
locale: a
|
|
1152
1149
|
};
|
|
1153
1150
|
return c.map((m) => {
|
|
1154
|
-
if (!m.isToken)
|
|
1155
|
-
return m.value;
|
|
1151
|
+
if (!m.isToken) return m.value;
|
|
1156
1152
|
const h = m.value;
|
|
1157
1153
|
(Et(h) || Dt(h)) && Ft(h, e, String(t));
|
|
1158
1154
|
const S = T[h[0]];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SbbDateLike } from '
|
|
2
|
-
import { SbbTitleLevel } from '
|
|
1
|
+
import { SbbDateLike } from '@sbb-esta/lyne-elements/core/interfaces/types';
|
|
2
|
+
import { SbbTitleLevel } from '@sbb-esta/lyne-elements/title.js';
|
|
3
3
|
import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
|
|
4
4
|
import { Leg } from '../core/timetable.js';
|
|
5
5
|
|
package/journey-summary.js
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
import { SbbLanguageController as
|
|
2
|
-
import { defaultDateAdapter as
|
|
3
|
-
import { i18nTripDuration as
|
|
4
|
-
import { css as
|
|
5
|
-
import { property as b, customElement as
|
|
1
|
+
import { SbbLanguageController as y } from "@sbb-esta/lyne-elements/core/controllers.js";
|
|
2
|
+
import { defaultDateAdapter as d } from "@sbb-esta/lyne-elements/core/datetime.js";
|
|
3
|
+
import { i18nTripDuration as v } from "@sbb-esta/lyne-elements/core/i18n.js";
|
|
4
|
+
import { css as h, LitElement as f, html as s, nothing as o } from "lit";
|
|
5
|
+
import { property as b, customElement as _ } from "lit/decorators.js";
|
|
6
6
|
import { durationToTime as g, removeTimezoneFromISOTimeString as $ } from "./core/datetime.js";
|
|
7
7
|
import "@sbb-esta/lyne-elements/divider.js";
|
|
8
8
|
import "@sbb-esta/lyne-elements/screen-reader-only.js";
|
|
9
9
|
import "@sbb-esta/lyne-elements/journey-header.js";
|
|
10
10
|
import "./pearl-chain-time.js";
|
|
11
11
|
import { i as j } from "./isValid-Df_caLp4.js";
|
|
12
|
-
import { f as
|
|
13
|
-
const
|
|
14
|
-
var
|
|
15
|
-
for (var i =
|
|
16
|
-
(p = e[m]) && (i = (
|
|
17
|
-
return
|
|
12
|
+
import { f as u } from "./format-qHhIvnY8.js";
|
|
13
|
+
const x = h`*,:before,:after{box-sizing:border-box}:host{display:block}.sbb-journey-summary{--sbb-text-font-size: var(--sbb-font-size-text-s);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);color:var(--sbb-color-iron);display:flex;flex-direction:column}.sbb-journey-summary__via-block{display:flex}.sbb-journey-summary__vias{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-block:0;padding-inline-start:var(--sbb-spacing-fixed-1x)}.sbb-journey-summary__date{margin-block-end:var(--sbb-spacing-fixed-2x)}.sbb-journey-summary__via{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sbb-journey-summary__divider{margin-block:var(--sbb-spacing-fixed-6x)}ul li{list-style:none;display:inline}`;
|
|
14
|
+
var w = Object.defineProperty, k = Object.getOwnPropertyDescriptor, l = (e, t, a, r) => {
|
|
15
|
+
for (var i = r > 1 ? void 0 : r ? k(t, a) : t, m = e.length - 1, p; m >= 0; m--)
|
|
16
|
+
(p = e[m]) && (i = (r ? p(t, a, i) : p(i)) || i);
|
|
17
|
+
return r && i && w(t, a, i), i;
|
|
18
18
|
};
|
|
19
|
-
let
|
|
19
|
+
let n = class extends f {
|
|
20
20
|
constructor() {
|
|
21
|
-
super(...arguments), this.headerLevel = "3", this.
|
|
21
|
+
super(...arguments), this.headerLevel = "3", this.a = null, this.b = !1, this.c = new y(this);
|
|
22
22
|
}
|
|
23
23
|
set now(e) {
|
|
24
|
-
this.
|
|
24
|
+
this.a = d.getValidDateOrNull(d.deserialize(e));
|
|
25
25
|
}
|
|
26
26
|
get now() {
|
|
27
|
-
return this.
|
|
27
|
+
return this.a ?? /* @__PURE__ */ new Date();
|
|
28
28
|
}
|
|
29
29
|
connectedCallback() {
|
|
30
30
|
var e;
|
|
31
|
-
super.connectedCallback(), this.
|
|
31
|
+
super.connectedCallback(), this.b = !!((e = this.querySelector) != null && e.call(this, '[slot="content"]'));
|
|
32
32
|
}
|
|
33
33
|
/** renders the date of the journey or if it is the current or next day */
|
|
34
|
-
|
|
35
|
-
const
|
|
34
|
+
e(e, t) {
|
|
35
|
+
const a = d, r = t ? g(t, this.c.current) : null;
|
|
36
36
|
if (j(e))
|
|
37
37
|
return s`
|
|
38
|
-
<time datetime=${
|
|
39
|
-
${
|
|
40
|
-
>${
|
|
38
|
+
<time datetime=${u(e, "d") + " " + u(e, "M")}>
|
|
39
|
+
${a.format(e).replace(",", ".")}</time
|
|
40
|
+
>${t && t > 0 ? s`,<time>
|
|
41
41
|
<sbb-screen-reader-only>
|
|
42
|
-
${
|
|
42
|
+
${v[this.c.current]} ${r.long}
|
|
43
43
|
</sbb-screen-reader-only>
|
|
44
|
-
<span aria-hidden="true">${
|
|
45
|
-
</time>` :
|
|
44
|
+
<span aria-hidden="true">${r.short}</span>
|
|
45
|
+
</time>` : o}
|
|
46
46
|
`;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
const
|
|
48
|
+
f(e) {
|
|
49
|
+
const t = e.slice(0, 5);
|
|
50
50
|
return s`
|
|
51
51
|
<div class="sbb-journey-summary__via-block">
|
|
52
52
|
<span class="sbb-journey-summary__via-text">Via</span>
|
|
53
|
-
<ul class="sbb-journey-summary__vias" role=${e.length <= 1 ? "presentation" :
|
|
54
|
-
${
|
|
55
|
-
(
|
|
56
|
-
${
|
|
53
|
+
<ul class="sbb-journey-summary__vias" role=${e.length <= 1 ? "presentation" : o}>
|
|
54
|
+
${t.map(
|
|
55
|
+
(a, r) => s`<li class="sbb-journey-summary__via">
|
|
56
|
+
${a}${r !== t.length - 1 && r < 4 ? s`<span>,</span>` : o}
|
|
57
57
|
</li>`
|
|
58
58
|
)}
|
|
59
59
|
</ul>
|
|
60
60
|
</div>
|
|
61
61
|
`;
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
const { vias:
|
|
63
|
+
d(e) {
|
|
64
|
+
const { vias: t, duration: a, departureWalk: r, departure: i, arrivalWalk: m, arrival: p, legs: c } = e || {};
|
|
65
65
|
return s`
|
|
66
66
|
<div>
|
|
67
|
-
${
|
|
67
|
+
${t && t.length > 0 ? this.f(t) : o}
|
|
68
68
|
<div class="sbb-journey-summary__date">
|
|
69
|
-
${this.
|
|
69
|
+
${this.e($(i), a)}
|
|
70
70
|
</div>
|
|
71
71
|
<sbb-pearl-chain-time
|
|
72
72
|
.arrivalTime=${p}
|
|
73
73
|
.departureTime=${i}
|
|
74
|
-
.departureWalk=${
|
|
74
|
+
.departureWalk=${r}
|
|
75
75
|
.arrivalWalk=${m}
|
|
76
|
-
.legs=${
|
|
76
|
+
.legs=${c}
|
|
77
77
|
.disableAnimation=${this.disableAnimation}
|
|
78
78
|
.now=${this.now}
|
|
79
79
|
></sbb-pearl-chain-time>
|
|
@@ -81,50 +81,50 @@ let a = class extends _ {
|
|
|
81
81
|
`;
|
|
82
82
|
}
|
|
83
83
|
render() {
|
|
84
|
-
const { origin: e, destination:
|
|
84
|
+
const { origin: e, destination: t } = this.trip || {};
|
|
85
85
|
return s`
|
|
86
86
|
<div class="sbb-journey-summary">
|
|
87
87
|
${e ? s`<sbb-journey-header
|
|
88
88
|
size="l"
|
|
89
|
-
.level=${this.headerLevel ||
|
|
89
|
+
.level=${this.headerLevel || o}
|
|
90
90
|
.origin=${e}
|
|
91
|
-
.destination=${
|
|
92
|
-
.roundTrip=${this.roundTrip ??
|
|
93
|
-
></sbb-journey-header>` :
|
|
94
|
-
${this.
|
|
91
|
+
.destination=${t}
|
|
92
|
+
.roundTrip=${this.roundTrip ?? o}
|
|
93
|
+
></sbb-journey-header>` : o}
|
|
94
|
+
${this.d(this.trip)}
|
|
95
95
|
${this.tripBack ? s`<div>
|
|
96
96
|
<sbb-divider class="sbb-journey-summary__divider"></sbb-divider>
|
|
97
|
-
${this.
|
|
98
|
-
</div>` :
|
|
99
|
-
${this.
|
|
97
|
+
${this.d(this.tripBack)}
|
|
98
|
+
</div>` : o}
|
|
99
|
+
${this.b ? s` <div class="sbb-journey-summary__slot">
|
|
100
100
|
<slot name="content"></slot>
|
|
101
|
-
</div>` :
|
|
101
|
+
</div>` : o}
|
|
102
102
|
</div>
|
|
103
103
|
`;
|
|
104
104
|
}
|
|
105
105
|
};
|
|
106
|
-
|
|
106
|
+
n.styles = x;
|
|
107
107
|
l([
|
|
108
108
|
b({ type: Object })
|
|
109
|
-
],
|
|
109
|
+
], n.prototype, "trip", 2);
|
|
110
110
|
l([
|
|
111
111
|
b({ attribute: "trip-back", type: Object })
|
|
112
|
-
],
|
|
112
|
+
], n.prototype, "tripBack", 2);
|
|
113
113
|
l([
|
|
114
114
|
b({ attribute: "round-trip", type: Boolean })
|
|
115
|
-
],
|
|
115
|
+
], n.prototype, "roundTrip", 2);
|
|
116
116
|
l([
|
|
117
117
|
b({ attribute: "header-level" })
|
|
118
|
-
],
|
|
118
|
+
], n.prototype, "headerLevel", 2);
|
|
119
119
|
l([
|
|
120
120
|
b({ attribute: "disable-animation", type: Boolean })
|
|
121
|
-
],
|
|
121
|
+
], n.prototype, "disableAnimation", 2);
|
|
122
122
|
l([
|
|
123
123
|
b()
|
|
124
|
-
],
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
],
|
|
124
|
+
], n.prototype, "now", 1);
|
|
125
|
+
n = l([
|
|
126
|
+
_("sbb-journey-summary")
|
|
127
|
+
], n);
|
|
128
128
|
export {
|
|
129
|
-
|
|
129
|
+
n as SbbJourneySummaryElement
|
|
130
130
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbb-esta/lyne-elements-experimental",
|
|
3
|
-
"version": "0.52.
|
|
3
|
+
"version": "0.52.1",
|
|
4
4
|
"description": "Lyne Design System",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design system",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"type": "module",
|
|
12
12
|
"customElements": "custom-elements.json",
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@sbb-esta/lyne-elements": "0.52.
|
|
14
|
+
"@sbb-esta/lyne-elements": "0.52.1"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"lit": "^3.0.0"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SbbDateLike } from '
|
|
1
|
+
import { SbbDateLike } from '@sbb-esta/lyne-elements/core/interfaces/types';
|
|
2
2
|
import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
|
|
3
3
|
import { Leg, PtRideLeg } from '../core/timetable.js';
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SbbDateLike } from '
|
|
1
|
+
import { SbbDateLike } from '@sbb-esta/lyne-elements/core/interfaces/types';
|
|
2
2
|
import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
|
|
3
3
|
import { Leg, PtRideLeg } from '../core/timetable.js';
|
|
4
4
|
|