tide-design-system 2.0.28 → 2.0.29
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/dist/css/dynamic-buttons.css +2 -2
- package/dist/style.css +1 -1
- package/dist/tide-design-system.cjs +2 -2
- package/dist/tide-design-system.esm.d.ts +197 -10
- package/dist/tide-design-system.esm.js +365 -329
- package/index.ts +77 -3
- package/package.json +1 -1
- package/src/assets/css/dynamic-buttons.css +2 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { defineComponent as p, openBlock as l, createElementBlock as E, normalizeClass as
|
|
2
|
-
const
|
|
1
|
+
import { defineComponent as p, openBlock as l, createElementBlock as E, normalizeClass as o, unref as t, ref as u, watch as Q, defineAsyncComponent as Ne, markRaw as Le, createBlock as D, resolveDynamicComponent as J, createCommentVNode as A, toDisplayString as N, onMounted as oe, createElementVNode as c, createVNode as P, renderSlot as B, withCtx as ee, computed as F, Fragment as w, renderList as j, createTextVNode as Oe, onUnmounted as pe, onUpdated as Fe, normalizeStyle as ae, getCurrentInstance as te, withDirectives as ne, vModelSelect as ve, withModifiers as Re, vModelDynamic as _e, vModelText as De, Teleport as Se } from "vue";
|
|
2
|
+
const Ct = {
|
|
3
3
|
SM: "sm",
|
|
4
4
|
MD: "md",
|
|
5
5
|
LG: "lg",
|
|
6
6
|
XL: "xl"
|
|
7
7
|
}, e = {
|
|
8
|
-
withBreakpoint: (
|
|
8
|
+
withBreakpoint: (a, s) => a.map((i) => `${s}-${i}`),
|
|
9
9
|
ALIGN: {
|
|
10
10
|
X: {
|
|
11
11
|
CENTER: "tide-text-center",
|
|
@@ -408,67 +408,87 @@ const ce = {
|
|
|
408
408
|
props: {
|
|
409
409
|
orientation: { default: ce.HORIZONTAL }
|
|
410
410
|
},
|
|
411
|
-
setup(
|
|
412
|
-
const s =
|
|
411
|
+
setup(a) {
|
|
412
|
+
const s = a;
|
|
413
413
|
return (i, n) => (l(), E("div", {
|
|
414
|
-
class:
|
|
414
|
+
class: o([
|
|
415
415
|
t(e).BORDER.COLOR.LOW,
|
|
416
416
|
s.orientation === t(ce).HORIZONTAL ? [t(e).MARGIN.Y.HALF, t(e).BORDER.BOTTOM.ONE] : [t(e).MARGIN.X.HALF, t(e).BORDER.RIGHT.ONE]
|
|
417
417
|
])
|
|
418
418
|
}, null, 2));
|
|
419
419
|
}
|
|
420
|
-
}),
|
|
421
|
-
const i =
|
|
420
|
+
}), ge = (a, s) => {
|
|
421
|
+
const i = a[s];
|
|
422
422
|
return i ? typeof i == "function" ? i() : Promise.resolve(i) : new Promise((n, d) => {
|
|
423
423
|
(typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(d.bind(null, new Error("Unknown variable dynamic import: " + s)));
|
|
424
424
|
});
|
|
425
425
|
}, y = {
|
|
426
426
|
LARGE: "large",
|
|
427
427
|
SMALL: "small"
|
|
428
|
-
},
|
|
428
|
+
}, ue = (a) => {
|
|
429
|
+
let s = a && typeof a == "number" ? new Intl.NumberFormat().format(a) : String(a || ""), i = s;
|
|
430
|
+
return a && typeof a == "string" && (i = i.replace(/\D/g, ""), Number(i) ? s = new Intl.NumberFormat().format(Number(i)) : s = "0"), s;
|
|
431
|
+
}, fe = (a) => a && typeof a == "string" ? a.replace(/([a-z]{1})([A-Z]{1})/g, "$1 $2").replace(/[\s_-]/g, " ").toLowerCase().split(" ").map((s) => s.slice(0, 1).toUpperCase() + s.slice(1)).join("") : a, me = (a) => {
|
|
432
|
+
let s = String(a && typeof a == "number" ? a : a || ""), i = s;
|
|
433
|
+
switch (i = i.replace(/\D/g, ""), i.length) {
|
|
434
|
+
case 7:
|
|
435
|
+
s = `${i.slice(0, 3)}-${i.slice(3)}`;
|
|
436
|
+
break;
|
|
437
|
+
case 10:
|
|
438
|
+
s = `${i.slice(0, 3)}-${i.slice(3, 6)}-${i.slice(6)}`;
|
|
439
|
+
break;
|
|
440
|
+
case 11:
|
|
441
|
+
s = `${i.slice(0, 1)}-${i.slice(1, 4)}-${i.slice(4, 7)}-${i.slice(7)}`;
|
|
442
|
+
break;
|
|
443
|
+
default:
|
|
444
|
+
s = i;
|
|
445
|
+
break;
|
|
446
|
+
}
|
|
447
|
+
return s;
|
|
448
|
+
}, Ue = (a) => `$${a ? ue(a) : String(a || "0")}`, Ce = /* @__PURE__ */ p({
|
|
429
449
|
__name: "TideIcon",
|
|
430
450
|
props: {
|
|
431
451
|
icon: {},
|
|
432
452
|
size: { default: y.SMALL }
|
|
433
453
|
},
|
|
434
|
-
setup(
|
|
435
|
-
const s =
|
|
454
|
+
setup(a) {
|
|
455
|
+
const s = a, i = u();
|
|
436
456
|
return Q(
|
|
437
457
|
() => s.icon,
|
|
438
458
|
() => {
|
|
439
|
-
const n = s.icon, d =
|
|
440
|
-
i.value =
|
|
459
|
+
const n = s.icon, d = fe(n), T = Ne(() => ge(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/IconAccountBalance.svg": () => import("./IconAccountBalance-ad4f4a95.js"), "../assets/svg/icons/IconAdd.svg": () => import("./IconAdd-917e055b.js"), "../assets/svg/icons/IconAiDescription.svg": () => import("./IconAiDescription-e6f8ed46.js"), "../assets/svg/icons/IconAlignSpace.svg": () => import("./IconAlignSpace-5d64a8e4.js"), "../assets/svg/icons/IconApplePay.svg": () => import("./IconApplePay-7742e162.js"), "../assets/svg/icons/IconArrowBack.svg": () => import("./IconArrowBack-1810092d.js"), "../assets/svg/icons/IconArrowForward.svg": () => import("./IconArrowForward-ddabefc9.js"), "../assets/svg/icons/IconArrowRight.svg": () => import("./IconArrowRight-d93347c3.js"), "../assets/svg/icons/IconAssignment.svg": () => import("./IconAssignment-1983e555.js"), "../assets/svg/icons/IconAwardStar.svg": () => import("./IconAwardStar-8128aca1.js"), "../assets/svg/icons/IconBookmark.svg": () => import("./IconBookmark-7d88d664.js"), "../assets/svg/icons/IconCalendarMonth.svg": () => import("./IconCalendarMonth-2fd1e713.js"), "../assets/svg/icons/IconCall.svg": () => import("./IconCall-8aa582d9.js"), "../assets/svg/icons/IconCheck.svg": () => import("./IconCheck-cf7470ee.js"), "../assets/svg/icons/IconChevronLeft.svg": () => import("./IconChevronLeft-558206bb.js"), "../assets/svg/icons/IconChevronRight.svg": () => import("./IconChevronRight-28930a0b.js"), "../assets/svg/icons/IconClear.svg": () => import("./IconClear-9419bf17.js"), "../assets/svg/icons/IconClose.svg": () => import("./IconClose-abfb6177.js"), "../assets/svg/icons/IconCycle.svg": () => import("./IconCycle-2affec71.js"), "../assets/svg/icons/IconDelete.svg": () => import("./IconDelete-67b69553.js"), "../assets/svg/icons/IconDiamond.svg": () => import("./IconDiamond-93af488a.js"), "../assets/svg/icons/IconDraft.svg": () => import("./IconDraft-6e70e48f.js"), "../assets/svg/icons/IconEdit.svg": () => import("./IconEdit-16d34325.js"), "../assets/svg/icons/IconError.svg": () => import("./IconError-a2922b95.js"), "../assets/svg/icons/IconExpandContent.svg": () => import("./IconExpandContent-7e144d1c.js"), "../assets/svg/icons/IconExpandLess.svg": () => import("./IconExpandLess-3a8a0552.js"), "../assets/svg/icons/IconExpandMore.svg": () => import("./IconExpandMore-c600148e.js"), "../assets/svg/icons/IconFacebook.svg": () => import("./IconFacebook-4658b533.js"), "../assets/svg/icons/IconFavorite.svg": () => import("./IconFavorite-d23faefe.js"), "../assets/svg/icons/IconFavoriteFilled.svg": () => import("./IconFavoriteFilled-aa0d6d5e.js"), "../assets/svg/icons/IconFormatBold.svg": () => import("./IconFormatBold-70a5cacf.js"), "../assets/svg/icons/IconFormatItalic.svg": () => import("./IconFormatItalic-c06504d7.js"), "../assets/svg/icons/IconFormatListBulleted.svg": () => import("./IconFormatListBulleted-9493858a.js"), "../assets/svg/icons/IconForum.svg": () => import("./IconForum-ae4ad63f.js"), "../assets/svg/icons/IconGavel.svg": () => import("./IconGavel-44c29036.js"), "../assets/svg/icons/IconGoogle.svg": () => import("./IconGoogle-febad0d8.js"), "../assets/svg/icons/IconGooglePay.svg": () => import("./IconGooglePay-8cf0286e.js"), "../assets/svg/icons/IconGrid.svg": () => import("./IconGrid-25f665e0.js"), "../assets/svg/icons/IconHeight.svg": () => import("./IconHeight-4fae7545.js"), "../assets/svg/icons/IconHelp.svg": () => import("./IconHelp-340ee4fb.js"), "../assets/svg/icons/IconInfo.svg": () => import("./IconInfo-efead10b.js"), "../assets/svg/icons/IconInsertText.svg": () => import("./IconInsertText-00236a65.js"), "../assets/svg/icons/IconInstagram.svg": () => import("./IconInstagram-57188d29.js"), "../assets/svg/icons/IconIosShare.svg": () => import("./IconIosShare-167aa8c4.js"), "../assets/svg/icons/IconLayout.svg": () => import("./IconLayout-2865e0eb.js"), "../assets/svg/icons/IconLinkedIn.svg": () => import("./IconLinkedIn-f29c217d.js"), "../assets/svg/icons/IconLocalShipping.svg": () => import("./IconLocalShipping-901a3e4c.js"), "../assets/svg/icons/IconLock.svg": () => import("./IconLock-47669e20.js"), "../assets/svg/icons/IconMail.svg": () => import("./IconMail-9b85058a.js"), "../assets/svg/icons/IconMenu.svg": () => import("./IconMenu-4bed57f3.js"), "../assets/svg/icons/IconMoreHoriz.svg": () => import("./IconMoreHoriz-2aabe29f.js"), "../assets/svg/icons/IconNotifications.svg": () => import("./IconNotifications-bcbf1d8c.js"), "../assets/svg/icons/IconOpenInNew.svg": () => import("./IconOpenInNew-78fffcfe.js"), "../assets/svg/icons/IconPalette.svg": () => import("./IconPalette-22865300.js"), "../assets/svg/icons/IconPaypal.svg": () => import("./IconPaypal-c28e6dbe.js"), "../assets/svg/icons/IconPerson.svg": () => import("./IconPerson-7ada8b07.js"), "../assets/svg/icons/IconPhotoCamera.svg": () => import("./IconPhotoCamera-31a58b85.js"), "../assets/svg/icons/IconPinterest.svg": () => import("./IconPinterest-fe5cc414.js"), "../assets/svg/icons/IconPlayArrow.svg": () => import("./IconPlayArrow-1ed5d884.js"), "../assets/svg/icons/IconRemove.svg": () => import("./IconRemove-bab221ba.js"), "../assets/svg/icons/IconRoundedCorners.svg": () => import("./IconRoundedCorners-e21c4321.js"), "../assets/svg/icons/IconRuler.svg": () => import("./IconRuler-0ceea80a.js"), "../assets/svg/icons/IconSearch.svg": () => import("./IconSearch-f8faefb4.js"), "../assets/svg/icons/IconSeating.svg": () => import("./IconSeating-2ca8921d.js"), "../assets/svg/icons/IconSell.svg": () => import("./IconSell-b011ac2d.js"), "../assets/svg/icons/IconShare.svg": () => import("./IconShare-57f28ce3.js"), "../assets/svg/icons/IconShoppingCart.svg": () => import("./IconShoppingCart-b532dab0.js"), "../assets/svg/icons/IconSms.svg": () => import("./IconSms-378f373a.js"), "../assets/svg/icons/IconStar.svg": () => import("./IconStar-1b8ad0f9.js"), "../assets/svg/icons/IconSwapVert.svg": () => import("./IconSwapVert-8085e942.js"), "../assets/svg/icons/IconThreeDRotation.svg": () => import("./IconThreeDRotation-33f086a7.js"), "../assets/svg/icons/IconTrophy.svg": () => import("./IconTrophy-f4be8b54.js"), "../assets/svg/icons/IconTune.svg": () => import("./IconTune-0913ba01.js"), "../assets/svg/icons/IconTwitter.svg": () => import("./IconTwitter-9acefb07.js"), "../assets/svg/icons/IconVideocam.svg": () => import("./IconVideocam-33650e6f.js"), "../assets/svg/icons/IconViewInAr.svg": () => import("./IconViewInAr-d1534ef2.js"), "../assets/svg/icons/IconVisibility.svg": () => import("./IconVisibility-a1c21dd0.js"), "../assets/svg/icons/IconVolumeOff.svg": () => import("./IconVolumeOff-8e121ef3.js"), "../assets/svg/icons/IconVolumeOn.svg": () => import("./IconVolumeOn-992e16dd.js"), "../assets/svg/icons/IconWarning.svg": () => import("./IconWarning-6f490acf.js"), "../assets/svg/icons/IconWeight.svg": () => import("./IconWeight-e3b3daa6.js"), "../assets/svg/icons/IconWidth.svg": () => import("./IconWidth-c81dbc7a.js"), "../assets/svg/icons/IconYoutube.svg": () => import("./IconYoutube-a6224033.js") }), `../assets/svg/icons/Icon${d}.svg`));
|
|
460
|
+
i.value = Le(T);
|
|
441
461
|
},
|
|
442
462
|
{ immediate: !0 }
|
|
443
463
|
), (n, d) => (l(), E("div", {
|
|
444
|
-
class:
|
|
464
|
+
class: o(["tide-icon", s.size])
|
|
445
465
|
}, [
|
|
446
466
|
i.value ? (l(), D(J(i.value), {
|
|
447
467
|
key: 0,
|
|
448
|
-
class:
|
|
468
|
+
class: o([t(e).DISPLAY.BLOCK]),
|
|
449
469
|
"data-icon": n.icon,
|
|
450
470
|
fill: "currentColor"
|
|
451
471
|
}, null, 8, ["class", "data-icon"])) : A("", !0)
|
|
452
472
|
], 2));
|
|
453
473
|
}
|
|
454
474
|
});
|
|
455
|
-
const U = (
|
|
456
|
-
const i =
|
|
475
|
+
const U = (a, s) => {
|
|
476
|
+
const i = a.__vccOpts || a;
|
|
457
477
|
for (const [n, d] of s)
|
|
458
478
|
i[n] = d;
|
|
459
479
|
return i;
|
|
460
|
-
}, S = /* @__PURE__ */ U(
|
|
480
|
+
}, S = /* @__PURE__ */ U(Ce, [["__scopeId", "data-v-52bbe8b5"]]), Pe = {
|
|
461
481
|
key: 0,
|
|
462
|
-
class: /* @__PURE__ */
|
|
463
|
-
},
|
|
482
|
+
class: /* @__PURE__ */ o(["tide-indicator-label"])
|
|
483
|
+
}, Ge = /* @__PURE__ */ p({
|
|
464
484
|
__name: "TideIndicator",
|
|
465
485
|
props: {
|
|
466
486
|
label: { default: void 0 }
|
|
467
487
|
},
|
|
468
|
-
setup(
|
|
469
|
-
const s =
|
|
488
|
+
setup(a) {
|
|
489
|
+
const s = a;
|
|
470
490
|
return (i, n) => (l(), E("div", {
|
|
471
|
-
class:
|
|
491
|
+
class: o([
|
|
472
492
|
"tide-indicator",
|
|
473
493
|
s.label && "tide-indicator-background",
|
|
474
494
|
t(e).BG.SURFACE.ACCENT,
|
|
@@ -484,11 +504,11 @@ const U = (o, s) => {
|
|
|
484
504
|
] : []
|
|
485
505
|
])
|
|
486
506
|
}, [
|
|
487
|
-
s.label ? (l(), E("div",
|
|
507
|
+
s.label ? (l(), E("div", Pe, N(s.label), 1)) : A("", !0)
|
|
488
508
|
], 2));
|
|
489
509
|
}
|
|
490
510
|
});
|
|
491
|
-
const
|
|
511
|
+
const he = /* @__PURE__ */ U(Ge, [["__scopeId", "data-v-4e56cba5"]]), v = {
|
|
492
512
|
ACCOUNT_BALANCE: "account-balance",
|
|
493
513
|
ADD: "add",
|
|
494
514
|
AI_DESCRIPTION: "ai-description",
|
|
@@ -572,7 +592,7 @@ const Ce = /* @__PURE__ */ U(Ue, [["__scopeId", "data-v-4e56cba5"]]), v = {
|
|
|
572
592
|
WEIGHT: "weight",
|
|
573
593
|
WIDTH: "width",
|
|
574
594
|
YOUTUBE: "youtube"
|
|
575
|
-
},
|
|
595
|
+
}, He = { class: "tide-accordion-item" }, be = /* @__PURE__ */ p({
|
|
576
596
|
__name: "TideAccordionItem",
|
|
577
597
|
props: {
|
|
578
598
|
hasBottomDivider: {
|
|
@@ -606,8 +626,8 @@ const Ce = /* @__PURE__ */ U(Ue, [["__scopeId", "data-v-4e56cba5"]]), v = {
|
|
|
606
626
|
type: String
|
|
607
627
|
}
|
|
608
628
|
},
|
|
609
|
-
setup(
|
|
610
|
-
const s =
|
|
629
|
+
setup(a) {
|
|
630
|
+
const s = a, i = u(s.isExpandedInitial);
|
|
611
631
|
let n = u();
|
|
612
632
|
const d = () => {
|
|
613
633
|
const T = n.value;
|
|
@@ -616,36 +636,36 @@ const Ce = /* @__PURE__ */ U(Ue, [["__scopeId", "data-v-4e56cba5"]]), v = {
|
|
|
616
636
|
return oe(() => {
|
|
617
637
|
const T = n.value;
|
|
618
638
|
T.style.gridTemplateRows = i.value ? "1fr" : "0fr";
|
|
619
|
-
}), (T, I) => (l(), E("div",
|
|
639
|
+
}), (T, I) => (l(), E("div", He, [
|
|
620
640
|
s.hasTopDivider ? (l(), D(Te, { key: 0 })) : A("", !0),
|
|
621
641
|
c("div", {
|
|
622
|
-
class:
|
|
642
|
+
class: o(["tide-accordion-head", t(e).DISPLAY.FLEX, t(e).AXIS1.BETWEEN, t(e).PADDING.Y.HALF, t(e).CURSOR.POINTER]),
|
|
623
643
|
onClick: d
|
|
624
644
|
}, [
|
|
625
645
|
c("div", {
|
|
626
|
-
class:
|
|
646
|
+
class: o([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
|
|
627
647
|
}, [
|
|
628
648
|
c("span", null, N(s.label), 1),
|
|
629
649
|
s.isOptional ? (l(), E("span", {
|
|
630
650
|
key: 0,
|
|
631
|
-
class:
|
|
651
|
+
class: o([t(e).FONT.COLOR.SURFACE.VARIANT])
|
|
632
652
|
}, " (optional) ", 2)) : A("", !0),
|
|
633
|
-
s.isActive ? (l(), D(
|
|
653
|
+
s.isActive ? (l(), D(he, { key: 1 })) : A("", !0)
|
|
634
654
|
], 2),
|
|
635
655
|
P(S, {
|
|
636
656
|
icon: i.value ? t(v).EXPAND_LESS : t(v).EXPAND_MORE
|
|
637
657
|
}, null, 8, ["icon"])
|
|
638
658
|
], 2),
|
|
639
659
|
c("div", {
|
|
640
|
-
class:
|
|
660
|
+
class: o(["tide-accordion-body", t(e).DISPLAY.GRID]),
|
|
641
661
|
ref_key: "accordionBody",
|
|
642
662
|
ref: n
|
|
643
663
|
}, [
|
|
644
664
|
c("div", {
|
|
645
|
-
class:
|
|
665
|
+
class: o([t(e).OVERFLOW.Y.HIDDEN])
|
|
646
666
|
}, [
|
|
647
667
|
c("div", {
|
|
648
|
-
class:
|
|
668
|
+
class: o([t(e).MARGIN.Y.ONE, t(e).FONT.WEIGHT.FOUR_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
|
|
649
669
|
}, [
|
|
650
670
|
B(T.$slots, "default", {}, void 0, !0)
|
|
651
671
|
], 2)
|
|
@@ -655,14 +675,14 @@ const Ce = /* @__PURE__ */ U(Ue, [["__scopeId", "data-v-4e56cba5"]]), v = {
|
|
|
655
675
|
]));
|
|
656
676
|
}
|
|
657
677
|
});
|
|
658
|
-
const
|
|
678
|
+
const Pt = /* @__PURE__ */ U(be, [["__scopeId", "data-v-ad283103"]]), _ = {
|
|
659
679
|
BUTTON: "button",
|
|
660
680
|
LINK: "a"
|
|
661
681
|
}, x = {
|
|
662
682
|
BUTTON: "button",
|
|
663
683
|
DIV: "div",
|
|
664
684
|
LINK: "a"
|
|
665
|
-
},
|
|
685
|
+
}, $ = {
|
|
666
686
|
PRIMARY: "primary",
|
|
667
687
|
SECONDARY: "secondary",
|
|
668
688
|
TERTIARY: "tertiary",
|
|
@@ -679,13 +699,13 @@ const mt = /* @__PURE__ */ U(Ge, [["__scopeId", "data-v-ad283103"]]), _ = {
|
|
|
679
699
|
href: { default: void 0 },
|
|
680
700
|
icon: { default: void 0 },
|
|
681
701
|
isNewTab: { type: Boolean, default: !1 },
|
|
682
|
-
priority: { default:
|
|
702
|
+
priority: { default: $.PRIMARY }
|
|
683
703
|
},
|
|
684
|
-
setup(
|
|
685
|
-
const s =
|
|
704
|
+
setup(a) {
|
|
705
|
+
const s = a;
|
|
686
706
|
return (i, n) => (l(), D(J(s.element === t(_).LINK ? "a" : "button"), {
|
|
687
707
|
"aria-label": s.icon,
|
|
688
|
-
class:
|
|
708
|
+
class: o([
|
|
689
709
|
s.element === t(_).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
|
|
690
710
|
s.priority && `tide-button-${s.priority}`,
|
|
691
711
|
[t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
|
|
@@ -710,15 +730,15 @@ const mt = /* @__PURE__ */ U(Ge, [["__scopeId", "data-v-ad283103"]]), _ = {
|
|
|
710
730
|
INFO: "info",
|
|
711
731
|
SUCCESS: "success",
|
|
712
732
|
WARNING: "warning"
|
|
713
|
-
},
|
|
733
|
+
}, ye = /* @__PURE__ */ p({
|
|
714
734
|
__name: "TideAlert",
|
|
715
735
|
props: {
|
|
716
736
|
heading: { default: void 0 },
|
|
717
737
|
isToast: { type: Boolean, default: !1 },
|
|
718
738
|
type: { default: b.INFO }
|
|
719
739
|
},
|
|
720
|
-
setup(
|
|
721
|
-
const s =
|
|
740
|
+
setup(a) {
|
|
741
|
+
const s = a, i = F(() => {
|
|
722
742
|
let n = v.VIEW_IN_AR;
|
|
723
743
|
switch (s.type) {
|
|
724
744
|
case b.ERROR:
|
|
@@ -738,7 +758,7 @@ const mt = /* @__PURE__ */ U(Ge, [["__scopeId", "data-v-ad283103"]]), _ = {
|
|
|
738
758
|
return n;
|
|
739
759
|
});
|
|
740
760
|
return (n, d) => (l(), E("div", {
|
|
741
|
-
class:
|
|
761
|
+
class: o([
|
|
742
762
|
s.type,
|
|
743
763
|
"tide-alert",
|
|
744
764
|
t(e).DISPLAY.GRID,
|
|
@@ -752,10 +772,10 @@ const mt = /* @__PURE__ */ U(Ge, [["__scopeId", "data-v-ad283103"]]), _ = {
|
|
|
752
772
|
])
|
|
753
773
|
}, [
|
|
754
774
|
c("div", {
|
|
755
|
-
class:
|
|
775
|
+
class: o(["tide-alert-icon", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
|
|
756
776
|
}, [
|
|
757
777
|
P(S, {
|
|
758
|
-
class:
|
|
778
|
+
class: o([
|
|
759
779
|
s.type,
|
|
760
780
|
t(e).BORDER.RADIUS.FULL,
|
|
761
781
|
t(e).PADDING.FULL.HALF,
|
|
@@ -769,39 +789,39 @@ const mt = /* @__PURE__ */ U(Ge, [["__scopeId", "data-v-ad283103"]]), _ = {
|
|
|
769
789
|
}, null, 8, ["class", "icon"])
|
|
770
790
|
], 2),
|
|
771
791
|
c("div", {
|
|
772
|
-
class:
|
|
792
|
+
class: o(["tide-alert-heading", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
|
|
773
793
|
}, [
|
|
774
794
|
c("h2", {
|
|
775
|
-
class:
|
|
795
|
+
class: o([t(e).FONT.SIZE.SIXTEEN, t(e).FONT.WEIGHT.SIX_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
|
|
776
796
|
}, N(s.heading), 3)
|
|
777
797
|
], 2),
|
|
778
798
|
P(q, {
|
|
779
|
-
class:
|
|
799
|
+
class: o(["tide-alert-close", t(e).AXIS2.CENTER, t(e).FONT.COLOR.SURFACE.DEFAULT]),
|
|
780
800
|
icon: t(v).CLOSE,
|
|
781
|
-
priority: t(
|
|
801
|
+
priority: t($).QUATERNARY,
|
|
782
802
|
"aria-label": "Close alert"
|
|
783
803
|
}, null, 8, ["class", "icon", "priority"]),
|
|
784
804
|
c("div", {
|
|
785
|
-
class:
|
|
805
|
+
class: o(["tide-alert-body", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT])
|
|
786
806
|
}, [
|
|
787
807
|
B(n.$slots, "default", {}, void 0, !0)
|
|
788
808
|
], 2)
|
|
789
809
|
], 2));
|
|
790
810
|
}
|
|
791
811
|
});
|
|
792
|
-
const
|
|
812
|
+
const Gt = /* @__PURE__ */ U(ye, [["__scopeId", "data-v-279a5605"]]), Be = ["alt", "loading", "src"], Xe = /* @__PURE__ */ p({
|
|
793
813
|
__name: "TideBackgroundImage",
|
|
794
814
|
props: {
|
|
795
815
|
alt: { default: "" },
|
|
796
816
|
isLazy: { type: Boolean, default: !0 },
|
|
797
817
|
src: {}
|
|
798
818
|
},
|
|
799
|
-
setup(
|
|
819
|
+
setup(a) {
|
|
800
820
|
return (s, i) => (l(), E("div", {
|
|
801
|
-
class:
|
|
821
|
+
class: o([t(e).POSITION.RELATIVE, t(e).OVERFLOW.XY.HIDDEN, t(e).ISOLATION.ISOLATE])
|
|
802
822
|
}, [
|
|
803
823
|
c("div", {
|
|
804
|
-
class:
|
|
824
|
+
class: o([
|
|
805
825
|
t(e).POSITION.ABSOLUTE,
|
|
806
826
|
t(e).HEIGHT.FULL,
|
|
807
827
|
t(e).WIDTH.FULL,
|
|
@@ -812,24 +832,24 @@ const Ut = /* @__PURE__ */ U(he, [["__scopeId", "data-v-279a5605"]]), He = ["alt
|
|
|
812
832
|
}, [
|
|
813
833
|
c("img", {
|
|
814
834
|
alt: s.alt,
|
|
815
|
-
class:
|
|
835
|
+
class: o(["tide-background-image", t(e).OBJECT.COVER, t(e).WIDTH.FULL, t(e).HEIGHT.FULL]),
|
|
816
836
|
loading: s.isLazy ? "lazy" : void 0,
|
|
817
837
|
src: s.src
|
|
818
|
-
}, null, 10,
|
|
838
|
+
}, null, 10, Be)
|
|
819
839
|
], 2),
|
|
820
840
|
B(s.$slots, "default", {}, void 0, !0)
|
|
821
841
|
], 2));
|
|
822
842
|
}
|
|
823
843
|
});
|
|
824
|
-
const
|
|
844
|
+
const ht = /* @__PURE__ */ U(Xe, [["__scopeId", "data-v-99ffd814"]]), Ht = /* @__PURE__ */ p({
|
|
825
845
|
__name: "TideBadge",
|
|
826
846
|
props: {
|
|
827
847
|
label: {}
|
|
828
848
|
},
|
|
829
|
-
setup(
|
|
830
|
-
const s =
|
|
849
|
+
setup(a) {
|
|
850
|
+
const s = a;
|
|
831
851
|
return (i, n) => (l(), E("div", {
|
|
832
|
-
class:
|
|
852
|
+
class: o([
|
|
833
853
|
"tide-badge",
|
|
834
854
|
t(e).FONT.COLOR.SURFACE.DEFAULT,
|
|
835
855
|
t(e).BG.SURFACE.FLOATING,
|
|
@@ -843,15 +863,15 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
843
863
|
])
|
|
844
864
|
}, N(s.label), 3));
|
|
845
865
|
}
|
|
846
|
-
}),
|
|
866
|
+
}), bt = /* @__PURE__ */ p({
|
|
847
867
|
__name: "TideBadgePremium",
|
|
848
868
|
props: {
|
|
849
869
|
label: {}
|
|
850
870
|
},
|
|
851
|
-
setup(
|
|
852
|
-
const s =
|
|
871
|
+
setup(a) {
|
|
872
|
+
const s = a;
|
|
853
873
|
return (i, n) => (l(), E("div", {
|
|
854
|
-
class:
|
|
874
|
+
class: o([
|
|
855
875
|
"tide-badge",
|
|
856
876
|
t(e).FONT.COLOR.SURFACE.DEFAULT,
|
|
857
877
|
t(e).BG.SURFACE.VARIANT,
|
|
@@ -864,29 +884,29 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
864
884
|
])
|
|
865
885
|
}, N(s.label), 3));
|
|
866
886
|
}
|
|
867
|
-
}),
|
|
887
|
+
}), yt = {
|
|
868
888
|
JUST_LISTED: "Just listed",
|
|
869
889
|
NATIONWIDE: "Nationwide",
|
|
870
890
|
REDUCED: "Reduced",
|
|
871
891
|
UPDATED: "Updated"
|
|
872
|
-
},
|
|
892
|
+
}, Bt = {
|
|
873
893
|
PREMIUM: "Premium",
|
|
874
894
|
PREMIUM_SELECT: "Premium SELECT"
|
|
875
|
-
},
|
|
895
|
+
}, We = {
|
|
876
896
|
YEARS_10: "10",
|
|
877
897
|
YEARS_15: "15",
|
|
878
898
|
YEARS_5: "5"
|
|
879
|
-
},
|
|
880
|
-
class: /* @__PURE__ */
|
|
881
|
-
},
|
|
899
|
+
}, Me = {
|
|
900
|
+
class: /* @__PURE__ */ o([])
|
|
901
|
+
}, Xt = /* @__PURE__ */ p({
|
|
882
902
|
__name: "TideBadgeTrustedPartner",
|
|
883
903
|
props: {
|
|
884
|
-
years: { default:
|
|
904
|
+
years: { default: We.YEARS_5 }
|
|
885
905
|
},
|
|
886
|
-
setup(
|
|
887
|
-
const s =
|
|
906
|
+
setup(a) {
|
|
907
|
+
const s = a;
|
|
888
908
|
return (i, n) => (l(), E("div", {
|
|
889
|
-
class:
|
|
909
|
+
class: o([
|
|
890
910
|
"tide-badge-trusted-partner",
|
|
891
911
|
t(e).FONT.COLOR.SURFACE.BRAND,
|
|
892
912
|
t(e).DISPLAY.INLINE_FLEX,
|
|
@@ -900,12 +920,12 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
900
920
|
P(S, {
|
|
901
921
|
icon: t(v).VIEW_IN_AR
|
|
902
922
|
}, null, 8, ["icon"]),
|
|
903
|
-
c("div",
|
|
923
|
+
c("div", Me, [
|
|
904
924
|
c("span", null, N(s.years) + " year trusted partner", 1)
|
|
905
925
|
])
|
|
906
926
|
], 2));
|
|
907
927
|
}
|
|
908
|
-
}),
|
|
928
|
+
}), Ye = ["data-track", "href"], ke = ["data-track"], Ve = { key: 0 }, Wt = /* @__PURE__ */ p({
|
|
909
929
|
__name: "TideBreadCrumbs",
|
|
910
930
|
props: {
|
|
911
931
|
breadCrumbs: {
|
|
@@ -914,29 +934,29 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
914
934
|
type: Object
|
|
915
935
|
}
|
|
916
936
|
},
|
|
917
|
-
setup(
|
|
918
|
-
const s =
|
|
937
|
+
setup(a) {
|
|
938
|
+
const s = a;
|
|
919
939
|
return (i, n) => (l(), E("ul", {
|
|
920
|
-
class:
|
|
940
|
+
class: o(["tide-bread-crumbs", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
|
|
921
941
|
}, [
|
|
922
|
-
(l(!0), E(
|
|
942
|
+
(l(!0), E(w, null, j(s.breadCrumbs, (d, T) => (l(), E(w, {
|
|
923
943
|
key: d.label
|
|
924
944
|
}, [
|
|
925
945
|
c("li", {
|
|
926
|
-
class:
|
|
946
|
+
class: o([t(e).FONT.SIZE.FOURTEEN])
|
|
927
947
|
}, [
|
|
928
948
|
d.url ? (l(), E("a", {
|
|
929
949
|
key: 0,
|
|
930
|
-
class:
|
|
950
|
+
class: o([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT]),
|
|
931
951
|
"data-track": d.dataTrack || void 0,
|
|
932
952
|
href: d.url
|
|
933
|
-
}, N(d.label), 11,
|
|
953
|
+
}, N(d.label), 11, Ye)) : (l(), E("span", {
|
|
934
954
|
key: 1,
|
|
935
|
-
class:
|
|
955
|
+
class: o([t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT]),
|
|
936
956
|
"data-track": d.dataTrack || void 0
|
|
937
|
-
}, N(d.label), 11,
|
|
957
|
+
}, N(d.label), 11, ke))
|
|
938
958
|
], 2),
|
|
939
|
-
s.breadCrumbs && T < s.breadCrumbs.length - 1 ? (l(), E("li",
|
|
959
|
+
s.breadCrumbs && T < s.breadCrumbs.length - 1 ? (l(), E("li", Ve, [
|
|
940
960
|
P(S, {
|
|
941
961
|
icon: t(v).ARROW_RIGHT,
|
|
942
962
|
size: t(y).SMALL
|
|
@@ -945,7 +965,7 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
945
965
|
], 64))), 128))
|
|
946
966
|
], 2));
|
|
947
967
|
}
|
|
948
|
-
}),
|
|
968
|
+
}), Mt = /* @__PURE__ */ p({
|
|
949
969
|
__name: "TideButton",
|
|
950
970
|
props: {
|
|
951
971
|
disabled: { type: Boolean, default: !1 },
|
|
@@ -955,12 +975,12 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
955
975
|
iconTrailing: { default: void 0 },
|
|
956
976
|
isNewTab: { type: Boolean, default: !1 },
|
|
957
977
|
label: { default: void 0 },
|
|
958
|
-
priority: { default:
|
|
978
|
+
priority: { default: $.PRIMARY }
|
|
959
979
|
},
|
|
960
|
-
setup(
|
|
961
|
-
const s =
|
|
980
|
+
setup(a) {
|
|
981
|
+
const s = a;
|
|
962
982
|
return (i, n) => (l(), D(J(s.element === t(_).LINK ? t(_).LINK : t(_).BUTTON), {
|
|
963
|
-
class:
|
|
983
|
+
class: o([
|
|
964
984
|
s.element === t(_).LINK ? "tide-link-as-button" : "tide-button",
|
|
965
985
|
s.priority && `tide-button-${s.priority}`,
|
|
966
986
|
s.element === t(_).LINK ? [t(e).DISPLAY.INLINE_FLEX] : [t(e).DISPLAY.FLEX],
|
|
@@ -990,7 +1010,7 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
990
1010
|
_: 1
|
|
991
1011
|
}, 8, ["class", "disabled", "href", "target"]));
|
|
992
1012
|
}
|
|
993
|
-
}),
|
|
1013
|
+
}), xe = /* @__PURE__ */ p({
|
|
994
1014
|
__name: "TideButtonPagination",
|
|
995
1015
|
props: {
|
|
996
1016
|
disabled: { type: Boolean, default: !1 },
|
|
@@ -998,12 +1018,12 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
998
1018
|
href: { default: void 0 },
|
|
999
1019
|
label: { default: void 0 }
|
|
1000
1020
|
},
|
|
1001
|
-
setup(
|
|
1002
|
-
const s =
|
|
1021
|
+
setup(a) {
|
|
1022
|
+
const s = a;
|
|
1003
1023
|
return (i, n) => (l(), D(J(
|
|
1004
1024
|
s.element === t(x).LINK ? "a" : s.element === t(x).BUTTON ? "button" : "div"
|
|
1005
1025
|
), {
|
|
1006
|
-
class:
|
|
1026
|
+
class: o([
|
|
1007
1027
|
s.element === t(x).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
|
|
1008
1028
|
[t(e).DISPLAY.INLINE_BLOCK, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
|
|
1009
1029
|
s.element === t(x).LINK ? [t(e).UNDERLINE.OFF] : "",
|
|
@@ -1015,18 +1035,18 @@ const Ct = /* @__PURE__ */ U(be, [["__scopeId", "data-v-99ffd814"]]), Pt = /* @_
|
|
|
1015
1035
|
}, {
|
|
1016
1036
|
default: ee(() => [
|
|
1017
1037
|
c("span", {
|
|
1018
|
-
class:
|
|
1038
|
+
class: o(["label", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER])
|
|
1019
1039
|
}, N(s.label), 3)
|
|
1020
1040
|
]),
|
|
1021
1041
|
_: 1
|
|
1022
1042
|
}, 8, ["class", "disabled", "href"]));
|
|
1023
1043
|
}
|
|
1024
1044
|
});
|
|
1025
|
-
const
|
|
1045
|
+
const $e = /* @__PURE__ */ U(xe, [["__scopeId", "data-v-0710b4ab"]]), Yt = /* @__PURE__ */ p({
|
|
1026
1046
|
__name: "TideCard",
|
|
1027
|
-
setup(
|
|
1047
|
+
setup(a) {
|
|
1028
1048
|
return (s, i) => (l(), E("div", {
|
|
1029
|
-
class:
|
|
1049
|
+
class: o([
|
|
1030
1050
|
"tide-card",
|
|
1031
1051
|
t(e).HEIGHT.FULL,
|
|
1032
1052
|
t(e).BORDER.RADIUS.HALF,
|
|
@@ -1039,15 +1059,15 @@ const ke = /* @__PURE__ */ U(Ye, [["__scopeId", "data-v-0710b4ab"]]), Xt = /* @_
|
|
|
1039
1059
|
B(s.$slots, "default")
|
|
1040
1060
|
], 2));
|
|
1041
1061
|
}
|
|
1042
|
-
}), Ie = 16,
|
|
1062
|
+
}), Ie = 16, kt = /* @__PURE__ */ p({
|
|
1043
1063
|
__name: "TideCarousel",
|
|
1044
1064
|
props: {
|
|
1045
1065
|
isTouchscreen: { type: Boolean },
|
|
1046
1066
|
offsetX: { default: 0 }
|
|
1047
1067
|
},
|
|
1048
1068
|
emits: ["change"],
|
|
1049
|
-
setup(
|
|
1050
|
-
const i =
|
|
1069
|
+
setup(a, { emit: s }) {
|
|
1070
|
+
const i = a;
|
|
1051
1071
|
let n = u(), d = u(), T = u(), I = u();
|
|
1052
1072
|
const r = u(), L = u(), m = u(), R = u(0), G = () => {
|
|
1053
1073
|
const O = Array.from(r.value.children).map((C) => C.offsetLeft);
|
|
@@ -1081,43 +1101,43 @@ const ke = /* @__PURE__ */ U(Ye, [["__scopeId", "data-v-0710b4ab"]]), Xt = /* @_
|
|
|
1081
1101
|
};
|
|
1082
1102
|
return oe(() => {
|
|
1083
1103
|
h(), window.addEventListener("resize", h);
|
|
1084
|
-
}), Le(() => {
|
|
1085
|
-
window.removeEventListener("resize", h);
|
|
1086
1104
|
}), pe(() => {
|
|
1105
|
+
window.removeEventListener("resize", h);
|
|
1106
|
+
}), Fe(() => {
|
|
1087
1107
|
h();
|
|
1088
1108
|
}), Q(R, () => {
|
|
1089
1109
|
s("change", R.value);
|
|
1090
1110
|
}), (O, g) => (l(), E("section", {
|
|
1091
|
-
class:
|
|
1111
|
+
class: o(["tide-carousel", t(e).POSITION.RELATIVE, t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).WIDTH.FULL]),
|
|
1092
1112
|
ref: "carouselRef"
|
|
1093
1113
|
}, [
|
|
1094
1114
|
c("div", {
|
|
1095
|
-
class:
|
|
1115
|
+
class: o([t(e).SCROLLBAR.OFF, t(e).SNAP.ON, t(e).OVERFLOW.X.SCROLL]),
|
|
1096
1116
|
ref_key: "frameRef",
|
|
1097
1117
|
ref: L,
|
|
1098
1118
|
onScroll: M
|
|
1099
1119
|
}, [
|
|
1100
1120
|
c("ul", {
|
|
1101
|
-
class:
|
|
1121
|
+
class: o([i.isTouchscreen ? [t(e).OVERFLOW.X.AUTO] : "", t(e).DISPLAY.FLEX, t(e).GAP.ONE, t(e).LIST_BULLETS.OFF]),
|
|
1102
1122
|
ref_key: "contentRef",
|
|
1103
1123
|
ref: r
|
|
1104
1124
|
}, [
|
|
1105
1125
|
i.offsetX ? (l(), E("li", {
|
|
1106
1126
|
key: 0,
|
|
1107
|
-
class:
|
|
1127
|
+
class: o([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
|
|
1108
1128
|
style: ae({ width: `${i.offsetX - Ie}px` })
|
|
1109
1129
|
}, null, 6)) : A("", !0),
|
|
1110
1130
|
B(O.$slots, "default"),
|
|
1111
1131
|
i.offsetX ? (l(), E("li", {
|
|
1112
1132
|
key: 1,
|
|
1113
|
-
class:
|
|
1133
|
+
class: o([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
|
|
1114
1134
|
style: ae({ width: `${i.offsetX - Ie}px` })
|
|
1115
1135
|
}, null, 6)) : A("", !0)
|
|
1116
1136
|
], 2)
|
|
1117
1137
|
], 34),
|
|
1118
1138
|
m.value ? (l(), E("div", {
|
|
1119
1139
|
key: 0,
|
|
1120
|
-
class:
|
|
1140
|
+
class: o([
|
|
1121
1141
|
t(e).POSITION.ABSOLUTE,
|
|
1122
1142
|
t(e).DISPLAY.FLEX,
|
|
1123
1143
|
t(e).AXIS1.BETWEEN,
|
|
@@ -1128,31 +1148,31 @@ const ke = /* @__PURE__ */ U(Ye, [["__scopeId", "data-v-0710b4ab"]]), Xt = /* @_
|
|
|
1128
1148
|
])
|
|
1129
1149
|
}, [
|
|
1130
1150
|
P(q, {
|
|
1131
|
-
class:
|
|
1151
|
+
class: o([t(e).MARGIN.LEFT.ONE, t(e).POINTER_EVENTS.ON]),
|
|
1132
1152
|
icon: t(v).CHEVRON_LEFT,
|
|
1133
|
-
priority: t(
|
|
1153
|
+
priority: t($).QUATERNARY,
|
|
1134
1154
|
onClick: H
|
|
1135
1155
|
}, null, 8, ["class", "icon", "priority"]),
|
|
1136
1156
|
P(q, {
|
|
1137
|
-
class:
|
|
1157
|
+
class: o([t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.ON]),
|
|
1138
1158
|
icon: t(v).CHEVRON_RIGHT,
|
|
1139
|
-
priority: t(
|
|
1159
|
+
priority: t($).QUATERNARY,
|
|
1140
1160
|
onClick: k
|
|
1141
1161
|
}, null, 8, ["class", "icon", "priority"])
|
|
1142
1162
|
], 2)) : A("", !0)
|
|
1143
1163
|
], 2));
|
|
1144
1164
|
}
|
|
1145
|
-
}),
|
|
1165
|
+
}), we = ["href", "target"], Qe = /* @__PURE__ */ p({
|
|
1146
1166
|
__name: "TideChipAction",
|
|
1147
1167
|
props: {
|
|
1148
1168
|
href: {},
|
|
1149
1169
|
isNewTab: { type: Boolean, default: !1 },
|
|
1150
1170
|
label: {}
|
|
1151
1171
|
},
|
|
1152
|
-
setup(
|
|
1153
|
-
const s =
|
|
1172
|
+
setup(a) {
|
|
1173
|
+
const s = a;
|
|
1154
1174
|
return (i, n) => (l(), E("a", {
|
|
1155
|
-
class:
|
|
1175
|
+
class: o([
|
|
1156
1176
|
"tide-chip-action",
|
|
1157
1177
|
t(e).AXIS2.CENTER,
|
|
1158
1178
|
t(e).GAP.HALF,
|
|
@@ -1173,19 +1193,19 @@ const ke = /* @__PURE__ */ U(Ye, [["__scopeId", "data-v-0710b4ab"]]), Xt = /* @_
|
|
|
1173
1193
|
icon: t(v).SEARCH
|
|
1174
1194
|
}, null, 8, ["icon"]),
|
|
1175
1195
|
c("span", null, N(s.label), 1)
|
|
1176
|
-
], 10,
|
|
1196
|
+
], 10, we));
|
|
1177
1197
|
}
|
|
1178
1198
|
});
|
|
1179
|
-
const
|
|
1199
|
+
const Vt = /* @__PURE__ */ U(Qe, [["__scopeId", "data-v-99f83e8d"]]), Ke = /* @__PURE__ */ p({
|
|
1180
1200
|
__name: "TideChipFilter",
|
|
1181
1201
|
props: {
|
|
1182
1202
|
isActive: { type: Boolean },
|
|
1183
1203
|
label: {}
|
|
1184
1204
|
},
|
|
1185
|
-
setup(
|
|
1186
|
-
const s =
|
|
1205
|
+
setup(a) {
|
|
1206
|
+
const s = a;
|
|
1187
1207
|
return (i, n) => (l(), E("button", {
|
|
1188
|
-
class:
|
|
1208
|
+
class: o([
|
|
1189
1209
|
"tide-chip-filter",
|
|
1190
1210
|
s.isActive ? [t(e).BG.SECONDARY, t(e).FONT.COLOR.SECONDARY] : [t(e).BG.SURFACE.VARIANT, t(e).FONT.COLOR.SURFACE.DEFAULT],
|
|
1191
1211
|
t(e).DISPLAY.FLEX,
|
|
@@ -1202,24 +1222,24 @@ const Mt = /* @__PURE__ */ U(xe, [["__scopeId", "data-v-99f83e8d"]]), we = /* @_
|
|
|
1202
1222
|
}, [
|
|
1203
1223
|
B(i.$slots, "default", {}, void 0, !0),
|
|
1204
1224
|
c("div", {
|
|
1205
|
-
class:
|
|
1225
|
+
class: o([t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF])
|
|
1206
1226
|
}, [
|
|
1207
1227
|
c("span", {
|
|
1208
|
-
class:
|
|
1228
|
+
class: o([s.isActive ? "" : "icon-spacing", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).WHITESPACE_WRAP.OFF])
|
|
1209
1229
|
}, N(s.label), 3)
|
|
1210
1230
|
], 2)
|
|
1211
1231
|
], 2));
|
|
1212
1232
|
}
|
|
1213
1233
|
});
|
|
1214
|
-
const
|
|
1234
|
+
const xt = /* @__PURE__ */ U(Ke, [["__scopeId", "data-v-c07faf14"]]), Ze = /* @__PURE__ */ p({
|
|
1215
1235
|
__name: "TideChipInput",
|
|
1216
1236
|
props: {
|
|
1217
1237
|
label: {}
|
|
1218
1238
|
},
|
|
1219
|
-
setup(
|
|
1220
|
-
const s =
|
|
1239
|
+
setup(a) {
|
|
1240
|
+
const s = a;
|
|
1221
1241
|
return (i, n) => (l(), E("button", {
|
|
1222
|
-
class:
|
|
1242
|
+
class: o([
|
|
1223
1243
|
"tide-chip-input",
|
|
1224
1244
|
t(e).BG.SURFACE.VARIANT,
|
|
1225
1245
|
t(e).FONT.COLOR.SURFACE,
|
|
@@ -1241,37 +1261,37 @@ const Yt = /* @__PURE__ */ U(we, [["__scopeId", "data-v-c07faf14"]]), $e = /* @_
|
|
|
1241
1261
|
], 2));
|
|
1242
1262
|
}
|
|
1243
1263
|
});
|
|
1244
|
-
const
|
|
1264
|
+
const $t = /* @__PURE__ */ U(Ze, [["__scopeId", "data-v-62b9f1c0"]]), ze = { class: "tide-columns" }, qe = { class: "tide-columns-column" }, Je = { class: "tide-columns-column" }, je = { class: "tide-columns-column" }, et = { class: "tide-columns-column" }, tt = /* @__PURE__ */ p({
|
|
1245
1265
|
__name: "TideColumns",
|
|
1246
1266
|
props: {
|
|
1247
1267
|
heading: { default: "" }
|
|
1248
1268
|
},
|
|
1249
|
-
setup(
|
|
1250
|
-
const s =
|
|
1251
|
-
return (i, n) => (l(), E("section",
|
|
1269
|
+
setup(a) {
|
|
1270
|
+
const s = a;
|
|
1271
|
+
return (i, n) => (l(), E("section", ze, [
|
|
1252
1272
|
c("h2", {
|
|
1253
|
-
class:
|
|
1273
|
+
class: o([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
|
|
1254
1274
|
}, N(s.heading), 3),
|
|
1255
1275
|
c("ul", {
|
|
1256
|
-
class:
|
|
1276
|
+
class: o([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
|
|
1257
1277
|
}, [
|
|
1258
|
-
c("li",
|
|
1278
|
+
c("li", qe, [
|
|
1259
1279
|
B(i.$slots, "section1", {}, void 0, !0)
|
|
1260
1280
|
]),
|
|
1261
|
-
c("li",
|
|
1281
|
+
c("li", Je, [
|
|
1262
1282
|
B(i.$slots, "section2", {}, void 0, !0)
|
|
1263
1283
|
]),
|
|
1264
|
-
c("li",
|
|
1284
|
+
c("li", je, [
|
|
1265
1285
|
B(i.$slots, "section3", {}, void 0, !0)
|
|
1266
1286
|
]),
|
|
1267
|
-
c("li",
|
|
1287
|
+
c("li", et, [
|
|
1268
1288
|
B(i.$slots, "section4", {}, void 0, !0)
|
|
1269
1289
|
])
|
|
1270
1290
|
], 2)
|
|
1271
1291
|
]));
|
|
1272
1292
|
}
|
|
1273
1293
|
});
|
|
1274
|
-
const
|
|
1294
|
+
const wt = /* @__PURE__ */ U(tt, [["__scopeId", "data-v-14ad0455"]]), st = ["alt", "loading", "src"], Qt = /* @__PURE__ */ p({
|
|
1275
1295
|
__name: "TideImage",
|
|
1276
1296
|
props: {
|
|
1277
1297
|
alt: { default: "" },
|
|
@@ -1280,21 +1300,21 @@ const Vt = /* @__PURE__ */ U(Je, [["__scopeId", "data-v-14ad0455"]]), je = ["alt
|
|
|
1280
1300
|
offset: { default: 0 },
|
|
1281
1301
|
src: { default: void 0 }
|
|
1282
1302
|
},
|
|
1283
|
-
setup(
|
|
1284
|
-
const i =
|
|
1303
|
+
setup(a, { expose: s }) {
|
|
1304
|
+
const i = a, n = u(), d = `${i.cdn}/image-coming-soon-512.png`, T = () => {
|
|
1285
1305
|
n.value.src = d;
|
|
1286
1306
|
};
|
|
1287
1307
|
return s(n.value), (I, r) => (l(), E("img", {
|
|
1288
1308
|
alt: I.alt,
|
|
1289
|
-
class:
|
|
1309
|
+
class: o(["tide-image", t(e).OBJECT.CENTER, t(e).OBJECT.COVER]),
|
|
1290
1310
|
loading: I.isLazy ? "lazy" : "eager",
|
|
1291
1311
|
ref_key: "tideImage",
|
|
1292
1312
|
ref: n,
|
|
1293
1313
|
src: I.src ?? d,
|
|
1294
1314
|
onError: T
|
|
1295
|
-
}, null, 42,
|
|
1315
|
+
}, null, 42, st));
|
|
1296
1316
|
}
|
|
1297
|
-
}),
|
|
1317
|
+
}), it = ["checked", "id"], at = ["for"], ot = /* @__PURE__ */ p({
|
|
1298
1318
|
__name: "TideInputRadio",
|
|
1299
1319
|
props: {
|
|
1300
1320
|
checked: { type: Boolean, default: !1 },
|
|
@@ -1304,8 +1324,8 @@ const Vt = /* @__PURE__ */ U(Je, [["__scopeId", "data-v-14ad0455"]]), je = ["alt
|
|
|
1304
1324
|
label: { default: void 0 },
|
|
1305
1325
|
name: {}
|
|
1306
1326
|
},
|
|
1307
|
-
setup(
|
|
1308
|
-
const s =
|
|
1327
|
+
setup(a) {
|
|
1328
|
+
const s = a, i = u(s.checked), n = F(() => {
|
|
1309
1329
|
var d;
|
|
1310
1330
|
return s.inputId ? s.inputId : `text-input-${((d = te()) == null ? void 0 : d.uid) || ""}`;
|
|
1311
1331
|
});
|
|
@@ -1315,18 +1335,18 @@ const Vt = /* @__PURE__ */ U(Je, [["__scopeId", "data-v-14ad0455"]]), je = ["alt
|
|
|
1315
1335
|
(d !== T || d !== i.value) && (i.value = d);
|
|
1316
1336
|
}
|
|
1317
1337
|
), (d, T) => (l(), E("div", {
|
|
1318
|
-
class:
|
|
1338
|
+
class: o(["tide-input-radio", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, s.disabled && "disabled"])
|
|
1319
1339
|
}, [
|
|
1320
1340
|
c("input", {
|
|
1321
1341
|
checked: i.value,
|
|
1322
|
-
class:
|
|
1342
|
+
class: o([t(e).DISPLAY.NONE]),
|
|
1323
1343
|
id: n.value,
|
|
1324
1344
|
name: "",
|
|
1325
1345
|
type: "radio",
|
|
1326
1346
|
value: ""
|
|
1327
|
-
}, null, 10,
|
|
1347
|
+
}, null, 10, it),
|
|
1328
1348
|
c("div", {
|
|
1329
|
-
class:
|
|
1349
|
+
class: o([
|
|
1330
1350
|
"tide-input-radio-custom",
|
|
1331
1351
|
t(e).POSITION.RELATIVE,
|
|
1332
1352
|
t(e).DISPLAY.FLEX,
|
|
@@ -1339,30 +1359,30 @@ const Vt = /* @__PURE__ */ U(Je, [["__scopeId", "data-v-14ad0455"]]), je = ["alt
|
|
|
1339
1359
|
])
|
|
1340
1360
|
}, [
|
|
1341
1361
|
c("div", {
|
|
1342
|
-
class:
|
|
1362
|
+
class: o(["tide-input-radio-check", t(e).BORDER.RADIUS.FULL, s.checked && t(e).BG.SECONDARY])
|
|
1343
1363
|
}, null, 2)
|
|
1344
1364
|
], 2),
|
|
1345
1365
|
c("label", {
|
|
1346
|
-
class:
|
|
1366
|
+
class: o(t(e).FONT.WEIGHT.FOUR_HUNDRED),
|
|
1347
1367
|
for: n.value
|
|
1348
|
-
}, N(s.label), 11,
|
|
1368
|
+
}, N(s.label), 11, at)
|
|
1349
1369
|
], 2));
|
|
1350
1370
|
}
|
|
1351
1371
|
});
|
|
1352
|
-
const
|
|
1372
|
+
const Kt = /* @__PURE__ */ U(ot, [["__scopeId", "data-v-cc2a4e5b"]]), le = "Please enter a valid value.", nt = {
|
|
1353
1373
|
message: "",
|
|
1354
1374
|
valid: !0
|
|
1355
|
-
}, K = (
|
|
1356
|
-
let i =
|
|
1357
|
-
return s.trim().match(
|
|
1375
|
+
}, K = (a) => (s) => {
|
|
1376
|
+
let i = nt;
|
|
1377
|
+
return s.trim().match(a) || (i = {
|
|
1358
1378
|
message: le,
|
|
1359
1379
|
valid: !1
|
|
1360
1380
|
}), i;
|
|
1361
|
-
}, de = (
|
|
1362
|
-
const d = n.length === 0 && !i, T =
|
|
1381
|
+
}, de = (a, s) => typeof a == "string" && a.length > 0 ? a : typeof s == "string" && s.length > 0 ? s : le, re = (a, s) => a !== !1 || s !== !1, lt = ({ maxlength: a, minlength: s, required: i, value: n }) => {
|
|
1382
|
+
const d = n.length === 0 && !i, T = a && n.length > a;
|
|
1363
1383
|
return !(!d && s && n.length < s) && !T;
|
|
1364
|
-
},
|
|
1365
|
-
error:
|
|
1384
|
+
}, Ae = ({
|
|
1385
|
+
error: a,
|
|
1366
1386
|
errorFromProps: s,
|
|
1367
1387
|
maxlength: i,
|
|
1368
1388
|
minlength: n,
|
|
@@ -1370,21 +1390,21 @@ const wt = /* @__PURE__ */ U(st, [["__scopeId", "data-v-cc2a4e5b"]]), le = "Plea
|
|
|
1370
1390
|
validators: T,
|
|
1371
1391
|
value: I
|
|
1372
1392
|
}) => {
|
|
1373
|
-
if (
|
|
1374
|
-
const r =
|
|
1375
|
-
r.valid || (
|
|
1393
|
+
if (a.value = s || !1, !a.value && T) {
|
|
1394
|
+
const r = rt(I.value, T);
|
|
1395
|
+
r.valid || (a.value = r.message);
|
|
1376
1396
|
}
|
|
1377
|
-
if (!
|
|
1378
|
-
const r =
|
|
1397
|
+
if (!a.value && (i || n)) {
|
|
1398
|
+
const r = dt({
|
|
1379
1399
|
maxlength: i,
|
|
1380
1400
|
minlength: n,
|
|
1381
1401
|
required: d,
|
|
1382
1402
|
value: I.value
|
|
1383
1403
|
});
|
|
1384
|
-
r.valid || (
|
|
1404
|
+
r.valid || (a.value = r.message);
|
|
1385
1405
|
}
|
|
1386
|
-
},
|
|
1387
|
-
maxlength:
|
|
1406
|
+
}, dt = ({
|
|
1407
|
+
maxlength: a,
|
|
1388
1408
|
minlength: s,
|
|
1389
1409
|
required: i = !1,
|
|
1390
1410
|
value: n
|
|
@@ -1393,16 +1413,16 @@ const wt = /* @__PURE__ */ U(st, [["__scopeId", "data-v-cc2a4e5b"]]), le = "Plea
|
|
|
1393
1413
|
message: "",
|
|
1394
1414
|
valid: !0
|
|
1395
1415
|
};
|
|
1396
|
-
return d.valid =
|
|
1397
|
-
maxlength:
|
|
1416
|
+
return d.valid = lt({
|
|
1417
|
+
maxlength: a,
|
|
1398
1418
|
minlength: s,
|
|
1399
1419
|
required: i,
|
|
1400
1420
|
value: n
|
|
1401
|
-
}), d.valid || (d.message = le,
|
|
1421
|
+
}), d.valid || (d.message = le, a && s ? d.message = `Please enter a value between ${s} and ${a} characters in length.` : a ? d.message = `Please enter a value no more than ${a} characters in length.` : s && (d.message = `Please enter a value no less than ${s} characters in length.`)), d;
|
|
1402
1422
|
};
|
|
1403
|
-
function
|
|
1423
|
+
function rt(a, s) {
|
|
1404
1424
|
for (const i of s) {
|
|
1405
|
-
const n = i(
|
|
1425
|
+
const n = i(a);
|
|
1406
1426
|
if (!n.valid)
|
|
1407
1427
|
return n;
|
|
1408
1428
|
}
|
|
@@ -1411,7 +1431,7 @@ function nt(o, s) {
|
|
|
1411
1431
|
valid: !0
|
|
1412
1432
|
};
|
|
1413
1433
|
}
|
|
1414
|
-
const
|
|
1434
|
+
const Et = ["for"], ct = ["disabled", "name", "required", "id"], Tt = ["selected", "value"], It = /* @__PURE__ */ p({
|
|
1415
1435
|
__name: "TideInputSelect",
|
|
1416
1436
|
props: {
|
|
1417
1437
|
inputId: { default: void 0 },
|
|
@@ -1424,8 +1444,8 @@ const lt = ["for"], dt = ["disabled", "name", "required", "id"], rt = ["selected
|
|
|
1424
1444
|
required: { type: Boolean, default: !1 },
|
|
1425
1445
|
value: { default: "" }
|
|
1426
1446
|
},
|
|
1427
|
-
setup(
|
|
1428
|
-
const i =
|
|
1447
|
+
setup(a, { expose: s }) {
|
|
1448
|
+
const i = a, n = u(i.error), d = u(!1), T = u(null), I = u(i.required), r = u(i.value), L = F(() => de(i.error, n.value)), m = F(() => i.required ? `${i.label} *` : i.label), R = F(() => i.required && !r.value || re(n.value, i.error)), G = F(() => d.value || !h.value), h = F(() => r.value === ""), M = F(() => {
|
|
1429
1449
|
var O;
|
|
1430
1450
|
return i.inputId ? i.inputId : `text-input-${((O = te()) == null ? void 0 : O.uid) || ""}`;
|
|
1431
1451
|
}), Y = () => {
|
|
@@ -1443,7 +1463,7 @@ const lt = ["for"], dt = ["disabled", "name", "required", "id"], rt = ["selected
|
|
|
1443
1463
|
(O !== g || O !== r.value) && (r.value = O);
|
|
1444
1464
|
}
|
|
1445
1465
|
), s({ error: n, value: r }), (O, g) => (l(), E("div", {
|
|
1446
|
-
class:
|
|
1466
|
+
class: o([
|
|
1447
1467
|
"tide-input-select",
|
|
1448
1468
|
t(e).DISPLAY.FLEX,
|
|
1449
1469
|
t(e).FLEX.DIRECTION.COLUMN,
|
|
@@ -1453,7 +1473,7 @@ const lt = ["for"], dt = ["disabled", "name", "required", "id"], rt = ["selected
|
|
|
1453
1473
|
])
|
|
1454
1474
|
}, [
|
|
1455
1475
|
c("div", {
|
|
1456
|
-
class:
|
|
1476
|
+
class: o([
|
|
1457
1477
|
"tide-input-border",
|
|
1458
1478
|
t(e).POSITION.RELATIVE,
|
|
1459
1479
|
t(e).DISPLAY.FLEX,
|
|
@@ -1466,11 +1486,11 @@ const lt = ["for"], dt = ["disabled", "name", "required", "id"], rt = ["selected
|
|
|
1466
1486
|
onClick: Y
|
|
1467
1487
|
}, [
|
|
1468
1488
|
c("div", {
|
|
1469
|
-
class:
|
|
1489
|
+
class: o([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL])
|
|
1470
1490
|
}, [
|
|
1471
1491
|
O.label ? (l(), E("label", {
|
|
1472
1492
|
key: 0,
|
|
1473
|
-
class:
|
|
1493
|
+
class: o([
|
|
1474
1494
|
G.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
|
|
1475
1495
|
t(e).POSITION.ABSOLUTE,
|
|
1476
1496
|
t(e).POSITIONING.LEFT,
|
|
@@ -1480,9 +1500,9 @@ const lt = ["for"], dt = ["disabled", "name", "required", "id"], rt = ["selected
|
|
|
1480
1500
|
t(e).FONT.WEIGHT.FIVE_HUNDRED
|
|
1481
1501
|
]),
|
|
1482
1502
|
for: M.value
|
|
1483
|
-
}, N(m.value), 11,
|
|
1503
|
+
}, N(m.value), 11, Et)) : A("", !0),
|
|
1484
1504
|
ne(c("select", {
|
|
1485
|
-
class:
|
|
1505
|
+
class: o([t(e).PADDING.BOTTOM.HALF, t(e).PADDING.X.ONE, t(e).WIDTH.FULL, O.disabled && t(e).CURSOR.NOT_ALLOWED]),
|
|
1486
1506
|
disabled: O.disabled,
|
|
1487
1507
|
name: O.name,
|
|
1488
1508
|
ref_key: "input",
|
|
@@ -1493,40 +1513,40 @@ const lt = ["for"], dt = ["disabled", "name", "required", "id"], rt = ["selected
|
|
|
1493
1513
|
id: M.value,
|
|
1494
1514
|
"onUpdate:modelValue": g[0] || (g[0] = (C) => r.value = C)
|
|
1495
1515
|
}, [
|
|
1496
|
-
(l(!0), E(
|
|
1497
|
-
class:
|
|
1516
|
+
(l(!0), E(w, null, j(O.options, (C) => (l(), E("option", {
|
|
1517
|
+
class: o([t(e).WIDTH.FULL, t(e).BG.SURFACE.DEFAULT]),
|
|
1498
1518
|
key: C.value,
|
|
1499
1519
|
selected: r.value === C.value ? !0 : void 0,
|
|
1500
1520
|
value: C.value
|
|
1501
|
-
}, N(C.label), 11,
|
|
1502
|
-
], 42,
|
|
1503
|
-
[
|
|
1521
|
+
}, N(C.label), 11, Tt))), 128))
|
|
1522
|
+
], 42, ct), [
|
|
1523
|
+
[ve, r.value]
|
|
1504
1524
|
])
|
|
1505
1525
|
], 2),
|
|
1506
1526
|
P(S, {
|
|
1507
|
-
class:
|
|
1527
|
+
class: o([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT, t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.OFF]),
|
|
1508
1528
|
icon: t(v).EXPAND_MORE,
|
|
1509
1529
|
size: t(y).SMALL
|
|
1510
1530
|
}, null, 8, ["class", "icon", "size"])
|
|
1511
1531
|
], 2),
|
|
1512
1532
|
i.supportingText || R.value ? (l(), E("div", {
|
|
1513
1533
|
key: 0,
|
|
1514
|
-
class:
|
|
1534
|
+
class: o([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
|
|
1515
1535
|
}, [
|
|
1516
1536
|
R.value ? (l(), D(S, {
|
|
1517
1537
|
key: 0,
|
|
1518
|
-
class:
|
|
1538
|
+
class: o([]),
|
|
1519
1539
|
icon: t(v).ERROR,
|
|
1520
1540
|
size: t(y).SMALL
|
|
1521
1541
|
}, null, 8, ["icon", "size"])) : A("", !0),
|
|
1522
1542
|
c("div", {
|
|
1523
|
-
class:
|
|
1543
|
+
class: o([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
|
|
1524
1544
|
}, N(R.value ? L.value : i.supportingText), 3)
|
|
1525
1545
|
], 2)) : A("", !0)
|
|
1526
1546
|
], 2));
|
|
1527
1547
|
}
|
|
1528
1548
|
});
|
|
1529
|
-
const
|
|
1549
|
+
const Zt = /* @__PURE__ */ U(It, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
1530
1550
|
DATE: "date",
|
|
1531
1551
|
DATETIME_LOCAL: "datetime-local",
|
|
1532
1552
|
EMAIL: "email",
|
|
@@ -1539,7 +1559,7 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1539
1559
|
TIME: "time",
|
|
1540
1560
|
URL: "url",
|
|
1541
1561
|
WEEK: "week"
|
|
1542
|
-
},
|
|
1562
|
+
}, Ot = ["for"], Rt = ["autocomplete", "data-track", "disabled", "maxlength", "minlength", "name", "required", "type", "id"], ut = /* @__PURE__ */ p({
|
|
1543
1563
|
__name: "TideInputText",
|
|
1544
1564
|
props: {
|
|
1545
1565
|
autocomplete: { type: Boolean, default: !1 },
|
|
@@ -1562,8 +1582,8 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1562
1582
|
validators: { default: void 0 },
|
|
1563
1583
|
value: { default: "" }
|
|
1564
1584
|
},
|
|
1565
|
-
setup(
|
|
1566
|
-
const i =
|
|
1585
|
+
setup(a, { expose: s }) {
|
|
1586
|
+
const i = a, n = u(i.error), d = u(!1), T = u(null), I = u(!1), r = u(i.value), L = F(() => de(i.error, n.value)), m = F(() => i.required && i.label ? `${i.label} *` : i.label), R = F(() => i.hasClear && r.value), G = F(() => i.required && !r.value || re(n.value, i.error)), h = F(() => d.value || !M.value), M = F(() => r.value === ""), Y = F(
|
|
1567
1587
|
() => i.type === Z.PASSWORD && I.value === !0 ? Z.TEXT : i.type
|
|
1568
1588
|
), k = F(() => {
|
|
1569
1589
|
var f;
|
|
@@ -1582,7 +1602,7 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1582
1602
|
r.value = X ? i.transformValue(X) : "";
|
|
1583
1603
|
}
|
|
1584
1604
|
}, V = () => {
|
|
1585
|
-
|
|
1605
|
+
Ae({
|
|
1586
1606
|
error: n,
|
|
1587
1607
|
errorFromProps: i.error,
|
|
1588
1608
|
maxlength: i.maxlength,
|
|
@@ -1600,7 +1620,7 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1600
1620
|
(f !== X || f !== r.value) && (r.value = f);
|
|
1601
1621
|
}
|
|
1602
1622
|
), s({ error: n, updateValue: se, value: r }), (f, X) => (l(), E("div", {
|
|
1603
|
-
class:
|
|
1623
|
+
class: o([
|
|
1604
1624
|
"tide-input-text",
|
|
1605
1625
|
t(e).DISPLAY.FLEX,
|
|
1606
1626
|
t(e).FLEX.DIRECTION.COLUMN,
|
|
@@ -1610,7 +1630,7 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1610
1630
|
])
|
|
1611
1631
|
}, [
|
|
1612
1632
|
c("div", {
|
|
1613
|
-
class:
|
|
1633
|
+
class: o([
|
|
1614
1634
|
"tide-input-border",
|
|
1615
1635
|
t(e).DISPLAY.FLEX,
|
|
1616
1636
|
t(e).AXIS2.CENTER,
|
|
@@ -1628,14 +1648,14 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1628
1648
|
size: t(y).SMALL
|
|
1629
1649
|
}, null, 8, ["icon", "size"])) : A("", !0),
|
|
1630
1650
|
c("div", {
|
|
1631
|
-
class:
|
|
1651
|
+
class: o([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
|
|
1632
1652
|
}, [
|
|
1633
1653
|
i.prefix ? (l(), E("div", {
|
|
1634
1654
|
key: 0,
|
|
1635
|
-
class:
|
|
1655
|
+
class: o(["tide-input-text-prefix", !G.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
|
|
1636
1656
|
}, N(i.prefix), 3)) : A("", !0),
|
|
1637
1657
|
c("div", {
|
|
1638
|
-
class:
|
|
1658
|
+
class: o([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL]),
|
|
1639
1659
|
onClick: X[1] || (X[1] = Re((ie) => {
|
|
1640
1660
|
var Ee;
|
|
1641
1661
|
return (Ee = T.value) == null ? void 0 : Ee.focus();
|
|
@@ -1643,17 +1663,17 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1643
1663
|
}, [
|
|
1644
1664
|
f.label ? (l(), E("label", {
|
|
1645
1665
|
key: 0,
|
|
1646
|
-
class:
|
|
1666
|
+
class: o([
|
|
1647
1667
|
h.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
|
|
1648
1668
|
!G.value && t(e).FONT.COLOR.SURFACE.VARIANT,
|
|
1649
1669
|
t(e).FONT.WEIGHT.FIVE_HUNDRED,
|
|
1650
1670
|
t(e).CURSOR.TEXT
|
|
1651
1671
|
]),
|
|
1652
1672
|
for: k.value
|
|
1653
|
-
}, N(m.value), 11,
|
|
1673
|
+
}, N(m.value), 11, Ot)) : A("", !0),
|
|
1654
1674
|
ne(c("input", {
|
|
1655
1675
|
autocomplete: f.autocomplete ? "on" : "off",
|
|
1656
|
-
class:
|
|
1676
|
+
class: o([t(e).WIDTH.FULL, f.disabled && t(e).CURSOR.NOT_ALLOWED]),
|
|
1657
1677
|
"data-track": i.dataTrack,
|
|
1658
1678
|
disabled: i.disabled,
|
|
1659
1679
|
maxlength: i.maxlength,
|
|
@@ -1669,25 +1689,25 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1669
1689
|
onInput: C,
|
|
1670
1690
|
id: k.value,
|
|
1671
1691
|
"onUpdate:modelValue": X[0] || (X[0] = (ie) => r.value = ie)
|
|
1672
|
-
}, null, 42,
|
|
1673
|
-
[
|
|
1692
|
+
}, null, 42, Rt), [
|
|
1693
|
+
[_e, r.value]
|
|
1674
1694
|
])
|
|
1675
1695
|
], 2),
|
|
1676
1696
|
i.suffix ? (l(), E("div", {
|
|
1677
1697
|
key: 1,
|
|
1678
|
-
class:
|
|
1698
|
+
class: o(["tide-input-text-suffix", !G.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
|
|
1679
1699
|
}, N(i.suffix), 3)) : A("", !0)
|
|
1680
1700
|
], 2),
|
|
1681
1701
|
R.value && i.type !== t(Z).PASSWORD ? (l(), D(S, {
|
|
1682
1702
|
key: 1,
|
|
1683
|
-
class:
|
|
1703
|
+
class: o([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
|
|
1684
1704
|
icon: t(v).CLOSE,
|
|
1685
1705
|
size: t(y).SMALL,
|
|
1686
1706
|
onClick: H
|
|
1687
1707
|
}, null, 8, ["class", "icon", "size"])) : A("", !0),
|
|
1688
1708
|
i.type === t(Z).PASSWORD ? (l(), D(S, {
|
|
1689
1709
|
key: 2,
|
|
1690
|
-
class:
|
|
1710
|
+
class: o([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
|
|
1691
1711
|
icon: t(v).VISIBILITY,
|
|
1692
1712
|
size: t(y).SMALL,
|
|
1693
1713
|
onClick: X[2] || (X[2] = (ie) => I.value = !I.value)
|
|
@@ -1695,22 +1715,22 @@ const $t = /* @__PURE__ */ U(Et, [["__scopeId", "data-v-3cee2c5e"]]), Z = {
|
|
|
1695
1715
|
], 2),
|
|
1696
1716
|
i.supportingText || G.value ? (l(), E("div", {
|
|
1697
1717
|
key: 0,
|
|
1698
|
-
class:
|
|
1718
|
+
class: o([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
|
|
1699
1719
|
}, [
|
|
1700
1720
|
G.value ? (l(), D(S, {
|
|
1701
1721
|
key: 0,
|
|
1702
|
-
class:
|
|
1722
|
+
class: o([]),
|
|
1703
1723
|
icon: t(v).ERROR,
|
|
1704
1724
|
size: t(y).SMALL
|
|
1705
1725
|
}, null, 8, ["icon", "size"])) : A("", !0),
|
|
1706
1726
|
c("div", {
|
|
1707
|
-
class:
|
|
1727
|
+
class: o([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
|
|
1708
1728
|
}, N(G.value ? L.value : i.supportingText), 3)
|
|
1709
1729
|
], 2)) : A("", !0)
|
|
1710
1730
|
], 2));
|
|
1711
1731
|
}
|
|
1712
1732
|
});
|
|
1713
|
-
const
|
|
1733
|
+
const zt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-9f350711"]]), At = ["for"], Nt = ["data-track", "maxlength", "minlength", "name", "required", "rows", "id"], Lt = /* @__PURE__ */ p({
|
|
1714
1734
|
__name: "TideInputTextarea",
|
|
1715
1735
|
props: {
|
|
1716
1736
|
dataTrack: { default: "" },
|
|
@@ -1725,15 +1745,15 @@ const Qt = /* @__PURE__ */ U(It, [["__scopeId", "data-v-9f350711"]]), Ot = ["for
|
|
|
1725
1745
|
supportingText: { default: void 0 },
|
|
1726
1746
|
value: { default: "" }
|
|
1727
1747
|
},
|
|
1728
|
-
setup(
|
|
1729
|
-
const i =
|
|
1748
|
+
setup(a, { expose: s }) {
|
|
1749
|
+
const i = a, n = u(i.error), d = u(!1), T = u(null), I = u(i.value), r = F(() => de(i.error, n.value)), L = F(() => i.required ? `${i.label} *` : i.label), m = F(() => i.required && !I.value || re(n.value, i.error)), R = F(() => d.value || !G.value), G = F(() => I.value === ""), h = F(() => {
|
|
1730
1750
|
var H;
|
|
1731
1751
|
return i.inputId ? i.inputId : `text-input-${((H = te()) == null ? void 0 : H.uid) || ""}`;
|
|
1732
1752
|
}), M = () => {
|
|
1733
1753
|
d.value = !0;
|
|
1734
1754
|
}, Y = () => {
|
|
1735
1755
|
d.value = !1;
|
|
1736
|
-
}, k = () =>
|
|
1756
|
+
}, k = () => Ae({
|
|
1737
1757
|
error: n,
|
|
1738
1758
|
errorFromProps: i.error,
|
|
1739
1759
|
maxlength: i.maxlength,
|
|
@@ -1746,10 +1766,10 @@ const Qt = /* @__PURE__ */ U(It, [["__scopeId", "data-v-9f350711"]]), Ot = ["for
|
|
|
1746
1766
|
(H !== O || H !== I.value) && (I.value = H);
|
|
1747
1767
|
}
|
|
1748
1768
|
), s({ error: n, value: I }), (H, O) => (l(), E("div", {
|
|
1749
|
-
class:
|
|
1769
|
+
class: o(["tide-input-textarea", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, m.value && "error"])
|
|
1750
1770
|
}, [
|
|
1751
1771
|
c("div", {
|
|
1752
|
-
class:
|
|
1772
|
+
class: o([
|
|
1753
1773
|
"tide-input-textarea-field",
|
|
1754
1774
|
t(e).GAP.HALF,
|
|
1755
1775
|
t(e).POSITION.RELATIVE,
|
|
@@ -1761,7 +1781,7 @@ const Qt = /* @__PURE__ */ U(It, [["__scopeId", "data-v-9f350711"]]), Ot = ["for
|
|
|
1761
1781
|
}, [
|
|
1762
1782
|
H.label ? (l(), E("label", {
|
|
1763
1783
|
key: 0,
|
|
1764
|
-
class:
|
|
1784
|
+
class: o([
|
|
1765
1785
|
R.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
|
|
1766
1786
|
!m.value && t(e).FONT.COLOR.SURFACE.VARIANT,
|
|
1767
1787
|
t(e).FONT.WEIGHT.FIVE_HUNDRED,
|
|
@@ -1769,9 +1789,9 @@ const Qt = /* @__PURE__ */ U(It, [["__scopeId", "data-v-9f350711"]]), Ot = ["for
|
|
|
1769
1789
|
]),
|
|
1770
1790
|
for: h.value,
|
|
1771
1791
|
ref: "label"
|
|
1772
|
-
}, N(L.value), 11,
|
|
1792
|
+
}, N(L.value), 11, At)) : A("", !0),
|
|
1773
1793
|
ne(c("textarea", {
|
|
1774
|
-
class:
|
|
1794
|
+
class: o([t(e).WIDTH.FULL]),
|
|
1775
1795
|
"data-track": i.dataTrack,
|
|
1776
1796
|
maxlength: i.maxlength,
|
|
1777
1797
|
minlength: i.minlength,
|
|
@@ -1785,13 +1805,13 @@ const Qt = /* @__PURE__ */ U(It, [["__scopeId", "data-v-9f350711"]]), Ot = ["for
|
|
|
1785
1805
|
onFocusout: Y,
|
|
1786
1806
|
id: h.value,
|
|
1787
1807
|
"onUpdate:modelValue": O[0] || (O[0] = (g) => I.value = g)
|
|
1788
|
-
}, null, 42,
|
|
1789
|
-
[
|
|
1808
|
+
}, null, 42, Nt), [
|
|
1809
|
+
[De, I.value]
|
|
1790
1810
|
])
|
|
1791
1811
|
], 2),
|
|
1792
1812
|
i.supportingText || m.value ? (l(), E("div", {
|
|
1793
1813
|
key: 0,
|
|
1794
|
-
class:
|
|
1814
|
+
class: o([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
|
|
1795
1815
|
}, [
|
|
1796
1816
|
m.value ? (l(), D(S, {
|
|
1797
1817
|
key: 0,
|
|
@@ -1799,13 +1819,13 @@ const Qt = /* @__PURE__ */ U(It, [["__scopeId", "data-v-9f350711"]]), Ot = ["for
|
|
|
1799
1819
|
size: t(y).SMALL
|
|
1800
1820
|
}, null, 8, ["icon", "size"])) : A("", !0),
|
|
1801
1821
|
c("div", {
|
|
1802
|
-
class:
|
|
1822
|
+
class: o([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
|
|
1803
1823
|
}, N(m.value ? r.value : i.supportingText), 3)
|
|
1804
1824
|
], 2)) : A("", !0)
|
|
1805
1825
|
], 2));
|
|
1806
1826
|
}
|
|
1807
1827
|
});
|
|
1808
|
-
const
|
|
1828
|
+
const qt = /* @__PURE__ */ U(Lt, [["__scopeId", "data-v-aff67730"]]), Jt = /* @__PURE__ */ p({
|
|
1809
1829
|
__name: "TideLink",
|
|
1810
1830
|
props: {
|
|
1811
1831
|
element: { default: _.LINK },
|
|
@@ -1815,10 +1835,10 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1815
1835
|
isNewTab: { type: Boolean, default: !1 },
|
|
1816
1836
|
label: { default: void 0 }
|
|
1817
1837
|
},
|
|
1818
|
-
setup(
|
|
1819
|
-
const s =
|
|
1838
|
+
setup(a) {
|
|
1839
|
+
const s = a, i = F(() => s.iconLeading || s.iconTrailing);
|
|
1820
1840
|
return (n, d) => (l(), D(J(s.element === t(_).LINK ? t(_).LINK : t(_).BUTTON), {
|
|
1821
|
-
class:
|
|
1841
|
+
class: o([
|
|
1822
1842
|
s.element === t(_).LINK ? "tide-button-as-link" : "tide-link",
|
|
1823
1843
|
i.value ? [t(e).DISPLAY.INLINE_FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF] : [t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON]
|
|
1824
1844
|
]),
|
|
@@ -1832,8 +1852,8 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1832
1852
|
}, null, 8, ["icon"])) : A("", !0),
|
|
1833
1853
|
i.value ? (l(), E("div", {
|
|
1834
1854
|
key: 1,
|
|
1835
|
-
class:
|
|
1836
|
-
}, N(s.label), 3)) : (l(), E(
|
|
1855
|
+
class: o([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON])
|
|
1856
|
+
}, N(s.label), 3)) : (l(), E(w, { key: 2 }, [
|
|
1837
1857
|
Oe(N(s.label), 1)
|
|
1838
1858
|
], 64)),
|
|
1839
1859
|
s.iconTrailing ? (l(), D(S, {
|
|
@@ -1844,7 +1864,7 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1844
1864
|
_: 1
|
|
1845
1865
|
}, 8, ["class", "href", "target"]));
|
|
1846
1866
|
}
|
|
1847
|
-
}),
|
|
1867
|
+
}), pt = ["onClick"], Ft = /* @__PURE__ */ p({
|
|
1848
1868
|
__name: "TideModal",
|
|
1849
1869
|
props: {
|
|
1850
1870
|
isOpen: { type: Boolean },
|
|
@@ -1852,8 +1872,8 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1852
1872
|
width: {}
|
|
1853
1873
|
},
|
|
1854
1874
|
emits: ["close"],
|
|
1855
|
-
setup(
|
|
1856
|
-
const i =
|
|
1875
|
+
setup(a, { emit: s }) {
|
|
1876
|
+
const i = a, n = u(i.isOpen), d = u(null), T = (R) => {
|
|
1857
1877
|
n.value = !1, I(), s("close", R);
|
|
1858
1878
|
}, I = () => {
|
|
1859
1879
|
n.value ? (d.value = window.scrollY, document.body.style.overflow = "hidden", d.value && window.scrollTo(0, d.value), L()) : (document.body.style.overflow = "", m());
|
|
@@ -1871,9 +1891,9 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1871
1891
|
(R) => {
|
|
1872
1892
|
n.value = R, I();
|
|
1873
1893
|
}
|
|
1874
|
-
), (R, G) => (l(), D(
|
|
1894
|
+
), (R, G) => (l(), D(Se, { to: "body" }, [
|
|
1875
1895
|
c("div", {
|
|
1876
|
-
class:
|
|
1896
|
+
class: o([
|
|
1877
1897
|
"tide-modal-wrapper",
|
|
1878
1898
|
t(e).POSITION.ABSOLUTE,
|
|
1879
1899
|
t(e).DISPLAY.FLEX,
|
|
@@ -1888,12 +1908,12 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1888
1908
|
])
|
|
1889
1909
|
}, [
|
|
1890
1910
|
c("div", {
|
|
1891
|
-
class:
|
|
1911
|
+
class: o(["tide-modal-bg", t(e).POSITION.ABSOLUTE, t(e).WIDTH.FULL, t(e).HEIGHT.FULL]),
|
|
1892
1912
|
style: ae({ "--tide-modal-width": i.width }),
|
|
1893
1913
|
onClick: Re(T, ["self"])
|
|
1894
|
-
}, null, 14,
|
|
1914
|
+
}, null, 14, pt),
|
|
1895
1915
|
c("div", {
|
|
1896
|
-
class:
|
|
1916
|
+
class: o([
|
|
1897
1917
|
"tide-modal",
|
|
1898
1918
|
t(e).BG.SURFACE.DEFAULT,
|
|
1899
1919
|
t(e).FONT.COLOR.SURFACE.DEFAULT,
|
|
@@ -1906,7 +1926,7 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1906
1926
|
])
|
|
1907
1927
|
}, [
|
|
1908
1928
|
c("header", {
|
|
1909
|
-
class:
|
|
1929
|
+
class: o([
|
|
1910
1930
|
"tide-modal-header",
|
|
1911
1931
|
t(e).POSITION.RELATIVE,
|
|
1912
1932
|
t(e).DISPLAY.FLEX,
|
|
@@ -1919,10 +1939,10 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1919
1939
|
}, [
|
|
1920
1940
|
R.title ? (l(), E("div", {
|
|
1921
1941
|
key: 0,
|
|
1922
|
-
class:
|
|
1942
|
+
class: o([t(e).FLEX.GROW.ON, t(e).FONT.SIZE.TWENTY, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
|
|
1923
1943
|
}, N(R.title), 3)) : A("", !0),
|
|
1924
1944
|
c("button", {
|
|
1925
|
-
class:
|
|
1945
|
+
class: o([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT, t(e).MARGIN.RIGHT.TWO]),
|
|
1926
1946
|
onClick: T,
|
|
1927
1947
|
title: "Close"
|
|
1928
1948
|
}, [
|
|
@@ -1932,13 +1952,13 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1932
1952
|
], 2)
|
|
1933
1953
|
], 2),
|
|
1934
1954
|
c("div", {
|
|
1935
|
-
class:
|
|
1955
|
+
class: o(["tide-modal-content", t(e).PADDING.FULL.TWO, t(e).OVERFLOW.Y.AUTO])
|
|
1936
1956
|
}, [
|
|
1937
1957
|
B(R.$slots, "default", {}, void 0, !0)
|
|
1938
1958
|
], 2),
|
|
1939
1959
|
R.$slots.footer ? (l(), E("footer", {
|
|
1940
1960
|
key: 0,
|
|
1941
|
-
class:
|
|
1961
|
+
class: o([
|
|
1942
1962
|
"tide-bg-surface",
|
|
1943
1963
|
t(e).POSITION.STICKY,
|
|
1944
1964
|
t(e).POSITIONING.LEFT,
|
|
@@ -1958,34 +1978,34 @@ const Kt = /* @__PURE__ */ U(ut, [["__scopeId", "data-v-aff67730"]]), Zt = /* @_
|
|
|
1958
1978
|
]));
|
|
1959
1979
|
}
|
|
1960
1980
|
});
|
|
1961
|
-
const
|
|
1981
|
+
const jt = /* @__PURE__ */ U(Ft, [["__scopeId", "data-v-5e665389"]]), es = /* @__PURE__ */ p({
|
|
1962
1982
|
__name: "TidePagination",
|
|
1963
1983
|
props: {
|
|
1964
1984
|
pageCurrent: { default: 1 },
|
|
1965
1985
|
pageTotal: { default: 1 }
|
|
1966
1986
|
},
|
|
1967
1987
|
emits: ["change"],
|
|
1968
|
-
setup(
|
|
1969
|
-
const i =
|
|
1988
|
+
setup(a, { emit: s }) {
|
|
1989
|
+
const i = a, n = u(i.pageCurrent), d = F(() => new Array(i.pageTotal).fill("").map((I, r) => r + 1)), T = (I, r) => {
|
|
1970
1990
|
n.value = r, s("change", I, r);
|
|
1971
1991
|
};
|
|
1972
1992
|
return (I, r) => (l(), E("section", {
|
|
1973
|
-
class:
|
|
1993
|
+
class: o(["tide-pagination", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
|
|
1974
1994
|
}, [
|
|
1975
1995
|
P(q, {
|
|
1976
1996
|
disabled: n.value === 1,
|
|
1977
1997
|
icon: t(v).CHEVRON_LEFT,
|
|
1978
|
-
priority: t(
|
|
1998
|
+
priority: t($).QUATERNARY,
|
|
1979
1999
|
onClick: r[0] || (r[0] = (L) => T(L, n.value - 1))
|
|
1980
2000
|
}, null, 8, ["disabled", "icon", "priority"]),
|
|
1981
2001
|
c("ul", {
|
|
1982
|
-
class:
|
|
2002
|
+
class: o([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
|
|
1983
2003
|
}, [
|
|
1984
|
-
(l(!0), E(
|
|
1985
|
-
P(
|
|
2004
|
+
(l(!0), E(w, null, j(d.value, (L) => (l(), E("li", { key: L }, [
|
|
2005
|
+
P($e, {
|
|
1986
2006
|
disabled: n.value === L,
|
|
1987
2007
|
label: L,
|
|
1988
|
-
priority: t(
|
|
2008
|
+
priority: t($).QUATERNARY,
|
|
1989
2009
|
onClick: (m) => T(m, L)
|
|
1990
2010
|
}, null, 8, ["disabled", "label", "priority", "onClick"])
|
|
1991
2011
|
]))), 128))
|
|
@@ -1993,53 +2013,53 @@ const zt = /* @__PURE__ */ U(Nt, [["__scopeId", "data-v-5e665389"]]), qt = /* @_
|
|
|
1993
2013
|
P(q, {
|
|
1994
2014
|
disabled: n.value === d.value[d.value.length - 1],
|
|
1995
2015
|
icon: t(v).CHEVRON_RIGHT,
|
|
1996
|
-
priority: t(
|
|
2016
|
+
priority: t($).QUATERNARY,
|
|
1997
2017
|
onClick: r[1] || (r[1] = (L) => T(L, n.value + 1))
|
|
1998
2018
|
}, null, 8, ["disabled", "icon", "priority"])
|
|
1999
2019
|
], 2));
|
|
2000
2020
|
}
|
|
2001
|
-
}),
|
|
2021
|
+
}), vt = { class: "tide-seo-links" }, _t = ["href", "target"], Dt = /* @__PURE__ */ p({
|
|
2002
2022
|
__name: "TideSeoLinks",
|
|
2003
2023
|
props: {
|
|
2004
2024
|
heading: { default: "" },
|
|
2005
2025
|
links: {}
|
|
2006
2026
|
},
|
|
2007
|
-
setup(
|
|
2008
|
-
const s =
|
|
2009
|
-
return (i, n) => (l(), E("section",
|
|
2027
|
+
setup(a) {
|
|
2028
|
+
const s = a;
|
|
2029
|
+
return (i, n) => (l(), E("section", vt, [
|
|
2010
2030
|
c("h2", {
|
|
2011
|
-
class:
|
|
2031
|
+
class: o([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
|
|
2012
2032
|
}, N(s.heading), 3),
|
|
2013
2033
|
c("ul", {
|
|
2014
|
-
class:
|
|
2034
|
+
class: o([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
|
|
2015
2035
|
}, [
|
|
2016
|
-
(l(!0), E(
|
|
2017
|
-
class:
|
|
2036
|
+
(l(!0), E(w, null, j(s.links, (d) => (l(), E("li", {
|
|
2037
|
+
class: o(["tide-seo-link", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, t(e).FONT.SIZE.FOURTEEN]),
|
|
2018
2038
|
key: d.label
|
|
2019
2039
|
}, [
|
|
2020
2040
|
c("a", {
|
|
2021
|
-
class:
|
|
2041
|
+
class: o([t(e).UNDERLINE.OFF]),
|
|
2022
2042
|
href: d.url,
|
|
2023
2043
|
target: d.isNewTab ? t(W).BLANK : t(W).SELF
|
|
2024
|
-
}, N(d.label), 11,
|
|
2044
|
+
}, N(d.label), 11, _t)
|
|
2025
2045
|
], 2))), 128))
|
|
2026
2046
|
], 2)
|
|
2027
2047
|
]));
|
|
2028
2048
|
}
|
|
2029
2049
|
});
|
|
2030
|
-
const
|
|
2050
|
+
const ts = /* @__PURE__ */ U(Dt, [["__scopeId", "data-v-d62373f1"]]), St = ["data-track", "onClick"], gt = /* @__PURE__ */ p({
|
|
2031
2051
|
__name: "TideTabs",
|
|
2032
2052
|
props: {
|
|
2033
2053
|
activeTabInitial: { default: 0 },
|
|
2034
2054
|
tabs: {}
|
|
2035
2055
|
},
|
|
2036
2056
|
emits: ["change"],
|
|
2037
|
-
setup(
|
|
2038
|
-
const i =
|
|
2057
|
+
setup(a, { emit: s }) {
|
|
2058
|
+
const i = a, n = u(i.activeTabInitial), d = (T, I) => {
|
|
2039
2059
|
n.value = I, s("change", T, I);
|
|
2040
2060
|
};
|
|
2041
2061
|
return (T, I) => (l(), E("div", {
|
|
2042
|
-
class:
|
|
2062
|
+
class: o([
|
|
2043
2063
|
"tide-tabs",
|
|
2044
2064
|
t(e).BG.SURFACE.VARIANT,
|
|
2045
2065
|
t(e).DISPLAY.FLEX,
|
|
@@ -2050,8 +2070,8 @@ const Jt = /* @__PURE__ */ U(Ft, [["__scopeId", "data-v-d62373f1"]]), vt = ["dat
|
|
|
2050
2070
|
t(e).WIDTH.FULL
|
|
2051
2071
|
])
|
|
2052
2072
|
}, [
|
|
2053
|
-
(l(!0), E(
|
|
2054
|
-
class:
|
|
2073
|
+
(l(!0), E(w, null, j(i.tabs, (r, L) => (l(), E("button", {
|
|
2074
|
+
class: o([
|
|
2055
2075
|
"tide-tabs-tab",
|
|
2056
2076
|
L === n.value ? [t(e).BG.SURFACE.DEFAULT, t(e).FONT.COLOR.SURFACE.DEFAULT, t(e).SHADOW.BOTTOM] : ["inactive", t(e).FONT.COLOR.SURFACE.VARIANT],
|
|
2057
2077
|
t(e).FLEX.GROW.ON,
|
|
@@ -2066,17 +2086,17 @@ const Jt = /* @__PURE__ */ U(Ft, [["__scopeId", "data-v-d62373f1"]]), vt = ["dat
|
|
|
2066
2086
|
onClick: (m) => d(m, L)
|
|
2067
2087
|
}, [
|
|
2068
2088
|
c("span", {
|
|
2069
|
-
class:
|
|
2089
|
+
class: o([t(e).FONT.WEIGHT.SIX_HUNDRED])
|
|
2070
2090
|
}, N(r.label), 3),
|
|
2071
2091
|
r.count && r.count > 0 ? (l(), E("span", {
|
|
2072
2092
|
key: 0,
|
|
2073
|
-
class:
|
|
2093
|
+
class: o([t(e).FONT.WEIGHT.SIX_HUNDRED])
|
|
2074
2094
|
}, " (" + N(r.count) + ") ", 3)) : A("", !0)
|
|
2075
|
-
], 10,
|
|
2095
|
+
], 10, St))), 128))
|
|
2076
2096
|
], 2));
|
|
2077
2097
|
}
|
|
2078
2098
|
});
|
|
2079
|
-
const
|
|
2099
|
+
const ss = /* @__PURE__ */ U(gt, [["__scopeId", "data-v-894fc638"]]), ft = ["disabled"], mt = /* @__PURE__ */ p({
|
|
2080
2100
|
__name: "TideToggle",
|
|
2081
2101
|
props: {
|
|
2082
2102
|
disabled: {
|
|
@@ -2090,12 +2110,12 @@ const jt = /* @__PURE__ */ U(_t, [["__scopeId", "data-v-894fc638"]]), Dt = ["dis
|
|
|
2090
2110
|
}
|
|
2091
2111
|
},
|
|
2092
2112
|
emits: ["change"],
|
|
2093
|
-
setup(
|
|
2094
|
-
const i =
|
|
2113
|
+
setup(a, { emit: s }) {
|
|
2114
|
+
const i = a, n = u(i.isActive), d = (T) => {
|
|
2095
2115
|
i.disabled || (n.value = !n.value, s("change", T, n.value));
|
|
2096
2116
|
};
|
|
2097
2117
|
return (T, I) => (l(), E("button", {
|
|
2098
|
-
class:
|
|
2118
|
+
class: o([
|
|
2099
2119
|
"tide-toggle",
|
|
2100
2120
|
i.isActive ? "active" : "",
|
|
2101
2121
|
t(e).DISPLAY.FLEX,
|
|
@@ -2111,7 +2131,7 @@ const jt = /* @__PURE__ */ U(_t, [["__scopeId", "data-v-894fc638"]]), Dt = ["dis
|
|
|
2111
2131
|
"aria-label": "Toggle"
|
|
2112
2132
|
}, [
|
|
2113
2133
|
c("div", {
|
|
2114
|
-
class:
|
|
2134
|
+
class: o([
|
|
2115
2135
|
"tide-toggle-indicator",
|
|
2116
2136
|
t(e).POSITION.RELATIVE,
|
|
2117
2137
|
t(e).DISPLAY.FLEX,
|
|
@@ -2126,10 +2146,29 @@ const jt = /* @__PURE__ */ U(_t, [["__scopeId", "data-v-894fc638"]]), Dt = ["dis
|
|
|
2126
2146
|
size: t(y).LARGE
|
|
2127
2147
|
}, null, 8, ["icon", "size"])
|
|
2128
2148
|
], 2)
|
|
2129
|
-
], 10,
|
|
2149
|
+
], 10, ft));
|
|
2130
2150
|
}
|
|
2131
2151
|
});
|
|
2132
|
-
const
|
|
2152
|
+
const is = /* @__PURE__ */ U(mt, [["__scopeId", "data-v-59d06131"]]), as = {
|
|
2153
|
+
NUMBER: ue,
|
|
2154
|
+
PHONE: me,
|
|
2155
|
+
PRICE: Ue
|
|
2156
|
+
}, z = {
|
|
2157
|
+
alpha: /^[a-zA-Z]+$/g,
|
|
2158
|
+
alphaNumberOrEmpty: /^$|^[a-z0-9]+$/i,
|
|
2159
|
+
alphaSpace: /^[a-zA-Z ]+$/g,
|
|
2160
|
+
email: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
|
2161
|
+
numberFormatted: /^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,
|
|
2162
|
+
phone: /^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,
|
|
2163
|
+
price: /(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/
|
|
2164
|
+
}, os = {
|
|
2165
|
+
IMAGE: {
|
|
2166
|
+
FLOORPLAN: "floorplan",
|
|
2167
|
+
IMAGE: "image"
|
|
2168
|
+
},
|
|
2169
|
+
VIDEO: "video",
|
|
2170
|
+
VR: "vr"
|
|
2171
|
+
}, ns = {
|
|
2133
2172
|
AERO: "aero",
|
|
2134
2173
|
ATV: "atv",
|
|
2135
2174
|
BOATMART: "boatmart",
|
|
@@ -2139,15 +2178,7 @@ const es = /* @__PURE__ */ U(St, [["__scopeId", "data-v-59d06131"]]), ts = {
|
|
|
2139
2178
|
RV: "rv",
|
|
2140
2179
|
SNOW: "snow",
|
|
2141
2180
|
TRUCK: "truck"
|
|
2142
|
-
},
|
|
2143
|
-
alpha: /^[a-zA-Z]+$/g,
|
|
2144
|
-
alphaNumberOrEmpty: /^$|^[a-z0-9]+$/i,
|
|
2145
|
-
alphaSpace: /^[a-zA-Z ]+$/g,
|
|
2146
|
-
email: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
|
2147
|
-
numberFormatted: /^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,
|
|
2148
|
-
phone: /^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,
|
|
2149
|
-
price: /(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/
|
|
2150
|
-
}, ss = {
|
|
2181
|
+
}, ls = {
|
|
2151
2182
|
ALPHA_NUMBER_EMPTY: K(z.alphaNumberOrEmpty),
|
|
2152
2183
|
ALPHA_SPACE: K(z.alphaSpace),
|
|
2153
2184
|
EMAIL: K(z.email),
|
|
@@ -2156,48 +2187,53 @@ const es = /* @__PURE__ */ U(St, [["__scopeId", "data-v-59d06131"]]), ts = {
|
|
|
2156
2187
|
};
|
|
2157
2188
|
export {
|
|
2158
2189
|
b as ALERT,
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2190
|
+
yt as BADGE,
|
|
2191
|
+
Bt as BADGE_PREMIUM,
|
|
2192
|
+
We as BADGE_TRUSTED,
|
|
2193
|
+
Ct as BREAKPOINT,
|
|
2163
2194
|
e as CSS,
|
|
2164
2195
|
_ as ELEMENT,
|
|
2165
2196
|
x as ELEMENT_TEXT_AS_ICON,
|
|
2197
|
+
as as FORMAT,
|
|
2198
|
+
z as FORMAT_REGEX,
|
|
2166
2199
|
v as ICON,
|
|
2167
|
-
|
|
2168
|
-
|
|
2200
|
+
os as MEDIA_SLIDE_TYPES,
|
|
2201
|
+
ce as ORIENTATION,
|
|
2202
|
+
$ as PRIORITY,
|
|
2203
|
+
ns as REALM,
|
|
2169
2204
|
y as SIZE,
|
|
2170
2205
|
W as TARGET,
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
bt as
|
|
2177
|
-
|
|
2178
|
-
|
|
2206
|
+
Z as TEXT_INPUT_TYPE,
|
|
2207
|
+
Pt as TideAccordionItem,
|
|
2208
|
+
Gt as TideAlert,
|
|
2209
|
+
ht as TideBackgroundImage,
|
|
2210
|
+
Ht as TideBadge,
|
|
2211
|
+
bt as TideBadgePremium,
|
|
2212
|
+
Xt as TideBadgeTrustedPartner,
|
|
2213
|
+
Wt as TideBreadCrumbs,
|
|
2214
|
+
Mt as TideButton,
|
|
2179
2215
|
q as TideButtonIcon,
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2216
|
+
$e as TideButtonPagination,
|
|
2217
|
+
Yt as TideCard,
|
|
2218
|
+
kt as TideCarousel,
|
|
2219
|
+
Vt as TideChipAction,
|
|
2220
|
+
xt as TideChipFilter,
|
|
2221
|
+
$t as TideChipInput,
|
|
2222
|
+
wt as TideColumns,
|
|
2187
2223
|
Te as TideDivider,
|
|
2188
2224
|
S as TideIcon,
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2225
|
+
Qt as TideImage,
|
|
2226
|
+
he as TideIndicator,
|
|
2227
|
+
Kt as TideInputRadio,
|
|
2228
|
+
Zt as TideInputSelect,
|
|
2229
|
+
zt as TideInputText,
|
|
2230
|
+
qt as TideInputTextarea,
|
|
2231
|
+
Jt as TideLink,
|
|
2232
|
+
jt as TideModal,
|
|
2233
|
+
es as TidePagination,
|
|
2234
|
+
ts as TideSeoLinks,
|
|
2235
|
+
ss as TideTabs,
|
|
2236
|
+
is as TideToggle,
|
|
2237
|
+
ls as VALIDATOR
|
|
2202
2238
|
};
|
|
2203
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmVzbS5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9PcmllbnRhdGlvbi50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvLnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTGluay52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVRhYnMudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVRvZ2dsZS52dWUiLCIuLi9zcmMvdHlwZXMvUmVhbG0udHMiLCIuLi9zcmMvdHlwZXMvRm9ybWF0dGVkLnRzIiwiLi4vc3JjL3R5cGVzL1ZhbGlkYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIE1JRERMRTogJ3RpZGUtYWxpZ24tbWlkZGxlJyxcbiAgICB9LFxuICB9LFxuICBBWElTMToge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczEtYXJvdW5kJyxcbiAgICBCRVRXRUVOOiAndGlkZS1heGlzMS1iZXR3ZWVuJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMxLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMS1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMS1zdGFydCcsXG4gIH0sXG4gIEFYSVMyOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMi1hcm91bmQnLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczItY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMyLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMyLXN0YXJ0JyxcbiAgfSxcbiAgQkc6IHtcbiAgICBCTFVSOiAndGlkZS1iZy1ibHVyJyxcbiAgICBFUlJPUjogJ3RpZGUtYmctZXJyb3InLFxuICAgIElORk86ICd0aWRlLWJnLWluZm8nLFxuICAgIFBSSU1BUlk6ICd0aWRlLWJnLXByaW1hcnknLFxuICAgIFNFQ09OREFSWTogJ3RpZGUtYmctc2Vjb25kYXJ5JyxcbiAgICBTVUNDRVNTOiAndGlkZS1iZy1zdWNjZXNzJyxcbiAgICBTVVJGQUNFOiB7XG4gICAgICBBQ0NFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50JyxcbiAgICAgIEFDQ0VOVF9WQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLWFjY2VudC12YXJpYW50JyxcbiAgICAgIEJSQU5EOiAndGlkZS1iZy1zdXJmYWNlLWJyYW5kJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgRVJST1I6ICd0aWRlLWJnLXN1cmZhY2UtZXJyb3InLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJnLXN1cmZhY2UtZmxvYXRpbmcnLFxuICAgICAgR1JBRElFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtZ3JhZGllbnQnLFxuICAgICAgSU5GTzogJ3RpZGUtYmctc3VyZmFjZS1pbmZvJyxcbiAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgV0FSTklORzogJ3RpZGUtYmctc3VyZmFjZS13YXJuaW5nJyxcbiAgICB9LFxuICAgIFdBUk5JTkc6ICd0aWRlLWJnLXdhcm5pbmcnLFxuICB9LFxuICBCT1JERVI6IHtcbiAgICBDT0xPUjoge1xuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItdG9wLTInLFxuICAgIH0sXG4gIH0sXG4gIEJPWF9TSVpJTkc6IHtcbiAgICBCT1JERVJfQk9YOiAndGlkZS1ib3gtYm9yZGVyJyxcbiAgICBDT05URU5UX0JPWDogJ3RpZGUtYm94LWNvbnRlbnQnLFxuICB9LFxuICBCUkVBS19XT1JEOiB7XG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1jb250ZW50cycsXG4gICAgRkxFWDogJ3RpZGUtZGlzcGxheS1mbGV4JyxcbiAgICBHUklEOiAndGlkZS1kaXNwbGF5LWdyaWQnLFxuICAgIElOSVRJQUw6ICdpbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBQUklNQVJZOiAndGlkZS1mb250LW9uLXByaW1hcnknLFxuICAgICAgU0VDT05EQVJZOiAndGlkZS1mb250LW9uLXNlY29uZGFyeScsXG4gICAgICBTVVJGQUNFOiB7XG4gICAgICAgIEJSQU5EOiAndGlkZS1mb250LW9uLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgICBERUZBVUxUOiAndGlkZS1mb250LW9uLXN1cmZhY2UnLFxuICAgICAgICBJTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtaW52ZXJzZScsXG4gICAgICAgIFZBUklBTlQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50JyxcbiAgICAgICAgVkFSSUFOVF9JTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudC1pbnZlcnNlJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFFVQVJURVI6ICd0aWRlLWdhcC0xLzQnLFxuICAgIEhBTEY6ICd0aWRlLWdhcC0xLzInLFxuICAgIE9ORTogJ3RpZGUtZ2FwLTEnLFxuICAgIFRXTzogJ3RpZGUtZ2FwLTInLFxuICAgIEZPVVI6ICd0aWRlLWdhcC00JyxcbiAgfSxcbiAgR1JJRDoge1xuICAgIEVORDoge1xuICAgICAgT05FOiAndGlkZS1lbmQtMScsXG4gICAgICBUV086ICd0aWRlLWVuZC0yJyxcbiAgICAgIFRIUkVFOiAndGlkZS1lbmQtMycsXG4gICAgICBGT1VSOiAndGlkZS1lbmQtNCcsXG4gICAgICBGSVZFOiAndGlkZS1lbmQtNScsXG4gICAgICBTSVg6ICd0aWRlLWVuZC02JyxcbiAgICAgIFNFVkVOOiAndGlkZS1lbmQtNycsXG4gICAgICBFSUdIVDogJ3RpZGUtZW5kLTgnLFxuICAgICAgTklORTogJ3RpZGUtZW5kLTknLFxuICAgICAgVEVOOiAndGlkZS1lbmQtMTAnLFxuICAgICAgRUxFVkVOOiAndGlkZS1lbmQtMTEnLFxuICAgICAgVFdFTFZFOiAndGlkZS1lbmQtMTInLFxuICAgICAgVEhJUlRFRU46ICd0aWRlLWVuZC0xMycsXG4gICAgfSxcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFNUQVJUOiB7XG4gICAgICBaRVJPOiAndGlkZS1zdGFydC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtc3RhcnQtMScsXG4gICAgICBUV086ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgVEhSRUU6ICd0aWRlLXN0YXJ0LTMnLFxuICAgICAgRk9VUjogJ3RpZGUtc3RhcnQtNCcsXG4gICAgICBGSVZFOiAndGlkZS1zdGFydC01JyxcbiAgICAgIFNJWDogJ3RpZGUtc3RhcnQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtc3RhcnQtNycsXG4gICAgICBFSUdIVDogJ3RpZGUtc3RhcnQtOCcsXG4gICAgICBOSU5FOiAndGlkZS1zdGFydC05JyxcbiAgICAgIFRFTjogJ3RpZGUtc3RhcnQtMTAnLFxuICAgICAgRUxFVkVOOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBUV0VMVkU6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICB9LFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gICAgRlVMTDogJ3RpZGUtaGVpZ2h0LWZ1bGwnLFxuICB9LFxuICBJU09MQVRJT046IHtcbiAgICBJU09MQVRFOiAndGlkZS1pc29sYXRlJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi10b3AtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVElDS1k6ICd0aWRlLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gIH0sXG4gIFNOQVA6IHtcbiAgICBPTjogJ3RpZGUtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc25hcC1zdGFydCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIFpFUk86ICd0aWRlLXdpZHRoLTAnLFxuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gIH0sXG4gIFpfSU5ERVg6IHtcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDc3NVdGlsaXR5ID0gKHR5cGVvZiBDU1MpW2tleW9mIHR5cGVvZiBDU1NdO1xuXG5leHBvcnQgY29uc3QgY3NzU29ydE9yZGVyID0gW1xuICBDU1MuRElTUExBWS5CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuQ09OVEVOVFMsXG4gIENTUy5ESVNQTEFZLkZMRVgsXG4gIENTUy5ESVNQTEFZLkdSSUQsXG4gIENTUy5ESVNQTEFZLk5PTkUsXG4gIENTUy5ESVNQTEFZLklOSVRJQUwsXG4gIENTUy5ESVNQTEFZLklOTElORSxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgQ1NTLkFYSVMxLkFST1VORCxcbiAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gIENTUy5BWElTMS5DRU5URVIsXG4gIENTUy5BWElTMS5FTkQsXG4gIENTUy5BWElTMS5TVEFSVCxcbiAgQ1NTLkFYSVMyLkFST1VORCxcbiAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgQ1NTLkFYSVMyLkVORCxcbiAgQ1NTLkFYSVMyLlNUQVJULFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OX1JFVkVSU0UsXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1dfUkVWRVJTRSxcbiAgQ1NTLkdBUC5PTkUsXG4gIENTUy5HQVAuSEFMRixcbiAgQ1NTLkdBUC5RVUFSVEVSLFxuICBDU1MuR0FQLlRXTyxcbiAgQ1NTLkdBUC5GT1VSLFxuICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICBDU1MuRkxFWC5HUk9XLk9OLFxuICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICBDU1MuRkxFWC5XUkFQLFxuICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gIENTUy5QT1NJVElPTi5GSVhFRCxcbiAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gIENTUy5QT1NJVElPTklORy5MRUZULFxuICBDU1MuQk9YX1NJWklORy5CT1JERVJfQk9YLFxuICBDU1MuQk9YX1NJWklORy5DT05URU5UX0JPWCxcbiAgQ1NTLk1BUkdJTi5GVUxMLk9ORSxcbiAgQ1NTLk1BUkdJTi5GVUxMLkhBTEYsXG4gIENTUy5NQVJHSU4uRlVMTC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkZVTEwuVFdPLFxuICBDU1MuTUFSR0lOLkZVTEwuRk9VUixcbiAgQ1NTLk1BUkdJTi5ZLk9ORSxcbiAgQ1NTLk1BUkdJTi5ZLkhBTEYsXG4gIENTUy5NQVJHSU4uWS5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlkuVFdPLFxuICBDU1MuTUFSR0lOLlkuRk9VUixcbiAgQ1NTLk1BUkdJTi5UT1AuT05FLFxuICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICBDU1MuTUFSR0lOLlRPUC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlRPUC5UV08sXG4gIENTUy5NQVJHSU4uVE9QLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5PTkUsXG4gIENTUy5NQVJHSU4uWC5IQUxGLFxuICBDU1MuTUFSR0lOLlguUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5YLlRXTyxcbiAgQ1NTLk1BUkdJTi5YLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5BVVRPLFxuICBDU1MuTUFSR0lOLlJJR0hULk9ORSxcbiAgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGLFxuICBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVIsXG4gIENTUy5NQVJHSU4uUklHSFQuVFdPLFxuICBDU1MuTUFSR0lOLlJJR0hULkZPVVIsXG4gIENTUy5NQVJHSU4uUklHSFQuQVVUTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uT05FLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5IQUxGLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5UV08sXG4gIENTUy5NQVJHSU4uQk9UVE9NLkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gIENTUy5NQVJHSU4uTEVGVC5IQUxGLFxuICBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5MRUZULlRXTyxcbiAgQ1NTLk1BUkdJTi5MRUZULkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5BVVRPLFxuICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICBDU1MuQk9SREVSLlRPUC5PTkUsXG4gIENTUy5CT1JERVIuVE9QLlRXTyxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsXG4gIENTUy5CT1JERVIuUklHSFQuVFdPLFxuICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gIENTUy5CT1JERVIuQk9UVE9NLlRXTyxcbiAgQ1NTLkJPUkRFUi5MRUZULk9ORSxcbiAgQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLFxuICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkZVTEwuVFdPLFxuICBDU1MuUEFERElORy5GVUxMLkZPVVIsXG4gIENTUy5QQURESU5HLlkuT05FLFxuICBDU1MuUEFERElORy5ZLkhBTEYsXG4gIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWS5UV08sXG4gIENTUy5QQURESU5HLlkuRk9VUixcbiAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gIENTUy5QQURESU5HLlRPUC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5UT1AuVFdPLFxuICBDU1MuUEFERElORy5UT1AuRk9VUixcbiAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gIENTUy5QQURESU5HLlguSEFMRixcbiAgQ1NTLlBBRERJTkcuWC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5YLlRXTyxcbiAgQ1NTLlBBRERJTkcuWC5GT1VSLFxuICBDU1MuUEFERElORy5SSUdIVC5PTkUsXG4gIENTUy5QQURESU5HLlJJR0hULkhBTEYsXG4gIENTUy5QQURESU5HLlJJR0hULlFVQVJURVIsXG4gIENTUy5QQURESU5HLlJJR0hULlRXTyxcbiAgQ1NTLlBBRERJTkcuUklHSFQuRk9VUixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gIENTUy5QQURESU5HLkJPVFRPTS5RVUFSVEVSLFxuICBDU1MuUEFERElORy5CT1RUT00uVFdPLFxuICBDU1MuUEFERElORy5CT1RUT00uRk9VUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gIENTUy5QQURESU5HLkxFRlQuSEFMRixcbiAgQ1NTLlBBRERJTkcuTEVGVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5MRUZULlRXTyxcbiAgQ1NTLlBBRERJTkcuTEVGVC5GT1VSLFxuICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gIENTUy5XSURUSC5aRVJPLFxuICBDU1MuV0lEVEguRlVMTCxcbiAgQ1NTLkhFSUdIVC5aRVJPLFxuICBDU1MuSEVJR0hULkZVTEwsXG4gIENTUy5BTElHTi5ZLk1JRERMRSxcbiAgQ1NTLkJSRUFLX1dPUkQsXG4gIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgQ1NTLkNVUlNPUi5URVhULFxuICBDU1MuRk9OVC5TSVpFLlRXRUxWRSxcbiAgQ1NTLkZPTlQuU0laRS5GT1VSVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5TSVhURUVOLFxuICBDU1MuRk9OVC5TSVpFLlRXRU5UWSxcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFlfRk9VUixcbiAgQ1NTLkZPTlQuU0laRS5USElSVFlfVFdPLFxuICBDU1MuRk9OVC5XRUlHSFQuRk9VUl9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRUQsXG4gIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVELFxuICBDU1MuTElTVF9CVUxMRVRTLk9GRixcbiAgQ1NTLk9CSkVDVC5DRU5URVIsXG4gIENTUy5PQkpFQ1QuQ09OVEFJTixcbiAgQ1NTLk9CSkVDVC5DT1ZFUixcbiAgQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gIENTUy5TQ1JPTExCQVIuT0ZGLFxuICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgQ1NTLlNIQURPVy5UT1AsXG4gIENTUy5TTkFQLk9OLFxuICBDU1MuU05BUF9BTElHTi5TVEFSVCxcbiAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICBDU1MuQUxJR04uWC5SSUdIVCxcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLkxPV0VSLFxuICBDU1MuVEVYVF9UUkFOU0ZPUk0uTk9ORSxcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLlVQUEVSLFxuICBDU1MuVU5ERVJMSU5FLkhPVkVSLFxuICBDU1MuVU5ERVJMSU5FLk9GRixcbiAgQ1NTLlVOREVSTElORS5PTixcbiAgQ1NTLlZJU0lCSUxJVFkuT04sXG4gIENTUy5WSVNJQklMSVRZLk9GRixcbiAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gIENTUy5PVkVSRkxPVy5YWS5BVVRPLFxuICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5BVVRPLFxuICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlkuSElEREVOLFxuICBDU1MuWl9JTkRFWC5PTkUsXG5dIGFzIGNvbnN0O1xuIiwiZXhwb3J0IGNvbnN0IE9SSUVOVEFUSU9OID0ge1xuICBIT1JJWk9OVEFMOiAnaG9yaXpvbnRhbCcsXG4gIFZFUlRJQ0FMOiAndmVydGljYWwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT3JpZW50YXRpb24gPSAodHlwZW9mIE9SSUVOVEFUSU9OKVtrZXlvZiB0eXBlb2YgT1JJRU5UQVRJT05dO1xuIiwiZXhwb3J0IGNvbnN0IFNJWkUgPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemUgPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgZGVmaW5lQXN5bmNDb21wb25lbnQsIG1hcmtSYXcsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBmb3JtYXRQYXNjYWxDYXNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGljb246IEljb247XG4gICAgc2l6ZT86IFNpemU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBzaXplOiBTSVpFLlNNQUxMLFxuICB9KTtcblxuICBjb25zdCBpbm5lclNWRyA9IHJlZjxDb21wb25lbnQ+KCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaWNvbixcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHByb3BzLmljb24gYXMgdW5rbm93biBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBuYW1lID0gZm9ybWF0UGFzY2FsQ2FzZShpZCk7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkZWZpbmVBc3luY0NvbXBvbmVudCgoKSA9PiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvSWNvbiR7bmFtZX0uc3ZnYCkpO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uLnNtYWxsIHN2ZyB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFERDogJ2FkZCcsXG4gIEFJX0RFU0NSSVBUSU9OOiAnYWktZGVzY3JpcHRpb24nLFxuICBBTElHTl9TUEFDRTogJ2FsaWduLXNwYWNlJyxcbiAgQVBQTEVfUEFZOiAnYXBwbGUtcGF5JyxcbiAgQVJST1dfQkFDSzogJ2Fycm93LWJhY2snLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFXQVJEX1NUQVI6ICdhd2FyZC1zdGFyJyxcbiAgQk9PS01BUks6ICdib29rbWFyaycsXG4gIENBTEVOREFSX01PTlRIOiAnY2FsZW5kYXItbW9udGgnLFxuICBDQUxMOiAnY2FsbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRVJST1I6ICdlcnJvcicsXG4gIEVYUEFORF9DT05URU5UOiAnZXhwYW5kLWNvbnRlbnQnLFxuICBFWFBBTkRfTEVTUzogJ2V4cGFuZC1sZXNzJyxcbiAgRVhQQU5EX01PUkU6ICdleHBhbmQtbW9yZScsXG4gIEZBQ0VCT09LOiAnZmFjZWJvb2snLFxuICBGQVZPUklURTogJ2Zhdm9yaXRlJyxcbiAgRkFWT1JJVEVfRklMTEVEOiAnZmF2b3JpdGUtZmlsbGVkJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR09PR0xFOiAnZ29vZ2xlJyxcbiAgR09PR0xFX1BBWTogJ2dvb2dsZS1wYXknLFxuICBHUklEOiAnZ3JpZCcsXG4gIEhFSUdIVDogJ2hlaWdodCcsXG4gIEhFTFA6ICdoZWxwJyxcbiAgSU5GTzogJ2luZm8nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTElOS0VEX0lOOiAnbGlua2VkIGluJyxcbiAgTE9DQUxfU0hJUFBJTkc6ICdsb2NhbC1zaGlwcGluZycsXG4gIExPQ0s6ICdsb2NrJyxcbiAgTUFJTDogJ21haWwnLFxuICBNRU5VOiAnbWVudScsXG4gIE1PUkVfSE9SSVo6ICdtb3JlLWhvcml6JyxcbiAgTk9USUZJQ0FUSU9OUzogJ25vdGlmaWNhdGlvbnMnLFxuICBPUEVOX0lOX05FVzogJ29wZW4taW4tbmV3JyxcbiAgUEFMRVRURTogJ3BhbGV0dGUnLFxuICBQQVlQQUw6ICdwYXlwYWwnLFxuICBQRVJTT046ICdwZXJzb24nLFxuICBQSE9UT19DQU1FUkE6ICdwaG90by1jYW1lcmEnLFxuICBQSU5URVJFU1Q6ICdwaW50ZXJlc3QnLFxuICBQTEFZX0FSUk9XOiAncGxheS1hcnJvdycsXG4gIFJFTU9WRTogJ3JlbW92ZScsXG4gIFJPVU5ERURfQ09STkVSUzogJ3JvdW5kZWQtY29ybmVycycsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBTRUFUSU5HOiAnc2VhdGluZycsXG4gIFNFTEw6ICdzZWxsJyxcbiAgU0hBUkU6ICdzaGFyZScsXG4gIFNIT1BQSU5HX0NBUlQ6ICdzaG9wcGluZy1jYXJ0JyxcbiAgU01TOiAnc21zJyxcbiAgU1RBUjogJ3N0YXInLFxuICBTV0FQX1ZFUlQ6ICdzd2FwLXZlcnQnLFxuICBUSFJFRV9EX1JPVEFUSU9OOiAndGhyZWUtZC1yb3RhdGlvbicsXG4gIFRST1BIWTogJ3Ryb3BoeScsXG4gIFRVTkU6ICd0dW5lJyxcbiAgVFdJVFRFUjogJ3R3aXR0ZXInLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXRUlHSFQ6ICd3ZWlnaHQnLFxuICBXSURUSDogJ3dpZHRoJyxcbiAgWU9VVFVCRTogJ3lvdXR1YmUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgSWNvbiA9ICh0eXBlb2YgSUNPTilba2V5b2YgdHlwZW9mIElDT05dO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUluZGljYXRvciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUluZGljYXRvci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICAgIGhhc0JvdHRvbURpdmlkZXI6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGhhc1RvcERpdmlkZXI6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzQWN0aXZlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc0V4cGFuZGVkSW5pdGlhbDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaXNPcHRpb25hbDoge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGRlZmF1bHQ6ICcnLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgaXNFeHBhbmRlZCA9IHJlZihwcm9wcy5pc0V4cGFuZGVkSW5pdGlhbCk7XG5cbiAgbGV0IGFjY29yZGlvbkJvZHkgPSByZWYoKTtcblxuICBjb25zdCB0b2dnbGVJc0V4cGFuZGVkID0gKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhY2NvcmRpb25Cb2R5LnZhbHVlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaXNFeHBhbmRlZC52YWx1ZSA9ICFpc0V4cGFuZGVkLnZhbHVlO1xuXG4gICAgZWxlbWVudC5zdHlsZS5ncmlkVGVtcGxhdGVSb3dzID0gaXNFeHBhbmRlZC52YWx1ZSA/ICcxZnInIDogJzBmcic7XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gYWNjb3JkaW9uQm9keS52YWx1ZSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGVsZW1lbnQuc3R5bGUuZ3JpZFRlbXBsYXRlUm93cyA9IGlzRXhwYW5kZWQudmFsdWUgPyAnMWZyJyA6ICcwZnInO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJ0aWRlLWFjY29yZGlvbi1pdGVtXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taGVhZCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuUEFERElORy5ZLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgQGNsaWNrPVwidG9nZ2xlSXNFeHBhbmRlZFwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRF1cIj5cbiAgICAgICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmlzT3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKG9wdGlvbmFsKVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPFRpZGVJbmRpY2F0b3Igdi1pZj1cInByb3BzLmlzQWN0aXZlXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb24gOmljb249XCJpc0V4cGFuZGVkID8gSUNPTi5FWFBBTkRfTEVTUyA6IElDT04uRVhQQU5EX01PUkVcIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1ib2R5JywgQ1NTLkRJU1BMQVkuR1JJRF1cIlxuICAgICAgcmVmPVwiYWNjb3JkaW9uQm9keVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOXVwiPlxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5XRUlHSFQuRk9VUl9IVU5EUkVELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwicHJvcHMuaGFzQm90dG9tRGl2aWRlclwiIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkge1xuICAgIHRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtcm93cyB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEVMRU1FTlQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1RFWFRfQVNfSUNPTiA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgRElWOiAnZGl2JyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9ICh0eXBlb2YgRUxFTUVOVClba2V5b2YgdHlwZW9mIEVMRU1FTlRdO1xuZXhwb3J0IHR5cGUgRWxlbWVudFRleHRBc0ljb24gPSAodHlwZW9mIEVMRU1FTlRfVEVYVF9BU19JQ09OKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT05dO1xuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgUFJJT1JJVFkgPSB7XG4gIFBSSU1BUlk6ICdwcmltYXJ5JyxcbiAgU0VDT05EQVJZOiAnc2Vjb25kYXJ5JyxcbiAgVEVSVElBUlk6ICd0ZXJ0aWFyeScsXG4gIFFVQVRFUk5BUlk6ICdxdWF0ZXJuYXJ5JyxcbiAgRkxPQVRJTkc6ICdmbG9hdGluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQcmlvcml0eSA9ICh0eXBlb2YgUFJJT1JJVFkpW2tleW9mIHR5cGVvZiBQUklPUklUWV07XG4iLCJleHBvcnQgY29uc3QgVEFSR0VUID0ge1xuICBCTEFOSzogJ19ibGFuaycsXG4gIFNFTEY6IHVuZGVmaW5lZCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRhcmdldCA9ICh0eXBlb2YgVEFSR0VUKVtrZXlvZiB0eXBlb2YgVEFSR0VUXTtcbiIsImV4cG9ydCBjb25zdCBBTEVSVCA9IHtcbiAgRVJST1I6ICdlcnJvcicsXG4gIElORk86ICdpbmZvJyxcbiAgU1VDQ0VTUzogJ3N1Y2Nlc3MnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBbGVydCA9ICh0eXBlb2YgQUxFUlQpW2tleW9mIHR5cGVvZiBBTEVSVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBBbGVydCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBpc1RvYXN0PzogYm9vbGVhbjtcbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNUb2FzdDogZmFsc2UsXG4gICAgdHlwZTogQUxFUlQuSU5GTyxcbiAgfSk7XG5cbiAgY29uc3QgaWNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgaWNvbjogSWNvbiA9IElDT04uVklFV19JTl9BUjtcblxuICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgICAgY2FzZSBBTEVSVC5FUlJPUjpcbiAgICAgICAgaWNvbiA9IElDT04uRVJST1I7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgQUxFUlQuSU5GTzpcbiAgICAgICAgaWNvbiA9IElDT04uSU5GTztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFMRVJULlNVQ0NFU1M6XG4gICAgICAgIGljb24gPSBJQ09OLkNIRUNLO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuV0FSTklORzpcbiAgICAgICAgaWNvbiA9IElDT04uV0FSTklORztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb247XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLnR5cGUsXG4gICAgICAndGlkZS1hbGVydCcsXG4gICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLlNVUkZBQ0UuRVJST1IsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5TVVJGQUNFLklORk8sXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5TVVJGQUNFLlNVQ0NFU1MsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5TVVJGQUNFLldBUk5JTkcsXG4gICAgICBwcm9wcy5pc1RvYXN0ID8gQ1NTLlNIQURPVy5CT1RUT00gOiAnJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWljb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSXVwiPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBwcm9wcy50eXBlLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiAmJiBDU1MuQkcuRVJST1IsXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuSU5GTyxcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5TVUNDRVNTLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcgJiYgQ1NTLkJHLldBUk5JTkcsXG4gICAgICAgIF1cIlxuICAgICAgICA6aWNvbj1cImljb25cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWhlYWRpbmcnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSXVwiPlxuICAgICAgPGgyIDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlNJWFRFRU4sIENTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgICA8L2gyPlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtY2xvc2UnLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBhbGVydFwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWJvZHknLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCI+XG4gICAgICA8c2xvdCAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmciBhdXRvO1xuICAgIGdyaWQtY29sdW1uLWdhcDogMC41cmVtO1xuICAgIG1heC13aWR0aDogNDByZW07XG4gIH1cblxuICAudGlkZS1hbGVydC1pY29uIHtcbiAgICBncmlkLWFyZWE6IGljb247XG4gIH1cblxuICAudGlkZS1hbGVydC1oZWFkaW5nIHtcbiAgICBncmlkLWFyZWE6IGhlYWRpbmc7XG4gIH1cblxuICAudGlkZS1hbGVydC1jbG9zZSB7XG4gICAgZ3JpZC1hcmVhOiBjbG9zZTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWJvZHkge1xuICAgIGdyaWQtYXJlYTogYm9keTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBCQURHRSA9IHtcbiAgSlVTVF9MSVNURUQ6ICdKdXN0IGxpc3RlZCcsXG4gIE5BVElPTldJREU6ICdOYXRpb253aWRlJyxcbiAgUkVEVUNFRDogJ1JlZHVjZWQnLFxuICBVUERBVEVEOiAnVXBkYXRlZCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFER0VfUFJFTUlVTSA9IHtcbiAgUFJFTUlVTTogJ1ByZW1pdW0nLFxuICBQUkVNSVVNX1NFTEVDVDogJ1ByZW1pdW0gU0VMRUNUJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9UUlVTVEVEID0ge1xuICBZRUFSU18xMDogJzEwJyxcbiAgWUVBUlNfMTU6ICcxNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlID0gKHR5cGVvZiBCQURHRSlba2V5b2YgdHlwZW9mIEJBREdFXTtcbmV4cG9ydCB0eXBlIEJhZGdlUHJlbWl1bSA9ICh0eXBlb2YgQkFER0VfUFJFTUlVTSlba2V5b2YgdHlwZW9mIEJBREdFX1BSRU1JVU1dO1xuZXhwb3J0IHR5cGUgQmFkZ2VUcnVzdGVkWWVhcnMgPSAodHlwZW9mIEJBREdFX1RSVVNURUQpW2tleW9mIHR5cGVvZiBCQURHRV9UUlVTVEVEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIG9uVXBkYXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNUb3VjaHNjcmVlbj86IGJvb2xlYW47XG4gICAgb2Zmc2V0WD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG9mZnNldFg6IDAsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBsZXQgY29udGVudFdpZHRoID0gcmVmKCk7XG4gIGxldCBmcmFtZVdpZHRoID0gcmVmKCk7XG4gIGxldCBoYXNPdmVyZmxvdyA9IHJlZigpO1xuICBsZXQgbGFzdFBvc2l0aW9uID0gcmVmKCk7XG5cbiAgY29uc3QgY29udGVudFJlZiA9IHJlZigpO1xuICBjb25zdCBmcmFtZVJlZiA9IHJlZigpO1xuICBjb25zdCBzaG93QnV0dG9ucyA9IHJlZigpO1xuICBjb25zdCBjdXJyZW50U2xpZGUgPSByZWYoMCk7XG5cbiAgY29uc3QgZ2FwID0gMTY7XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdGhlIGN1cnJlbnQgc2xpZGUgYmFzZWQgb24gdGhlIHNjcm9sbFxuICAgKiBwb3NpdGlvbiBvZiB0aGUgZnJhbWUuIFRoZSBjdXJyZW50IHNsaWRlIGlzXG4gICAqIHRoZSBzbGlkZSB0aGF0IGlzIGNsb3Nlc3QgdG8gdGhlIGxlZnQgZWRnZSBvZlxuICAgKiB0aGUgZnJhbWUuXG4gICAqL1xuICBjb25zdCBtZWFzdXJlQ3VycmVudFNsaWRlID0gKCkgPT4ge1xuICAgIC8vIGdldCBsZWZ0IG9mZnNldHMgb2YgZWFjaCBzbGlkZVxuICAgIGNvbnN0IHNsaWRlT2Zmc2V0cyA9IEFycmF5LmZyb20oY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbikubWFwKChzbGlkZTogYW55KSA9PiBzbGlkZS5vZmZzZXRMZWZ0KTtcblxuICAgIGlmIChzbGlkZU9mZnNldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBnZXQgdmFsdWUgY2xvc2VzdCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvblxuICAgIGNvbnN0IGNsb3Nlc3RTbGlkZU9mZnNldCA9IHNsaWRlT2Zmc2V0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgIHJldHVybiBNYXRoLmFicyhjdXJyIC0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCkgPCBNYXRoLmFicyhwcmV2IC0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCkgPyBjdXJyIDogcHJldjtcbiAgICB9KTtcblxuICAgIC8vIHNldCBjdXJyZW50IHNsaWRlIHRvIGluZGV4IG9mIGNsb3Nlc3Qgc2xpZGVcbiAgICBjdXJyZW50U2xpZGUudmFsdWUgPSBzbGlkZU9mZnNldHMuaW5kZXhPZihjbG9zZXN0U2xpZGVPZmZzZXQpO1xuICB9O1xuXG4gIGNvbnN0IG1lYXN1cmVEb20gPSAoKSA9PiB7XG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGVudFJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgaGFzT3ZlcmZsb3cudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuICAgIGxhc3RQb3NpdGlvbi52YWx1ZSA9IGZyYW1lUmVmLnZhbHVlLnNjcm9sbFdpZHRoIC0gZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBoYXNPdmVyZmxvdy52YWx1ZSAmJiAhcHJvcHMuaXNUb3VjaHNjcmVlbjtcblxuICAgIG1lYXN1cmVDdXJyZW50U2xpZGUoKTtcbiAgfTtcblxuICAvLyBUT0RPOiBkZWJvdW5jZSB0aGlzXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgdG8gdGhlIHNsaWRlIGF0IHRoZSBnaXZlbiBpbmRleCwgb3JcbiAgICogdG8gdGhlIGZpcnN0IG9yIGxhc3Qgc2xpZGUgaWYgdGhlIGdpdmVuIGluZGV4XG4gICAqIGlzIG91dCBvZiBib3VuZHMuXG4gICAqIEBwYXJhbSBzbGlkZUluZGV4IFRoZSBpbmRleCBvZiB0aGUgc2xpZGUgdG8gc2Nyb2xsIHRvXG4gICAqL1xuICBjb25zdCBzY3JvbGxUb1NsaWRlID0gKHNsaWRlSW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGZyYW1lUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGNvbnRlbnRSZWYudmFsdWUuY2hpbGRyZW5bc2xpZGVJbmRleF0ub2Zmc2V0TGVmdCxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IGNvbnRlbnRSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgY29uc3QgY29udGVudFJpZ2h0RWRnZSA9IGZyYW1lUmVmLnZhbHVlLnNjcm9sbExlZnQgKyBmcmFtZVJlZi52YWx1ZS5jbGllbnRXaWR0aDtcblxuICAgIGlmIChjb250ZW50UmlnaHRFZGdlID4gY29udGVudFdpZHRoKSB7XG4gICAgICBmcmFtZVJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgbGVmdDogY29udGVudFdpZHRoLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGlzRmlyc3RTbGlkZVdpdGhPZmZzZXQgPSBwcm9wcy5vZmZzZXRYICYmIGN1cnJlbnRTbGlkZS52YWx1ZSA9PT0gMDtcbiAgICAgIGNvbnN0IGlzTGFzdFNsaWRlID0gY29udGVudFJpZ2h0RWRnZSA9PT0gY29udGVudFdpZHRoO1xuICAgICAgY29uc3QgbmV4dFNsaWRlID0gaXNMYXN0U2xpZGUgPyAwIDogaXNGaXJzdFNsaWRlV2l0aE9mZnNldCA/IDIgOiBjdXJyZW50U2xpZGUudmFsdWUgKyAxO1xuXG4gICAgICBzY3JvbGxUb1NsaWRlKG5leHRTbGlkZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGZpcnN0U2xpZGUgPSBwcm9wcy5vZmZzZXRYID8gMSA6IDA7XG4gICAgY29uc3QgaXNGaXJzdFNsaWRlID0gY3VycmVudFNsaWRlLnZhbHVlIC0gMSA9PT0gZmlyc3RTbGlkZTtcbiAgICBjb25zdCBpc1NlY29uZFNsaWRlID0gY3VycmVudFNsaWRlLnZhbHVlIDw9IGZpcnN0U2xpZGU7XG4gICAgY29uc3QgcHJldmlvdXNTbGlkZSA9IGlzU2Vjb25kU2xpZGVcbiAgICAgID8gY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgICA6IGlzRmlyc3RTbGlkZVxuICAgICAgPyAwXG4gICAgICA6IGN1cnJlbnRTbGlkZS52YWx1ZSAtIDE7XG5cbiAgICBzY3JvbGxUb1NsaWRlKHByZXZpb3VzU2xpZGUpO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG5cbiAgb25VcGRhdGVkKCgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH0pO1xuXG4gIHdhdGNoKGN1cnJlbnRTbGlkZSwgKCkgPT4ge1xuICAgIGVtaXQoJ2NoYW5nZScsIGN1cnJlbnRTbGlkZS52YWx1ZSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtY2Fyb3VzZWwnLCBDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5TQ1JPTExCQVIuT0ZGLCBDU1MuU05BUC5PTiwgQ1NTLk9WRVJGTE9XLlguU0NST0xMXVwiXG4gICAgICByZWY9XCJmcmFtZVJlZlwiXG4gICAgICBAc2Nyb2xsPVwiaGFuZGxlU2Nyb2xsXCJcbiAgICA+XG4gICAgICA8dWxcbiAgICAgICAgOmNsYXNzPVwiW3Byb3BzLmlzVG91Y2hzY3JlZW4gPyBbQ1NTLk9WRVJGTE9XLlguQVVUT10gOiAnJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkdBUC5PTkUsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiXG4gICAgICAgIHJlZj1cImNvbnRlbnRSZWZcIlxuICAgICAgPlxuICAgICAgICA8bGlcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLlNOQVBfQUxJR04uU1RBUlRdXCJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBgJHtwcm9wcy5vZmZzZXRYIC0gZ2FwfXB4YCB9XCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMub2Zmc2V0WFwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHNsb3QgLz5cblxuICAgICAgICA8bGlcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLlNOQVBfQUxJR04uU1RBUlRdXCJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBgJHtwcm9wcy5vZmZzZXRYIC0gZ2FwfXB4YCB9XCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMub2Zmc2V0WFwiXG4gICAgICAgIC8+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwic2hvd0J1dHRvbnNcIlxuICAgID5cbiAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd1ByZXZpb3VzU2xpZGVcIlxuICAgICAgLz5cblxuICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgIEBjbGljaz1cInNob3dOZXh0U2xpZGVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGNkbj86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBzcmM/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGNkbjogdW5kZWZpbmVkLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHRpZGVJbWFnZSA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9IGAke3Byb3BzLmNkbn0vaW1hZ2UtY29taW5nLXNvb24tNTEyLnBuZ2A7XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICB0aWRlSW1hZ2UudmFsdWUuc3JjID0gaW1hZ2VEZWZhdWx0O1xuICB9O1xuXG4gIGRlZmluZUV4cG9zZSh0aWRlSW1hZ2UudmFsdWUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGltZ1xuICAgIDphbHQ9XCJhbHRcIlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5PQkpFQ1QuQ0VOVEVSLCBDU1MuT0JKRUNULkNPVkVSXVwiXG4gICAgOmxvYWRpbmc9XCJpc0xhenkgPyAnbGF6eScgOiAnZWFnZXInXCJcbiAgICByZWY9XCJ0aWRlSW1hZ2VcIlxuICAgIDpzcmM9XCJzcmMgPz8gaW1hZ2VEZWZhdWx0XCJcbiAgICBAZXJyb3I9XCJzZXRJbWFnZUZyb21EZWZhdWx0XCJcbiAgLz5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBnZXRDdXJyZW50SW5zdGFuY2UsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRhdGFUcmFjazogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBjaGVja2VkID0gcmVmKHByb3BzLmNoZWNrZWQpO1xuXG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnXVwiPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJjaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICBuYW1lPVwiXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2YWx1ZT1cIlwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBjaGVja2VkID8gQ1NTLkJPUkRFUi5DT0xPUi5ISUdIIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBjaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgcHJvcHMuY2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIkNTUy5GT05ULldFSUdIVC5GT1VSX0hVTkRSRURcIlxuICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8uZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgICBoZWlnaHQ6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDFyZW07XG4gICAgaGVpZ2h0OiAxcmVtO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFJhbmdlRGF0YSB9IGZyb20gJ0AvdHlwZXMvRmFjZXRSYW5nZSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbmltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RoVmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBnZXRDdXJyZW50SW5zdGFuY2UsIGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdEZpZWxkIH0gZnJvbSAnQC90eXBlcy9GaWVsZCc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgZ2V0RmllbGRIYXNFcnJvciwgZ2V0RXJyb3JNZXNzYWdlIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnKTtcblxuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5TSVpFLlRXRUxWRV0gOiBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLkJPVFRPTS5IQUxGLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5NQVJHSU4uTEVGVC5PTkVdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuVFdFTFZFLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVEXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIGdldEN1cnJlbnRJbnN0YW5jZSwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWYoZmFsc2UpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0NsZWFyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgdmFsdWUudmFsdWUpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcbiAgY29uc3QgdW5pcXVlSWQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuaW5wdXRJZCA/IHByb3BzLmlucHV0SWQgOiBgdGV4dC1pbnB1dC0ke2dldEN1cnJlbnRJbnN0YW5jZSgpPy51aWQgfHwgJyd9YCkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWUubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB1cGRhdGVWYWx1ZSwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHQtcHJlZml4JywgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCwgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0J11cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5wcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMucHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgICBAY2xpY2sucHJldmVudD1cImlucHV0Py5mb2N1cygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlNJWkUuVFdFTFZFXSA6IENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXVwiXG4gICAgICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwidHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLCAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULCBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLk1BUkdJTi5MRUZULk9ORV1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5UV0VMVkUsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBnZXRDdXJyZW50SW5zdGFuY2UsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3QgdW5pcXVlSWQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuaW5wdXRJZCA/IHByb3BzLmlucHV0SWQgOiBgdGV4dC1pbnB1dC0ke2dldEN1cnJlbnRJbnN0YW5jZSgpPy51aWQgfHwgJyd9YCkpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBoYXNFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5TSVpFLlRXRUxWRV0gOiBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELFxuICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgXVwiXG4gICAgICAgIDpmb3I9XCJ1bmlxdWVJZFwiXG4gICAgICAgIHJlZj1cImxhYmVsXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cInByb3BzLm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInByb3BzLnJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLk1BUkdJTi5MRUZULk9ORV1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuVFdFTFZFLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVEXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuPC9zdHlsZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itb24tc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBoYXNJY29uID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaWNvbkxlYWRpbmcgfHwgcHJvcHMuaWNvblRyYWlsaW5nKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyAndGlkZS1idXR0b24tYXMtbGluaycgOiAndGlkZS1saW5rJyxcbiAgICAgIGhhc0ljb25cbiAgICAgICAgPyBbQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRl1cbiAgICAgICAgOiBbQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRUQsIENTUy5VTkRFUkxJTkUuT05dLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDppcz1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEVMRU1FTlQuTElOSyA6IEVMRU1FTlQuQlVUVE9OXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRUQsIENTUy5VTkRFUkxJTkUuT05dXCJcbiAgICAgIHYtaWY9XCJoYXNJY29uXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvZGl2PlxuXG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjbG9zZSddKTtcblxuICBjb25zdCBpc09wZW4gPSByZWYocHJvcHMuaXNPcGVuKTtcbiAgY29uc3Qgc2F2ZWRTY3JvbGxQb3NpdGlvbiA9IHJlZjxudW1iZXIgfCBudWxsPihudWxsKTsgLy8gVE9ETzogcmVwbGFjZSBib2R5IHNjcm9sbCBsb2NrIHdpdGggZ2xvYmFsIHN0cnVjdHVyZT9cblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcblxuICAgIHVwZGF0ZU1vZGFsRGlzcGxheSgpO1xuICAgIGVtaXQoJ2Nsb3NlJywgZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZU1vZGFsRGlzcGxheSA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlKSB7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uLnZhbHVlID0gd2luZG93LnNjcm9sbFk7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICBzYXZlZFNjcm9sbFBvc2l0aW9uLnZhbHVlICYmIHdpbmRvdy5zY3JvbGxUbygwLCBzYXZlZFNjcm9sbFBvc2l0aW9uLnZhbHVlKTtcblxuICAgICAgYWRkT3Blbkxpc3RlbmVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJyc7XG5cbiAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGhhbmRsZUNsb3NlKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkT3Blbkxpc3RlbmVycyA9ICgpID0+IHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHVwZGF0ZU1vZGFsRGlzcGxheSgpO1xuICB9KTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pc09wZW4sXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpc09wZW4udmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHVwZGF0ZU1vZGFsRGlzcGxheSgpO1xuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCB0bz1cImJvZHlcIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLW1vZGFsLXdyYXBwZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5QT1NJVElPTklORy5UT1AsXG4gICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBwcm9wcy5pc09wZW4gPyAnYWN0aXZlJyA6IENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsLWJnJywgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgIDpzdHlsZT1cInsgJy0tdGlkZS1tb2RhbC13aWR0aCc6IHByb3BzLndpZHRoIH1cIlxuICAgICAgICBAY2xpY2suc2VsZj1cImhhbmRsZUNsb3NlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsJyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5UV08sXG4gICAgICAgICAgICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRk9OVC5TSVpFLlRXRU5UWSwgQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRURdXCJcbiAgICAgICAgICAgIHYtaWY9XCJ0aXRsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5UV09dXCJcbiAgICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsb3NlXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQ2xvc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUaWRlSWNvbiA6aWNvbj1cIklDT04uQ0xPU0VcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1tb2RhbC1jb250ZW50JywgQ1NTLlBBRERJTkcuRlVMTC5UV08sIENTUy5PVkVSRkxPVy5ZLkFVVE9dXCI+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCI+XG4gICAgICAgICAgPGZvb3RlclxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1iZy1zdXJmYWNlJyxcbiAgICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlNUSUNLWSxcbiAgICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICAgIENTUy5BWElTMS5FTkQsXG4gICAgICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgICAgICBDU1MuUEFERElORy5YLlRXTyxcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1vZGFsIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1tb2RhbC13aWR0aCk7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAycmVtKTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAycmVtKTtcbiAgICBib3gtc2hhZG93OiAwcHggMTBweCAyNXB4IDBweCByZ2JhKDE4LCA0MywgNTgsIDAuMik7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHZoKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWJnIHtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2Ryb3AtZmlsdGVyLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLmFjdGl2ZSAudGlkZS1tb2RhbCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG5cbiAgLmFjdGl2ZSAudGlkZS1tb2RhbC1iZyB7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlQ3VycmVudD86IG51bWJlcjtcbiAgICBwYWdlVG90YWw/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBwYWdlQ3VycmVudDogMSxcbiAgICBwYWdlVG90YWw6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBwYWdlQ3VycmVudCA9IHJlZihwcm9wcy5wYWdlQ3VycmVudCk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgcGFnZUN1cnJlbnQudmFsdWUgPSBpbmRleDtcblxuICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1wYWdpbmF0aW9uJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICA+XG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gMVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiKGV2ZW50OiBFdmVudCkgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHBhZ2VDdXJyZW50IC0gMSlcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiKGV2ZW50OiBFdmVudCkgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHBhZ2luYXRpb25CdXR0b24pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25zW3BhZ2luYXRpb25CdXR0b25zLmxlbmd0aCAtIDFdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiKGV2ZW50OiBFdmVudCkgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHBhZ2VDdXJyZW50ICsgMSlcIlxuICAgIC8+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWN0aXZlVGFiSW5pdGlhbD86IG51bWJlcjtcbiAgICB0YWJzOiBUYWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFjdGl2ZVRhYkluaXRpYWw6IDAsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBhY3RpdmVUYWIgPSByZWYocHJvcHMuYWN0aXZlVGFiSW5pdGlhbCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgYWN0aXZlVGFiLnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXRhYnMnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgIF1cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS10YWJzLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBhY3RpdmVUYWJcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRCxcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICBdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwidGFiLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICBAY2xpY2s9XCIoZXZlbnQ6IEV2ZW50KSA9PiBoYW5kbGVDbGljayhldmVudCwgaW5kZXgpXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHByb3BzLnRhYnNcIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULldFSUdIVC5TSVhfSFVORFJFRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXRhYnMge1xuICAgIG1heC13aWR0aDogMjMuM3JlbTtcbiAgfVxuXG4gIC50aWRlLXRhYnMtdGFiIHtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpub3QoOmhvdmVyKSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLmluYWN0aXZlOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzQWN0aXZlOiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGlzQWN0aXZlID0gcmVmKHByb3BzLmlzQWN0aXZlKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgICBpc0FjdGl2ZS52YWx1ZSA9ICFpc0FjdGl2ZS52YWx1ZTtcblxuICAgICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGlzQWN0aXZlLnZhbHVlKTtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtdG9nZ2xlJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICcnIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNFQ09OREFSWSA6IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiVG9nZ2xlXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdG9nZ2xlLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUIDogQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS10b2dnbGUge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAudGlkZS10b2dnbGU6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMzI7XG4gIH1cblxuICAudGlkZS10b2dnbGUuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXRvZ2dsZS5hY3RpdmUgLnRpZGUtdG9nZ2xlLWluZGljYXRvciB7XG4gICAgbGVmdDogMzZweDtcbiAgfVxuXG4gIC50aWRlLXRvZ2dsZS1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDRweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQOiAnZXF1aXAnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtID0gKHR5cGVvZiBSRUFMTSlba2V5b2YgdHlwZW9mIFJFQUxNXTtcbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGhvbmUsIGZvcm1hdFByaWNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVkID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBGT1JNQVQgPSB7XG4gIE5VTUJFUjogZm9ybWF0TnVtYmVyLFxuICBQSE9ORTogZm9ybWF0UGhvbmUsXG4gIFBSSUNFOiBmb3JtYXRQcmljZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRfUkVHRVggPSB7XG4gIGFscGhhOiAvXlthLXpBLVpdKyQvZyxcbiAgYWxwaGFOdW1iZXJPckVtcHR5OiAvXiR8XlthLXowLTldKyQvaSxcbiAgYWxwaGFTcGFjZTogL15bYS16QS1aIF0rJC9nLFxuICBlbWFpbDpcbiAgICAvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxufTtcbiIsImltcG9ydCB7IEZPUk1BVF9SRUdFWCB9IGZyb20gJ0AvdHlwZXMvRm9ybWF0dGVkJztcbmltcG9ydCB7IGNoZWNrRm9ybWF0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUT1IgPSB7XG4gIEFMUEhBX05VTUJFUl9FTVBUWTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhTnVtYmVyT3JFbXB0eSksXG4gIEFMUEhBX1NQQUNFOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFTcGFjZSksXG4gIEVNQUlMOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguZW1haWwpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lKSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvciA9IHN0cmluZyB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkxlbmd0aCA9IHtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuIl0sIm5hbWVzIjpbIkJSRUFLUE9JTlQiLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsIk9SSUVOVEFUSU9OIiwiU0laRSIsImZvcm1hdFBhc2NhbENhc2UiLCJpbnB1dCIsIndvcmQiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwicHJvcHMiLCJpZCIsIm5hbWUiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJJQ09OIiwiaXNFeHBhbmRlZCIsImFjY29yZGlvbkJvZHkiLCJ0b2dnbGVJc0V4cGFuZGVkIiwiZWxlbWVudCIsIm9uTW91bnRlZCIsIkVMRU1FTlQiLCJFTEVNRU5UX1RFWFRfQVNfSUNPTiIsIlBSSU9SSVRZIiwiVEFSR0VUIiwiQUxFUlQiLCJpY29uIiwiY29tcHV0ZWQiLCJCQURHRSIsIkJBREdFX1BSRU1JVU0iLCJCQURHRV9UUlVTVEVEIiwiZ2FwIiwiY29udGVudFdpZHRoIiwiZnJhbWVXaWR0aCIsImhhc092ZXJmbG93IiwibGFzdFBvc2l0aW9uIiwiY29udGVudFJlZiIsImZyYW1lUmVmIiwic2hvd0J1dHRvbnMiLCJjdXJyZW50U2xpZGUiLCJtZWFzdXJlQ3VycmVudFNsaWRlIiwic2xpZGVPZmZzZXRzIiwic2xpZGUiLCJjbG9zZXN0U2xpZGVPZmZzZXQiLCJwcmV2IiwiY3VyciIsIm1lYXN1cmVEb20iLCJoYW5kbGVTY3JvbGwiLCJzY3JvbGxUb1NsaWRlIiwic2xpZGVJbmRleCIsInNob3dOZXh0U2xpZGUiLCJjb250ZW50UmlnaHRFZGdlIiwiaXNGaXJzdFNsaWRlV2l0aE9mZnNldCIsIm5leHRTbGlkZSIsInNob3dQcmV2aW91c1NsaWRlIiwiZmlyc3RTbGlkZSIsImlzRmlyc3RTbGlkZSIsInByZXZpb3VzU2xpZGUiLCJvblVubW91bnRlZCIsIm9uVXBkYXRlZCIsImVtaXQiLCJ0aWRlSW1hZ2UiLCJpbWFnZURlZmF1bHQiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiX19leHBvc2UiLCJjaGVja2VkIiwidW5pcXVlSWQiLCJfYSIsImdldEN1cnJlbnRJbnN0YW5jZSIsIm5ld1ZhbHVlIiwib2xkVmFsdWUiLCJlcnJvck1lc3NhZ2VEZWZhdWx0Iiwibm9FcnJvciIsImNoZWNrRm9ybWF0IiwiZm9ybWF0IiwidmFsdWUiLCJyZXN1bHQiLCJnZXRFcnJvck1lc3NhZ2UiLCJlcnJvckZyb21Qcm9wcyIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiaGFuZGxlRmllbGRWYWxpZGF0aW9uIiwiZXJyb3IiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsImhhc0ZvY3VzIiwiZXJyb3JNZXNzYWdlIiwiZm9ybWF0dGVkTGFiZWwiLCJoYXNFcnJvciIsImhhc01pbmlsYWJlbCIsImlzRW1wdHkiLCJleHBhbmRPcHRpb25zIiwiZXZlbnQiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0IiwiVEVYVF9JTlBVVF9UWVBFIiwic2hvd1Bhc3N3b3JkIiwiaGFzQ2xlYXIiLCJ0eXBlIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJkaWdpdHMiLCJ1cGRhdGVWYWx1ZSIsImhhc0ljb24iLCJpc09wZW4iLCJzYXZlZFNjcm9sbFBvc2l0aW9uIiwiaGFuZGxlQ2xvc2UiLCJ1cGRhdGVNb2RhbERpc3BsYXkiLCJhZGRPcGVuTGlzdGVuZXJzIiwicmVtb3ZlT3Blbkxpc3RlbmVycyIsImhhbmRsZUtleURvd24iLCJwYWdlQ3VycmVudCIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJpbmRleCIsImhhbmRsZUNsaWNrIiwiYWN0aXZlVGFiIiwiaXNBY3RpdmUiLCJSRUFMTSIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiJdLCJtYXBwaW5ncyI6IjtBQUVPLE1BQU1BLEtBQWE7QUFBQSxFQUN4QixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQ04sR0FJYUMsSUFBTTtBQUFBLEVBQ2pCLGdCQUFnQixDQUFDQyxHQUFxQkMsTUFDN0JELEVBQVUsSUFBSSxDQUFDRSxNQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFO0FBQUEsRUFFOUQsT0FBTztBQUFBLElBQ0wsR0FBRztBQUFBLE1BQ0QsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELFFBQVE7QUFBQSxJQUNWO0FBQUEsRUFDRjtBQUFBLEVBQ0EsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxJQUFJO0FBQUEsSUFDRixNQUFNO0FBQUEsSUFDTixPQUFPO0FB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QSxNQUNiLGVBQWU7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLEtBQUs7QUFBQSxJQUNILFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLE1BQU07QUFBQSxFQUNSO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixLQUFLO0FBQUEsTUFDSCxLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxPQUFPO0FBQUEsTUFDUCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxPQUFPO0FBQUEsTUFDUCxPQUFPO0FBQUEsTUFDUCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixVQUFVO0FBQUEsSUFDWjtBQUFBLElBQ0EsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsT0FBTztBQUFBLE1BQ1AsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BQ1AsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQ1Y7QUFBQSxJQUNBLElBQUk7QUFBQSxFQUNOO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsRUFDUjtBQUFBLEVBQ0EsV0FBVztBQUFBLElBQ1QsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLGNBQWM7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsS0FBSztBQUFBLE1BQ0gsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUNkO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFDTjtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQ1Y7QUFBQSxJQUNBLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUNWO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFDVjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxLQUFLO0FBQUEsTUFDSCxTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUFBLEVBQ0EsZ0JBQWdCO0FBQUEsSUFDZCxLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFDTjtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsVUFBVTtBQUFBLElBQ1YsT0FBTztBQUFBLElBQ1AsVUFBVTtBQUFBLElBQ1YsUUFBUTtBQUFBLEVBQ1Y7QUFBQSxFQUNBLGFBQWE7QUFBQSxJQUNYLFFBQVE7QUFBQSxJQUNSLE1BQU07QUFBQSxJQUNOLE9BQU87QUFBQSxJQUNQLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxXQUFXO0FBQUEsSUFDVCxLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLElBQUk7QUFBQSxFQUNOO0FBQUEsRUFDQSxZQUFZO0FBQUEsSUFDVixPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsZ0JBQWdCO0FBQUEsSUFDZCxPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsV0FBVztBQUFBLElBQ1QsT0FBTztBQUFBLElBQ1AsS0FBSztBQUFBLElBQ0wsSUFBSTtBQUFBLEVBQ047QUFBQSxFQUNBLFlBQVk7QUFBQSxJQUNWLEtBQUs7QUFBQSxJQUNMLElBQUk7QUFBQSxFQUNOO0FBQUEsRUFDQSxpQkFBaUI7QUFBQSxJQUNmLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsS0FBSztBQUFBLEVBQ1A7QUFDRjtBQUtFSCxFQUFJLFFBQVEsT0FDWkEsRUFBSSxRQUFRLFVBQ1pBLEVBQUksUUFBUSxNQUNaQSxFQUFJLFFBQVEsTUFDWkEsRUFBSSxRQUFRLE1BQ1pBLEVBQUksUUFBUSxTQUNaQSxFQUFJLFFBQVEsUUFDWkEsRUFBSSxRQUFRLGNBQ1pBLEVBQUksUUFBUSxhQUNaQSxFQUFJLE1BQU0sUUFDVkEsRUFBSSxNQUFNLFNBQ1ZBLEVBQUksTUFBTSxRQUNWQSxFQUFJLE1BQU0sS0FDVkEsRUFBSSxNQUFNLE9BQ1ZBLEVBQUksTUFBTSxRQUNWQSxFQUFJLE1BQU0sUUFDVkEsRUFBSSxNQUFNLEtBQ1ZBLEVBQUksTUFBTSxPQUNWQSxFQUFJLEtBQUssVUFBVSxRQUNuQkEsRUFBSSxLQUFLLFVBQVUsZ0JBQ25CQSxFQUFJLEtBQUssVUFBVSxLQUNuQkEsRUFBSSxLQUFLLFVBQVUsYUFDbkJBLEVBQUksSUFBSSxLQUNSQSxFQUFJLElBQUksTUFDUkEsRUFBSSxJQUFJLFNBQ1JBLEVBQUksSUFBSSxLQUNSQSxFQUFJLElBQUksTUFDUkEsRUFBSSxLQUFLLE1BQU0sTUFDZkEsRUFBSSxLQUFLLEtBQUssSUFDZEEsRUFBSSxLQUFLLEtBQUssS0FDZEEsRUFBSSxLQUFLLE9BQU8sSUFDaEJBLEVBQUksS0FBSyxPQUFPLEtBQ2hCQSxFQUFJLEtBQUssTUFDVEEsRUFBSSxTQUFTLFVBQ2JBLEVBQUksU0FBUyxPQUNiQSxFQUFJLFNBQVMsVUFDYkEsRUFBSSxTQUFTLFFBQ2JBLEVBQUksWUFBWSxLQUNoQkEsRUFBSSxZQUFZLE9BQ2hCQSxFQUFJLFlBQVksUUFDaEJBLEVBQUksWUFBWSxNQUNoQkEsRUFBSSxXQUFXLFlBQ2ZBLEVBQUksV0FBVyxhQUNmQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxLQUFLLFNBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxFQUFFLFNBQ2JBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxJQUFJLEtBQ2ZBLEVBQUksT0FBTyxJQUFJLE1BQ2ZBLEVBQUksT0FBTyxJQUFJLFNBQ2ZBLEVBQUksT0FBTyxJQUFJLEtBQ2ZBLEVBQUksT0FBTyxJQUFJLE1BQ2ZBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxFQUFFLFNBQ2JBLEVBQUksT0FBTyxFQUFFLEtBQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxFQUFFLE1BQ2JBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxNQUNqQkEsRUFBSSxPQUFPLE1BQU0sU0FDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxNQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxNQUNsQkEsRUFBSSxPQUFPLE9BQU8sU0FDbEJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxNQUNsQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLE1BQ2hCQSxFQUFJLE9BQU8sS0FBSyxTQUNoQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLE1BQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxPQUFPLFNBQ2xCQSxFQUFJLE9BQU8sT0FBTyxNQUNsQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsS0FBSyxTQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsRUFBRSxTQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsSUFBSSxLQUNoQkEsRUFBSSxRQUFRLElBQUksTUFDaEJBLEVBQUksUUFBUSxJQUFJLFNBQ2hCQSxFQUFJLFFBQVEsSUFBSSxLQUNoQkEsRUFBSSxRQUFRLElBQUksTUFDaEJBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLE1BQ2RBLEVBQUksUUFBUSxFQUFFLFNBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLE1BQ2RBLEVBQUksUUFBUSxNQUFNLEtBQ2xCQSxFQUFJLFFBQVEsTUFBTSxNQUNsQkEsRUFBSSxRQUFRLE1BQU0sU0FDbEJBLEVBQUksUUFBUSxNQUFNLEtBQ2xCQSxFQUFJLFFBQVEsTUFBTSxNQUNsQkEsRUFBSSxRQUFRLE9BQU8sS0FDbkJBLEVBQUksUUFBUSxPQUFPLE1BQ25CQSxFQUFJLFFBQVEsT0FBTyxTQUNuQkEsRUFBSSxRQUFRLE9BQU8sS0FDbkJBLEVBQUksUUFBUSxPQUFPLE1BQ25CQSxFQUFJLFFBQVEsS0FBSyxLQUNqQkEsRUFBSSxRQUFRLEtBQUssTUFDakJBLEVBQUksUUFBUSxLQUFLLFNBQ2pCQSxFQUFJLFFBQVEsS0FBSyxLQUNqQkEsRUFBSSxRQUFRLEtBQUssTUFDakJBLEVBQUksTUFBTSxVQUNWQSxFQUFJLE1BQU0sTUFDVkEsRUFBSSxNQUFNLE1BQ1ZBLEVBQUksT0FBTyxNQUNYQSxFQUFJLE9BQU8sTUFDWEEsRUFBSSxNQUFNLEVBQUUsUUFDWkEsRUFBSSxZQUNKQSxFQUFJLE9BQU8sYUFDWEEsRUFBSSxPQUFPLFNBQ1hBLEVBQUksT0FBTyxNQUNYQSxFQUFJLEtBQUssS0FBSyxRQUNkQSxFQUFJLEtBQUssS0FBSyxVQUNkQSxFQUFJLEtBQUssS0FBSyxTQUNkQSxFQUFJLEtBQUssS0FBSyxRQUNkQSxFQUFJLEtBQUssS0FBSyxhQUNkQSxFQUFJLEtBQUssS0FBSyxZQUNkQSxFQUFJ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
|
|
2239
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmVzbS5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9PcmllbnRhdGlvbi50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvLnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTGluay52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVRhYnMudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVRvZ2dsZS52dWUiLCIuLi9zcmMvdHlwZXMvRm9ybWF0dGVkLnRzIiwiLi4vc3JjL3R5cGVzL0xpc3RpbmdNZWRpYS50cyIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlQgPSB7XG4gIFNNOiAnc20nLFxuICBNRDogJ21kJyxcbiAgTEc6ICdsZycsXG4gIFhMOiAneGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgQlJFQUtQT0lOVClba2V5b2YgdHlwZW9mIEJSRUFLUE9JTlRdO1xuXG5leHBvcnQgY29uc3QgQ1NTID0ge1xuICB3aXRoQnJlYWtwb2ludDogKHV0aWxpdGllczogc3RyaW5nW10sIGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnQpOiBzdHJpbmdbXSA9PiB7XG4gICAgcmV0dXJuIHV0aWxpdGllcy5tYXAoKHV0aWxpdHkpID0+IGAke2JyZWFrcG9pbnR9LSR7dXRpbGl0eX1gKTtcbiAgfSxcbiAgQUxJR046IHtcbiAgICBYOiB7XG4gICAgICBDRU5URVI6ICd0aWRlLXRleHQtY2VudGVyJyxcbiAgICAgIExFRlQ6ICd0aWRlLXRleHQtbGVmdCcsXG4gICAgICBSSUdIVDogJ3RpZGUtdGV4dC1yaWdodCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBNSURETEU6ICd0aWRlLWFsaWduLW1pZGRsZScsXG4gICAgfSxcbiAgfSxcbiAgQVhJUzE6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMxLWFyb3VuZCcsXG4gICAgQkVUV0VFTjogJ3RpZGUtYXhpczEtYmV0d2VlbicsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMS1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczEtZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczEtc3RhcnQnLFxuICB9LFxuICBBWElTMjoge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczItYXJvdW5kJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMyLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMi1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMi1zdGFydCcsXG4gIH0sXG4gIEJHOiB7XG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgRVJST1I6ICd0aWRlLWJnLWVycm9yJyxcbiAgICBJTkZPOiAndGlkZS1iZy1pbmZvJyxcbiAgICBQUklNQVJZOiAndGlkZS1iZy1wcmltYXJ5JyxcbiAgICBTRUNPTkRBUlk6ICd0aWRlLWJnLXNlY29uZGFyeScsXG4gICAgU1VDQ0VTUzogJ3RpZGUtYmctc3VjY2VzcycsXG4gICAgU1VSRkFDRToge1xuICAgICAgQUNDRU5UOiAndGlkZS1iZy1zdXJmYWNlLWFjY2VudCcsXG4gICAgICBBQ0NFTlRfVkFSSUFOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQtdmFyaWFudCcsXG4gICAgICBCUkFORDogJ3RpZGUtYmctc3VyZmFjZS1icmFuZCcsXG4gICAgICBERUZBVUxUOiAndGlkZS1iZy1zdXJmYWNlJyxcbiAgICAgIEVSUk9SOiAndGlkZS1iZy1zdXJmYWNlLWVycm9yJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1iZy1zdXJmYWNlLWZsb2F0aW5nJyxcbiAgICAgIEdSQURJRU5UOiAndGlkZS1iZy1zdXJmYWNlLWdyYWRpZW50JyxcbiAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICBTVUNDRVNTOiAndGlkZS1iZy1zdXJmYWNlLXN1Y2Nlc3MnLFxuICAgICAgVkFSSUFOVDogJ3RpZGUtYmctc3VyZmFjZS12YXJpYW50JyxcbiAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG4gICAgfSxcbiAgICBXQVJOSU5HOiAndGlkZS1iZy13YXJuaW5nJyxcbiAgfSxcbiAgQk9SREVSOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIFFVQVJURVI6ICd0aWRlLXJhZGl1cy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcmFkaXVzLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXJhZGl1cy0xJyxcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIE9ORTogJ3RpZGUtY29sdW1ucy0xJyxcbiAgICBUV086ICd0aWRlLWNvbHVtbnMtMicsXG4gICAgVEhSRUU6ICd0aWRlLWNvbHVtbnMtMycsXG4gICAgRk9VUjogJ3RpZGUtY29sdW1ucy00JyxcbiAgfSxcbiAgQ1VSU09SOiB7XG4gICAgTk9UX0FMTE9XRUQ6ICd0aWRlLWN1cnNvci1ub3QtYWxsb3dlZCcsXG4gICAgUE9JTlRFUjogJ3RpZGUtY3Vyc29yLXBvaW50ZXInLFxuICAgIFRFWFQ6ICd0aWRlLWN1cnNvci10ZXh0JyxcbiAgfSxcbiAgRElTUExBWToge1xuICAgIEJMT0NLOiAndGlkZS1kaXNwbGF5LWJsb2NrJyxcbiAgICBDT05URU5UUzogJ3RpZGUtY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAnaW5pdGlhbCcsXG4gICAgSU5MSU5FOiAndGlkZS1kaXNwbGF5LWlubGluZScsXG4gICAgSU5MSU5FX0JMT0NLOiAndGlkZS1kaXNwbGF5LWlubGluZS1ibG9jaycsXG4gICAgSU5MSU5FX0ZMRVg6ICd0aWRlLWRpc3BsYXktaW5saW5lLWZsZXgnLFxuICAgIE5PTkU6ICd0aWRlLWRpc3BsYXktbm9uZScsXG4gIH0sXG4gIEZMRVg6IHtcbiAgICBCQVNJUzoge1xuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgVFdFTFZFOiAndGlkZS1mb250LTEyJyxcbiAgICAgIEZPVVJURUVOOiAndGlkZS1mb250LTE0JyxcbiAgICAgIFNJWFRFRU46ICd0aWRlLWZvbnQtMTYnLFxuICAgICAgVFdFTlRZOiAndGlkZS1mb250LTIwJyxcbiAgICAgIFRXRU5UWV9GT1VSOiAndGlkZS1mb250LTI0JyxcbiAgICAgIFRISVJUWV9UV086ICd0aWRlLWZvbnQtMzInLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNDAwJyxcbiAgICAgIEZJVkVfSFVORFJFRDogJ3RpZGUtZm9udC01MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICAgIFNFVkVOX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNzAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBFTkQ6IHtcbiAgICAgIE9ORTogJ3RpZGUtZW5kLTEnLFxuICAgICAgVFdPOiAndGlkZS1lbmQtMicsXG4gICAgICBUSFJFRTogJ3RpZGUtZW5kLTMnLFxuICAgICAgRk9VUjogJ3RpZGUtZW5kLTQnLFxuICAgICAgRklWRTogJ3RpZGUtZW5kLTUnLFxuICAgICAgU0lYOiAndGlkZS1lbmQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtZW5kLTcnLFxuICAgICAgRUlHSFQ6ICd0aWRlLWVuZC04JyxcbiAgICAgIE5JTkU6ICd0aWRlLWVuZC05JyxcbiAgICAgIFRFTjogJ3RpZGUtZW5kLTEwJyxcbiAgICAgIEVMRVZFTjogJ3RpZGUtZW5kLTExJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZW5kLTEyJyxcbiAgICAgIFRISVJURUVOOiAndGlkZS1lbmQtMTMnLFxuICAgIH0sXG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBMQVlPVVQ6ICd0aWRlLWdyaWQtbGF5b3V0JyxcbiAgICBTVEFSVDoge1xuICAgICAgWkVSTzogJ3RpZGUtc3RhcnQtMCcsXG4gICAgICBPTkU6ICd0aWRlLXN0YXJ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1zdGFydC0yJyxcbiAgICAgIFRIUkVFOiAndGlkZS1zdGFydC0zJyxcbiAgICAgIEZPVVI6ICd0aWRlLXN0YXJ0LTQnLFxuICAgICAgRklWRTogJ3RpZGUtc3RhcnQtNScsXG4gICAgICBTSVg6ICd0aWRlLXN0YXJ0LTYnLFxuICAgICAgU0VWRU46ICd0aWRlLXN0YXJ0LTcnLFxuICAgICAgRUlHSFQ6ICd0aWRlLXN0YXJ0LTgnLFxuICAgICAgTklORTogJ3RpZGUtc3RhcnQtOScsXG4gICAgICBURU46ICd0aWRlLXN0YXJ0LTEwJyxcbiAgICAgIEVMRVZFTjogJ3RpZGUtc3RhcnQtMTEnLFxuICAgICAgVFdFTFZFOiAndGlkZS1zdGFydC0xMicsXG4gICAgfSxcbiAgICBYTDogJ3RpZGUtZ3JpZC14bCcsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIFpFUk86ICd0aWRlLXdpZHRoLTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tcmlnaHQtYXV0bycsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi15LTQnLFxuICAgIH0sXG4gIH0sXG4gIE9CSkVDVDoge1xuICAgIENFTlRFUjogJ3RpZGUtb2JqZWN0LWNlbnRlcicsXG4gICAgQ09OVEFJTjogJ3RpZGUtb2JqZWN0LWNvbnRhaW4nLFxuICAgIENPVkVSOiAndGlkZS1vYmplY3QtY292ZXInLFxuICAgIFNDQUxFX0RPV046ICd0aWRlLW9iamVjdC1zY2FsZS1kb3duJyxcbiAgfSxcbiAgT1BBQ0lUWToge1xuICAgIE9GRjogJ3RpZGUtb3BhY2l0eS1ub25lJyxcbiAgICBPTjogJ3RpZGUtb3BhY2l0eScsXG4gIH0sXG4gIE9WRVJGTE9XOiB7XG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUteC1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteC1oaWRkZW4nLFxuICAgICAgU0NST0xMOiAndGlkZS14LXNjcm9sbCcsXG4gICAgfSxcbiAgICBYWToge1xuICAgICAgQVVUTzogJ3RpZGUteHktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXh5LWhpZGRlbicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBBVVRPOiAndGlkZS15LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS15LWhpZGRlbicsXG4gICAgfSxcbiAgfSxcbiAgUEFERElORzoge1xuICAgIEJPVFRPTToge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy15LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgUE9JTlRFUl9FVkVOVFM6IHtcbiAgICBPRkY6ICd0aWRlLXBvaW50ZXItZXZlbnRzLW5vbmUnLFxuICAgIE9OOiAndGlkZS1wb2ludGVyLWV2ZW50cycsXG4gIH0sXG4gIFBPU0lUSU9OOiB7XG4gICAgQUJTT0xVVEU6ICd0aWRlLXBvc2l0aW9uLWFic29sdXRlJyxcbiAgICBGSVhFRDogJ3RpZGUtcG9zaXRpb24tZml4ZWQnLFxuICAgIFJFTEFUSVZFOiAndGlkZS1wb3NpdGlvbi1yZWxhdGl2ZScsXG4gICAgU1RJQ0tZOiAndGlkZS1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBTQ1JPTExCQVI6IHtcbiAgICBPRkY6ICd0aWRlLXNjcm9sbGJhci1ub25lJyxcbiAgfSxcbiAgU0hBRE9XOiB7XG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNuYXAnLFxuICB9LFxuICBTTkFQX0FMSUdOOiB7XG4gICAgU1RBUlQ6ICd0aWRlLXNuYXAtc3RhcnQnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgT05FOiAndGlkZS16LWluZGV4LTEnLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ3NzVXRpbGl0eSA9ICh0eXBlb2YgQ1NTKVtrZXlvZiB0eXBlb2YgQ1NTXTtcblxuZXhwb3J0IGNvbnN0IGNzc1NvcnRPcmRlciA9IFtcbiAgQ1NTLkRJU1BMQVkuQkxPQ0ssXG4gIENTUy5ESVNQTEFZLkNPTlRFTlRTLFxuICBDU1MuRElTUExBWS5GTEVYLFxuICBDU1MuRElTUExBWS5HUklELFxuICBDU1MuRElTUExBWS5OT05FLFxuICBDU1MuRElTUExBWS5JTklUSUFMLFxuICBDU1MuRElTUExBWS5JTkxJTkUsXG4gIENTUy5ESVNQTEFZLklOTElORV9CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gIENTUy5BWElTMS5BUk9VTkQsXG4gIENTUy5BWElTMS5CRVRXRUVOLFxuICBDU1MuQVhJUzEuQ0VOVEVSLFxuICBDU1MuQVhJUzEuRU5ELFxuICBDU1MuQVhJUzEuU1RBUlQsXG4gIENTUy5BWElTMi5BUk9VTkQsXG4gIENTUy5BWElTMi5DRU5URVIsXG4gIENTUy5BWElTMi5FTkQsXG4gIENTUy5BWElTMi5TVEFSVCxcbiAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTl9SRVZFUlNFLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XX1JFVkVSU0UsXG4gIENTUy5HQVAuT05FLFxuICBDU1MuR0FQLkhBTEYsXG4gIENTUy5HQVAuUVVBUlRFUixcbiAgQ1NTLkdBUC5UV08sXG4gIENTUy5HQVAuRk9VUixcbiAgQ1NTLkZMRVguQkFTSVMuWkVSTyxcbiAgQ1NTLkZMRVguR1JPVy5PTixcbiAgQ1NTLkZMRVguR1JPVy5PRkYsXG4gIENTUy5GTEVYLlNIUklOSy5PTixcbiAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgQ1NTLkZMRVguV1JBUCxcbiAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICBDU1MuUE9TSVRJT04uRklYRUQsXG4gIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgQ1NTLlBPU0lUSU9OLlNUSUNLWSxcbiAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgQ1NTLkJPWF9TSVpJTkcuQk9SREVSX0JPWCxcbiAgQ1NTLkJPWF9TSVpJTkcuQ09OVEVOVF9CT1gsXG4gIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gIENTUy5NQVJHSU4uRlVMTC5IQUxGLFxuICBDU1MuTUFSR0lOLkZVTEwuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5GVUxMLlRXTyxcbiAgQ1NTLk1BUkdJTi5GVUxMLkZPVVIsXG4gIENTUy5NQVJHSU4uWS5PTkUsXG4gIENTUy5NQVJHSU4uWS5IQUxGLFxuICBDU1MuTUFSR0lOLlkuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5ZLlRXTyxcbiAgQ1NTLk1BUkdJTi5ZLkZPVVIsXG4gIENTUy5NQVJHSU4uVE9QLk9ORSxcbiAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgQ1NTLk1BUkdJTi5UT1AuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5UT1AuVFdPLFxuICBDU1MuTUFSR0lOLlRPUC5GT1VSLFxuICBDU1MuTUFSR0lOLlguT05FLFxuICBDU1MuTUFSR0lOLlguSEFMRixcbiAgQ1NTLk1BUkdJTi5YLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uWC5UV08sXG4gIENTUy5NQVJHSU4uWC5GT1VSLFxuICBDU1MuTUFSR0lOLlguQVVUTyxcbiAgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsXG4gIENTUy5NQVJHSU4uUklHSFQuSEFMRixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlJJR0hULlRXTyxcbiAgQ1NTLk1BUkdJTi5SSUdIVC5GT1VSLFxuICBDU1MuTUFSR0lOLlJJR0hULkFVVE8sXG4gIENTUy5NQVJHSU4uQk9UVE9NLk9ORSxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgQ1NTLk1BUkdJTi5CT1RUT00uUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5CT1RUT00uVFdPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5GT1VSLFxuICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICBDU1MuTUFSR0lOLkxFRlQuSEFMRixcbiAgQ1NTLk1BUkdJTi5MRUZULlFVQVJURVIsXG4gIENTUy5NQVJHSU4uTEVGVC5UV08sXG4gIENTUy5NQVJHSU4uTEVGVC5GT1VSLFxuICBDU1MuTUFSR0lOLkxFRlQuQVVUTyxcbiAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgQ1NTLkJPUkRFUi5UT1AuT05FLFxuICBDU1MuQk9SREVSLlRPUC5UV08sXG4gIENTUy5CT1JERVIuUklHSFQuT05FLFxuICBDU1MuQk9SREVSLlJJR0hULlRXTyxcbiAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICBDU1MuQk9SREVSLkJPVFRPTS5UV08sXG4gIENTUy5CT1JERVIuTEVGVC5PTkUsXG4gIENTUy5CT1JERVIuTEVGVC5UV08sXG4gIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gIENTUy5QQURESU5HLkZVTEwuSEFMRixcbiAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5GVUxMLlRXTyxcbiAgQ1NTLlBBRERJTkcuRlVMTC5GT1VSLFxuICBDU1MuUEFERElORy5ZLk9ORSxcbiAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlkuVFdPLFxuICBDU1MuUEFERElORy5ZLkZPVVIsXG4gIENTUy5QQURESU5HLlRPUC5PTkUsXG4gIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICBDU1MuUEFERElORy5UT1AuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuVE9QLlRXTyxcbiAgQ1NTLlBBRERJTkcuVE9QLkZPVVIsXG4gIENTUy5QQURESU5HLlguT05FLFxuICBDU1MuUEFERElORy5YLkhBTEYsXG4gIENTUy5QQURESU5HLlguUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWC5UV08sXG4gIENTUy5QQURESU5HLlguRk9VUixcbiAgQ1NTLlBBRERJTkcuUklHSFQuT05FLFxuICBDU1MuUEFERElORy5SSUdIVC5IQUxGLFxuICBDU1MuUEFERElORy5SSUdIVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gIENTUy5QQURESU5HLlJJR0hULkZPVVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICBDU1MuUEFERElORy5CT1RUT00uUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLlRXTyxcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLkZPVVIsXG4gIENTUy5QQURESU5HLkxFRlQuT05FLFxuICBDU1MuUEFERElORy5MRUZULkhBTEYsXG4gIENTUy5QQURESU5HLkxFRlQuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5UV08sXG4gIENTUy5QQURESU5HLkxFRlQuRk9VUixcbiAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICBDU1MuV0lEVEguWkVSTyxcbiAgQ1NTLldJRFRILkZVTEwsXG4gIENTUy5IRUlHSFQuWkVSTyxcbiAgQ1NTLkhFSUdIVC5GVUxMLFxuICBDU1MuQUxJR04uWS5NSURETEUsXG4gIENTUy5CUkVBS19XT1JELFxuICBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gIENTUy5DVVJTT1IuVEVYVCxcbiAgQ1NTLkZPTlQuU0laRS5UV0VMVkUsXG4gIENTUy5GT05ULlNJWkUuRk9VUlRFRU4sXG4gIENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFksXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZX0ZPVVIsXG4gIENTUy5GT05ULlNJWkUuVEhJUlRZX1RXTyxcbiAgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCxcbiAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICBDU1MuT0JKRUNULkNPTlRBSU4sXG4gIENTUy5PQkpFQ1QuQ09WRVIsXG4gIENTUy5PQkpFQ1QuU0NBTEVfRE9XTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICBDU1MuU0NST0xMQkFSLk9GRixcbiAgQ1NTLlNIQURPVy5CT1RUT00sXG4gIENTUy5TSEFET1cuVE9QLFxuICBDU1MuU05BUC5PTixcbiAgQ1NTLlNOQVBfQUxJR04uU1RBUlQsXG4gIENTUy5BTElHTi5YLkxFRlQsXG4gIENTUy5BTElHTi5YLkNFTlRFUixcbiAgQ1NTLkFMSUdOLlguUklHSFQsXG4gIENTUy5URVhUX1RSQU5TRk9STS5MT1dFUixcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLk5PTkUsXG4gIENTUy5URVhUX1RSQU5TRk9STS5VUFBFUixcbiAgQ1NTLlVOREVSTElORS5IT1ZFUixcbiAgQ1NTLlVOREVSTElORS5PRkYsXG4gIENTUy5VTkRFUkxJTkUuT04sXG4gIENTUy5WSVNJQklMSVRZLk9OLFxuICBDU1MuVklTSUJJTElUWS5PRkYsXG4gIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbiAgQ1NTLlpfSU5ERVguT05FLFxuXSBhcyBjb25zdDtcbiIsImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG4iLCJjb25zdCBjYXBpdGFsaXplRmlyc3QgPSAoc3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSgxKTtcbn07XG5cbmNvbnN0IGZvcm1hdENhbWVsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC9eW1xcc18tXS8sICcnKVxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkLCBpbmRleCkgPT4gKGluZGV4ID09PSAwID8gd29yZCA6IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpKVxuICAgICAgICAuam9pbignJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0S2ViYWJDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICctJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0TGFiZWwgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBsYWJlbE1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBmYWxzZTogJ05vJyxcbiAgICB0cnVlOiAnWWVzJyxcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5oYXNPd24obGFiZWxNYXAsIHZhbHVlKSA/IGxhYmVsTWFwW3ZhbHVlXSA6IHZhbHVlO1xufTtcblxuY29uc3QgZm9ybWF0TnVtYmVyID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgaWYgKE51bWJlcihkaWdpdHMpKSB7XG4gICAgICBvdXRwdXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoTnVtYmVyKGRpZ2l0cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQgPSAnMCc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBhc2NhbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgICAuam9pbignJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGhvbmUgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gU3RyaW5nKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG4gIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuXG4gIHN3aXRjaCAoZGlnaXRzLmxlbmd0aCkge1xuICAgIGNhc2UgNzpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMsIDYpfS0ke2RpZ2l0cy5zbGljZSg2KX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMTpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAxKX0tJHtkaWdpdHMuc2xpY2UoMSwgNCl9LSR7ZGlnaXRzLnNsaWNlKDQsIDcpfS0ke2RpZ2l0cy5zbGljZSg3KX1gO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG91dHB1dCA9IGRpZ2l0cztcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFByaWNlID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAkJHtvdXRwdXR9YDtcbn07XG5cbmNvbnN0IGZvcm1hdFF1b3RlcyA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIHZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmNvbnN0IGZvcm1hdFNlbnRlbmNlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IHNlbnRlbmNlQ2FzZSA9IGlucHV0O1xuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbG93ZXJDYXNlID0gaW5wdXRcbiAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJyk7XG5cbiAgICBzZW50ZW5jZUNhc2UgPSBsb3dlckNhc2Uuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIGxvd2VyQ2FzZS5zbGljZSgxKTtcbiAgfVxuXG4gIHJldHVybiBzZW50ZW5jZUNhc2U7XG59O1xuXG5jb25zdCBmb3JtYXRTbmFrZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJ18nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRUaXRsZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgICAuam9pbignICcpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFVybEZyb21Sb290ID0gKHVybDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHVybEZvcm1hdHRlZCA9IHVybC5zcGxpdCgnLmNvbS8nKTtcblxuICByZXR1cm4gdXJsRm9ybWF0dGVkLmxlbmd0aCA+IDEgPyBgLyR7dXJsRm9ybWF0dGVkWzFdfWAgOiB1cmw7XG59O1xuXG5jb25zdCBmb3JtYXRXZWlnaHQgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCR7b3V0cHV0fSBsYnNgO1xufTtcblxuY29uc3QgZ2V0QXJ0aWNsZSA9IChub3VuOiBzdHJpbmcsIGlzUGx1cmFsID0gZmFsc2UsIGlzRGVmaW5pdGUgPSBmYWxzZSkgPT4ge1xuICBjb25zdCB2b3dlbHMgPSBbJ2EnLCAnZScsICdpJywgJ28nLCAndSddO1xuICBjb25zdCBpc1Zvd2VsTGVhZGluZyA9IHZvd2Vscy5pbmNsdWRlcyhub3VuLmNoYXJBdCgwKSk7XG5cbiAgcmV0dXJuIGlzRGVmaW5pdGUgPyAndGhlJyA6IGlzUGx1cmFsID8gJ3NvbWUnIDogaXNWb3dlbExlYWRpbmcgPyAnYW4nIDogJ2EnO1xufTtcblxuY29uc3QgcHJpY2VUb051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmIChOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJyQnLCAnJyk7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbn07XG5cbmNvbnN0IHVuZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0LnJlcGxhY2UoL1xcJC9nLCAnJykucmVwbGFjZSgvLC9nLCAnJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9YDtcbn07XG5cbmV4cG9ydCB7XG4gIGNhcGl0YWxpemVGaXJzdCxcbiAgZm9ybWF0Q2FtZWxDYXNlLFxuICBmb3JtYXRLZWJhYkNhc2UsXG4gIGZvcm1hdExhYmVsLFxuICBmb3JtYXROdW1iZXIsXG4gIGZvcm1hdFBhc2NhbENhc2UsXG4gIGZvcm1hdFBob25lLFxuICBmb3JtYXRQcmljZSxcbiAgZm9ybWF0UXVvdGVzLFxuICBmb3JtYXRTZW50ZW5jZUNhc2UsXG4gIGZvcm1hdFNuYWtlQ2FzZSxcbiAgZm9ybWF0VGl0bGVDYXNlLFxuICBmb3JtYXRVcmxGcm9tUm9vdCxcbiAgZm9ybWF0V2VpZ2h0LFxuICBnZXRBcnRpY2xlLFxuICBwcmljZVRvTnVtYmVyLFxuICB1bmZvcm1hdFByaWNlLFxufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGRlZmluZUFzeW5jQ29tcG9uZW50LCBtYXJrUmF3LCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpY29uOiBJY29uO1xuICAgIHNpemU/OiBTaXplO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgc2l6ZTogU0laRS5TTUFMTCxcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmljb24sXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBwcm9wcy5pY29uIGFzIHVua25vd24gYXMgc3RyaW5nO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Z2ApKTtcblxuICAgICAgaW5uZXJTVkcudmFsdWUgPSBtYXJrUmF3KGNvbXBvbmVudCk7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pY29uJywgcHJvcHMuc2l6ZV1cIj5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDpkYXRhLWljb249XCJpY29uXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgOmlzPVwiaW5uZXJTVkdcIlxuICAgICAgdi1pZj1cImlubmVyU1ZHXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24gc3ZnIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCBzdmcge1xuICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBJQ09OID0ge1xuICBBQ0NPVU5UX0JBTEFOQ0U6ICdhY2NvdW50LWJhbGFuY2UnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0U6ICdhbGlnbi1zcGFjZScsXG4gIEFQUExFX1BBWTogJ2FwcGxlLXBheScsXG4gIEFSUk9XX0JBQ0s6ICdhcnJvdy1iYWNrJyxcbiAgQVJST1dfRk9SV0FSRDogJ2Fycm93LWZvcndhcmQnLFxuICBBUlJPV19SSUdIVDogJ2Fycm93LXJpZ2h0JyxcbiAgQVNTSUdOTUVOVDogJ2Fzc2lnbm1lbnQnLFxuICBBV0FSRF9TVEFSOiAnYXdhcmQtc3RhcicsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDSEVDSzogJ2NoZWNrJyxcbiAgQ0hFVlJPTl9MRUZUOiAnY2hldnJvbi1sZWZ0JyxcbiAgQ0hFVlJPTl9SSUdIVDogJ2NoZXZyb24tcmlnaHQnLFxuICBDTEVBUjogJ2NsZWFyJyxcbiAgQ0xPU0U6ICdjbG9zZScsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBERUxFVEU6ICdkZWxldGUnLFxuICBESUFNT05EOiAnZGlhbW9uZCcsXG4gIERSQUZUOiAnZHJhZnQnLFxuICBFRElUOiAnZWRpdCcsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZPUk1BVF9CT0xEOiAnZm9ybWF0LWJvbGQnLFxuICBGT1JNQVRfSVRBTElDOiAnZm9ybWF0LWl0YWxpYycsXG4gIEZPUk1BVF9MSVNUX0JVTExFVEVEOiAnZm9ybWF0LWxpc3QtYnVsbGV0ZWQnLFxuICBGT1JVTTogJ2ZvcnVtJyxcbiAgR0FWRUw6ICdnYXZlbCcsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIRUlHSFQ6ICdoZWlnaHQnLFxuICBIRUxQOiAnaGVscCcsXG4gIElORk86ICdpbmZvJyxcbiAgSU5TRVJUX1RFWFQ6ICdpbnNlcnQtdGV4dCcsXG4gIElOU1RBR1JBTTogJ2luc3RhZ3JhbScsXG4gIElPU19TSEFSRTogJ2lvcy1zaGFyZScsXG4gIExBWU9VVDogJ2xheW91dCcsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT1BFTl9JTl9ORVc6ICdvcGVuLWluLW5ldycsXG4gIFBBTEVUVEU6ICdwYWxldHRlJyxcbiAgUEFZUEFMOiAncGF5cGFsJyxcbiAgUEVSU09OOiAncGVyc29uJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBST1VOREVEX0NPUk5FUlM6ICdyb3VuZGVkLWNvcm5lcnMnLFxuICBSVUxFUjogJ3J1bGVyJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgU0VBVElORzogJ3NlYXRpbmcnLFxuICBTRUxMOiAnc2VsbCcsXG4gIFNIQVJFOiAnc2hhcmUnLFxuICBTSE9QUElOR19DQVJUOiAnc2hvcHBpbmctY2FydCcsXG4gIFNNUzogJ3NtcycsXG4gIFNUQVI6ICdzdGFyJyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVklERU9DQU06ICd2aWRlb2NhbScsXG4gIFZJRVdfSU5fQVI6ICd2aWV3LWluLWFyJyxcbiAgVklTSUJJTElUWTogJ3Zpc2liaWxpdHknLFxuICBWT0xVTUVfT0ZGOiAndm9sdW1lLW9mZicsXG4gIFZPTFVNRV9PTjogJ3ZvbHVtZS1vbicsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFlPVVRVQkU6ICd5b3V0dWJlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbmRpY2F0b3IgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbmRpY2F0b3IudnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBoYXNUb3BEaXZpZGVyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc0FjdGl2ZToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaXNFeHBhbmRlZEluaXRpYWw6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzT3B0aW9uYWw6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGxhYmVsOiB7XG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGlzRXhwYW5kZWQgPSByZWYocHJvcHMuaXNFeHBhbmRlZEluaXRpYWwpO1xuXG4gIGxldCBhY2NvcmRpb25Cb2R5ID0gcmVmKCk7XG5cbiAgY29uc3QgdG9nZ2xlSXNFeHBhbmRlZCA9ICgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gYWNjb3JkaW9uQm9keS52YWx1ZSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlzRXhwYW5kZWQudmFsdWUgPSAhaXNFeHBhbmRlZC52YWx1ZTtcblxuICAgIGVsZW1lbnQuc3R5bGUuZ3JpZFRlbXBsYXRlUm93cyA9IGlzRXhwYW5kZWQudmFsdWUgPyAnMWZyJyA6ICcwZnInO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFjY29yZGlvbkJvZHkudmFsdWUgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBlbGVtZW50LnN0eWxlLmdyaWRUZW1wbGF0ZVJvd3MgPSBpc0V4cGFuZGVkLnZhbHVlID8gJzFmcicgOiAnMGZyJztcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidGlkZS1hY2NvcmRpb24taXRlbVwiPlxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwicHJvcHMuaGFzVG9wRGl2aWRlclwiIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgIEBjbGljaz1cInRvZ2dsZUlzRXhwYW5kZWRcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRURdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxUaWRlSW5kaWNhdG9yIHYtaWY9XCJwcm9wcy5pc0FjdGl2ZVwiIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uIDppY29uPVwiaXNFeHBhbmRlZCA/IElDT04uRVhQQU5EX0xFU1MgOiBJQ09OLkVYUEFORF9NT1JFXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24tYm9keScsIENTUy5ESVNQTEFZLkdSSURdXCJcbiAgICAgIHJlZj1cImFjY29yZGlvbkJvZHlcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5PVkVSRkxPVy5ZLkhJRERFTl1cIj5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5ZLk9ORSwgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBFTEVNRU5UID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9URVhUX0FTX0lDT04gPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIERJVjogJ2RpdicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnQgPSAodHlwZW9mIEVMRU1FTlQpW2tleW9mIHR5cGVvZiBFTEVNRU5UXTtcbmV4cG9ydCB0eXBlIEVsZW1lbnRUZXh0QXNJY29uID0gKHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTilba2V5b2YgdHlwZW9mIEVMRU1FTlRfVEVYVF9BU19JQ09OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IFBSSU9SSVRZID0ge1xuICBQUklNQVJZOiAncHJpbWFyeScsXG4gIFNFQ09OREFSWTogJ3NlY29uZGFyeScsXG4gIFRFUlRJQVJZOiAndGVydGlhcnknLFxuICBRVUFURVJOQVJZOiAncXVhdGVybmFyeScsXG4gIEZMT0FUSU5HOiAnZmxvYXRpbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUHJpb3JpdHkgPSAodHlwZW9mIFBSSU9SSVRZKVtrZXlvZiB0eXBlb2YgUFJJT1JJVFldO1xuIiwiZXhwb3J0IGNvbnN0IFRBUkdFVCA9IHtcbiAgQkxBTks6ICdfYmxhbmsnLFxuICBTRUxGOiB1bmRlZmluZWQsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSAodHlwZW9mIFRBUkdFVClba2V5b2YgdHlwZW9mIFRBUkdFVF07XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgQWxlcnQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gICAgaXNUb2FzdD86IGJvb2xlYW47XG4gICAgdHlwZT86IEFsZXJ0O1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGljb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGljb246IEljb24gPSBJQ09OLlZJRVdfSU5fQVI7XG5cbiAgICBzd2l0Y2ggKHByb3BzLnR5cGUpIHtcbiAgICAgIGNhc2UgQUxFUlQuRVJST1I6XG4gICAgICAgIGljb24gPSBJQ09OLkVSUk9SO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlIEFMRVJULklORk86XG4gICAgICAgIGljb24gPSBJQ09OLklORk87XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5TVUNDRVNTOlxuICAgICAgICBpY29uID0gSUNPTi5DSEVDSztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFMRVJULldBUk5JTkc6XG4gICAgICAgIGljb24gPSBJQ09OLldBUk5JTkc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBpY29uO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5TVVJGQUNFLkVSUk9SLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuU1VSRkFDRS5JTkZPLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuU1VSRkFDRS5TVUNDRVNTLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuU1VSRkFDRS5XQVJOSU5HLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IENTUy5TSEFET1cuQk9UVE9NIDogJycsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1pY29uJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgcHJvcHMudHlwZSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuSEFMRixcbiAgICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0UsXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkVSUk9SLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gJiYgQ1NTLkJHLklORk8sXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuU1VDQ0VTUyxcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5XQVJOSU5HLFxuICAgICAgICBdXCJcbiAgICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1oZWFkaW5nJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5TSVhURUVOLCBDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRUQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgICAgPC9oMj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWNsb3NlJywgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgQkFER0UgPSB7XG4gIEpVU1RfTElTVEVEOiAnSnVzdCBsaXN0ZWQnLFxuICBOQVRJT05XSURFOiAnTmF0aW9ud2lkZScsXG4gIFJFRFVDRUQ6ICdSZWR1Y2VkJyxcbiAgVVBEQVRFRDogJ1VwZGF0ZWQnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1BSRU1JVU0gPSB7XG4gIFBSRU1JVU06ICdQcmVtaXVtJyxcbiAgUFJFTUlVTV9TRUxFQ1Q6ICdQcmVtaXVtIFNFTEVDVCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFER0VfVFJVU1RFRCA9IHtcbiAgWUVBUlNfMTA6ICcxMCcsXG4gIFlFQVJTXzE1OiAnMTUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZSA9ICh0eXBlb2YgQkFER0UpW2tleW9mIHR5cGVvZiBCQURHRV07XG5leHBvcnQgdHlwZSBCYWRnZVByZW1pdW0gPSAodHlwZW9mIEJBREdFX1BSRU1JVU0pW2tleW9mIHR5cGVvZiBCQURHRV9QUkVNSVVNXTtcbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBvblVwZGF0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzVG91Y2hzY3JlZW4/OiBib29sZWFuO1xuICAgIG9mZnNldFg/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXRYOiAwLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgbGV0IGNvbnRlbnRXaWR0aCA9IHJlZigpO1xuICBsZXQgZnJhbWVXaWR0aCA9IHJlZigpO1xuICBsZXQgaGFzT3ZlcmZsb3cgPSByZWYoKTtcbiAgbGV0IGxhc3RQb3NpdGlvbiA9IHJlZigpO1xuXG4gIGNvbnN0IGNvbnRlbnRSZWYgPSByZWYoKTtcbiAgY29uc3QgZnJhbWVSZWYgPSByZWYoKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWYoKTtcbiAgY29uc3QgY3VycmVudFNsaWRlID0gcmVmKDApO1xuXG4gIGNvbnN0IGdhcCA9IDE2O1xuXG4gIC8qKlxuICAgKiBNZWFzdXJlIHRoZSBjdXJyZW50IHNsaWRlIGJhc2VkIG9uIHRoZSBzY3JvbGxcbiAgICogcG9zaXRpb24gb2YgdGhlIGZyYW1lLiBUaGUgY3VycmVudCBzbGlkZSBpc1xuICAgKiB0aGUgc2xpZGUgdGhhdCBpcyBjbG9zZXN0IHRvIHRoZSBsZWZ0IGVkZ2Ugb2ZcbiAgICogdGhlIGZyYW1lLlxuICAgKi9cbiAgY29uc3QgbWVhc3VyZUN1cnJlbnRTbGlkZSA9ICgpID0+IHtcbiAgICAvLyBnZXQgbGVmdCBvZmZzZXRzIG9mIGVhY2ggc2xpZGVcbiAgICBjb25zdCBzbGlkZU9mZnNldHMgPSBBcnJheS5mcm9tKGNvbnRlbnRSZWYudmFsdWUuY2hpbGRyZW4pLm1hcCgoc2xpZGU6IGFueSkgPT4gc2xpZGUub2Zmc2V0TGVmdCk7XG5cbiAgICBpZiAoc2xpZGVPZmZzZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gZ2V0IHZhbHVlIGNsb3Nlc3QgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb25cbiAgICBjb25zdCBjbG9zZXN0U2xpZGVPZmZzZXQgPSBzbGlkZU9mZnNldHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5hYnMoY3VyciAtIGZyYW1lUmVmLnZhbHVlLnNjcm9sbExlZnQpIDwgTWF0aC5hYnMocHJldiAtIGZyYW1lUmVmLnZhbHVlLnNjcm9sbExlZnQpID8gY3VyciA6IHByZXY7XG4gICAgfSk7XG5cbiAgICAvLyBzZXQgY3VycmVudCBzbGlkZSB0byBpbmRleCBvZiBjbG9zZXN0IHNsaWRlXG4gICAgY3VycmVudFNsaWRlLnZhbHVlID0gc2xpZGVPZmZzZXRzLmluZGV4T2YoY2xvc2VzdFNsaWRlT2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBtZWFzdXJlRG9tID0gKCkgPT4ge1xuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRlbnRSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgZnJhbWVXaWR0aC52YWx1ZSA9IGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIGhhc092ZXJmbG93LnZhbHVlID0gY29udGVudFdpZHRoLnZhbHVlID4gZnJhbWVXaWR0aC52YWx1ZTtcbiAgICBsYXN0UG9zaXRpb24udmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxXaWR0aCAtIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIHNob3dCdXR0b25zLnZhbHVlID0gaGFzT3ZlcmZsb3cudmFsdWUgJiYgIXByb3BzLmlzVG91Y2hzY3JlZW47XG5cbiAgICBtZWFzdXJlQ3VycmVudFNsaWRlKCk7XG4gIH07XG5cbiAgLy8gVE9ETzogZGVib3VuY2UgdGhpc1xuICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTY3JvbGxzIHRvIHRoZSBzbGlkZSBhdCB0aGUgZ2l2ZW4gaW5kZXgsIG9yXG4gICAqIHRvIHRoZSBmaXJzdCBvciBsYXN0IHNsaWRlIGlmIHRoZSBnaXZlbiBpbmRleFxuICAgKiBpcyBvdXQgb2YgYm91bmRzLlxuICAgKiBAcGFyYW0gc2xpZGVJbmRleCBUaGUgaW5kZXggb2YgdGhlIHNsaWRlIHRvIHNjcm9sbCB0b1xuICAgKi9cbiAgY29uc3Qgc2Nyb2xsVG9TbGlkZSA9IChzbGlkZUluZGV4OiBudW1iZXIpID0+IHtcbiAgICBmcmFtZVJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiBjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuW3NsaWRlSW5kZXhdLm9mZnNldExlZnQsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRTbGlkZSA9ICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSBjb250ZW50UmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGNvbnN0IGNvbnRlbnRSaWdodEVkZ2UgPSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0ICsgZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG5cbiAgICBpZiAoY29udGVudFJpZ2h0RWRnZSA+IGNvbnRlbnRXaWR0aCkge1xuICAgICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGxlZnQ6IGNvbnRlbnRXaWR0aCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpc0ZpcnN0U2xpZGVXaXRoT2Zmc2V0ID0gcHJvcHMub2Zmc2V0WCAmJiBjdXJyZW50U2xpZGUudmFsdWUgPT09IDA7XG4gICAgICBjb25zdCBpc0xhc3RTbGlkZSA9IGNvbnRlbnRSaWdodEVkZ2UgPT09IGNvbnRlbnRXaWR0aDtcbiAgICAgIGNvbnN0IG5leHRTbGlkZSA9IGlzTGFzdFNsaWRlID8gMCA6IGlzRmlyc3RTbGlkZVdpdGhPZmZzZXQgPyAyIDogY3VycmVudFNsaWRlLnZhbHVlICsgMTtcblxuICAgICAgc2Nyb2xsVG9TbGlkZShuZXh0U2xpZGUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBjb25zdCBmaXJzdFNsaWRlID0gcHJvcHMub2Zmc2V0WCA/IDEgOiAwO1xuICAgIGNvbnN0IGlzRmlyc3RTbGlkZSA9IGN1cnJlbnRTbGlkZS52YWx1ZSAtIDEgPT09IGZpcnN0U2xpZGU7XG4gICAgY29uc3QgaXNTZWNvbmRTbGlkZSA9IGN1cnJlbnRTbGlkZS52YWx1ZSA8PSBmaXJzdFNsaWRlO1xuICAgIGNvbnN0IHByZXZpb3VzU2xpZGUgPSBpc1NlY29uZFNsaWRlXG4gICAgICA/IGNvbnRlbnRSZWYudmFsdWUuY2hpbGRyZW4ubGVuZ3RoIC0gMVxuICAgICAgOiBpc0ZpcnN0U2xpZGVcbiAgICAgID8gMFxuICAgICAgOiBjdXJyZW50U2xpZGUudmFsdWUgLSAxO1xuXG4gICAgc2Nyb2xsVG9TbGlkZShwcmV2aW91c1NsaWRlKTtcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gIH0pO1xuXG4gIG9uVXBkYXRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9KTtcblxuICB3YXRjaChjdXJyZW50U2xpZGUsICgpID0+IHtcbiAgICBlbWl0KCdjaGFuZ2UnLCBjdXJyZW50U2xpZGUudmFsdWUpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLWNhcm91c2VsJywgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgIHJlZj1cImNhcm91c2VsUmVmXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuU0NST0xMQkFSLk9GRiwgQ1NTLlNOQVAuT04sIENTUy5PVkVSRkxPVy5YLlNDUk9MTF1cIlxuICAgICAgcmVmPVwiZnJhbWVSZWZcIlxuICAgICAgQHNjcm9sbD1cImhhbmRsZVNjcm9sbFwiXG4gICAgPlxuICAgICAgPHVsXG4gICAgICAgIDpjbGFzcz1cIltwcm9wcy5pc1RvdWNoc2NyZWVuID8gW0NTUy5PVkVSRkxPVy5YLkFVVE9dIDogJycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5HQVAuT05FLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIlxuICAgICAgICByZWY9XCJjb250ZW50UmVmXCJcbiAgICAgID5cbiAgICAgICAgPGxpXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5TTkFQX0FMSUdOLlNUQVJUXVwiXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7cHJvcHMub2Zmc2V0WCAtIGdhcH1weGAgfVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLm9mZnNldFhcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzbG90IC8+XG5cbiAgICAgICAgPGxpXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5TTkFQX0FMSUdOLlNUQVJUXVwiXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7cHJvcHMub2Zmc2V0WCAtIGdhcH1weGAgfVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLm9mZnNldFhcIlxuICAgICAgICAvPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgIF1cIlxuICAgICAgdi1pZj1cInNob3dCdXR0b25zXCJcbiAgICA+XG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgIEBjbGljaz1cInNob3dQcmV2aW91c1NsaWRlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdD86IHN0cmluZztcbiAgICBjZG4/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgc3JjPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBjZG46IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2Zmc2V0OiAwLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0aWRlSW1hZ2UgPSByZWYoKTtcblxuICBjb25zdCBpbWFnZURlZmF1bHQgPSBgJHtwcm9wcy5jZG59L2ltYWdlLWNvbWluZy1zb29uLTUxMi5wbmdgO1xuXG4gIGNvbnN0IHNldEltYWdlRnJvbURlZmF1bHQgPSAoKSA9PiB7XG4gICAgdGlkZUltYWdlLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgfTtcblxuICBkZWZpbmVFeHBvc2UodGlkZUltYWdlLnZhbHVlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxpbWdcbiAgICA6YWx0PVwiYWx0XCJcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UnLCBDU1MuT0JKRUNULkNFTlRFUiwgQ1NTLk9CSkVDVC5DT1ZFUl1cIlxuICAgIDpsb2FkaW5nPVwiaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgcmVmPVwidGlkZUltYWdlXCJcbiAgICA6c3JjPVwic3JjID8/IGltYWdlRGVmYXVsdFwiXG4gICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gIC8+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICBjb25zdCB1bmlxdWVJZCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5pbnB1dElkID8gcHJvcHMuaW5wdXRJZCA6IGB0ZXh0LWlucHV0LSR7Z2V0Q3VycmVudEluc3RhbmNlKCk/LnVpZCB8fCAnJ31gKSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuY2hlY2tlZCxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSBjaGVja2VkLnZhbHVlKSB7XG4gICAgICAgIGNoZWNrZWQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpbycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJ11cIj5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiY2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgY2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIHByb3BzLmNoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJDU1MuRk9OVC5XRUlHSFQuRk9VUl9IVU5EUkVEXCJcbiAgICAgIDpmb3I9XCJ1bmlxdWVJZFwiXG4gICAgPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gICAgaGVpZ2h0OiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxcmVtO1xuICAgIGhlaWdodDogMXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBSYW5nZURhdGEgfSBmcm9tICdAL3R5cGVzL0ZhY2V0UmFuZ2UnO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24gfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG5pbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuZXhwb3J0IGNvbnN0IG5vRXJyb3IgPSB7XG4gIG1lc3NhZ2U6ICcnLFxuICB2YWxpZDogdHJ1ZSxcbn0gYXMgUmVhZG9ubHk8VmFsaWRhdGlvblJlc3VsdD47XG5cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCkgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gbm9FcnJvcjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEhhc0Vycm9yID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PlxuICBlcnJvckZyb21Qcm9wcyAhPT0gZmFsc2UgfHwgZXJyb3JGcm9tUmVmICE9PSBmYWxzZTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcblxuICByZXR1cm4gIWlzVG9vU2hvcnQgJiYgIWlzVG9vTG9uZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5SYW5nZUlzVmFsaWQgPSAoeyBtYXggfTogUGljazxSYW5nZURhdGEsICdtYXgnPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01pbjogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWluID0gIWlzTmFOKG5ld01pbikgPyBuZXdNaW4gOiBudWxsO1xuICAgIGlmIChtYXggJiYgbmV3TWluKSB7XG4gICAgICBpZiAobmV3TWluIDw9IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBsZXNzIHRoYW4gbWF4YCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RPcHRpb25zRnJvbVN0cmluZ3MgPSAoc3RyaW5nczogc3RyaW5nW10pID0+XG4gIHN0cmluZ3MubWFwKFxuICAgIChvcHRpb24pID0+XG4gICAgICAoe1xuICAgICAgICBsYWJlbDogb3B0aW9uLFxuICAgICAgICB2YWx1ZTogb3B0aW9uLFxuICAgICAgfSBhcyBTZWxlY3RPcHRpb24pXG4gICk7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlOiBSZWY8c3RyaW5nPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZS52YWx1ZSwgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aFZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHtcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbHVlLFxufTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICByZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gJHttaW5sZW5ndGh9IGFuZCAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIG1vcmUgdGhhbiAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIGxlc3MgdGhhbiAke21pbmxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgZ2V0Q3VycmVudEluc3RhbmNlLCBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGQnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IGdldEZpZWxkSGFzRXJyb3IsIGdldEVycm9yTWVzc2FnZSB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGludGVyZmFjZSBQcm9wcyBleHRlbmRzIFNlbGVjdEZpZWxkIHtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyk7XG5cbiAgY29uc3QgdW5pcXVlSWQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuaW5wdXRJZCA/IHByb3BzLmlucHV0SWQgOiBgdGV4dC1pbnB1dC0ke2dldEN1cnJlbnRJbnN0YW5jZSgpPy51aWQgfHwgJyd9YCkpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgaW5wdXQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuU0laRS5UV0VMVkVdIDogQ1NTLkZPTlQuU0laRS5TSVhURUVOLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5CT1RUT00uSEFMRiwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTUFSR0lOLkxFRlQuT05FXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlRXRUxWRSwgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRF1cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itb24tc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVEVYVF9JTlBVVF9UWVBFID0ge1xuICBEQVRFOiAnZGF0ZScsXG4gIERBVEVUSU1FX0xPQ0FMOiAnZGF0ZXRpbWUtbG9jYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTU9OVEg6ICdtb250aCcsXG4gIE5VTUJFUjogJ251bWJlcicsXG4gIFBBU1NXT1JEOiAncGFzc3dvcmQnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFRJTUU6ICd0aW1lJyxcbiAgVVJMOiAndXJsJyxcbiAgV0VFSzogJ3dlZWsnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0VHlwZSA9ICh0eXBlb2YgVEVYVF9JTlBVVF9UWVBFKVtrZXlvZiB0eXBlb2YgVEVYVF9JTlBVVF9UWVBFXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBnZXRDdXJyZW50SW5zdGFuY2UsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCB0eXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGhhbmRsZVZhbGlkYXRpb24oKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMudHJhbnNmb3JtVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRpZ2l0cyA9IHZhbHVlLnZhbHVlLm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdXBkYXRlVmFsdWUsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIGhhc0NsZWFyID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCddXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMucHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgICAgQGNsaWNrLnByZXZlbnQ9XCJpbnB1dD8uZm9jdXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5TSVpFLlRXRUxWRV0gOiBDU1MuRk9OVC5TSVpFLlNJWFRFRU4sXG4gICAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRUQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgOmZvcj1cInVuaXF1ZUlkXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cInByb3BzLm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cInR5cGVcIlxuICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXRcIlxuICAgICAgICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHQtc3VmZml4JywgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCwgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0J11cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuUEFERElORy5GVUxMLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgLz5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5NQVJHSU4uTEVGVC5PTkVdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuVFdFTFZFLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVEXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgZ2V0Q3VycmVudEluc3RhbmNlLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRhdGFUcmFjazogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuU0laRS5UV0VMVkVdIDogQ1NTLkZPTlQuU0laRS5TSVhURUVOLFxuICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgIF1cIlxuICAgICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgICAgICByZWY9XCJsYWJlbFwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgIDpkYXRhLXRyYWNrPVwicHJvcHMuZGF0YVRyYWNrXCJcbiAgICAgICAgOm1heGxlbmd0aD1cInByb3BzLm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJwcm9wcy5yb3dzXCJcbiAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5NQVJHSU4uTEVGVC5PTkVdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlRXRUxWRSwgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRF1cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbjwvc3R5bGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaGFzSWNvbiA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmljb25MZWFkaW5nIHx8IHByb3BzLmljb25UcmFpbGluZyk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gJ3RpZGUtYnV0dG9uLWFzLWxpbmsnIDogJ3RpZGUtbGluaycsXG4gICAgICBoYXNJY29uXG4gICAgICAgID8gW0NTUy5ESVNQTEFZLklOTElORV9GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEZdXG4gICAgICAgIDogW0NTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVELCBDU1MuVU5ERVJMSU5FLk9OXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6aXM9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBFTEVNRU5ULkxJTksgOiBFTEVNRU5ULkJVVFRPTlwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVELCBDU1MuVU5ERVJMSU5FLk9OXVwiXG4gICAgICB2LWlmPVwiaGFzSWNvblwiXG4gICAgPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L2Rpdj5cblxuICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2xvc2UnXSk7XG5cbiAgY29uc3QgaXNPcGVuID0gcmVmKHByb3BzLmlzT3Blbik7XG4gIGNvbnN0IHNhdmVkU2Nyb2xsUG9zaXRpb24gPSByZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7IC8vIFRPRE86IHJlcGxhY2UgYm9keSBzY3JvbGwgbG9jayB3aXRoIGdsb2JhbCBzdHJ1Y3R1cmU/XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG5cbiAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgICBlbWl0KCdjbG9zZScsIGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVNb2RhbERpc3BsYXkgPSAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSAmJiB3aW5kb3cuc2Nyb2xsVG8oMCwgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSk7XG5cbiAgICAgIGFkZE9wZW5MaXN0ZW5lcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xuXG4gICAgICByZW1vdmVPcGVuTGlzdGVuZXJzKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBoYW5kbGVDbG9zZShldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzID0gKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaXNPcGVuLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgICB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgdG89XCJib2R5XCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1tb2RhbC13cmFwcGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNPcGVuID8gJ2FjdGl2ZScgOiBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWS5ISURERU4sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbC1iZycsIENTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTF1cIlxuICAgICAgICA6c3R5bGU9XCJ7ICctLXRpZGUtbW9kYWwtd2lkdGgnOiBwcm9wcy53aWR0aCB9XCJcbiAgICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVDbG9zZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbCcsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1oZWFkZXInLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkZPTlQuU0laRS5UV0VOVFksIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVEXVwiXG4gICAgICAgICAgICB2LWlmPVwidGl0bGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuVFdPXVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbG9zZVwiXG4gICAgICAgICAgICB0aXRsZT1cIkNsb3NlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VGlkZUljb24gOmljb249XCJJQ09OLkNMT1NFXCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwtY29udGVudCcsIENTUy5QQURESU5HLkZVTEwuVFdPLCBDU1MuT1ZFUkZMT1cuWS5BVVRPXVwiPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiJHNsb3RzLmZvb3RlclwiPlxuICAgICAgICAgIDxmb290ZXJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICAgICAgICAgIENTUy5QT1NJVElPTi5TVElDS1ksXG4gICAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgICBDU1MuR0FQLk9ORSxcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5UV08sXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgd2lkdGg6IHZhcigtLXRpZGUtbW9kYWwtd2lkdGgpO1xuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMnJlbSk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMnJlbSk7XG4gICAgYm94LXNoYWRvdzogMHB4IDEwcHggMjVweCAwcHggcmdiYSgxOCwgNDMsIDU4LCAwLjIpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDB2aCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XG4gIH1cblxuICAudGlkZS1tb2RhbC1iZyB7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tkcm9wLWZpbHRlciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC5hY3RpdmUgLnRpZGUtbW9kYWwge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIC5hY3RpdmUgLnRpZGUtbW9kYWwtYmcge1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgcGFnZUN1cnJlbnQ/OiBudW1iZXI7XG4gICAgcGFnZVRvdGFsPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgcGFnZUN1cnJlbnQ6IDEsXG4gICAgcGFnZVRvdGFsOiAxLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgcGFnZUN1cnJlbnQgPSByZWYocHJvcHMucGFnZUN1cnJlbnQpO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25CdXR0b25zID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFycmF5KHByb3BzLnBhZ2VUb3RhbCkuZmlsbCgnJykubWFwKChlbXB0eSwgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHBhZ2VDdXJyZW50LnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBwYWdlQ3VycmVudCAtIDEpXCJcbiAgICAvPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDprZXk9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJwYWdpbmF0aW9uQnV0dG9uIGluIHBhZ2luYXRpb25CdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAgICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpsYWJlbD1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBwYWdpbmF0aW9uQnV0dG9uKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uc1twYWdpbmF0aW9uQnV0dG9ucy5sZW5ndGggLSAxXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBwYWdlQ3VycmVudCArIDEpXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgVGFiIH0gZnJvbSAnQC90eXBlcy9UYWInO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFjdGl2ZVRhYkluaXRpYWw/OiBudW1iZXI7XG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhY3RpdmVUYWJJbml0aWFsOiAwLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgYWN0aXZlVGFiID0gcmVmKHByb3BzLmFjdGl2ZVRhYkluaXRpYWwpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGFjdGl2ZVRhYi52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS10YWJzJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdGFicy10YWInLFxuICAgICAgICBpbmRleCA9PT0gYWN0aXZlVGFiXG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRUQsXG4gICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgQGNsaWNrPVwiKGV2ZW50OiBFdmVudCkgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIGluZGV4KVwiXG4gICAgICB2LWZvcj1cIih0YWIsIGluZGV4KSBpbiBwcm9wcy50YWJzXCJcbiAgICA+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRURdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS10YWJzIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gIH1cblxuICAudGlkZS10YWJzLXRhYiB7XG4gICAgZmxleDogMTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAuaW5hY3RpdmU6bm90KDpob3Zlcikge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICAgIGRpc2FibGVkOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc0FjdGl2ZToge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IHJlZihwcm9wcy5pc0FjdGl2ZSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG5cbiAgICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpc0FjdGl2ZS52YWx1ZSk7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXRvZ2dsZScsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICdhY3RpdmUnIDogJycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnJyA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TRUNPTkRBUlkgOiBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgYXJpYS1sYWJlbD1cIlRvZ2dsZVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXRvZ2dsZS1pbmRpY2F0b3InLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCA6IENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtdG9nZ2xlIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtdG9nZ2xlOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjMyO1xuICB9XG5cbiAgLnRpZGUtdG9nZ2xlLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS10b2dnbGUuYWN0aXZlIC50aWRlLXRvZ2dsZS1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDM2cHg7XG4gIH1cblxuICAudGlkZS10b2dnbGUtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiA0cHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0LCBib3JkZXItY29sb3IsIGJhY2tncm91bmQtY29sb3I7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICBudW1iZXJGb3JtYXR0ZWQ6IC9eJHwoPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgcGhvbmU6IC9eKD86XFxkezN9LVxcZHszfS1cXGR7NH18XFxkezF9LVxcZHszfS1cXGR7M30tXFxkezR9KT8kLyxcbiAgcHJpY2U6IC8oPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbn07XG4iLCIvKipcbiAqIFRoZXNlIHNsaWRlcyBhcmUgdXNlZCBpbiBib3RoIHRoZSBpbmxpbmUgZGV0YWlsIHBhZ2UgcGhvdG8gc2xpZGVyXG4gKiBhbmQgdGhlIGZ1bGxzY3JlZW4gbWVkaWEgZ2FsbGVyeS5cbiAqL1xuXG5leHBvcnQgY29uc3QgTUVESUFfU0xJREVfVFlQRVMgPSB7XG4gIElNQUdFOiB7XG4gICAgRkxPT1JQTEFOOiAnZmxvb3JwbGFuJyxcbiAgICBJTUFHRTogJ2ltYWdlJyxcbiAgfSxcbiAgVklERU86ICd2aWRlbycsXG4gIFZSOiAndnInLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgTWVkaWFTbGlkZVR5cGUgPVxuICB8ICh0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuSU1BR0UpW2tleW9mIHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRV1cbiAgfCB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVklERU9cbiAgfCB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVlI7XG5cbmV4cG9ydCB0eXBlIEltYWdlU2xpZGVUeXBlID0gKHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRSlba2V5b2YgdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFXTtcblxudHlwZSBJbWFnZVNsaWRlID0ge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICB0eXBlOiBJbWFnZVNsaWRlVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIFZpZGVvU2xpZGVUeXBlID0gdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLlZJREVPO1xuXG50eXBlIFZpZGVvU2xpZGUgPSB7XG4gIGltYWdlVXJsOiBzdHJpbmc7XG4gIHR5cGU6IFZpZGVvU2xpZGVUeXBlO1xuICB2aWRlb1VybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVnJTbGlkZVR5cGUgPSB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVlI7XG5cbnR5cGUgVnJTbGlkZSA9IHtcbiAgaW1hZ2VVcmw6IHN0cmluZztcbiAgdHlwZTogVnJTbGlkZVR5cGU7XG4gIHZyVXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBMaXN0aW5nTWVkaWEgPSBJbWFnZVNsaWRlIHwgVmlkZW9TbGlkZSB8IFZyU2xpZGU7XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUDogJ2VxdWlwJyxcbiAgUFdDOiAncHdjJyxcbiAgUlY6ICdydicsXG4gIFNOT1c6ICdzbm93JyxcbiAgVFJVQ0s6ICd0cnVjaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW2tleW9mIHR5cGVvZiBSRUFMTV07XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsKSxcbiAgTlVNQkVSOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgubnVtYmVyRm9ybWF0dGVkKSxcbiAgUEhPTkU6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5waG9uZSksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcbiJdLCJuYW1lcyI6WyJCUkVBS1BPSU5UIiwiQ1NTIiwidXRpbGl0aWVzIiwiYnJlYWtwb2ludCIsInV0aWxpdHkiLCJPUklFTlRBVElPTiIsIlNJWkUiLCJmb3JtYXROdW1iZXIiLCJpbnB1dCIsIm91dHB1dCIsImRpZ2l0cyIsImZvcm1hdFBhc2NhbENhc2UiLCJ3b3JkIiwiZm9ybWF0UGhvbmUiLCJmb3JtYXRQcmljZSIsImlubmVyU1ZHIiwicmVmIiwid2F0Y2giLCJwcm9wcyIsImlkIiwibmFtZSIsImNvbXBvbmVudCIsImRlZmluZUFzeW5jQ29tcG9uZW50IiwiX192YXJpYWJsZUR5bmFtaWNJbXBvcnRSdW50aW1lSGVscGVyIiwibWFya1JhdyIsIklDT04iLCJpc0V4cGFuZGVkIiwiYWNjb3JkaW9uQm9keSIsInRvZ2dsZUlzRXhwYW5kZWQiLCJlbGVtZW50Iiwib25Nb3VudGVkIiwiRUxFTUVOVCIsIkVMRU1FTlRfVEVYVF9BU19JQ09OIiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJBTEVSVCIsImljb24iLCJjb21wdXRlZCIsIkJBREdFIiwiQkFER0VfUFJFTUlVTSIsIkJBREdFX1RSVVNURUQiLCJnYXAiLCJjb250ZW50V2lkdGgiLCJmcmFtZVdpZHRoIiwiaGFzT3ZlcmZsb3ciLCJsYXN0UG9zaXRpb24iLCJjb250ZW50UmVmIiwiZnJhbWVSZWYiLCJzaG93QnV0dG9ucyIsImN1cnJlbnRTbGlkZSIsIm1lYXN1cmVDdXJyZW50U2xpZGUiLCJzbGlkZU9mZnNldHMiLCJzbGlkZSIsImNsb3Nlc3RTbGlkZU9mZnNldCIsInByZXYiLCJjdXJyIiwibWVhc3VyZURvbSIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFRvU2xpZGUiLCJzbGlkZUluZGV4Iiwic2hvd05leHRTbGlkZSIsImNvbnRlbnRSaWdodEVkZ2UiLCJpc0ZpcnN0U2xpZGVXaXRoT2Zmc2V0IiwibmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJmaXJzdFNsaWRlIiwiaXNGaXJzdFNsaWRlIiwicHJldmlvdXNTbGlkZSIsIm9uVW5tb3VudGVkIiwib25VcGRhdGVkIiwiZW1pdCIsInRpZGVJbWFnZSIsImltYWdlRGVmYXVsdCIsInNldEltYWdlRnJvbURlZmF1bHQiLCJfX2V4cG9zZSIsImNoZWNrZWQiLCJ1bmlxdWVJZCIsIl9hIiwiZ2V0Q3VycmVudEluc3RhbmNlIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJub0Vycm9yIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJ2YWx1ZSIsInJlc3VsdCIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVByb3BzIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInJlcXVpcmVkIiwiaXNFbXB0eUFuZFVucmVxdWlyZWQiLCJpc1Rvb0xvbmciLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwiaGFzRm9jdXMiLCJlcnJvck1lc3NhZ2UiLCJmb3JtYXR0ZWRMYWJlbCIsImhhc0Vycm9yIiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJldmVudCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlRm9jdXNPdXQiLCJURVhUX0lOUFVUX1RZUEUiLCJzaG93UGFzc3dvcmQiLCJoYXNDbGVhciIsInR5cGUiLCJoYW5kbGVDbGVhciIsImhhbmRsZVZhbGlkYXRpb24iLCJoYW5kbGVJbnB1dCIsInVwZGF0ZVZhbHVlIiwiaGFzSWNvbiIsImlzT3BlbiIsInNhdmVkU2Nyb2xsUG9zaXRpb24iLCJoYW5kbGVDbG9zZSIsInVwZGF0ZU1vZGFsRGlzcGxheSIsImFkZE9wZW5MaXN0ZW5lcnMiLCJyZW1vdmVPcGVuTGlzdGVuZXJzIiwiaGFuZGxlS2V5RG93biIsInBhZ2VDdXJyZW50IiwicGFnaW5hdGlvbkJ1dHRvbnMiLCJlbXB0eSIsImluZGV4IiwiaGFuZGxlQ2xpY2siLCJhY3RpdmVUYWIiLCJpc0FjdGl2ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIk1FRElBX1NMSURFX1RZUEVTIiwiUkVBTE0iLCJWQUxJREFUT1IiXSwibWFwcGluZ3MiOiI7QUFFTyxNQUFNQSxLQUFhO0FBQUEsRUFDeEIsSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUFBLEVBQ0osSUFBSTtBQUNOLEdBSWFDLElBQU07QUFBQSxFQUNqQixnQkFBZ0IsQ0FBQ0MsR0FBcUJDLE1BQzdCRCxFQUFVLElBQUksQ0FBQ0UsTUFBWSxHQUFHRCxDQUFVLElBQUlDLENBQU8sRUFBRTtBQUFBLEVBRTlELE9BQU87QUFBQSxJQUNMLEdBQUc7QUFBQSxNQUNELFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsSUFDVjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsSUFBSTtBQUFBLElBQ0YsTUFBTTtBQUFBLElBQ04sT0FBTztBQUFBLElBQ1AsTUFBTTtBQUFBLElBQ04sU0FBUztBQUFBLElBQ1QsV0FBVztBQUFBLElBQ1gsU0FBUztBQUFBLElBQ1QsU0FBUztBQUFBLE1BQ1AsUUFBUTtBQUFBLE1BQ1IsZ0JBQWdCO0FBQUEsTUFDaEIsT0FBTztBQUFBLE1BQ1AsU0FBUztBQUFBLE1BQ1QsT0FBTztBQUFBLE1BQ1AsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLElBQ1g7QUFBQSxJQUNBLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxVQUFVO0FBQUEsTUFDVixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsSUFDWDtBQUFBLElBQ0EsUUFBUTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUNQ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Q1I7QUFBQSxFQUNBLFdBQVc7QUFBQSxJQUNULFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxjQUFjO0FBQUEsSUFDWixLQUFLO0FBQUEsRUFDUDtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sUUFBUTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFDUjtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixTQUFTO0FB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QSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sSUFBSSxTQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxTQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLFNBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLE1BQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxPQUFPLFNBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssU0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLE1BQ2xCQSxFQUFJLE9BQU8sT0FBTyxTQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEtBQUssU0FDakJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLEVBQUUsU0FDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsSUFBSSxTQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsRUFBRSxTQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxNQUFNLFNBQ2xCQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLE9BQU8sU0FDbkJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsS0FBSyxTQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLE1BQU0sVUFDVkEsRUFBSSxNQUFNLE1BQ1ZBLEVBQUksTUFBTSxNQUNWQSxFQUFJLE9BQU8sTUFDWEEsRUFBSSxPQUFPLE1BQ1hBLEVBQUksTUFBTSxFQUFFLFFBQ1pBLEVBQUksWUFDSkEsRUFBSSxPQUFPLGFBQ1hBLEVBQUksT0FBTyxTQUNYQSxFQUFJLE9BQU8sTUFDWEEsRUFBSSxLQUFLLEtBQUssUUFDZEEsRUFBSSxLQUFLLEtBQUssVUFDZEEsRUFBSSxLQUFLLEtBQUssU0FDZEEsRUFBSSxLQUFLLEtBQUssUUFDZEEsRUFBSSxLQUFLLEtBQUssYUFDZEEsRUFBSSxLQUFLLEtBQUssWUFDZEEsRUFBSSxLQUFLLE9BQU8sY0FDaEJBLEVBQUksS0FBSyxPQUFPLGNBQ2hCQSxFQUFJLEtBQUssT0FBTyxhQUNoQkEsRUFBSSxLQUFLLE9BQU8sZUFDaEJBLEVBQUksYUFBYSxLQUNqQkEsRUFBSSxPQUFPLFFBQ1hBLEVBQUksT0FBTyxTQUNYQSxFQUFJLE9BQU8sT0FDWEEsRUFBSSxPQUFPLFlBQ1hBLEVBQUksZUFBZSxJQUNuQkEsRUFBSSxlQUFlLEtBQ25CQSxFQUFJLFVBQVUsS0FDZEEsRUFBSSxPQUFPLFFBQ1hBLEVBQUksT0FBTyxLQUNYQSxFQUFJLEtBQUssSUFDVEEsRUFBSSxXQUFXLE9BQ2ZBLEVBQUksTUFBTSxFQUFFLE1BQ1pBLEVBQUksTUFBTSxFQUFFLFFBQ1pBLEVBQUksTUFBTSxFQUFFLE9BQ1pBLEVBQUksZUFBZSxPQUNuQkEsRUFBSSxlQUFlLE1BQ25CQSxFQUFJLGVBQWUsT0FDbkJBLEVBQUksVUFBVSxPQUNkQSxFQUFJLFVBQVUsS0FDZEEsRUFBSSxVQUFVLElBQ2RBLEVBQUksV0FBVyxJQUNmQSxFQUFJLFdBQVcsS0FDZkEsRUFBSSxnQkFBZ0IsS0FDcEJBLEVBQUksU0FBUyxHQUFHLE1BQ2hCQSxFQUFJLFNBQVMsR0FBRyxRQUNoQkEsRUFBSSxTQUFTLEVBQUUsTUFDZkEsRUFBSSxTQUFTLEVBQUUsUUFDZkEsRUFBSSxTQUFTLEVBQUUsUUFDZkEsRUFBSSxTQUFTLEVBQUUsTUFDZkEsRUFBSSxTQUFTLEVBQUUsUUFDZkEsRUFBSSxRQUFRO0FDamxCUCxNQUFNSSxLQUFjO0FBQUEsRUFDekIsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUNaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDSGFDLElBQU87QUFBQSxFQUNsQixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQ1QsR0MrQk1DLEtBQWUsQ0FBQ0MsTUFBbUM7QUFDdkQsTUFBSUMsSUFBU0QsS0FBUyxPQUFPQSxLQUFVLFdBQVcsSUFBSSxLQUFLLGFBQWEsRUFBRSxPQUFPQSxDQUFLLElBQUksT0FBT0EsS0FBUyxFQUFFLEdBQ3hHRSxJQUFTRDtBQUVULFNBQUFELEtBQVMsT0FBT0EsS0FBVSxhQUNuQkUsSUFBQUEsRUFBTyxRQUFRLE9BQU8sRUFBRSxHQUM3QixPQUFPQSxDQUFNLElBQ2ZELElBQVMsSUFBSSxLQUFLLGFBQUEsRUFBZSxPQUFPLE9BQU9DLENBQU0sQ0FBQyxJQUU3Q0QsSUFBQSxNQUlOQTtBQUNULEdBRU1FLEtBQW1CLENBQUNILE1BQ2pCQSxLQUFTLE9BQU9BLEtBQVUsV0FDN0JBLEVBQ0csUUFBUSx5QkFBeUIsT0FBTyxFQUN4QyxRQUFRLFdBQVcsR0FBRyxFQUN0QixZQUFBLEVBQ0EsTUFBTSxHQUFHLEVBQ1QsSUFBSSxDQUFDSSxNQUFTQSxFQUFLLE1BQU0sR0FBRyxDQUFDLEVBQUUsWUFBQSxJQUFnQkEsRUFBSyxNQUFNLENBQUMsQ0FBQyxFQUM1RCxLQUFLLEVBQUUsSUFDVkosR0FHQUssS0FBYyxDQUFDTCxNQUFtQztBQUNsRCxNQUFBQyxJQUE4QyxPQUFyQ0QsS0FBUyxPQUFPQSxLQUFVLFdBQWtCQSxJQUFnQkEsS0FBUyxFQUFwQixHQUMxREUsSUFBU0Q7QUFHYixVQUZTQyxJQUFBQSxFQUFPLFFBQVEsT0FBTyxFQUFFLEdBRXpCQSxFQUFPLFFBQVE7QUFBQSxJQUNyQixLQUFLO0FBQ00sTUFBQUQsSUFBQSxHQUFHQyxFQUFPLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSUEsRUFBTyxNQUFNLENBQUMsQ0FBQztBQUNqRDtBQUFBLElBQ0YsS0FBSztBQUNILE1BQUFELElBQVMsR0FBR0MsRUFBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUlBLEVBQU8sTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJQSxFQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZFO0FBQUEsSUFDRixLQUFLO0FBQ00sTUFBQUQsSUFBQSxHQUFHQyxFQUFPLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSUEsRUFBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUlBLEVBQU8sTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJQSxFQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQzdGO0FBQUEsSUFDRjtBQUNXLE1BQUFELElBQUFDO0FBQ1Q7QUFBQSxFQUNKO0FBRU8sU0FBQUQ7QUFDVCxHQUVNSyxLQUFjLENBQUNOLE1BRVosSUFEUUEsSUFBUUQsR0FBYUMsQ0FBSyxJQUFJLE9BQU9BLEtBQVMsR0FBRyxDQUMvQzs7Ozs7OztpQkNuRVhPLElBQVdDO0FBRWpCLFdBQUFDO0FBQUEsTUFDRSxNQUFNQyxFQUFNO0FBQUEsTUFDWixNQUFNO0FBQ0osY0FBTUMsSUFBS0QsRUFBTSxNQUNYRSxJQUFPVCxHQUFpQlEsQ0FBRSxHQUMxQkUsSUFBWUMsR0FBcUIsTUFBTUMsbzFOQUE2QywyQkFBQUgsQ0FBQSxNQUFBLENBQUE7QUFFakYsUUFBQUwsRUFBQSxRQUFRUyxHQUFRSCxDQUFTO0FBQUEsTUFDcEM7QUFBQSxNQUNBLEVBQUUsV0FBVyxHQUFLO0FBQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NFQy9CVEksSUFBTztBQUFBLEVBQ2xCLGlCQUFpQjtBQUFBLEVBQ2pCLEtBQUs7QUFBQSxFQUNMLGdCQUFnQjtBQUFBLEVBQ2hCLGFBQWE7QUFBQSxFQUNiLFdBQVc7QUFBQSxFQUNYLFlBQVk7QUFBQSxFQUNaLGVBQWU7QUFBQSxFQUNmLGFBQWE7QUFBQSxFQUNiLFlBQVk7QUFBQSxFQUNaLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFBQSxFQUNWLGdCQUFnQjtBQUFBLEVBQ2hCLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLGNBQWM7QUFBQSxFQUNkLGVBQWU7QUFBQSxFQUNmLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLGdCQUFnQjtBQUFBLEVBQ2hCLGFBQWE7QUFBQSxFQUNiLGFBQWE7QUFBQSxFQUNiLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLGlCQUFpQjtBQUFBLEVBQ2pCLGFBQWE7QUFBQSxFQUNiLGVBQWU7QUFBQSxFQUNmLHNCQUFzQjtBQUFBLEVBQ3RCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFlBQVk7QUFBQSxFQUNaLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxFQUNOLGFBQWE7QUFBQSxFQUNiLFdBQVc7QUFBQSxFQUNYLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLFdBQVc7QUFBQSxFQUNYLGdCQUFnQjtBQUFBLEVBQ2hCLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxFQUNOLFlBQVk7QUFBQSxFQUNaLGVBQWU7QUFBQSxFQUNmLGFBQWE7QUFBQSxFQUNiLFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLGNBQWM7QUFBQSxFQUNkLFdBQVc7QUFBQSxFQUNYLFlBQVk7QUFBQSxFQUNaLFFBQVE7QUFBQSxFQUNSLGlCQUFpQjtBQUFBLEVBQ2pCLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLGVBQWU7QUFBQSxFQUNmLEtBQUs7QUFBQSxFQUNMLE1BQU07QUFBQSxFQUNOLFdBQVc7QUFBQSxFQUNYLGtCQUFrQjtBQUFBLEVBQ2xCLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFlBQVk7QUFBQSxFQUNaLFlBQVk7QUFBQSxFQUNaLFlBQVk7QUFBQSxFQUNaLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJDMUNRQyxJQUFhVixFQUFJRSxFQUFNLGlCQUFpQjtBQUU5QyxRQUFJUyxJQUFnQlg7QUFFcEIsVUFBTVksSUFBbUIsTUFBTTtBQUM3QixZQUFNQyxJQUFVRixFQUFjO0FBRW5CLE1BQUFELEVBQUEsUUFBUSxDQUFDQSxFQUFXLE9BRS9CRyxFQUFRLE1BQU0sbUJBQW1CSCxFQUFXLFFBQVEsUUFBUTtBQUFBLElBQUE7QUFHOUQsV0FBQUksR0FBVSxNQUFNO0FBQ2QsWUFBTUQsSUFBVUYsRUFBYztBQUU5QixNQUFBRSxFQUFRLE1BQU0sbUJBQW1CSCxFQUFXLFFBQVEsUUFBUTtBQUFBLElBQUEsQ0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzRUMxRFVLLElBQVU7QUFBQSxFQUNyQixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQ1IsR0FFYUMsSUFBdUI7QUFBQSxFQUNsQyxRQUFRO0FBQUEsRUFDUixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQ1IsR0NQYUMsSUFBVztBQUFBLEVBQ3RCLFNBQVM7QUFBQSxFQUNULFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ1JhQyxJQUFTO0FBQUEsRUFDcEIsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUNSOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDSGFDLElBQVE7QUFBQSxFQUNuQixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQ1g7Ozs7Ozs7O2lCQ29CUUMsSUFBT0MsRUFBUyxNQUFNO0FBQzFCLFVBQUlELElBQWFYLEVBQUs7QUFFdEIsY0FBUVAsRUFBTSxNQUFNO0FBQUEsUUFDbEIsS0FBS2lCLEVBQU07QUFDVEMsVUFBQUEsSUFBT1gsRUFBSztBQUNaO0FBQUEsUUFDRjtBQUFBLFFBQ0EsS0FBS1UsRUFBTTtBQUNUQyxVQUFBQSxJQUFPWCxFQUFLO0FBQ1o7QUFBQSxRQUNGLEtBQUtVLEVBQU07QUFDVEMsVUFBQUEsSUFBT1gsRUFBSztBQUNaO0FBQUEsUUFDRixLQUFLVSxFQUFNO0FBQ1RDLFVBQUFBLElBQU9YLEVBQUs7QUFDWjtBQUFBLE1BQ0o7QUFFT1csYUFBQUE7QUFBQUEsSUFBQSxDQUNSOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQzdDVUUsS0FBUTtBQUFBLEVBQ25CLGFBQWE7QUFBQSxFQUNiLFlBQVk7QUFBQSxFQUNaLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFDWCxHQUVhQyxLQUFnQjtBQUFBLEVBQzNCLFNBQVM7QUFBQSxFQUNULGdCQUFnQjtBQUNsQixHQUVhQyxLQUFnQjtBQUFBLEVBQzNCLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ2FRQyxLQUFNOzs7Ozs7Ozs7QUFWWixRQUFJQyxJQUFlMUIsS0FDZjJCLElBQWEzQixLQUNiNEIsSUFBYzVCLEtBQ2Q2QixJQUFlN0I7QUFFbkIsVUFBTThCLElBQWE5QixLQUNiK0IsSUFBVy9CLEtBQ1hnQyxJQUFjaEMsS0FDZGlDLElBQWVqQyxFQUFJLENBQUMsR0FVcEJrQyxJQUFzQixNQUFNO0FBRTFCLFlBQUFDLElBQWUsTUFBTSxLQUFLTCxFQUFXLE1BQU0sUUFBUSxFQUFFLElBQUksQ0FBQ00sTUFBZUEsRUFBTSxVQUFVO0FBRS9GLFVBQUlELEVBQWEsV0FBVztBQUFHO0FBRy9CLFlBQU1FLElBQXFCRixFQUFhLE9BQU8sQ0FBQ0csR0FBTUMsTUFDN0MsS0FBSyxJQUFJQSxJQUFPUixFQUFTLE1BQU0sVUFBVSxJQUFJLEtBQUssSUFBSU8sSUFBT1AsRUFBUyxNQUFNLFVBQVUsSUFBSVEsSUFBT0QsQ0FDekc7QUFHWSxNQUFBTCxFQUFBLFFBQVFFLEVBQWEsUUFBUUUsQ0FBa0I7QUFBQSxJQUFBLEdBR3hERyxJQUFhLE1BQU07QUFDVixNQUFBZCxFQUFBLFFBQVFJLEVBQVcsTUFBTSxhQUMzQkgsRUFBQSxRQUFRSSxFQUFTLE1BQU0sYUFDdEJILEVBQUEsUUFBUUYsRUFBYSxRQUFRQyxFQUFXLE9BQ3BERSxFQUFhLFFBQVFFLEVBQVMsTUFBTSxjQUFjQSxFQUFTLE1BQU0sYUFDakVDLEVBQVksUUFBUUosRUFBWSxTQUFTLENBQUMxQixFQUFNLGVBRTVCZ0M7SUFBQSxHQUloQk8sSUFBZSxNQUFNO0FBQ2QsTUFBQUQ7SUFBQSxHQVNQRSxJQUFnQixDQUFDQyxNQUF1QjtBQUM1QyxNQUFBWixFQUFTLE1BQU0sU0FBUztBQUFBLFFBQ3RCLFVBQVU7QUFBQSxRQUNWLE1BQU1ELEVBQVcsTUFBTSxTQUFTYSxDQUFVLEVBQUU7QUFBQSxNQUFBLENBQzdDO0FBQUEsSUFBQSxHQUdHQyxJQUFnQixNQUFNO0FBQ3BCbEIsWUFBQUEsSUFBZUksRUFBVyxNQUFNLGFBQ2hDZSxJQUFtQmQsRUFBUyxNQUFNLGFBQWFBLEVBQVMsTUFBTTtBQUVwRSxVQUFJYyxJQUFtQm5CO0FBQ3JCLFFBQUFLLEVBQVMsTUFBTSxTQUFTO0FBQUEsVUFDdEIsVUFBVTtBQUFBLFVBQ1YsTUFBTUw7QUFBQUEsUUFBQSxDQUNQO0FBQUEsV0FDSTtBQUNMLGNBQU1vQixJQUF5QjVDLEVBQU0sV0FBVytCLEVBQWEsVUFBVSxHQUVqRWMsS0FEY0YsTUFBcUJuQixJQUNULElBQUlvQixJQUF5QixJQUFJYixFQUFhLFFBQVE7QUFFdEYsUUFBQVMsRUFBY0ssRUFBUztBQUFBLE1BQ3pCO0FBQUEsSUFBQSxHQUdJQyxJQUFvQixNQUFNO0FBQ3hCLFlBQUFDLElBQWEvQyxFQUFNLFVBQVUsSUFBSSxHQUNqQ2dELElBQWVqQixFQUFhLFFBQVEsTUFBTWdCLEdBRTFDRSxJQURnQmxCLEVBQWEsU0FBU2dCLElBRXhDbkIsRUFBVyxNQUFNLFNBQVMsU0FBUyxJQUNuQ29CLElBQ0EsSUFDQWpCLEVBQWEsUUFBUTtBQUV6QixNQUFBUyxFQUFjUyxDQUFhO0FBQUEsSUFBQTtBQUc3QixXQUFBckMsR0FBVSxNQUFNO0FBQ0gsTUFBQTBCLEtBQ0osT0FBQSxpQkFBaUIsVUFBVUEsQ0FBVTtBQUFBLElBQUEsQ0FDN0MsR0FFRFksR0FBWSxNQUFNO0FBQ1QsYUFBQSxvQkFBb0IsVUFBVVosQ0FBVTtBQUFBLElBQUEsQ0FDaEQsR0FFRGEsR0FBVSxNQUFNO0FBQ0gsTUFBQWI7SUFBQSxDQUNaLEdBRUR2QyxFQUFNZ0MsR0FBYyxNQUFNO0FBQ25CLE1BQUFxQixFQUFBLFVBQVVyQixFQUFhLEtBQUs7QUFBQSxJQUFBLENBQ2xDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkN6R0tzQixJQUFZdkQsS0FFWndELElBQWUsR0FBR3RELEVBQU0sR0FBRyw4QkFFM0J1RCxJQUFzQixNQUFNO0FBQ2hDLE1BQUFGLEVBQVUsTUFBTSxNQUFNQztBQUFBLElBQUE7QUFHeEIsV0FBQUUsRUFBYUgsRUFBVSxLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJDUHRCSSxJQUFVM0QsRUFBSUUsRUFBTSxPQUFPLEdBRTNCMEQsSUFBV3ZDLEVBQVMsTUFBTzs7QUFBQSxhQUFBbkIsRUFBTSxVQUFVQSxFQUFNLFVBQVUsZ0JBQWMyRCxJQUFBQyxHQUFtQixNQUFuQixnQkFBQUQsRUFBc0IsUUFBTyxFQUFFO0FBQUEsS0FBRztBQUVqSCxXQUFBNUQ7QUFBQSxNQUNFLE1BQU1DLEVBQU07QUFBQSxNQUNaLENBQUM2RCxHQUFVQyxNQUFhO0FBQ3RCLFNBQUlELE1BQWFDLEtBQVlELE1BQWFKLEVBQVEsV0FDaERBLEVBQVEsUUFBUUk7QUFBQSxNQUVwQjtBQUFBLElBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NFQ3ZCU0UsS0FBc0IsK0JBRXRCQyxLQUFVO0FBQUEsRUFDckIsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUNULEdBRWFDLElBQWMsQ0FBQ0MsTUFDbkIsQ0FBQ0MsTUFBb0M7QUFDMUMsTUFBSUMsSUFBU0o7QUFFYixTQUFLRyxFQUFNLEtBQU8sRUFBQSxNQUFNRCxDQUFNLE1BQ25CRSxJQUFBO0FBQUEsSUFDUCxTQUFTTDtBQUFBLElBQ1QsT0FBTztBQUFBLEVBQUEsSUFJSks7QUFBQSxHQUlFQyxLQUFrQixDQUFDQyxHQUFpQ0MsTUFFM0QsT0FBT0QsS0FBbUIsWUFBWUEsRUFBZSxTQUFTLElBQVVBLElBRXJFLE9BQU9DLEtBQWlCLFlBQVlBLEVBQWEsU0FBUyxJQUFJQSxJQUFlUixJQUd6RVMsS0FBbUIsQ0FBQ0YsR0FBaUNDLE1BQ2hFRCxNQUFtQixNQUFTQyxNQUFpQixJQUVsQ0UsS0FBd0IsQ0FBQyxFQUFFLFdBQUFDLEdBQVcsV0FBQUMsR0FBVyxVQUFBQyxHQUFVLE9BQUFULFFBQThCO0FBQ3BHLFFBQU1VLElBQXVCVixFQUFNLFdBQVcsS0FBSyxDQUFDUyxHQUM5Q0UsSUFBWUosS0FBYVAsRUFBTSxTQUFTTztBQUd2QyxTQUFBLEVBRlksQ0FBQ0csS0FBd0JGLEtBQWFSLEVBQU0sU0FBU1EsTUFFbEQsQ0FBQ0c7QUFDekIsR0F1RGFDLEtBQXdCLENBQUM7QUFBQSxFQUNwQyxPQUFBQztBQUFBLEVBQ0EsZ0JBQUFWO0FBQUEsRUFDQSxXQUFBSTtBQUFBLEVBQ0EsV0FBQUM7QUFBQSxFQUNBLFVBQUFDLElBQVc7QUFBQSxFQUNYLFlBQUFLO0FBQUEsRUFDQSxPQUFBZDtBQUNGLE1BUU07QUFLQSxNQUZFYSxFQUFBLFFBQVFWLEtBQWtDLElBRTVDLENBQUNVLEVBQU0sU0FBU0MsR0FBWTtBQUM5QixVQUFNQyxJQUFhQyxHQUFpQmhCLEVBQU0sT0FBT2MsQ0FBVTtBQUV2RCxJQUFDQyxFQUFXLFVBQ2RGLEVBQU0sUUFBUUUsRUFBVztBQUFBLEVBRTdCO0FBRUEsTUFBSSxDQUFDRixFQUFNLFVBQVVOLEtBQWFDLElBQVk7QUFDNUMsVUFBTVMsSUFBbUJDLEdBQWU7QUFBQSxNQUN0QyxXQUFBWDtBQUFBLE1BQ0EsV0FBQUM7QUFBQSxNQUNBLFVBQUFDO0FBQUEsTUFDQSxPQUFPVCxFQUFNO0FBQUEsSUFBQSxDQUNkO0FBRUcsSUFBQ2lCLEVBQWlCLFVBQ3BCSixFQUFNLFFBQVFJLEVBQWlCO0FBQUEsRUFFbkM7QUFDRixHQWtCYUMsS0FBaUIsQ0FBQztBQUFBLEVBQzdCLFdBQUFYO0FBQUEsRUFDQSxXQUFBQztBQUFBLEVBQ0EsVUFBQUMsSUFBVztBQUFBLEVBQ1gsT0FBQVQ7QUFDRixNQUEwQztBQUN4QyxRQUFNbUIsSUFBVztBQUFBLElBQ2YsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLEVBQUE7QUFVVCxTQVBBQSxFQUFTLFFBQVFiLEdBQXNCO0FBQUEsSUFDckMsV0FBQUM7QUFBQSxJQUNBLFdBQUFDO0FBQUEsSUFDQSxVQUFBQztBQUFBLElBQ0EsT0FBQVQ7QUFBQSxFQUFBLENBQ0QsR0FFR21CLEVBQVMsVUFFYkEsRUFBUyxVQUFVdkIsSUFFZlcsS0FBYUMsSUFDZlcsRUFBUyxVQUFVLGdDQUFnQ1gsQ0FBUyxRQUFRRCxDQUFTLDJCQUNwRUEsSUFDQVksRUFBQSxVQUFVLHFDQUFxQ1osQ0FBUywyQkFDeERDLE1BQ0FXLEVBQUEsVUFBVSxxQ0FBcUNYLENBQVMsNEJBRzVEVztBQUNUO0FBRWdCLFNBQUFILEdBQWlCaEIsR0FBZWMsR0FBdUU7QUFDckgsYUFBV00sS0FBYU4sR0FBWTtBQUM1QixVQUFBQyxJQUFhSyxFQUFVcEIsQ0FBSztBQUM5QixRQUFBLENBQUNlLEVBQVc7QUFDUCxhQUFBQTtBQUFBLEVBRVg7QUFFTyxTQUFBO0FBQUEsSUFDTCxTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsRUFBQTtBQUVYOzs7Ozs7Ozs7Ozs7Ozs7aUJDcExRRixJQUFRbEYsRUFBSUUsRUFBTSxLQUFLLEdBQ3ZCd0YsSUFBVzFGLEVBQUksRUFBSyxHQUNwQlIsSUFBUVEsRUFBOEIsSUFBSSxHQUMxQzhFLElBQVc5RSxFQUFJRSxFQUFNLFFBQVEsR0FDN0JtRSxJQUFRckUsRUFBSUUsRUFBTSxLQUFLLEdBRXZCeUYsSUFBZXRFLEVBQVMsTUFBTWtELEdBQWdCckUsRUFBTSxPQUFPZ0YsRUFBTSxLQUFLLENBQUMsR0FDdkVVLElBQWlCdkUsRUFBUyxNQUFPbkIsRUFBTSxXQUFXLEdBQUdBLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQU0sR0FDbkYyRixJQUFXeEUsRUFBUyxNQUFPbkIsRUFBTSxZQUFZLENBQUNtRSxFQUFNLFNBQVVLLEdBQWlCUSxFQUFNLE9BQU9oRixFQUFNLEtBQUssQ0FBQyxHQUN4RzRGLElBQWV6RSxFQUFTLE1BQU1xRSxFQUFTLFNBQVMsQ0FBQ0ssRUFBUSxLQUFLLEdBQzlEQSxJQUFVMUUsRUFBUyxNQUFNZ0QsRUFBTSxVQUFVLEVBQUUsR0FFM0NULElBQVd2QyxFQUFTLE1BQU87O0FBQUEsYUFBQW5CLEVBQU0sVUFBVUEsRUFBTSxVQUFVLGdCQUFjMkQsSUFBQUMsR0FBbUIsTUFBbkIsZ0JBQUFELEVBQXNCLFFBQU8sRUFBRTtBQUFBLEtBQUcsR0FFM0dtQyxJQUFnQixNQUFNOztBQUNwQixZQUFBQyxJQUFRLElBQUksV0FBVyxXQUFXO0FBQ2pDLE9BQUFwQyxJQUFBckUsS0FBQSxnQkFBQUEsRUFBQSxVQUFBLFFBQUFxRSxFQUFPLGNBQWNvQztBQUFBLElBQUssR0FHN0JDLElBQWMsTUFBTTtBQUN4QixNQUFBUixFQUFTLFFBQVE7QUFBQSxJQUFBLEdBR2JTLElBQWlCLE1BQU07QUFDM0IsTUFBQVQsRUFBUyxRQUFRO0FBQUEsSUFBQTtBQUduQixXQUFBekY7QUFBQSxNQUNFLE1BQU1DLEVBQU07QUFBQSxNQUNaLENBQUM2RCxHQUFVQyxNQUFhO0FBQ3RCLFNBQUlELE1BQWFDLEtBQVlELE1BQWFNLEVBQU0sV0FDOUNBLEVBQU0sUUFBUU47QUFBQSxNQUVsQjtBQUFBLElBQUEsR0FHV0wsRUFBQSxFQUFFLE9BQUF3QixHQUFPLE9BQUFiLEVBQUEsQ0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NFQzlEbEIrQixJQUFrQjtBQUFBLEVBQzdCLE1BQU07QUFBQSxFQUNOLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLEtBQUs7QUFBQSxFQUNMLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxFQUNOLEtBQUs7QUFBQSxFQUNMLE1BQU07QUFDUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQzZDUWxCLElBQVFsRixFQUFJRSxFQUFNLEtBQUssR0FDdkJ3RixJQUFXMUYsRUFBSSxFQUFLLEdBQ3BCUixJQUFRUSxFQUE2QixJQUFJLEdBQ3pDcUcsSUFBZXJHLEVBQUksRUFBSyxHQUN4QnFFLElBQVFyRSxFQUFJRSxFQUFNLEtBQUssR0FFdkJ5RixJQUFldEUsRUFBUyxNQUFNa0QsR0FBZ0JyRSxFQUFNLE9BQU9nRixFQUFNLEtBQUssQ0FBQyxHQUN2RVUsSUFBaUJ2RSxFQUFTLE1BQU9uQixFQUFNLFlBQVlBLEVBQU0sUUFBUSxHQUFHQSxFQUFNLEtBQUssT0FBT0EsRUFBTSxLQUFNLEdBQ2xHb0csSUFBV2pGLEVBQVMsTUFBTW5CLEVBQU0sWUFBWW1FLEVBQU0sS0FBSyxHQUN2RHdCLElBQVd4RSxFQUFTLE1BQU9uQixFQUFNLFlBQVksQ0FBQ21FLEVBQU0sU0FBVUssR0FBaUJRLEVBQU0sT0FBT2hGLEVBQU0sS0FBSyxDQUFDLEdBQ3hHNEYsSUFBZXpFLEVBQVMsTUFBTXFFLEVBQVMsU0FBUyxDQUFDSyxFQUFRLEtBQUssR0FDOURBLElBQVUxRSxFQUFTLE1BQU1nRCxFQUFNLFVBQVUsRUFBRSxHQUMzQ2tDLElBQU9sRjtBQUFBLE1BQVMsTUFDcEJuQixFQUFNLFNBQVNrRyxFQUFnQixZQUFZQyxFQUFhLFVBQVUsS0FBT0QsRUFBZ0IsT0FBT2xHLEVBQU07QUFBQSxJQUFBLEdBRWxHMEQsSUFBV3ZDLEVBQVMsTUFBTzs7QUFBQSxhQUFBbkIsRUFBTSxVQUFVQSxFQUFNLFVBQVUsZ0JBQWMyRCxJQUFBQyxHQUFtQixNQUFuQixnQkFBQUQsRUFBc0IsUUFBTyxFQUFFO0FBQUEsS0FBRyxHQUUzRzJDLElBQWMsTUFBTTs7QUFDeEIsTUFBQW5DLEVBQU0sUUFBUSxLQUNkUixJQUFBckUsRUFBTSxVQUFOLFFBQUFxRSxFQUFhO0FBQUEsSUFBTSxHQUdmcUMsSUFBYyxNQUFNO0FBQ3hCLE1BQUFSLEVBQVMsUUFBUTtBQUFBLElBQUEsR0FHYlMsSUFBaUIsTUFBTTtBQUMzQixNQUFBVCxFQUFTLFFBQVEsSUFDQWU7SUFBQSxHQUdiQyxJQUFjLE1BQU07O0FBQ3hCLFVBQUl4RyxFQUFNLGdCQUFnQjtBQUNsQixjQUFBUixNQUFTbUUsSUFBQVEsRUFBTSxNQUFNLE1BQU0sS0FBSyxNQUF2QixnQkFBQVIsRUFBMEIsS0FBSyxRQUFPO0FBRXJELFFBQUFRLEVBQU0sUUFBUTNFLElBQVNRLEVBQU0sZUFBZVIsQ0FBTSxJQUFJO0FBQUEsTUFDeEQ7QUFBQSxJQUFBLEdBR0krRyxJQUFtQixNQUFNO0FBQ1AsTUFBQXhCLEdBQUE7QUFBQSxRQUNwQixPQUFBQztBQUFBLFFBQ0EsZ0JBQWdCaEYsRUFBTTtBQUFBLFFBQ3RCLFdBQVdBLEVBQU07QUFBQSxRQUNqQixXQUFXQSxFQUFNO0FBQUEsUUFDakIsVUFBVUEsRUFBTTtBQUFBLFFBQ2hCLFlBQVlBLEVBQU07QUFBQSxRQUNsQixPQUFBbUU7QUFBQSxNQUFBLENBQ0Q7QUFBQSxJQUFBLEdBR0dzQyxLQUFjLENBQUM1QyxNQUFxQjtBQUN4QyxNQUFBTSxFQUFNLFFBQVFOO0FBQUEsSUFBQTtBQUdoQixXQUFBOUQ7QUFBQSxNQUNFLE1BQU1DLEVBQU07QUFBQSxNQUNaLENBQUM2RCxHQUFVQyxNQUFhO0FBQ3RCLFNBQUlELE1BQWFDLEtBQVlELE1BQWFNLEVBQU0sV0FDOUNBLEVBQU0sUUFBUU47QUFBQSxNQUVsQjtBQUFBLElBQUEsR0FHRkwsRUFBYSxFQUFFLE9BQUF3QixHQUFPLGFBQUF5QixJQUFhLE9BQUF0QyxFQUFPLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJDbkZwQ2EsSUFBUWxGLEVBQUlFLEVBQU0sS0FBSyxHQUN2QndGLElBQVcxRixFQUFJLEVBQUssR0FDcEJSLElBQVFRLEVBQTZCLElBQUksR0FDekNxRSxJQUFRckUsRUFBSUUsRUFBTSxLQUFLLEdBRXZCeUYsSUFBZXRFLEVBQVMsTUFBTWtELEdBQWdCckUsRUFBTSxPQUFPZ0YsRUFBTSxLQUFLLENBQUMsR0FDdkVVLElBQWlCdkUsRUFBUyxNQUFPbkIsRUFBTSxXQUFXLEdBQUdBLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQU0sR0FDbkYyRixJQUFXeEUsRUFBUyxNQUFPbkIsRUFBTSxZQUFZLENBQUNtRSxFQUFNLFNBQVVLLEdBQWlCUSxFQUFNLE9BQU9oRixFQUFNLEtBQUssQ0FBQyxHQUN4RzRGLElBQWV6RSxFQUFTLE1BQU1xRSxFQUFTLFNBQVMsQ0FBQ0ssRUFBUSxLQUFLLEdBQzlEQSxJQUFVMUUsRUFBUyxNQUFNZ0QsRUFBTSxVQUFVLEVBQUUsR0FDM0NULElBQVd2QyxFQUFTLE1BQU87O0FBQUEsYUFBQW5CLEVBQU0sVUFBVUEsRUFBTSxVQUFVLGdCQUFjMkQsSUFBQUMsR0FBbUIsTUFBbkIsZ0JBQUFELEVBQXNCLFFBQU8sRUFBRTtBQUFBLEtBQUcsR0FFM0dxQyxJQUFjLE1BQU07QUFDeEIsTUFBQVIsRUFBUyxRQUFRO0FBQUEsSUFBQSxHQUdiUyxJQUFpQixNQUFNO0FBQzNCLE1BQUFULEVBQVMsUUFBUTtBQUFBLElBQUEsR0FHYmUsSUFBbUIsTUFDaEJ4QixHQUFzQjtBQUFBLE1BQzNCLE9BQUFDO0FBQUEsTUFDQSxnQkFBZ0JoRixFQUFNO0FBQUEsTUFDdEIsV0FBV0EsRUFBTTtBQUFBLE1BQ2pCLFdBQVdBLEVBQU07QUFBQSxNQUNqQixPQUFBbUU7QUFBQSxJQUFBLENBQ0Q7QUFHSCxXQUFBcEU7QUFBQSxNQUNFLE1BQU1DLEVBQU07QUFBQSxNQUNaLENBQUM2RCxHQUFVQyxNQUFhO0FBQ3RCLFNBQUlELE1BQWFDLEtBQVlELE1BQWFNLEVBQU0sV0FDOUNBLEVBQU0sUUFBUU47QUFBQSxNQUVsQjtBQUFBLElBQUEsR0FHV0wsRUFBQSxFQUFFLE9BQUF3QixHQUFPLE9BQUFiLEVBQUEsQ0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJDakR2QnVDLElBQVV2RixFQUFTLE1BQU1uQixFQUFNLGVBQWVBLEVBQU0sWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkNaaEUyRyxJQUFTN0csRUFBSUUsRUFBTSxNQUFNLEdBQ3pCNEcsSUFBc0I5RyxFQUFtQixJQUFJLEdBRTdDK0csSUFBYyxDQUFDZCxNQUFpQjtBQUNwQyxNQUFBWSxFQUFPLFFBQVEsSUFFSUcsS0FDbkIxRCxFQUFLLFNBQVMyQyxDQUFLO0FBQUEsSUFBQSxHQUdmZSxJQUFxQixNQUFNO0FBQy9CLE1BQUlILEVBQU8sU0FDVEMsRUFBb0IsUUFBUSxPQUFPLFNBQzFCLFNBQUEsS0FBSyxNQUFNLFdBQVcsVUFDL0JBLEVBQW9CLFNBQVMsT0FBTyxTQUFTLEdBQUdBLEVBQW9CLEtBQUssR0FFeERHLFFBRVIsU0FBQSxLQUFLLE1BQU0sV0FBVyxJQUVYQztJQUN0QixHQUdJQyxJQUFnQixDQUFDbEIsTUFBeUI7QUFDMUMsTUFBQUEsRUFBTSxRQUFRLGFBQ2hCQSxFQUFNLGdCQUFnQixHQUN0QmMsRUFBWWQsQ0FBSztBQUFBLElBQ25CLEdBR0lnQixJQUFtQixNQUFNO0FBQ3RCLGFBQUEsaUJBQWlCLFdBQVdFLENBQWE7QUFBQSxJQUFBLEdBRzVDRCxJQUFzQixNQUFNO0FBQ3pCLGFBQUEsb0JBQW9CLFdBQVdDLENBQWE7QUFBQSxJQUFBO0FBR3JELFdBQUFyRyxHQUFVLE1BQU07QUFDSyxNQUFBa0c7SUFBQSxDQUNwQixHQUVEL0c7QUFBQSxNQUNFLE1BQU1DLEVBQU07QUFBQSxNQUNaLENBQUM2RCxNQUFhO0FBQ1osUUFBQThDLEVBQU8sUUFBUTlDLEdBQ0lpRDtNQUNyQjtBQUFBLElBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQzVDSUksSUFBY3BILEVBQUlFLEVBQU0sV0FBVyxHQUVuQ21ILElBQW9CaEcsRUFBUyxNQUFNLElBQUksTUFBTW5CLEVBQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQ29ILEdBQU9DLE1BQVVBLElBQVEsQ0FBQyxDQUFDLEdBRXZHQyxJQUFjLENBQUN2QixHQUFjc0IsTUFBa0I7QUFDbkQsTUFBQUgsRUFBWSxRQUFRRyxHQUVmakUsRUFBQSxVQUFVMkMsR0FBT3NCLENBQUs7QUFBQSxJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ1Z2QkUsSUFBWXpILEVBQUlFLEVBQU0sZ0JBQWdCLEdBRXRDc0gsSUFBYyxDQUFDdkIsR0FBY3NCLE1BQWtCO0FBQ25ELE1BQUFFLEVBQVUsUUFBUUYsR0FFYmpFLEVBQUEsVUFBVTJDLEdBQU9zQixDQUFLO0FBQUEsSUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ0R2QkcsSUFBVzFILEVBQUlFLEVBQU0sUUFBUSxHQUU3QnNILElBQWMsQ0FBQ3ZCLE1BQWlCO0FBQ2hDLE1BQUMvRixFQUFNLGFBQ0F3SCxFQUFBLFFBQVEsQ0FBQ0EsRUFBUyxPQUV0QnBFLEVBQUEsVUFBVTJDLEdBQU95QixFQUFTLEtBQUs7QUFBQSxJQUN0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NFQ3ZCU0MsS0FBUztBQUFBLEVBQ3BCLFFBQVFwSTtBQUFBLEVBQ1IsT0FBT007QUFBQSxFQUNQLE9BQU9DO0FBQ1QsR0FFYThILElBQWU7QUFBQSxFQUMxQixPQUFPO0FBQUEsRUFDUCxvQkFBb0I7QUFBQSxFQUNwQixZQUFZO0FBQUEsRUFDWixPQUNFO0FBQUEsRUFDRixpQkFBaUI7QUFBQSxFQUNqQixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQ1QsR0NoQmFDLEtBQW9CO0FBQUEsRUFDL0IsT0FBTztBQUFBLElBQ0wsV0FBVztBQUFBLElBQ1gsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLE9BQU87QUFBQSxFQUNQLElBQUk7QUFDTixHQ1phQyxLQUFRO0FBQUEsRUFDbkIsTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsSUFBSTtBQUFBLEVBQ0osTUFBTTtBQUFBLEVBQ04sT0FBTztBQUNULEdDUGFDLEtBQVk7QUFBQSxFQUN2QixvQkFBb0I1RCxFQUFZeUQsRUFBYSxrQkFBa0I7QUFBQSxFQUMvRCxhQUFhekQsRUFBWXlELEVBQWEsVUFBVTtBQUFBLEVBQ2hELE9BQU96RCxFQUFZeUQsRUFBYSxLQUFLO0FBQUEsRUFDckMsUUFBUXpELEVBQVl5RCxFQUFhLGVBQWU7QUFBQSxFQUNoRCxPQUFPekQsRUFBWXlELEVBQWEsS0FBSztBQUN2QzsifQ==
|