@envive-ai/react-hooks 0.1.4 → 0.1.5
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/adapters/amplitude/index.cjs +2 -2
- package/dist/adapters/amplitude/index.js +2 -2
- package/dist/application/config/index.cjs +3 -3
- package/dist/application/config/index.js +3 -3
- package/dist/application/models/graphql/index.cjs +2 -2
- package/dist/application/models/graphql/index.js +2 -2
- package/dist/application/models/index.cjs +2 -2
- package/dist/application/models/index.d.cts +1 -1
- package/dist/application/models/index.d.ts +1 -1
- package/dist/application/models/index.js +2 -2
- package/dist/application/service/index.cjs +3 -2
- package/dist/application/service/index.d.cts +18 -4
- package/dist/application/service/index.d.ts +18 -4
- package/dist/application/service/index.js +3 -3
- package/dist/application/utils/index.cjs +2 -2
- package/dist/application/utils/index.d.cts +5 -5
- package/dist/application/utils/index.d.ts +5 -5
- package/dist/application/utils/index.js +2 -2
- package/dist/atomStore-ONYy0XuA.d.cts +24 -0
- package/dist/atomStore-kOKiEcNl.d.ts +24 -0
- package/dist/atoms/app/index.cjs +2 -2
- package/dist/atoms/app/index.d.cts +2 -2
- package/dist/atoms/app/index.d.ts +3 -3
- package/dist/atoms/app/index.js +2 -2
- package/dist/atoms/atomStore/index.d.cts +2 -24
- package/dist/atoms/atomStore/index.d.ts +2 -24
- package/dist/atoms/chat/index.cjs +2 -2
- package/dist/atoms/chat/index.d.cts +27 -27
- package/dist/atoms/chat/index.d.ts +27 -27
- package/dist/atoms/chat/index.js +2 -2
- package/dist/atoms/globalSearch/index.d.cts +5 -5
- package/dist/atoms/globalSearch/index.d.ts +6 -6
- package/dist/atoms/org/index.cjs +3 -2
- package/dist/atoms/org/index.d.cts +29 -26
- package/dist/atoms/org/index.d.ts +29 -26
- package/dist/atoms/org/index.js +3 -3
- package/dist/atoms/search/index.cjs +2 -2
- package/dist/atoms/search/index.d.cts +2 -2
- package/dist/atoms/search/index.d.ts +2 -2
- package/dist/atoms/search/index.js +2 -2
- package/dist/{bandolier-B76-OE75.cjs → bandolier-Da4wt6sm.cjs} +10 -10
- package/dist/{bandolier-DRn_x1g1.js → bandolier-DzEmYWcz.js} +10 -10
- package/dist/{carpe-kHi4RLB5.cjs → carpe-AXipz0Xl.cjs} +10 -10
- package/dist/{carpe-qrSU99gq.js → carpe-CaUKwcEa.js} +10 -10
- package/dist/{chat-CLJ4NWcN.js → chat-CHmD79E1.js} +1 -1
- package/dist/{chat-BgONoYU7.cjs → chat-_NzpO_Hn.cjs} +1 -1
- package/dist/{components-BKZbet67.cjs → components-D0XDRcaN.cjs} +1 -1
- package/dist/{components-CV1fhAkj.js → components-Dl-TMD9k.js} +1 -1
- package/dist/config/locators/components/chat/index.cjs +1 -1
- package/dist/config/locators/components/chat/index.d.cts +1 -1
- package/dist/config/locators/components/chat/index.d.ts +1 -1
- package/dist/config/locators/components/chat/index.js +1 -1
- package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
- package/dist/config/locators/components/index.cjs +1 -1
- package/dist/config/locators/components/index.d.cts +1 -1
- package/dist/config/locators/components/index.d.ts +1 -1
- package/dist/config/locators/components/index.js +1 -1
- package/dist/config/locators/components/search/index.d.ts +1 -1
- package/dist/config/locators/index.cjs +4 -4
- package/dist/config/locators/index.d.cts +2 -2
- package/dist/config/locators/index.d.ts +3 -3
- package/dist/config/locators/index.js +4 -4
- package/dist/contexts/index.cjs +2 -2
- package/dist/contexts/index.d.cts +4 -72
- package/dist/contexts/index.d.ts +4 -72
- package/dist/contexts/index.js +2 -2
- package/dist/contexts-CtRlNXaS.js +7674 -0
- package/dist/contexts-CtgmnYNn.cjs +9088 -0
- package/dist/{coterie-yQ-_JXSw.cjs → coterie--MGvWeVh.cjs} +10 -10
- package/dist/{coterie-mMirPcHP.js → coterie-oKHAT0lx.js} +10 -10
- package/dist/{custservice-types-C83itZmy.cjs → custservice-types-C8-9vKWb.cjs} +1 -1
- package/dist/{custservice-types-DPQ-4TI6.js → custservice-types-CamCiXjq.js} +1 -1
- package/dist/default-B4fINY5_.cjs +4 -0
- package/dist/default-BrTQxA0c.js +4 -0
- package/dist/{default-8Jfv8ehQ.cjs → default-C3LrcbZB.cjs} +2 -2
- package/dist/{default-C8PQf-38.js → default-CXkYrLEr.js} +2 -2
- package/dist/{divIds-CWkntTsx.js → divIds-0Vj9g-fM.js} +1 -1
- package/dist/{divIds-DEL_-qU0.cjs → divIds-CjceLRD9.cjs} +1 -1
- package/dist/{dreamlandBaby-cG0HM9bt.js → dreamlandBaby-BEqt0eKF.js} +10 -10
- package/dist/{dreamlandBaby-DHltv12Z.cjs → dreamlandBaby-DBDjEJCc.cjs} +10 -10
- package/dist/{embedded--2L0F4b5.cjs → embedded-B5Wi9g0T.cjs} +1 -1
- package/dist/{embedded-C5uJqmuD.js → embedded-_cLpd6FK.js} +1 -1
- package/dist/events/index.d.cts +1 -1
- package/dist/{fiveCbd-Cvnwh03g.cjs → fiveCbd-CdqNt16h.cjs} +10 -10
- package/dist/{fiveCbd-DhYMlsf9.js → fiveCbd-D6B-sgnX.js} +10 -10
- package/dist/{forLoveAndLemons-DR6a1zjJ.cjs → forLoveAndLemons-C7GsJG7f.cjs} +6 -6
- package/dist/{forLoveAndLemons-C8DuUexW.js → forLoveAndLemons-gNDlMtPR.js} +6 -6
- package/dist/{greenpan-B4Pu65kV.js → greenpan-B5AaW4M_.js} +10 -10
- package/dist/{greenpan-BL5p6j7f.cjs → greenpan-DrORpYms.cjs} +10 -10
- package/dist/{grooveLife-DjKWHoN3.cjs → grooveLife-BJqsfH2H.cjs} +10 -10
- package/dist/{grooveLife-JK0TyaPz.js → grooveLife-xIUmDM8s.js} +10 -10
- package/dist/{homegrownCannabis-ZnfCqW-m.cjs → homegrownCannabis-8TZ21u6L.cjs} +10 -10
- package/dist/{homegrownCannabis-DxqSDkmS.js → homegrownCannabis-BtMuEvbZ.js} +10 -10
- package/dist/hooks/index.cjs +3 -5
- package/dist/hooks/index.d.cts +19 -74
- package/dist/hooks/index.d.ts +15 -70
- package/dist/hooks/index.js +3 -3
- package/dist/index-BTK5uzs6.d.cts +1 -1
- package/dist/{index-jBATkcc_.d.cts → index-BdNKc2ix.d.cts} +1 -1
- package/dist/{index-C62lPpy4.d.cts → index-BrXuc_Ck.d.cts} +1 -1
- package/dist/index-BzgkfbNO.d.cts +1 -1
- package/dist/index-CKUpnyJQ.d.ts +72 -0
- package/dist/{index-DPx8s5YH.d.ts → index-CSIOQD-A.d.ts} +1 -1
- package/dist/{index-C_C0tLeD.d.ts → index-CbJZOEU4.d.ts} +31 -31
- package/dist/{index-CExtydIH.d.ts → index-Cr2y08f1.d.ts} +1 -1
- package/dist/{index-CNsGWfS6.d.cts → index-DXpgMVpp.d.ts} +7 -7
- package/dist/index-Dxpscrvz.d.ts +1 -1
- package/dist/{index-CYtsPztZ.d.cts → index-K2kNsOTw.d.cts} +31 -31
- package/dist/index-VHFMGkO-.d.cts +72 -0
- package/dist/index-aNW5V9fh.d.cts +749 -0
- package/dist/interceptors/index.cjs +2 -2
- package/dist/interceptors/index.d.cts +2 -2
- package/dist/interceptors/index.d.ts +1 -1
- package/dist/interceptors/index.js +2 -2
- package/dist/{jackArcher-mGkojXek.cjs → jackArcher-WtkbLBZj.cjs} +10 -10
- package/dist/{jackArcher-CXf_IAmC.js → jackArcher-sO9EbgrZ.js} +10 -10
- package/dist/{jordanCraig-Dv8pVCiS.cjs → jordanCraig-471FcgqF.cjs} +10 -10
- package/dist/{jordanCraig-BvCvPRoR.js → jordanCraig-DNOncplU.js} +10 -10
- package/dist/{kindredBravely-UQP7wiNu.cjs → kindredBravely-BlLyHGMX.cjs} +9 -9
- package/dist/{kindredBravely-X8F_LNph.js → kindredBravely-cqZ4OvXp.js} +9 -9
- package/dist/{kutFromTheKloth-BhYKk3CN.cjs → kutFromTheKloth-3mOIryvt.cjs} +10 -10
- package/dist/{kutFromTheKloth-D1xsTSJr.js → kutFromTheKloth-DtVNCMKa.js} +10 -10
- package/dist/{larryAndSerges-1411NuZa.cjs → larryAndSerges-88Bvq-Us.cjs} +7 -7
- package/dist/{larryAndSerges-DVIRLItu.js → larryAndSerges-cvak6May.js} +7 -7
- package/dist/{leapsAndRebounds-BJ8mwr33.js → leapsAndRebounds-Dmf8eUPq.js} +10 -10
- package/dist/{leapsAndRebounds-UcP9EJVO.cjs → leapsAndRebounds-iWKc923H.cjs} +10 -10
- package/dist/{longevityrx-Cp6wleWr.js → longevityrx-BTMI9vn-.js} +10 -10
- package/dist/{longevityrx-BFSv9GF5.cjs → longevityrx-CobPyigd.cjs} +10 -10
- package/dist/{lookOptic-KieSqskd.cjs → lookOptic-C4H_c0JZ.cjs} +10 -10
- package/dist/{lookOptic-BGhU4910.js → lookOptic-Jwf7EAU8.js} +10 -10
- package/dist/{mantraBrand-CHQw-0nw.cjs → mantraBrand-CySGqbn6.cjs} +10 -10
- package/dist/{mantraBrand-DrqG9uqO.js → mantraBrand-DoaVj837.js} +10 -10
- package/dist/{medterra-CLG6Co1C.cjs → medterra-BnZ5p27n.cjs} +10 -10
- package/dist/{medterra-D8ZX9NZC.js → medterra-DaICcPPp.js} +10 -10
- package/dist/{modells-CAfqOCW4.js → modells-CZ1L6dD_.js} +10 -10
- package/dist/{modells-BzyPwN2m.cjs → modells-DF0SndHr.cjs} +10 -10
- package/dist/{nodeSelector-BiCDowlK.d.ts → nodeSelector-DybpVr-i.d.ts} +1 -1
- package/dist/{nodeSelector-B3bPtEjX.d.cts → nodeSelector-vKB44CDB.d.cts} +1 -1
- package/dist/orgConfigResults-BL0XBA6x.d.cts +1 -1
- package/dist/{pressedFloral-DULBuQwR.cjs → pressedFloral-B3t2cYzs.cjs} +10 -10
- package/dist/{pressedFloral-Dp-7Fk3S.js → pressedFloral-Dsws2Kfb.js} +10 -10
- package/dist/{search-filter-types-BNTLVXqQ.d.cts → search-filter-types-9rTb3jMj.d.cts} +1 -1
- package/dist/{search-filter-types-DkmH1TxJ.d.ts → search-filter-types-C-zZSpGo.d.ts} +1 -1
- package/dist/{skinPerfection-Cd3XZ6By.cjs → skinPerfection-CILQM2bR.cjs} +10 -10
- package/dist/{skinPerfection-BxuYCeJX.js → skinPerfection-DmQCntRf.js} +10 -10
- package/dist/{snapSupplements-Bf6htPM0.js → snapSupplements--X_v0KRM.js} +10 -10
- package/dist/{snapSupplements-ZFnXyMuZ.cjs → snapSupplements-Djuzl0Ed.cjs} +10 -10
- package/dist/{spanx-Cyd4qDlK.cjs → spanx-Bo81yXSF.cjs} +11 -11
- package/dist/{spanx-CwDPQaGj.js → spanx-DauxB8KE.js} +11 -11
- package/dist/{spanxStaging-ijbYnHzr.cjs → spanxStaging-BucYQvR1.cjs} +11 -11
- package/dist/{spanxStaging-D43nyAGy.js → spanxStaging-CfXUukdP.js} +11 -11
- package/dist/{suggestionBarV2-types-Dc4-zJlV.cjs → suggestionBarV2-types-B3lwrENK.cjs} +1 -1
- package/dist/{suggestionBarV2-types-CwOXzIKq.js → suggestionBarV2-types-Penx3Y67.js} +1 -1
- package/dist/{supergoop-BnbFG7hm.cjs → supergoop-8qa_NV3F.cjs} +11 -11
- package/dist/{supergoop-CY043wIg.js → supergoop-DOaui-A6.js} +11 -11
- package/dist/types/index.cjs +2 -2
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types-CGC6Oozp.cjs +231 -0
- package/dist/types-CnTCkyvK.js +177 -0
- package/dist/{uniqueVintage-Cui74mlJ.js → uniqueVintage-BWkDgt1z.js} +10 -10
- package/dist/{uniqueVintage-R2Jcu1y1.cjs → uniqueVintage-DAne8XcL.cjs} +10 -10
- package/dist/{variant-CKVRF2-W.d.ts → variant-CC1nrywd.d.ts} +3 -3
- package/dist/{variant-raYuOP4L.d.cts → variant-CQTuQQSq.d.cts} +3 -3
- package/dist/{venaCbd-r-IxEVc1.cjs → venaCbd-B1HO_Pkr.cjs} +10 -10
- package/dist/{venaCbd-o5_vOp4e.js → venaCbd-CnByO-5R.js} +10 -10
- package/dist/{westonJonBoucher-C95EuCl-.js → westonJonBoucher-BAGXegsX.js} +10 -10
- package/dist/{westonJonBoucher-DjGEW3ZB.cjs → westonJonBoucher-BRfHWMbs.cjs} +10 -10
- package/dist/{wineEnthusiast-DvfcV5B3.cjs → wineEnthusiast-DW8JVwV8.cjs} +10 -10
- package/dist/{wineEnthusiast-DeTFY8Gm.js → wineEnthusiast-EJbhMeKQ.js} +10 -10
- package/dist/{wolfMattress-BjGnGKjP.cjs → wolfMattress-B6INZNRJ.cjs} +10 -10
- package/dist/{wolfMattress-6xPfOJt3.js → wolfMattress-D9P7ErH_.js} +10 -10
- package/dist/{wolfTactical-C_F9-oPX.js → wolfTactical-C5Pupi3J.js} +10 -10
- package/dist/{wolfTactical-Bi3WZu0m.cjs → wolfTactical-TMthZM93.cjs} +10 -10
- package/package.json +2 -1
- package/src/application/models/supportedOrgs.ts +1 -1
- package/src/application/service/graphqlConfigService.ts +59 -0
- package/src/application/service/index.ts +1 -0
- package/src/atoms/org/graphqlConfig.ts +14 -3
- package/src/atoms/org/index.ts +7 -7
- package/src/atoms/org/merchantCss.ts +5 -2
- package/src/atoms/org/org.ts +2 -42
- package/src/atoms/search/searchAPI.ts +52 -42
- package/src/hooks/index.ts +1 -3
- package/src/hooks/useDynamicVariants.ts +48 -32
- package/src/hooks/useFileUpload.ts +1 -1
- package/src/hooks/useHideElements.ts +21 -18
- package/src/hooks/useImageResolver.ts +16 -8
- package/src/hooks/useNewOrgConfig.ts +80 -0
- package/dist/contexts-CQDwe3rK.cjs +0 -14333
- package/dist/contexts-e2sM-B9g.js +0 -12919
- package/dist/default-LukSiCz1.js +0 -4
- package/dist/default-rJSJ887P.cjs +0 -4
- package/dist/index-BfuO9b0Q.d.ts +0 -749
- package/dist/types-BF_CJeck.js +0 -177
- package/dist/types-CNH4sfF-.cjs +0 -231
- package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
- package/src/hooks/useReducedMotionWithOverride.ts +0 -15
- package/src/hooks/useSnapControl.ts +0 -155
- /package/dist/{locators-lQMJj830.cjs → locators-CugndTUM.cjs} +0 -0
- /package/dist/{locators-Dc5ZT0aF.js → locators-DnKpajbY.js} +0 -0
package/dist/types-CNH4sfF-.cjs
DELETED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
//#region src/application/models/colorsConfig.ts
|
|
3
|
-
var ColorNames = /* @__PURE__ */ function(ColorNames$1) {
|
|
4
|
-
ColorNames$1["TextPrimary"] = "text-primary";
|
|
5
|
-
ColorNames$1["TextSecondary"] = "text-secondary";
|
|
6
|
-
ColorNames$1["TextAccent"] = "text-accent";
|
|
7
|
-
ColorNames$1["TextLink"] = "text-link";
|
|
8
|
-
ColorNames$1["TextLight"] = "text-light";
|
|
9
|
-
ColorNames$1["BackgroundPrimary"] = "background-primary";
|
|
10
|
-
ColorNames$1["BackgroundSecondary"] = "background-secondary";
|
|
11
|
-
ColorNames$1["BackgroundSecondaryDark"] = "background-secondary-dark";
|
|
12
|
-
ColorNames$1["BackgroundTertiary"] = "background-tertiary";
|
|
13
|
-
ColorNames$1["BackgroundDark"] = "background-dark";
|
|
14
|
-
ColorNames$1["BackgroundLight"] = "background-light";
|
|
15
|
-
ColorNames$1["BackgroundSaturated"] = "background-saturated";
|
|
16
|
-
ColorNames$1["BorderLight"] = "border-light";
|
|
17
|
-
ColorNames$1["BorderMedium"] = "border-medium";
|
|
18
|
-
ColorNames$1["BorderDark"] = "border-dark";
|
|
19
|
-
ColorNames$1["BorderOutline"] = "border-outline";
|
|
20
|
-
ColorNames$1["AccentPrimary"] = "accent-primary";
|
|
21
|
-
ColorNames$1["AccentSecondary"] = "accent-secondary";
|
|
22
|
-
return ColorNames$1;
|
|
23
|
-
}(ColorNames || {});
|
|
24
|
-
const colorVar = (color) => `var(--spiffy-colors-${color})`;
|
|
25
|
-
|
|
26
|
-
//#endregion
|
|
27
|
-
//#region src/application/models/orgsEnum.ts
|
|
28
|
-
const OrgShortName = {
|
|
29
|
-
Coterie: "coterie",
|
|
30
|
-
ForLoveAndLemons: "for-love-and-lemons",
|
|
31
|
-
Greenpan: "greenpan",
|
|
32
|
-
JordanCraig: "jordan-craig",
|
|
33
|
-
LarryAndSerges: "larry_and_serges",
|
|
34
|
-
LeapsAndRebounds: "leaps-and-rebounds",
|
|
35
|
-
MantraBrand: "mantra-brand",
|
|
36
|
-
Spanx: "spanx",
|
|
37
|
-
SpanxStaging: "staging-spanx",
|
|
38
|
-
Supergoop: "supergoop",
|
|
39
|
-
UniqueVintage: "unique-vintage",
|
|
40
|
-
JackArcher: "jack-archer",
|
|
41
|
-
SkinPerfection: "skin-perfection",
|
|
42
|
-
LookOptic: "look-optic",
|
|
43
|
-
FiveCbd: "five-cbd",
|
|
44
|
-
SnapSupplements: "snap-supplements",
|
|
45
|
-
Longevityrx: "longevityrx",
|
|
46
|
-
VenaCbd: "vena-cbd",
|
|
47
|
-
Medterra: "medterra",
|
|
48
|
-
Modells: "modells",
|
|
49
|
-
PressedFloral: "pressed-floral",
|
|
50
|
-
KindredBravely: "kindred-bravely",
|
|
51
|
-
WineEnthusiast: "wine-enthusiast",
|
|
52
|
-
HomegrownCannabis: "homegrown-cannabis",
|
|
53
|
-
DreamlandBaby: "dreamland-baby",
|
|
54
|
-
Bandolier: "bandolier",
|
|
55
|
-
WestonJonBoucher: "weston-jon-boucher",
|
|
56
|
-
KutFromTheKloth: "kut-from-the-kloth",
|
|
57
|
-
GrooveLife: "groove-life",
|
|
58
|
-
Carpe: "carpe",
|
|
59
|
-
WolfTactical: "wolf-tactical",
|
|
60
|
-
WolfMattress: "wolfmattress",
|
|
61
|
-
Default: "default"
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
//#endregion
|
|
65
|
-
//#region src/application/models/supportedOrgs.ts
|
|
66
|
-
const getOrgInfo = async (orgShortName) => {
|
|
67
|
-
switch (orgShortName) {
|
|
68
|
-
case OrgShortName.Bandolier: return Promise.resolve().then(() => require("./bandolier-B76-OE75.cjs")).then((module$1) => module$1.bandolierOrgInfo);
|
|
69
|
-
case OrgShortName.Carpe: return Promise.resolve().then(() => require("./carpe-kHi4RLB5.cjs")).then((module$1) => module$1.carpeOrgInfo);
|
|
70
|
-
case OrgShortName.Coterie: return Promise.resolve().then(() => require("./coterie-yQ-_JXSw.cjs")).then((module$1) => module$1.coterieOrgInfo);
|
|
71
|
-
case OrgShortName.DreamlandBaby: return Promise.resolve().then(() => require("./dreamlandBaby-DHltv12Z.cjs")).then((module$1) => module$1.dreamlandBabyOrgInfo);
|
|
72
|
-
case OrgShortName.ForLoveAndLemons: return Promise.resolve().then(() => require("./forLoveAndLemons-DR6a1zjJ.cjs")).then((module$1) => module$1.forLoveAndLemonsOrgInfo);
|
|
73
|
-
case OrgShortName.Greenpan: return Promise.resolve().then(() => require("./greenpan-BL5p6j7f.cjs")).then((module$1) => module$1.greenpanOrgInfo);
|
|
74
|
-
case OrgShortName.GrooveLife: return Promise.resolve().then(() => require("./grooveLife-DjKWHoN3.cjs")).then((module$1) => module$1.grooveLifeOrgInfo);
|
|
75
|
-
case OrgShortName.JackArcher: return Promise.resolve().then(() => require("./jackArcher-mGkojXek.cjs")).then((module$1) => module$1.jackArcherOrgInfo);
|
|
76
|
-
case OrgShortName.JordanCraig: return Promise.resolve().then(() => require("./jordanCraig-Dv8pVCiS.cjs")).then((module$1) => module$1.jordanCraigOrgInfo);
|
|
77
|
-
case OrgShortName.KutFromTheKloth: return Promise.resolve().then(() => require("./kutFromTheKloth-BhYKk3CN.cjs")).then((module$1) => module$1.kutFromTheKlothOrgInfo);
|
|
78
|
-
case OrgShortName.LarryAndSerges: return Promise.resolve().then(() => require("./larryAndSerges-1411NuZa.cjs")).then((module$1) => module$1.larryAndSergesOrgInfo);
|
|
79
|
-
case OrgShortName.LeapsAndRebounds: return Promise.resolve().then(() => require("./leapsAndRebounds-UcP9EJVO.cjs")).then((module$1) => module$1.leapsAndReboundsOrgInfo);
|
|
80
|
-
case OrgShortName.MantraBrand: return Promise.resolve().then(() => require("./mantraBrand-CHQw-0nw.cjs")).then((module$1) => module$1.mantraBrandOrgInfo);
|
|
81
|
-
case OrgShortName.Spanx: return Promise.resolve().then(() => require("./spanx-Cyd4qDlK.cjs")).then((module$1) => module$1.spanxOrgInfo);
|
|
82
|
-
case OrgShortName.SpanxStaging: return Promise.resolve().then(() => require("./spanxStaging-ijbYnHzr.cjs")).then((module$1) => module$1.spanxOrgInfo);
|
|
83
|
-
case OrgShortName.Supergoop: return Promise.resolve().then(() => require("./supergoop-BnbFG7hm.cjs")).then((module$1) => module$1.supergoopOrgInfo);
|
|
84
|
-
case OrgShortName.UniqueVintage: return Promise.resolve().then(() => require("./uniqueVintage-R2Jcu1y1.cjs")).then((module$1) => module$1.uniqueVintageOrgInfo);
|
|
85
|
-
case OrgShortName.WestonJonBoucher: return Promise.resolve().then(() => require("./westonJonBoucher-DjGEW3ZB.cjs")).then((module$1) => module$1.westonJonBoucherOrgInfo);
|
|
86
|
-
case OrgShortName.WolfMattress: return Promise.resolve().then(() => require("./wolfMattress-BjGnGKjP.cjs")).then((module$1) => module$1.wolfMattressOrgInfo);
|
|
87
|
-
case OrgShortName.WolfTactical: return Promise.resolve().then(() => require("./wolfTactical-Bi3WZu0m.cjs")).then((module$1) => module$1.wolfTacticalOrgInfo);
|
|
88
|
-
case OrgShortName.SkinPerfection: return Promise.resolve().then(() => require("./skinPerfection-Cd3XZ6By.cjs")).then((module$1) => module$1.skinPerfectionOrgInfo);
|
|
89
|
-
case OrgShortName.LookOptic: return Promise.resolve().then(() => require("./lookOptic-KieSqskd.cjs")).then((module$1) => module$1.lookOpticOrgInfo);
|
|
90
|
-
case OrgShortName.FiveCbd: return Promise.resolve().then(() => require("./fiveCbd-Cvnwh03g.cjs")).then((module$1) => module$1.fiveCbdOrgInfo);
|
|
91
|
-
case OrgShortName.SnapSupplements: return Promise.resolve().then(() => require("./snapSupplements-ZFnXyMuZ.cjs")).then((module$1) => module$1.snapSupplementsOrgInfo);
|
|
92
|
-
case OrgShortName.Longevityrx: return Promise.resolve().then(() => require("./longevityrx-BFSv9GF5.cjs")).then((module$1) => module$1.longevityrxOrgInfo);
|
|
93
|
-
case OrgShortName.VenaCbd: return Promise.resolve().then(() => require("./venaCbd-r-IxEVc1.cjs")).then((module$1) => module$1.venaCbdOrgInfo);
|
|
94
|
-
case OrgShortName.Medterra: return Promise.resolve().then(() => require("./medterra-CLG6Co1C.cjs")).then((module$1) => module$1.medterraOrgInfo);
|
|
95
|
-
case OrgShortName.Modells: return Promise.resolve().then(() => require("./modells-BzyPwN2m.cjs")).then((module$1) => module$1.modellsOrgInfo);
|
|
96
|
-
case OrgShortName.PressedFloral: return Promise.resolve().then(() => require("./pressedFloral-DULBuQwR.cjs")).then((module$1) => module$1.pressedFloralOrgInfo);
|
|
97
|
-
case OrgShortName.KindredBravely: return Promise.resolve().then(() => require("./kindredBravely-UQP7wiNu.cjs")).then((module$1) => module$1.kindredBravelyOrgInfo);
|
|
98
|
-
case OrgShortName.WineEnthusiast: return Promise.resolve().then(() => require("./wineEnthusiast-DvfcV5B3.cjs")).then((module$1) => module$1.wineEnthusiastOrgInfo);
|
|
99
|
-
case OrgShortName.HomegrownCannabis: return Promise.resolve().then(() => require("./homegrownCannabis-ZnfCqW-m.cjs")).then((module$1) => module$1.homegrownCannabisOrgInfo);
|
|
100
|
-
default: return Promise.resolve().then(() => require("./default-rJSJ887P.cjs")).then((module$1) => module$1.defaultOrgInfo);
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
//#endregion
|
|
105
|
-
//#region src/contexts/types.ts
|
|
106
|
-
var CategoryExtractorType = /* @__PURE__ */ function(CategoryExtractorType$1) {
|
|
107
|
-
CategoryExtractorType$1["VisitCategoryMap"] = "VisitCategoryMap";
|
|
108
|
-
CategoryExtractorType$1["VisitCategoryDefault"] = "VisitCategoryDefault";
|
|
109
|
-
return CategoryExtractorType$1;
|
|
110
|
-
}(CategoryExtractorType || {});
|
|
111
|
-
var PageVariantTestType = /* @__PURE__ */ function(PageVariantTestType$1) {
|
|
112
|
-
PageVariantTestType$1["ShopifyPLP"] = "ShopifyPLP";
|
|
113
|
-
PageVariantTestType$1["ShopifyPDP"] = "ShopifyPDP";
|
|
114
|
-
PageVariantTestType$1["PageCategory"] = "PageCategory";
|
|
115
|
-
PageVariantTestType$1["CatalogCategory"] = "CatalogCategory";
|
|
116
|
-
PageVariantTestType$1["TopCatalogCategory"] = "TopCatalogCategory";
|
|
117
|
-
PageVariantTestType$1["HasReviews"] = "HasReviews";
|
|
118
|
-
PageVariantTestType$1["InCollection"] = "InCollection";
|
|
119
|
-
PageVariantTestType$1["HasMerchantTag"] = "HasMerchantTag";
|
|
120
|
-
PageVariantTestType$1["FeatureGate"] = "FeatureGate";
|
|
121
|
-
PageVariantTestType$1["PlpId"] = "PlpId";
|
|
122
|
-
PageVariantTestType$1["QueryParam"] = "QueryParam";
|
|
123
|
-
PageVariantTestType$1["ProductId"] = "ProductId";
|
|
124
|
-
PageVariantTestType$1["UserHasInteracted"] = "UserHasInteracted";
|
|
125
|
-
PageVariantTestType$1["UserHasNotInteracted"] = "UserHasNotInteracted";
|
|
126
|
-
PageVariantTestType$1["isLoading"] = "isLoading";
|
|
127
|
-
PageVariantTestType$1["isProductComparison"] = "isProductComparison";
|
|
128
|
-
PageVariantTestType$1["Fallback"] = "Fallback";
|
|
129
|
-
PageVariantTestType$1["UrlResolver"] = "UrlResolver";
|
|
130
|
-
PageVariantTestType$1["Null"] = "null";
|
|
131
|
-
return PageVariantTestType$1;
|
|
132
|
-
}(PageVariantTestType || {});
|
|
133
|
-
var WidgetType = /* @__PURE__ */ function(WidgetType$1) {
|
|
134
|
-
WidgetType$1["ChatPreview"] = "ChatPreview";
|
|
135
|
-
WidgetType$1["SocialProofV2"] = "SocialProofV2";
|
|
136
|
-
WidgetType$1["ChatPreviewV2"] = "ChatPreviewV2";
|
|
137
|
-
WidgetType$1["ChatPreviewIsLoading"] = "ChatPreviewIsLoading";
|
|
138
|
-
WidgetType$1["ChatPreviewPostInteraction"] = "ChatPreviewPostInteraction";
|
|
139
|
-
WidgetType$1["ChatPreviewProductComparison"] = "ChatPreviewProductComparison";
|
|
140
|
-
WidgetType$1["SuggestionBar"] = "SuggestionBar";
|
|
141
|
-
WidgetType$1["SuggestionBarV2"] = "SuggestionBarV2";
|
|
142
|
-
WidgetType$1["ImagePromptCard"] = "ImagePromptCard";
|
|
143
|
-
WidgetType$1["ImageBanner"] = "ImageBanner";
|
|
144
|
-
WidgetType$1["SingleImagePrompt"] = "SingleImagePrompt";
|
|
145
|
-
WidgetType$1["SearchPrompt"] = "SearchPrompt";
|
|
146
|
-
WidgetType$1["SearchZeroStateEntryPoint"] = "SearchZeroStateEntryPoint";
|
|
147
|
-
WidgetType$1["SearchResultsEntryPoint"] = "SearchResultsEntryPoint";
|
|
148
|
-
WidgetType$1["SearchOverlayHost"] = "SearchOverlayHost";
|
|
149
|
-
WidgetType$1["NoOp"] = "NoOp";
|
|
150
|
-
return WidgetType$1;
|
|
151
|
-
}(WidgetType || {});
|
|
152
|
-
|
|
153
|
-
//#endregion
|
|
154
|
-
//#region src/application/service/customerService/types.ts
|
|
155
|
-
let CustomerServiceType = /* @__PURE__ */ function(CustomerServiceType$1) {
|
|
156
|
-
CustomerServiceType$1["shopify"] = "shopify";
|
|
157
|
-
CustomerServiceType$1["gorgias"] = "gorgias";
|
|
158
|
-
CustomerServiceType$1["kustomer"] = "kustomer";
|
|
159
|
-
CustomerServiceType$1["groove"] = "groove";
|
|
160
|
-
CustomerServiceType$1["tidio"] = "tidio";
|
|
161
|
-
CustomerServiceType$1["zowie"] = "zowie";
|
|
162
|
-
CustomerServiceType$1["redo"] = "redo";
|
|
163
|
-
CustomerServiceType$1["gladly"] = "gladly";
|
|
164
|
-
CustomerServiceType$1["richpanel"] = "richpanel";
|
|
165
|
-
CustomerServiceType$1["zendesk"] = "zendesk";
|
|
166
|
-
CustomerServiceType$1["unsupported"] = "unsupported";
|
|
167
|
-
return CustomerServiceType$1;
|
|
168
|
-
}({});
|
|
169
|
-
let CustomerServiceIntegrationMode = /* @__PURE__ */ function(CustomerServiceIntegrationMode$1) {
|
|
170
|
-
CustomerServiceIntegrationMode$1["none"] = "none";
|
|
171
|
-
CustomerServiceIntegrationMode$1["simple"] = "simple";
|
|
172
|
-
CustomerServiceIntegrationMode$1["full"] = "full";
|
|
173
|
-
return CustomerServiceIntegrationMode$1;
|
|
174
|
-
}({});
|
|
175
|
-
|
|
176
|
-
//#endregion
|
|
177
|
-
Object.defineProperty(exports, 'CategoryExtractorType', {
|
|
178
|
-
enumerable: true,
|
|
179
|
-
get: function () {
|
|
180
|
-
return CategoryExtractorType;
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
Object.defineProperty(exports, 'ColorNames', {
|
|
184
|
-
enumerable: true,
|
|
185
|
-
get: function () {
|
|
186
|
-
return ColorNames;
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
Object.defineProperty(exports, 'CustomerServiceIntegrationMode', {
|
|
190
|
-
enumerable: true,
|
|
191
|
-
get: function () {
|
|
192
|
-
return CustomerServiceIntegrationMode;
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
Object.defineProperty(exports, 'CustomerServiceType', {
|
|
196
|
-
enumerable: true,
|
|
197
|
-
get: function () {
|
|
198
|
-
return CustomerServiceType;
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
Object.defineProperty(exports, 'OrgShortName', {
|
|
202
|
-
enumerable: true,
|
|
203
|
-
get: function () {
|
|
204
|
-
return OrgShortName;
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
Object.defineProperty(exports, 'PageVariantTestType', {
|
|
208
|
-
enumerable: true,
|
|
209
|
-
get: function () {
|
|
210
|
-
return PageVariantTestType;
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
Object.defineProperty(exports, 'WidgetType', {
|
|
214
|
-
enumerable: true,
|
|
215
|
-
get: function () {
|
|
216
|
-
return WidgetType;
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
Object.defineProperty(exports, 'colorVar', {
|
|
220
|
-
enumerable: true,
|
|
221
|
-
get: function () {
|
|
222
|
-
return colorVar;
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
Object.defineProperty(exports, 'getOrgInfo', {
|
|
226
|
-
enumerable: true,
|
|
227
|
-
get: function () {
|
|
228
|
-
return getOrgInfo;
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMtQ05INHNmRi0uY2pzIiwibmFtZXMiOlsibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWcudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL29yZ3NFbnVtLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9zdXBwb3J0ZWRPcmdzLnRzIiwiLi4vc3JjL2NvbnRleHRzL3R5cGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL3NlcnZpY2UvY3VzdG9tZXJTZXJ2aWNlL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImVudW0gQ29sb3JOYW1lcyB7XG4gIFRleHRQcmltYXJ5ID0gJ3RleHQtcHJpbWFyeScsXG4gIFRleHRTZWNvbmRhcnkgPSAndGV4dC1zZWNvbmRhcnknLFxuICBUZXh0QWNjZW50ID0gJ3RleHQtYWNjZW50JyxcbiAgVGV4dExpbmsgPSAndGV4dC1saW5rJyxcbiAgVGV4dExpZ2h0ID0gJ3RleHQtbGlnaHQnLFxuICBCYWNrZ3JvdW5kUHJpbWFyeSA9ICdiYWNrZ3JvdW5kLXByaW1hcnknLFxuICBCYWNrZ3JvdW5kU2Vjb25kYXJ5ID0gJ2JhY2tncm91bmQtc2Vjb25kYXJ5JyxcbiAgQmFja2dyb3VuZFNlY29uZGFyeURhcmsgPSAnYmFja2dyb3VuZC1zZWNvbmRhcnktZGFyaycsXG4gIEJhY2tncm91bmRUZXJ0aWFyeSA9ICdiYWNrZ3JvdW5kLXRlcnRpYXJ5JyxcbiAgQmFja2dyb3VuZERhcmsgPSAnYmFja2dyb3VuZC1kYXJrJyxcbiAgQmFja2dyb3VuZExpZ2h0ID0gJ2JhY2tncm91bmQtbGlnaHQnLFxuICBCYWNrZ3JvdW5kU2F0dXJhdGVkID0gJ2JhY2tncm91bmQtc2F0dXJhdGVkJyxcbiAgQm9yZGVyTGlnaHQgPSAnYm9yZGVyLWxpZ2h0JyxcbiAgQm9yZGVyTWVkaXVtID0gJ2JvcmRlci1tZWRpdW0nLFxuICBCb3JkZXJEYXJrID0gJ2JvcmRlci1kYXJrJyxcbiAgQm9yZGVyT3V0bGluZSA9ICdib3JkZXItb3V0bGluZScsXG4gIEFjY2VudFByaW1hcnkgPSAnYWNjZW50LXByaW1hcnknLFxuICBBY2NlbnRTZWNvbmRhcnkgPSAnYWNjZW50LXNlY29uZGFyeScsXG59XG5cbnR5cGUgQ29sb3JNYXBwaW5nID0ge1xuICBba2V5IGluIENvbG9yTmFtZXNdOiBzdHJpbmc7XG59O1xuXG5jb25zdCBjb2xvclZhciA9IChjb2xvcjogQ29sb3JOYW1lcyk6IHN0cmluZyA9PiBgdmFyKC0tc3BpZmZ5LWNvbG9ycy0ke2NvbG9yfSlgO1xuZXhwb3J0IHsgQ29sb3JOYW1lcywgY29sb3JWYXIgfTtcbmV4cG9ydCB0eXBlIHsgQ29sb3JNYXBwaW5nIH07XG4iLCJleHBvcnQgY29uc3QgT3JnU2hvcnROYW1lID0ge1xuICBDb3RlcmllOiAnY290ZXJpZScsXG4gIEZvckxvdmVBbmRMZW1vbnM6ICdmb3ItbG92ZS1hbmQtbGVtb25zJyxcbiAgR3JlZW5wYW46ICdncmVlbnBhbicsXG4gIEpvcmRhbkNyYWlnOiAnam9yZGFuLWNyYWlnJyxcbiAgTGFycnlBbmRTZXJnZXM6ICdsYXJyeV9hbmRfc2VyZ2VzJyxcbiAgTGVhcHNBbmRSZWJvdW5kczogJ2xlYXBzLWFuZC1yZWJvdW5kcycsXG4gIE1hbnRyYUJyYW5kOiAnbWFudHJhLWJyYW5kJyxcbiAgU3Bhbng6ICdzcGFueCcsXG4gIFNwYW54U3RhZ2luZzogJ3N0YWdpbmctc3BhbngnLFxuICBTdXBlcmdvb3A6ICdzdXBlcmdvb3AnLFxuICBVbmlxdWVWaW50YWdlOiAndW5pcXVlLXZpbnRhZ2UnLFxuICBKYWNrQXJjaGVyOiAnamFjay1hcmNoZXInLFxuICAvKiAtLSBCZWxvdyBpdGVtcyBhcmUgZ2VuZXJhdGVkIGJ5IHBsb3AgLS0gKi9cbiAgU2tpblBlcmZlY3Rpb246ICdza2luLXBlcmZlY3Rpb24nLFxuICBMb29rT3B0aWM6ICdsb29rLW9wdGljJyxcbiAgRml2ZUNiZDogJ2ZpdmUtY2JkJyxcbiAgU25hcFN1cHBsZW1lbnRzOiAnc25hcC1zdXBwbGVtZW50cycsXG4gIExvbmdldml0eXJ4OiAnbG9uZ2V2aXR5cngnLFxuICBWZW5hQ2JkOiAndmVuYS1jYmQnLFxuICBNZWR0ZXJyYTogJ21lZHRlcnJhJyxcbiAgTW9kZWxsczogJ21vZGVsbHMnLFxuICBQcmVzc2VkRmxvcmFsOiAncHJlc3NlZC1mbG9yYWwnLFxuICBLaW5kcmVkQnJhdmVseTogJ2tpbmRyZWQtYnJhdmVseScsXG4gIFdpbmVFbnRodXNpYXN0OiAnd2luZS1lbnRodXNpYXN0JyxcbiAgSG9tZWdyb3duQ2FubmFiaXM6ICdob21lZ3Jvd24tY2FubmFiaXMnLFxuICBEcmVhbWxhbmRCYWJ5OiAnZHJlYW1sYW5kLWJhYnknLFxuICBCYW5kb2xpZXI6ICdiYW5kb2xpZXInLFxuICBXZXN0b25Kb25Cb3VjaGVyOiAnd2VzdG9uLWpvbi1ib3VjaGVyJyxcbiAgS3V0RnJvbVRoZUtsb3RoOiAna3V0LWZyb20tdGhlLWtsb3RoJyxcbiAgR3Jvb3ZlTGlmZTogJ2dyb292ZS1saWZlJyxcbiAgQ2FycGU6ICdjYXJwZScsXG4gIFdvbGZUYWN0aWNhbDogJ3dvbGYtdGFjdGljYWwnLFxuICBXb2xmTWF0dHJlc3M6ICd3b2xmbWF0dHJlc3MnLFxuICBEZWZhdWx0OiAnZGVmYXVsdCcsXG59IGFzIGNvbnN0O1xuIiwiaW1wb3J0IHsgT3JnU2hvcnROYW1lIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvb3Jnc0VudW1cIjtcbmltcG9ydCB7IENvbG9yTWFwcGluZywgT3JnUGFnZUNvbmZpZywgT3JnVUlDb25maWcgfSBmcm9tIFwic3JjL2NvbnRleHRzL3R5cGVzXCI7XG5cbmV4cG9ydCB7IE9yZ1Nob3J0TmFtZSB9IGZyb20gXCIuL29yZ3NFbnVtXCI7XG5cbmV4cG9ydCB0eXBlIEJhc2ljT3JnSW5mb1R5cGUgPSB7XG4gIHNob3J0TmFtZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRvbWFpbjogc3RyaW5nO1xuICBkZWZhdWx0UHJvZHVjdElkOiBzdHJpbmc7XG4gIGFsd2F5c0VuYWJsZWRNZXJjaGFudHM6IGJvb2xlYW47XG4gIG9yZ1VJQ29uZmlnOiAoKSA9PiBPcmdVSUNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgb3JnUGFnZUNvbmZpZzogKCkgPT4gT3JnUGFnZUNvbmZpZztcbiAgb3JnQ29sb3JzOiAoKSA9PiBDb2xvck1hcHBpbmcgfCB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmdJbmZvID0gYXN5bmMgKFxuICBvcmdTaG9ydE5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxCYXNpY09yZ0luZm9UeXBlPiA9PiB7XG4gIHN3aXRjaCAob3JnU2hvcnROYW1lKSB7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuQmFuZG9saWVyOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvYmFuZG9saWVyL2JhbmRvbGllclwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuYmFuZG9saWVyT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5DYXJwZTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2NhcnBlL2NhcnBlXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5jYXJwZU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuQ290ZXJpZTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2NvdGVyaWUvY290ZXJpZVwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuY290ZXJpZU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuRHJlYW1sYW5kQmFieTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2RyZWFtbGFuZEJhYnkvZHJlYW1sYW5kQmFieVwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuZHJlYW1sYW5kQmFieU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuRm9yTG92ZUFuZExlbW9uczpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL2ZvckxvdmVBbmRMZW1vbnMvZm9yTG92ZUFuZExlbW9uc1wiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuZm9yTG92ZUFuZExlbW9uc09yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuR3JlZW5wYW46XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9ncmVlbnBhbi9ncmVlbnBhblwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuZ3JlZW5wYW5PcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkdyb292ZUxpZmU6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9ncm9vdmVMaWZlL2dyb292ZUxpZmVcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmdyb292ZUxpZmVPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkphY2tBcmNoZXI6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9qYWNrQXJjaGVyL2phY2tBcmNoZXJcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmphY2tBcmNoZXJPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkpvcmRhbkNyYWlnOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvam9yZGFuQ3JhaWcvam9yZGFuQ3JhaWdcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmpvcmRhbkNyYWlnT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5LdXRGcm9tVGhlS2xvdGg6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9rdXRGcm9tVGhlS2xvdGgva3V0RnJvbVRoZUtsb3RoXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5rdXRGcm9tVGhlS2xvdGhPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkxhcnJ5QW5kU2VyZ2VzOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbGFycnlBbmRTZXJnZXMvbGFycnlBbmRTZXJnZXNcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmxhcnJ5QW5kU2VyZ2VzT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5MZWFwc0FuZFJlYm91bmRzOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbGVhcHNBbmRSZWJvdW5kcy9sZWFwc0FuZFJlYm91bmRzXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5sZWFwc0FuZFJlYm91bmRzT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5NYW50cmFCcmFuZDpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL21hbnRyYUJyYW5kL21hbnRyYUJyYW5kXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5tYW50cmFCcmFuZE9yZ0luZm9cbiAgICAgICk7XG5cbiAgICAvLyAtLS0tIFNQQU5YIC0tLS1cbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5TcGFueDpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3NwYW54L3NwYW54XCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5zcGFueE9yZ0luZm9cbiAgICAgICk7XG4gICAgLy8gU3Bhbnggc3RhZ2luZyAoaGVhZGxlc3Mgc2hvcGlmeSlcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5TcGFueFN0YWdpbmc6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9zcGFueC9zcGFueFN0YWdpbmdcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnNwYW54T3JnSW5mb1xuICAgICAgKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS1cblxuICAgIGNhc2UgT3JnU2hvcnROYW1lLlN1cGVyZ29vcDpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3N1cGVyZ29vcC9zdXBlcmdvb3BcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnN1cGVyZ29vcE9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuVW5pcXVlVmludGFnZTpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3VuaXF1ZVZpbnRhZ2UvdW5pcXVlVmludGFnZVwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUudW5pcXVlVmludGFnZU9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuV2VzdG9uSm9uQm91Y2hlcjpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3dlc3RvbkpvbkJvdWNoZXIvd2VzdG9uSm9uQm91Y2hlclwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUud2VzdG9uSm9uQm91Y2hlck9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuV29sZk1hdHRyZXNzOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvd29sZk1hdHRyZXNzL3dvbGZNYXR0cmVzc1wiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUud29sZk1hdHRyZXNzT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5Xb2xmVGFjdGljYWw6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy93b2xmVGFjdGljYWwvd29sZlRhY3RpY2FsXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS53b2xmVGFjdGljYWxPcmdJbmZvXG4gICAgICApO1xuICAgIC8qIC0tIEJlbG93IGl0ZW1zIGFyZSBnZW5lcmF0ZWQgYnkgcGxvcCAtLSAqL1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlNraW5QZXJmZWN0aW9uOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvc2tpblBlcmZlY3Rpb24vc2tpblBlcmZlY3Rpb25cIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnNraW5QZXJmZWN0aW9uT3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5Mb29rT3B0aWM6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9sb29rT3B0aWMvbG9va09wdGljXCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5sb29rT3B0aWNPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLkZpdmVDYmQ6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9maXZlQ2JkL2ZpdmVDYmRcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmZpdmVDYmRPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlNuYXBTdXBwbGVtZW50czpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3NuYXBTdXBwbGVtZW50cy9zbmFwU3VwcGxlbWVudHNcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnNuYXBTdXBwbGVtZW50c09yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuTG9uZ2V2aXR5cng6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9sb25nZXZpdHlyeC9sb25nZXZpdHlyeFwiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUubG9uZ2V2aXR5cnhPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlZlbmFDYmQ6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy92ZW5hQ2JkL3ZlbmFDYmRcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnZlbmFDYmRPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLk1lZHRlcnJhOlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMvbWVkdGVycmEvbWVkdGVycmFcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLm1lZHRlcnJhT3JnSW5mb1xuICAgICAgKTtcblxuICAgIGNhc2UgT3JnU2hvcnROYW1lLk1vZGVsbHM6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9tb2RlbGxzL21vZGVsbHNcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLm1vZGVsbHNPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLlByZXNzZWRGbG9yYWw6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9wcmVzc2VkRmxvcmFsL3ByZXNzZWRGbG9yYWxcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLnByZXNzZWRGbG9yYWxPcmdJbmZvXG4gICAgICApO1xuICAgIGNhc2UgT3JnU2hvcnROYW1lLktpbmRyZWRCcmF2ZWx5OlxuICAgICAgcmV0dXJuIGltcG9ydChcInNyYy9tZXJjaGFudHMva2luZHJlZEJyYXZlbHkva2luZHJlZEJyYXZlbHlcIikudGhlbihcbiAgICAgICAgKG1vZHVsZSkgPT4gbW9kdWxlLmtpbmRyZWRCcmF2ZWx5T3JnSW5mb1xuICAgICAgKTtcbiAgICBjYXNlIE9yZ1Nob3J0TmFtZS5XaW5lRW50aHVzaWFzdDpcbiAgICAgIHJldHVybiBpbXBvcnQoXCJzcmMvbWVyY2hhbnRzL3dpbmVFbnRodXNpYXN0L3dpbmVFbnRodXNpYXN0XCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS53aW5lRW50aHVzaWFzdE9yZ0luZm9cbiAgICAgICk7XG4gICAgY2FzZSBPcmdTaG9ydE5hbWUuSG9tZWdyb3duQ2FubmFiaXM6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9ob21lZ3Jvd25DYW5uYWJpcy9ob21lZ3Jvd25DYW5uYWJpc1wiKS50aGVuKFxuICAgICAgICAobW9kdWxlKSA9PiBtb2R1bGUuaG9tZWdyb3duQ2FubmFiaXNPcmdJbmZvXG4gICAgICApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gaW1wb3J0KFwic3JjL21lcmNoYW50cy9kZWZhdWx0XCIpLnRoZW4oXG4gICAgICAgIChtb2R1bGUpID0+IG1vZHVsZS5kZWZhdWx0T3JnSW5mb1xuICAgICAgKTtcbiAgfVxufTtcbiIsImltcG9ydCB7IENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25cIjtcbmltcG9ydCB7XG4gIENvbG9yTWFwcGluZyxcbiAgQ29sb3JOYW1lcyxcbiAgY29sb3JWYXIsXG59IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1wiO1xuaW1wb3J0IHsgRmVhdHVyZUdhdGVzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzXCI7XG5pbXBvcnQge1xuICBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGUsXG4gIEN1c3RvbWVyU2VydmljZVR5cGUsXG59IGZyb20gXCJzcmMvYXBwbGljYXRpb24vc2VydmljZS9jdXN0b21lclNlcnZpY2UvdHlwZXNcIjtcbmltcG9ydCB7IEdyaWRJbnNlcnRpb25UeXBlIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2RvbU11dGF0aW9ucy9HcmlkSW5zZXJ0aW9uU2VydmljZVwiO1xuaW1wb3J0IHsgRE9NSW5zZXJ0aW9uVHlwZSB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vc2VydmljZS9kb21NdXRhdGlvbnMvZG9tSW5zZXJ0aW9uU2VydmljZVwiO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFBhZ2VWaXNpdENhdGVnb3J5LFxuICBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeSxcbn0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHsgQ2hhdFN0YXRlIH0gZnJvbSBcInNyYy90eXBlcy9jdXN0c2VydmljZS10eXBlc1wiO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbkJhckxvY2F0aW9uRm9yTWV0cmljcyB9IGZyb20gXCJzcmMvdHlwZXMvc3VnZ2VzdGlvbkJhclYyLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXN0UHJvcHMgfSBmcm9tIFwic3JjL3R5cGVzL3Rlc3QtdHlwZXNcIjtcblxudHlwZSBTaG93RmxvYXRpbmdCdXR0b25PcHRpb25zID1cbiAgfCBcImFsd2F5c1wiXG4gIHwgXCJhZnRlci1pbnRlcmFjdGlvbi1vbi1tb2JpbGUtYWx3YXlzLWRlc2t0b3BcIlxuICB8IFwiYWZ0ZXItaW50ZXJhY3Rpb24tYW55d2hlcmVcIlxuICB8IFwibmV2ZXJcIjtcblxudHlwZSBGbG9hdGluZ0VudHJ5UG9pbnRDb25maWcgPSB7XG4gIHBvc2l0aW9uOiBcImJvdHRvbS1sZWZ0XCIgfCBcIm1pZGRsZS1sZWZ0XCIgfCBcIm1pZGRsZS1yaWdodFwiIHwgXCJib3R0b20tcmlnaHRcIjtcbiAgZXhwYW5zaW9uVGV4dD86IHtcbiAgICBwZHA6IHN0cmluZztcbiAgICBwbHA6IHN0cmluZztcbiAgfTtcbiAgbWluaW1pemVkQ29sb3I6IHN0cmluZztcbiAgZXhwYW5kZWRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIHNob3dPcHRpb246IFNob3dGbG9hdGluZ0J1dHRvbk9wdGlvbnM7XG4gIGljb25TVkdTcmM/OiBzdHJpbmc7XG4gIGljb25TaXplPzogbnVtYmVyO1xuICBpY29uU3Ryb2tlQ29sb3I/OiBzdHJpbmc7XG4gIGljb25GaWxsQ29sb3I/OiBzdHJpbmc7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgZm9udFNpemU/OiBudW1iZXI7XG59O1xuXG50eXBlIFdlbGNvbWVTZWN0aW9uVmFyaWFudCA9IFwic3RhbmRhcmRcIiB8IFwib3V0bGluZWRcIjtcblxudHlwZSBXZWxjb21lU2VjdGlvbkNvbG9yVmFyaWFudCA9IFwic3RhbmRhcmRcIiB8IFwiYWNjZW50XCIgfCBcImJyYW5kXCIgfCBcImxpZ2h0XCI7XG5cbnR5cGUgV2VsY29tZVNlY3Rpb25Db25maWcgPSB7XG4gIHZhcmlhbnQ6IFdlbGNvbWVTZWN0aW9uVmFyaWFudDtcbiAgY29sb3JWYXJpYW50PzogV2VsY29tZVNlY3Rpb25Db2xvclZhcmlhbnQ7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbiAgLy8gaWNvbj86IFJlYWN0LkZ1bmN0aW9uQ29tcG9uZW50PFJlYWN0LlNWR1Byb3BzPFNWR1NWR0VsZW1lbnQ+PjtcbiAgLyogU2VyaWFsaXphYmxlIGljb24gbmFtZSB0aGF0IG1hcHMgdG8gYSBSZWFjdCBjb21wb25lbnQuIFByZWZlcnJlZCBvdmVyIGljb24gZm9yIGRhdGFiYXNlIHN0b3JhZ2UuICovXG4gIGljb25OYW1lPzogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdDb25maWcgPSB7XG4gIHZhcmlhbnQ6IFwiZmxhdFwiIHwgXCJmaWxsZWRcIiB8IFwib3V0bGluZWRcIjtcbiAgbGFyZ2VQcm9kdWN0Q29tcGFyaXNvbj86IGJvb2xlYW47XG4gIGZpbGxlZEJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBpY29uRmlsbENvbG9yOiBzdHJpbmc7XG4gIGJ1dHRvblRleHRDb2xvcj86IHN0cmluZztcbiAgYnV0dG9uVGV4dFNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICBidXR0b25UZXh0SG92ZXJDb2xvcj86IHN0cmluZztcbiAgYnV0dG9uQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGJ1dHRvbkJhY2tncm91bmRIb3ZlckNvbG9yOiBzdHJpbmc7XG4gIGJ1dHRvbkJvcmRlckNvbG9yPzogc3RyaW5nO1xuICBidXR0b25Cb3JkZXJIb3ZlckNvbG9yPzogc3RyaW5nO1xuICBjb3BpZXM6IHsgcGRwOiBzdHJpbmdbXTsgcGxwOiBzdHJpbmdbXSB9O1xuICBzdGF0aWNTdWdnZXN0aW9uQ29waWVzPzogeyBwZHA6IHN0cmluZ1tdOyBwbHA6IHN0cmluZ1tdIH07XG4gIHN0YXRpY1BMUEltYWdlcz86IHN0cmluZ1tdO1xuICBmb290ZXJDb25maWc/OiBDaGF0UHJldmlld0Zvb3RlckNvbmZpZztcbiAgaGVhZGVyQ29uZmlnPzogQ2hhdFByZXZpZXdIZWFkZXJDb25maWc7XG4gIHRvcE1hcmdpbj86IG51bWJlcjtcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdIZWFkZXJDb25maWcgPSB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgaW1hZ2VIZWlnaHQ/OiBudW1iZXI7XG4gIHNwYXJrbGVzQ29sb3I/OiBzdHJpbmc7IC8vIHVzZWQgYnk6IHNwYW54LCB1bmlxdWVWaW50YWdlLCBkcmVhbWxhbmRCYWJ5XG4gIGZvbnRTaXplPzogc3RyaW5nO1xuICBpY29uV2lkdGg/OiBzdHJpbmc7XG4gIGljb25IZWlnaHQ/OiBzdHJpbmc7XG59O1xuXG5pbnRlcmZhY2UgQ2hhdFByZXZpZXdGb290ZXJDb25maWcge1xuICBoYXNGYWRlPzogYm9vbGVhbjsgLy8gdXNlZCBieTogc3BhbngsIHVuaXF1ZVZpbnRhZ2VcbiAgc3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ/OiBcImRhcmtcIiB8IFwibGlnaHRcIiB8IFwib3V0bGluZWRcIjtcbiAgc3VnZ2VzdGlvbnNCYWNrZ3JvdW5kPzogc3RyaW5nOyAvLyB1c2VkIGJ5OiBjYXJiYWhuXG4gIHJlcGx5QnV0dG9uSWNvbj86XG4gICAgfCBcInNlbmRcIlxuICAgIHwgXCJtYWduaWZ5aW5nR2xhc3NcIlxuICAgIHwgXCJ0aGluTWFnbmlmeWluZ0dsYXNzXCJcbiAgICB8IFwic2VhcmNoSWNvblwiO1xuICByZXBseUJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gIHJlcGx5SW5wdXRIYXNTaGFkb3c/OiBib29sZWFuOyAvLyB1c2VkIGJ5OiBzcGFueFxuICByZXBseUlucHV0SGFzQm9yZGVyPzogYm9vbGVhbjsgLy8gdXNlZCBieTogc3BhbnhcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nOyAvLyB1c2VkIGJ5IHNwYW54LCB0dXNoYmFieSwgd2lsbCBuZWVkIGN1c3RvbSBDU1Mgd2hlbiBzd2l0Y2hpbmcgb3ZlclxufVxuXG50eXBlIFByb2R1Y3RSZXZpZXdTdHlsZVZhcmlhbnQgPSBcInN0YW5kYXJkXCIgfCBcImJvcmRlcmVkXCI7XG5cbnR5cGUgUHJvZHVjdFJldmlld0NvbG9yVmFyaWFudCA9IFwibmV1dHJhbFwiIHwgXCJicmFuZFwiIHwgXCJwcmVtaXVtXCI7XG5cbmludGVyZmFjZSBQcm9kdWN0UmV2aWV3Q29uZmlnIHtcbiAgc3R5bGVWYXJpYW50OiBQcm9kdWN0UmV2aWV3U3R5bGVWYXJpYW50O1xuICBjb2xvclZhcmlhbnQ6IFByb2R1Y3RSZXZpZXdDb2xvclZhcmlhbnQ7XG4gIHZlcmlmaWVkQnV5ZXJUaXRsZTogc3RyaW5nO1xuICBpbmNlbnRpdml6ZWRSZXZpZXdGbGFnPzogYm9vbGVhbjtcbn1cblxudHlwZSBQYWdlQ2FyZFZhcmlhbnQgPSBcImZpbGxlZFwiIHwgXCJvdXRsaW5lZFwiIHwgXCJtaW5pbWFsXCI7XG5cbnR5cGUgUGFnZUNhcmRIb3ZlclZhcmlhbnQgPSBcIm5vbmVcIiB8IFwic2hhZG93XCIgfCBcImxpZnRcIjtcblxudHlwZSBQYWdlQ2FyZEljb25WYXJpYW50ID0gXCJwcmltYXJ5XCIgfCBcImFjY2VudFwiIHwgXCJiYWNrZ3JvdW5kXCIgfCBcIm5vbmVcIjtcblxudHlwZSBQYWdlQ2FyZENvbmZpZyA9IHtcbiAgdmFyaWFudDogUGFnZUNhcmRWYXJpYW50O1xuICBob3ZlclZhcmlhbnQ6IFBhZ2VDYXJkSG92ZXJWYXJpYW50O1xuICBpY29uVmFyaWFudDogUGFnZUNhcmRJY29uVmFyaWFudDtcbn07XG5cbnR5cGUgUHJvZHVjdENhcmRWYXJpYW50ID1cbiAgfCBcImZpbGxlZFwiXG4gIHwgXCJib3JkZXJlZFwiXG4gIHwgXCJtaW5pbWFsXCJcbiAgfCBcInRyYW5zcGFyZW50Qm9yZGVyZWRcIjtcblxudHlwZSBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudCA9IFwiYmFja2dyb3VuZERhcmtcIiB8IFwibm9uZVwiO1xuXG50eXBlIFByb2R1Y3RDYXJkTGF5b3V0VmFyaWFudCA9IFwibm9ybWFsXCIgfCBcInRhbGxcIiB8IFwic3F1YXJlXCI7XG5cbmludGVyZmFjZSBQcm9kdWN0Q2FyZENvbmZpZyB7XG4gIHZhcmlhbnQ6IFByb2R1Y3RDYXJkVmFyaWFudDtcbiAgaG92ZXJWYXJpYW50OiBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudDtcbiAgbGF5b3V0VmFyaWFudDogUHJvZHVjdENhcmRMYXlvdXRWYXJpYW50O1xuICBwcmljZVByZWZpeD86IHN0cmluZztcbn1cblxudHlwZSBDU1N3aXRjaENvbmZpZyA9IHtcbiAgdmFyaWFudDogXCJhdHRhY2hlZFwiIHwgXCJkZXRhY2hlZFwiO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgc2VsZWN0ZWRUZXh0Q29sb3I6IHN0cmluZztcbiAgc2VsZWN0ZWRCYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHVuc2VsZWN0ZWRUZXh0Q29sb3I6IHN0cmluZztcbiAgdW5zZWxlY3RlZEJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgc3VwcG9ydFRpdGxlPzogc3RyaW5nO1xuICBzcGlmZnlUaXRsZT86IHN0cmluZztcbiAgc3BpZmZ5VGl0bGVIYXNMb2dvPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgQ2hhdEhlYWRlckNvbmZpZyA9IHtcbiAgY29sbGFwc2VkQ29sb3I6IHN0cmluZztcbiAgZXhwYW5kZWRDb2xvcjogc3RyaW5nO1xuICBjaGV2cm9uQ29sb3I6IHN0cmluZztcbiAgaW1hZ2VTcmM/OiBzdHJpbmc7XG4gIGljb24/OiBSZWFjdC5GdW5jdGlvbkNvbXBvbmVudDxSZWFjdC5TVkdQcm9wczxTVkdTVkdFbGVtZW50Pj47XG4gIGNsb3NlSWNvbj86IFJlYWN0LkZ1bmN0aW9uQ29tcG9uZW50PFJlYWN0LlNWR1Byb3BzPFNWR1NWR0VsZW1lbnQ+PjtcbiAgYm9yZGVyQm90dG9tPzogc3RyaW5nO1xuICBoZWFkZXJCYXJIZWlnaHRQYXJ0aWFsVmlldzogbnVtYmVyO1xuICBoZWFkZXJCYXJIZWlnaHRGdWxsVmlldzogbnVtYmVyO1xuICBjdXN0b21lclN1cHBvcnRTd2l0Y2hDb25maWc/OiBDU1N3aXRjaENvbmZpZztcbn07XG5cbnR5cGUgU2ltcGxlQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24gPSB7XG4gIGludGVncmF0aW9uTW9kZTogQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlO1xuICBwcm92aWRlcjogQ3VzdG9tZXJTZXJ2aWNlVHlwZTtcbiAgdXNlVW5pZmllZEJ1dHRvbj86IGJvb2xlYW47XG59O1xuXG50eXBlIEZ1bGxDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiA9IHtcbiAgaW50ZWdyYXRpb25Nb2RlOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGU7XG4gIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VUeXBlO1xuICB1c2VVbmlmaWVkQnV0dG9uPzogYm9vbGVhbjtcbiAgY2hhdEVuYWJsZWREdXJpbmdCdXNpbmVzc0hvdXJzPzogYm9vbGVhbjtcbiAgc2hvd05hbWVJbnB1dD86IGJvb2xlYW47XG4gIGZvcm1BaU5hbWU/OiBzdHJpbmc7XG4gIHdlbGNvbWVUaXRsZTogc3RyaW5nO1xuICB3ZWxjb21lRGVzY3JpcHRpb246IHN0cmluZztcbiAgc2hvd1dlbGNvbWVPbkZvcm0/OiBib29sZWFuO1xuICBjb250YWN0U3ViamVjdE9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgZ2V0Q3VzdG9tV2FpdGluZ01lc3NhZ2U/OiAobmFtZT86IHN0cmluZykgPT4gc3RyaW5nO1xuICB3aXRoaW5CdXNpbmVzc0hvdXJzTWVzc2FnZT86IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc1dhaXRpbmdNZXNzYWdlPzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc01lc3NhZ2U/OiBzdHJpbmc7XG4gIG91dHNpZGVCdXNpbmVzc0hvdXJzV2FpdGluZ01lc3NhZ2U/OiBzdHJpbmc7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZT86IHN0cmluZztcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZT86IHN0cmluZztcbiAgc3VnZ2VzdGVkQUlRdWVzdGlvbnM/OiBzdHJpbmdbXTtcbiAgYnVzaW5lc3NIb3Vyc1BvbGxpbmc/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgQkUuXG4gICAqL1xuICBidXNpbmVzc0hvdXJzU3RhcnRVVEM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEJFLlxuICAgKi9cbiAgYnVzaW5lc3NIb3Vyc0VuZFVUQz86IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgQkUuXG4gICAqL1xuICBidXNpbmVzc0hvdXJzVGltZXpvbmU/OiBzdHJpbmc7XG5cbiAgc2hvd0FJU3VnZ2VzdGlvbnNXaXRoaW5CdXNpbmVzc0hvdXJzPzogYm9vbGVhbjtcbiAgd2FpdGluZ01lc3NhZ2VQb3NpdGlvbj86IFwiQkVGT1JFX01FU1NBR0VTXCIgfCBcIkFGVEVSX01FU1NBR0VTXCI7XG4gIGxlZ2FsTWVzc2FnZT86IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc0luaXRpYWxTdGF0ZT86IENoYXRTdGF0ZTtcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNJbml0aWFsU3RhdGU/OiBDaGF0U3RhdGU7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNCdXR0b250ZXh0Pzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc0J1dHRvbnRleHQ/OiBzdHJpbmc7XG4gIHJlb3BlbkNoYXRNZXNzYWdlOiBzdHJpbmc7XG59O1xuXG50eXBlIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uID1cbiAgfCBTaW1wbGVDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvblxuICB8IEZ1bGxDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbjtcblxudHlwZSBDb252ZXJzYXRpb25hbFNlYWNoID0ge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgcmVwbHlJbnB1dD86IFJlcGx5SW5wdXRDb25maWc7XG4gIHN1Z2dlc3Rpb25zPzogc3RyaW5nW107XG4gIGVudHJ5cG9pbnRCZ0NvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50VGV4dENvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50QnRuQ29sb3I/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRCdG5UZXh0Q29sb3I/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRCdG5Cb3JkZXJDb2xvcj86IHN0cmluZztcbiAgZW50cnlwb2ludENvbnRhaW5lcj86IHN0cmluZztcbiAgZW50cnlwb2ludFRyaWdnZXI/OiBzdHJpbmc7XG4gIHByb2R1Y3RHcmlkQ29udGFpbmVyPzogc3RyaW5nO1xuICBnZW5lcmFsU2VhcmNoQnRuPzogc3RyaW5nO1xuICBwYWdlQ29udGVudD86IHN0cmluZztcbiAgc2VhcmNoQ29udGVudD86IHN0cmluZztcbiAgc29ydGluZ1RpdGxlPzogc3RyaW5nO1xuICBzZWxlY3Rpb25UaXRsZT86IHN0cmluZztcbiAgc29ydGluZ0ZvbnQ/OiBzdHJpbmc7XG4gIG9wdGlvbnNGb250Pzogc3RyaW5nO1xuICBzb3J0aW5nQnV0dG9uVGV4dD86IHN0cmluZztcbn07XG5cbnR5cGUgQ2hhdE1lc3NhZ2VWYXJpYW50ID0gXCJzdGFuZGFyZFwiIHwgXCJwcmVtaXVtXCIgfCBcImFjY2VudFwiO1xuXG5pbnRlcmZhY2UgQ2hhdE1lc3NhZ2VDb25maWcge1xuICBhc3Npc3RhbnRDaGF0VGl0bGU6IHN0cmluZztcbiAgdmFyaWFudDogQ2hhdE1lc3NhZ2VWYXJpYW50O1xuICBwcm9kdWN0TGluazoge1xuICAgIHZhcmlhbnQ6IFByb2R1Y3RMaW5rVmFyaWFudDtcbiAgICBob3ZlclZhcmlhbnQ6IFByb2R1Y3RMaW5rSG92ZXJWYXJpYW50O1xuICAgIGljb25WYXJpYW50OiBQcm9kdWN0TGlua0ljb25WYXJpYW50O1xuICB9O1xufVxuXG5pbnRlcmZhY2UgUmVwbHlJbnB1dENvbmZpZyB7XG4gIC8vIFRPRE8gY29uc2lkZXIgbWFraW5nIHRoaXMgYSBudW1iZXJcbiAgc2l6ZT86IFwibWRcIiB8IFwibGdcIjtcbiAgc2VuZEljb246IFwiYXJyb3dVcFwiIHwgXCJzZW5kXCIgfCBcInNlYXJjaFwiO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBhcnRpYWxWaWV3Q29uZmlnIHtcbiAgLy8gbWF4aW11bSBoZWlnaHQgb2YgdGhlIHBhcnRpYWwgdmlldyBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHNjcmVlbiBoZWlnaHRcbiAgbWF4SGVpZ2h0OiBudW1iZXI7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbn1cblxudHlwZSBQcm9kdWN0TGlua0ljb25WYXJpYW50ID1cbiAgfCBcImFjY2VudFByaW1hcnlcIlxuICB8IFwiYmFja2dyb3VuZFByaW1hcnlcIlxuICB8IFwiYmFja2dyb3VuZFByaW1hcnlEYXJrXCJcbiAgfCBcImJvcmRlckxpZ2h0XCJcbiAgfCBcImJhY2tncm91bmRTYXR1cmF0ZWRcIjtcblxudHlwZSBQcm9kdWN0TGlua1ZhcmlhbnQgPSBcInRleHRMaW5rXCI7XG5cbnR5cGUgUHJvZHVjdExpbmtIb3ZlclZhcmlhbnQgPSBcImJhY2tncm91bmREYXJrXCI7XG5cbnR5cGUgU2VhcmNoQ2FyZFZhcmlhbnQgPVxuICB8IFwiYmFja2dyb3VuZFByaW1hcnlcIlxuICB8IFwiYmFja2dyb3VuZFNlY29uZGFyeVwiXG4gIHwgXCJiYWNrZ3JvdW5kU2Vjb25kYXJ5RGFya1wiXG4gIHwgXCJiYWNrZ3JvdW5kTGlnaHRcIlxuICB8IFwiYmFja2dyb3VuZFNhdHVyYXRlZFwiO1xuXG50eXBlIFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50ID1cbiAgfCBcIm91dGxpbmVkXCJcbiAgfCBcIm91dGxpbmVkTGlnaHRcIlxuICB8IFwicHJpbWFyeVwiXG4gIHwgXCJzZWNvbmRhcnlcIlxuICB8IFwidGVydGlhcnlcIlxuICB8IFwiZGFya1wiXG4gIHwgXCJkYXJrQWNjZW50XCJcbiAgfCBcImRhcmtQcmltYXJ5XCJcbiAgfCBcInNlY29uZGFyeURhcmtcIlxuICB8IFwic2Vjb25kYXJ5QWNjZW50XCJcbiAgfCBcInRyYW5zcGFyZW50XCJcbiAgfCBcInRyYW5zcGFyZW50RGFya1wiXG4gIHwgXCJsaWdodERhcmtcIjtcblxuaW50ZXJmYWNlIFN1Z2dlc3Rpb25CdXR0b25Db25maWcge1xuICB2YXJpYW50PzogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIGhvdmVyVmFyaWFudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBhbnN3ZXJWYXJpYW50PzogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIGJvcmRlclJhZGl1cz86IFwic21cIiB8IFwibWRcIiB8IFwibGdcIjtcbn1cblxudHlwZSBOdW1Sb3dzID0gXCJkZWZhdWx0XCIgfCBcImFsd2F5c09uZVJvd1wiIHwgXCJhbHdheXNUd29Sb3dzXCIgfCBcInR3b1Jvd3NPbk1vYmlsZVwiO1xuXG5pbnRlcmZhY2UgQWxwaGFiZXRpY0ZpbHRlclNvcnRpbmcge1xuICB0eXBlOiBcImFscGhhYmV0aWNcIjtcbn1cbmludGVyZmFjZSBQcm9kdWN0Q291bnRGaWx0ZXJTb3J0aW5nIHtcbiAgdHlwZTogXCJwcm9kdWN0Q291bnRcIjtcbn1cbmludGVyZmFjZSBDdXN0b21GaWx0ZXJTb3J0aW5nIHtcbiAgdHlwZTogXCJjdXN0b21cIjtcbiAgbWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufVxuXG50eXBlIEZpbHRlclNvcnRpbmcgPVxuICB8IEFscGhhYmV0aWNGaWx0ZXJTb3J0aW5nXG4gIHwgUHJvZHVjdENvdW50RmlsdGVyU29ydGluZ1xuICB8IEN1c3RvbUZpbHRlclNvcnRpbmc7XG5cbmludGVyZmFjZSBCYXNlRmlsdGVyQ29uZmlnIHtcbiAgZmlsdGVySWQ6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cbmludGVyZmFjZSBEeW5hbWljRmlsdGVyQ29uZmlnIGV4dGVuZHMgQmFzZUZpbHRlckNvbmZpZyB7XG4gIHR5cGU6IFwiZHluYW1pY1wiO1xuICBhdHRyaWJ1dGU6IHN0cmluZztcbiAgc29ydGluZzogRmlsdGVyU29ydGluZztcbn1cblxuaW50ZXJmYWNlIFByaWNlRmlsdGVyQ29uZmlnIGV4dGVuZHMgQmFzZUZpbHRlckNvbmZpZyB7XG4gIHR5cGU6IFwicHJpY2VcIjtcbiAgYnVja2V0U2l6ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBGaWx0ZXJBdHRyaWJ1dGUgPSBEeW5hbWljRmlsdGVyQ29uZmlnIHwgUHJpY2VGaWx0ZXJDb25maWc7XG5cbmV4cG9ydCB0eXBlIFNlYXJjaFplcm9TdGF0ZVZhcmlhbnQgPVxuICB8IFwiYmFja2dyb3VuZFRlcnRpYXJ5XCJcbiAgfCBcImJhY2tncm91bmREYXJrXCJcbiAgfCBcImJhY2tncm91bmRQcmltYXJ5XCI7XG5leHBvcnQgdHlwZSBTZWFyY2haZXJvU3RhdGVMYXlvdXQgPSBcImlucHV0XCIgfCBcImljb25cIjtcblxuZXhwb3J0IHR5cGUgU2VhcmNoSW5wdXRWYXJpYW50ID0gXCJzdGFuZGFyZFwiO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hJY29uVmFyaWFudCA9IFwidGhpblwiIHwgXCJib2xkXCI7XG5cbmV4cG9ydCB0eXBlIFNlYXJjaEZpbHRlclNpZGViYXJWYXJpYW50ID0gXCJkYXJrQnV0dG9uXCIgfCBcImxpZ2h0QnV0dG9uXCI7XG5cbmV4cG9ydCB0eXBlIFByb2R1Y3RHcmlkVmFyaWFudCA9IFwic3RhbmRhcmRcIiB8IFwic3F1YXJlXCI7XG5cbnR5cGUgVXNlclF1ZXJ5QnV0dG9uSWNvbiA9XG4gIHwgXCJtYWduaWZ5aW5nR2xhc3NcIlxuICB8IFwic2VuZFwiXG4gIHwgXCJtYWduaWZ5aW5nR2xhc3NUaGluXCJcbiAgfCBcInNlbmRBcnJvd1wiXG4gIHwgXCJzZWFyY2hJY29uXCI7XG5cbmludGVyZmFjZSBVc2VyUXVlcnlCdXR0b25Db25maWcge1xuICB2YXJpYW50PzogXCJib3hcIiB8IFwidW5kZXJsaW5lTGlnaHRcIiB8IFwidW5kZXJsaW5lRGFya1wiO1xuICBwbGFjZWhvbGRlclRleHQ/OiBzdHJpbmc7XG4gIGljb246IFVzZXJRdWVyeUJ1dHRvbkljb247XG59XG5cbi8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSB0b3AtbGV2ZWwgd2lkZ2V0IGNvbmZpZ1xuaW50ZXJmYWNlIFRlcm1zQW5kQ29uZGl0aW9uc0NvbmZpZyB7XG4gIGNvcHk6IHN0cmluZztcbiAgbGluazogc3RyaW5nO1xuICBsaW5rVGV4dDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTWVyY2hhbnRWYXJpYW50U2V0dGluZ3Mge1xuICBkeW5hbWljVmFyaWFudHM6IHtcbiAgICBlbmFibGVkOiBib29sZWFuOyAvLyBUaGlzIGZlYXR1cmUgd2lsbCBlbmFibGUgZHluYW1pYyB2YXJpYW50cyBmb3IgdGhlIG1lcmNoYW50LiBVc2VmdWwgZm9yIFNQQSdzXG4gICAgcmVmcmVzaEludGVydmFsPzogbnVtYmVyOyAvLyBUaGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNoZWNrIGZvciBjaGFuZ2VzIGluIHRoZSBVUkxcbiAgfTtcbn1cblxuaW50ZXJmYWNlIEZsb2F0aW5nQ2hhdENvbmZpZyB7XG4gIGVuYWJsZVdhdGVybWFyazogYm9vbGVhbjtcbiAgdXNlclF1ZXJ5SW5wdXRFbmFibGVkOiBib29sZWFuO1xuICBpZ25vcmVGaXJzdE1vZGVsUmVzcG9uc2U/OiBib29sZWFuO1xuICBuZXZlclNob3dTaW5nbGVQcm9kdWN0Q2FyZHM/OiBib29sZWFuO1xuICB0ZXJtc0FuZENvbmRpdGlvbnNDb25maWc/OiBUZXJtc0FuZENvbmRpdGlvbnNDb25maWc7XG5cbiAgLy8gRm9vdGVyIGNvbmZpZ1xuICBzdWdnZXN0aW9uQnV0dG9uQ29uZmlnPzogU3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZztcbiAgcmVwbHlJbnB1dENvbmZpZzogUmVwbHlJbnB1dENvbmZpZztcbn1cblxuaW50ZXJmYWNlIFNlYXJjaENvbmZpZyB7XG4gIGVuYWJsZUdsb2JhbFNlYXJjaDogYm9vbGVhbjtcbiAgc2VhcmNoRmlsdGVyQ29uZmlnOiBGaWx0ZXJBdHRyaWJ1dGVbXTtcbiAgcmVkaXJlY3RTZWFyY2hSZXN1bHRzVXJsPzogc3RyaW5nO1xuICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzPzogYm9vbGVhbjtcbn1cblxudHlwZSBPcmdVSUNvbmZpZyA9IHtcbiAgc2hvcnROYW1lOiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBmbG9hdGluZ0VudHJ5cG9pbnRDb25maWc/OiBGbG9hdGluZ0VudHJ5UG9pbnRDb25maWc7XG4gIC8vIERlcHJlY2F0ZWQgLSByZW1vdmUgd2l0aCBDaGF0UHJldmlldyByZXdyaXRlXG4gIGNoYXRQcmV2aWV3Q29uZmlnPzogQ2hhdFByZXZpZXdDb25maWc7XG5cbiAgY3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb246IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uO1xuICAvLyBEZXByZWNhdGVkIC0gcmVtb3ZlIHdoZW4gR2xvYmFsIFNlYXJjaCBpcyBmdWxseSBsYXVuY2hlZFxuICBjb252ZXJzYXRpb25hbFNlYXJjaD86IENvbnZlcnNhdGlvbmFsU2VhY2g7XG5cbiAgbWVyY2hhbnRPdmVycmlkZUNzcz86IHN0cmluZztcblxuICAvLyBEZXByZWNhdGVkIFRPRE86IFJlbW92ZSB0aGlzIGRlcHJlY2F0ZWQgdmFsdWUgd2hlbiBHcm9vdmUgQ1ggaGFzIHByb3BlciB1bmlmaWVkIGJ1dHRvbiBzdXBwb3J0XG4gIC8vIHNlbGVjdG9ycyBmb3IgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgaGlkZGVuIHdoZW4gdGhlIGNoYXQgaXMgb3BlblxuICAvLyBlLmcuIENTIHdpZGdldHMgd2l0aCBtYXggei1pbmRleCAoXCJkaXZbaWQqPSdjcy1jb250YWluZXInXVwiKVxuICBoaWRkZW5FbGVtZW50U2VsZWN0b3JzPzogc3RyaW5nW107XG5cbiAgbWVyY2hhbnRWYXJpYW50U2V0dGluZ3M/OiBNZXJjaGFudFZhcmlhbnRTZXR0aW5ncztcbiAgLy8gVE9ETzogTWlncmF0ZSBhbGwgZmxvYXRpbmcgY2hhdCBjb25maWcgaW50byB0aGlzIHRvcC1sZXZlbCBrZXlcbiAgLy9cbiAgZmxvYXRpbmdDaGF0Q29uZmlnOiBGbG9hdGluZ0NoYXRDb25maWc7XG5cbiAgLy8gQ29udGFpbiBhbGwgc2VhcmNoIGNvbmZpZyBoZXJlXG4gIHNlYXJjaENvbmZpZzogU2VhcmNoQ29uZmlnO1xuICAvLyBUT0RPOiBNb3ZlIHRoZXNlIGludG8gRmxvYXRpbmdDaGF0Q29uZmlnXG4gIC8vIENoYXQgSGVhZGVyIHJlbGF0ZWQgdmFsdWVzXG4gIGNoYXRIZWFkZXI6IENoYXRIZWFkZXJDb25maWc7XG4gIHN0aWNreUFnZW50U3dpdGNoU3VnZ2VzdGlvbj86IGJvb2xlYW47XG4gIHBhcnRpYWxWaWV3Q29uZmlnOiBQYXJ0aWFsVmlld0NvbmZpZztcbiAgd2VsY29tZVNlY3Rpb25Db25maWc/OiBXZWxjb21lU2VjdGlvbkNvbmZpZztcbiAgLy8gRGlmZmVyZW50IHJlc3BvbnNlIHZhbHVlc1xuICBwcm9kdWN0Q2FyZENvbmZpZz86IFByb2R1Y3RDYXJkQ29uZmlnO1xuICBwcm9kdWN0UmV2aWV3Q29uZmlnPzogUHJvZHVjdFJldmlld0NvbmZpZztcbiAgcGFnZUNhcmRDb25maWc/OiBQYWdlQ2FyZENvbmZpZztcbiAgY2hhdE1lc3NhZ2VDb25maWc6IENoYXRNZXNzYWdlQ29uZmlnO1xufTtcblxudHlwZSBJbnNlcnRpb25Qb2ludCA9IHtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgLy8gdGhpcyBpcyB0aGUgaW5kZXggb2YgdGhlIHRhcmdldCBlbGVtZW50LCAwIGlmIG1pc3NpbmdcbiAgc2VsZWN0aW9uSW5kZXg/OiBudW1iZXI7XG4gIGluc2VydGlvblR5cGU6IERPTUluc2VydGlvblR5cGU7XG59O1xuXG50eXBlIFVSTFRlc3QgPSBcInNob3BpZnlcIiB8IFwibnVsbFwiO1xuXG50eXBlIElkRXh0cmFjdG9yID1cbiAgfCBcInNob3BpZnktcHJvZHVjdC1pZFwiXG4gIHwgXCJzaG9waWZ5LWNvbGxlY3Rpb24taWRcIlxuICB8IFwic2hvcGlmeS1wcm9kdWN0LXZhcmlhbnQtaWRcIlxuICB8IFwidXJsLXJlc29sdmVyLXByb2R1Y3QtaWRcIlxuICB8IFwidXJsLXJlc29sdmVyLXBscC1pZFwiXG4gIHwgXCJudWxsXCI7XG5cbi8vIFRoaXMgY29udGFpbnMgYSBtYXAgYmV0d2VlbiBQYWdlVmlzaXRDYXRlZ29yeSBhbmQgYSBsaXN0IG9mIFVSTCdzIHRoYXQgYXJlIGNsYXNzaWZpZWQgYXMgdGhlIHZhbHVlXG5lbnVtIENhdGVnb3J5RXh0cmFjdG9yVHlwZSB7XG4gIFZpc2l0Q2F0ZWdvcnlNYXAgPSBcIlZpc2l0Q2F0ZWdvcnlNYXBcIixcbiAgVmlzaXRDYXRlZ29yeURlZmF1bHQgPSBcIlZpc2l0Q2F0ZWdvcnlEZWZhdWx0XCIsXG59XG5cbmludGVyZmFjZSBCYXNlQ2F0ZWdvcnlFeHRyYWN0b3I8VCBleHRlbmRzIENhdGVnb3J5RXh0cmFjdG9yVHlwZT4ge1xuICB0eXBlOiBUO1xufVxuXG4vLyBUaGlzIG1hcCBiZXR3ZWVucyBhIGNhdGVnb3J5IGFuZCBhIGxpc3Qgb2YgdXJsIHBhdHRlcm5zXG5pbnRlcmZhY2UgVmlzaXRDYXRlZ29yeU1hcFxuICBleHRlbmRzIEJhc2VDYXRlZ29yeUV4dHJhY3RvcjxDYXRlZ29yeUV4dHJhY3RvclR5cGUuVmlzaXRDYXRlZ29yeU1hcD4ge1xuICBtYXA6IHtcbiAgICBba2V5IGluIFBhZ2VWaXNpdENhdGVnb3J5XT86IHN0cmluZ1tdO1xuICB9O1xufVxuXG4vLyBUaGlzIHdpbGwgcmV0dXJuIGEgaGFyZC1jb2RlZCBkZWZhdWx0IFBhZ2VWaXNpdENhdGVnb3J5LiBJdCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IGZhbGxiYWNrIHBhZ2UgdHlwZXNcbmludGVyZmFjZSBWaXNpdENhdGVnb3J5RGVmYXVsdFxuICBleHRlbmRzIEJhc2VDYXRlZ29yeUV4dHJhY3RvcjxDYXRlZ29yeUV4dHJhY3RvclR5cGUuVmlzaXRDYXRlZ29yeURlZmF1bHQ+IHtcbiAgdmFsdWU6IFBhZ2VWaXNpdENhdGVnb3J5O1xufVxuXG50eXBlIENhdGVnb3J5RXh0cmFjdG9yID0gVmlzaXRDYXRlZ29yeU1hcCB8IFZpc2l0Q2F0ZWdvcnlEZWZhdWx0O1xuXG50eXBlIFdyYXBwaW5nRWxlbWVudCA9IHtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIGVsZW1lbnQ6IHN0cmluZztcbiAgaW5zZXJ0aW9uVHlwZTogRE9NSW5zZXJ0aW9uVHlwZTtcbn07XG5cbmVudW0gUGFnZVZhcmlhbnRUZXN0VHlwZSB7XG4gIFNob3BpZnlQTFAgPSBcIlNob3BpZnlQTFBcIixcbiAgU2hvcGlmeVBEUCA9IFwiU2hvcGlmeVBEUFwiLFxuICBQYWdlQ2F0ZWdvcnkgPSBcIlBhZ2VDYXRlZ29yeVwiLFxuICBDYXRhbG9nQ2F0ZWdvcnkgPSBcIkNhdGFsb2dDYXRlZ29yeVwiLFxuICBUb3BDYXRhbG9nQ2F0ZWdvcnkgPSBcIlRvcENhdGFsb2dDYXRlZ29yeVwiLFxuICBIYXNSZXZpZXdzID0gXCJIYXNSZXZpZXdzXCIsXG4gIEluQ29sbGVjdGlvbiA9IFwiSW5Db2xsZWN0aW9uXCIsXG4gIEhhc01lcmNoYW50VGFnID0gXCJIYXNNZXJjaGFudFRhZ1wiLFxuICBGZWF0dXJlR2F0ZSA9IFwiRmVhdHVyZUdhdGVcIixcbiAgUGxwSWQgPSBcIlBscElkXCIsXG4gIFF1ZXJ5UGFyYW0gPSBcIlF1ZXJ5UGFyYW1cIixcbiAgUHJvZHVjdElkID0gXCJQcm9kdWN0SWRcIixcbiAgVXNlckhhc0ludGVyYWN0ZWQgPSBcIlVzZXJIYXNJbnRlcmFjdGVkXCIsXG4gIFVzZXJIYXNOb3RJbnRlcmFjdGVkID0gXCJVc2VySGFzTm90SW50ZXJhY3RlZFwiLFxuICBpc0xvYWRpbmcgPSBcImlzTG9hZGluZ1wiLFxuICBpc1Byb2R1Y3RDb21wYXJpc29uID0gXCJpc1Byb2R1Y3RDb21wYXJpc29uXCIsXG4gIEZhbGxiYWNrID0gXCJGYWxsYmFja1wiLFxuICBVcmxSZXNvbHZlciA9IFwiVXJsUmVzb2x2ZXJcIixcbiAgTnVsbCA9IFwibnVsbFwiLFxufVxuXG5pbnRlcmZhY2UgQmFzZVBhZ2VWYXJpYW50VGVzdDxUIGV4dGVuZHMgUGFnZVZhcmlhbnRUZXN0VHlwZT4ge1xuICB0ZXN0VHlwZTogVDtcbn1cblxuaW50ZXJmYWNlIFRvcENhdGFsb2dDYXRlZ29yeVxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Ub3BDYXRhbG9nQ2F0ZWdvcnk+IHtcbiAgdG9wQ2F0ZWdvcnk6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgQ2F0YWxvZ0NhdGVnb3J5VGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5DYXRhbG9nQ2F0ZWdvcnk+IHtcbiAgY2F0ZWdvcnk6IFN1cHBvcnRlZEV2ZW50UHJvZHVjdENhdGVnb3J5O1xufVxuXG5pbnRlcmZhY2UgSGFzUmV2aWV3c1Rlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuSGFzUmV2aWV3cz4ge1xuICByZXZpZXdNaW5pbXVtPzogbnVtYmVyO1xufVxuXG4vLyBUaGlzIHdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIHByb2R1Y3QgaXMgaW4gYW55IG9mIHRoZSBsaXN0ZWQgY29sbGVjdGlvbnNcbmludGVyZmFjZSBJbkNvbGxlY3Rpb25UZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkluQ29sbGVjdGlvbj4ge1xuICBjb2xsZWN0aW9uczogc3RyaW5nW107XG59XG5cbi8vIFRoaXMgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvZHVjdCBoYXMgYW55IG9mIHRoZSBsaXN0ZWQgbWVyY2hhbnQgdGFnc1xuaW50ZXJmYWNlIEhhc01lcmNoYW50VGFnVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5IYXNNZXJjaGFudFRhZz4ge1xuICBtZXJjaGFudFRhZ3M6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgU2hvcGlmeVBMUFVSTFRlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuU2hvcGlmeVBMUD4ge31cblxuaW50ZXJmYWNlIFNob3BpZnlQRFBVUkxUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlNob3BpZnlQRFA+IHt9XG5cbmludGVyZmFjZSBQYWdlQ2F0ZWdvcnlUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlBhZ2VDYXRlZ29yeT4ge1xuICBleHRyYWN0b3I6IENhdGVnb3J5RXh0cmFjdG9yO1xufVxuXG5pbnRlcmZhY2UgRmVhdHVyZUdhdGVUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkZlYXR1cmVHYXRlPiB7XG4gIGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXM7XG59XG5cbmludGVyZmFjZSBQcm9kdWN0SWRUZXN0XG4gIGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlByb2R1Y3RJZD4ge1xuICBwcm9kdWN0SWRFeHRyYWN0b3I6IElkRXh0cmFjdG9yO1xuICBwcm9kdWN0SWRzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFBscElkVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5QbHBJZD4ge1xuICBwbHBJZEV4dHJhY3RvcjogSWRFeHRyYWN0b3I7XG4gIHBscElkczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBRdWVyeVBhcmFtVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5RdWVyeVBhcmFtPiB7XG4gIHF1ZXJ5UGFyYW06IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFVzZXJIYXNJbnRlcmFjdGVkVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Vc2VySGFzSW50ZXJhY3RlZD4ge31cblxuaW50ZXJmYWNlIFVzZXJIYXNOb3RJbnRlcmFjdGVkVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Vc2VySGFzTm90SW50ZXJhY3RlZD4ge31cblxuaW50ZXJmYWNlIElzTG9hZGluZ1Rlc3RcbiAgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuaXNMb2FkaW5nPiB7fVxuXG5pbnRlcmZhY2UgSXNQcm9kdWN0Q29tcGFyaXNvblxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5pc1Byb2R1Y3RDb21wYXJpc29uPiB7fVxuXG5pbnRlcmZhY2UgUGFnZUZhbGxiYWNrVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5GYWxsYmFjaz4ge31cblxuaW50ZXJmYWNlIFVybFJlc29sdmVyVGVzdFxuICBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlcj4ge31cblxuZXhwb3J0IHR5cGUgUGFnZVZhcmlhbnRUZXN0ID1cbiAgfCBQYWdlQ2F0ZWdvcnlUZXN0XG4gIHwgU2hvcGlmeVBMUFVSTFRlc3RcbiAgfCBTaG9waWZ5UERQVVJMVGVzdFxuICB8IENhdGFsb2dDYXRlZ29yeVRlc3RcbiAgfCBUb3BDYXRhbG9nQ2F0ZWdvcnlcbiAgfCBIYXNSZXZpZXdzVGVzdFxuICB8IEluQ29sbGVjdGlvblRlc3RcbiAgfCBIYXNNZXJjaGFudFRhZ1Rlc3RcbiAgfCBGZWF0dXJlR2F0ZVRlc3RcbiAgfCBQcm9kdWN0SWRUZXN0XG4gIHwgUGxwSWRUZXN0XG4gIHwgUXVlcnlQYXJhbVRlc3RcbiAgfCBVc2VySGFzSW50ZXJhY3RlZFRlc3RcbiAgfCBVc2VySGFzTm90SW50ZXJhY3RlZFRlc3RcbiAgfCBJc0xvYWRpbmdUZXN0XG4gIHwgSXNQcm9kdWN0Q29tcGFyaXNvblxuICB8IFBhZ2VGYWxsYmFja1Rlc3RcbiAgfCBVcmxSZXNvbHZlclRlc3Q7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHNvY2lhbCBwcm9vZiBlbWJlZGRlZCB3aWRnZXRcbiAqXG4gKiBAcGFyYW0gaGVhZGVyVGl0bGUgLSBUaGUgdGl0bGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSB3aWRnZXQgaGVhZGVyXG4gKiBAcGFyYW0gc3RhdGljU3VnZ2VzdGlvbnMgLSBBIGxpc3Qgb2Ygc3RyaW5ncyB0byBkaXNwbGF5IGFzIHN1Z2dlc3Rpb25zIGluIHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudERlZmF1bHQgLSBUaGUgdmFyaWFudCBvZiB0aGUgc3VnZ2VzdGlvbiBidXR0b24gdG8gZGlzcGxheSBpbiB0aGUgd2lkZ2V0IGZvb3RlclxuICogQHBhcmFtIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50QWNjZW50IC0gVGhlIHZhcmlhbnQgb2YgdGhlIHN1Z2dlc3Rpb24gYnV0dG9uIHRvIGRpc3BsYXkgaW4gdGhlIHdpZGdldCBib2R5XG4gKiBAcGFyYW0gc3RhdGljSW1hZ2VJbmRleCAtIEluZGV4IG9mIHRoZSBpbWFnZVVybCB0byB1c2UgZnJvbSB0aGUgcHJvZHVjdCByZXNwb25zZVxuICovXG5pbnRlcmZhY2UgU29jaWFsUHJvb2ZDb25maWcge1xuICBjdXN0b21lclF1ZXJ5OiBzdHJpbmc7XG4gIGhlYWRlclRpdGxlOiBzdHJpbmc7XG4gIHN0YXRpY1BMUEltYWdlc0xheW91dD86IFwiZ3JpZFwiIHwgXCJob3Jpem9udGFsXCI7XG4gIGhlYWRlckZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gIHN0YXRpY1BMUEltYWdlTmFtZXM/OiBzdHJpbmdbXTtcbiAgc3RhdGljSW1hZ2VJbmRleD86IG51bWJlcjtcbiAgc3VnZ2VzdGlvbkJ1dHRvblN0cmluZ3M6IHN0cmluZ1tdO1xuICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudERlZmF1bHQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudEFjY2VudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBzdWdnZXN0aW9uQnV0dG9uRGF0YUF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICB1c2VyUXVlcnlCdXR0b25Db25maWc/OiBVc2VyUXVlcnlCdXR0b25Db25maWc7XG4gIGxvZ29OYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIHRoZSBtb3VudCBwb2ludCBmb3IgYSB3aWRnZXRcbiAqXG4gKiBAcGFyYW0gY2xhc3NOYW1lIC0gT3B0aW9uYWwgY2xhc3MgbmFtZSB0byBhcHBseSB0byB0aGUgbW91bnQgcG9pbnQuIFRhaWx3aW5kIGNsYXNzZXMgYXJlIHN1cHBvcnRlZFxuICogYW5kIGVuY291cmFnZWQuIFVzZSB0aGlzIHBhcmFtZXRlciB0byBzdHlsZSB0aGUgbW91bnRpbmcgY29udGFpbmVyIGZvciB0aGUgd2lkZ2V0LlxuICovXG5leHBvcnQgdHlwZSBXaWRnZXRNb3VudGluZ0NvbmZpZyA9IHtcbiAgbW91bnRpbmdDb25maWdJZDogc3RyaW5nO1xuICBjb250YWluZXJJZDogc3RyaW5nO1xuICB0ZXN0SWQ6IHN0cmluZztcbiAgcGFyZW50SW5zZXJ0aW9uUG9pbnQ/OiBJbnNlcnRpb25Qb2ludDtcbiAgaW5zZXJ0aW9uUG9pbnQ6IEluc2VydGlvblBvaW50O1xuICBncmlkSW5zZXJ0aW9uVHlwZT86IEdyaWRJbnNlcnRpb25UeXBlO1xuICB3cmFwcGluZ0VsZW1lbnQ/OiBXcmFwcGluZ0VsZW1lbnQ7XG4gIGRpdkNoZWNrU2VsZWN0b3I/OiBzdHJpbmc7XG4gIHN1cHByZXNzaW9uU2VsZWN0b3I/OiBzdHJpbmc7XG4gIHN0eWxlPzogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkYXRhQXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG50eXBlIFN0YXRpY1dpZGdldE1vdW50aW5nID0ge1xuICBtb3VudGluZ0NvbmZpZ0lkOiBzdHJpbmc7XG4gIHdpZGdldENvbmZpZ0lkOiBzdHJpbmc7XG59O1xudHlwZSBEeW5hbWljV2lkZ2V0TW91bnRpbmcgPSB7XG4gIG1vdW50aW5nQ29uZmlnSWQ6IHN0cmluZztcbiAgbW91bnRpbmdQb2ludFdpZGdldHM6IFdpZGdldERpc3BsYXlUZXN0c1tdO1xufTtcblxudHlwZSBXaWRnZXREaXNwbGF5VGVzdHMgPSB7XG4gIHRlc3RzOiBQYWdlVmFyaWFudFRlc3RbXTtcbiAgd2lkZ2V0Q29uZmlnSWQ6IHN0cmluZztcbn07XG5cbnR5cGUgV2lkZ2V0TW91bnRpbmcgPSBTdGF0aWNXaWRnZXRNb3VudGluZyB8IER5bmFtaWNXaWRnZXRNb3VudGluZztcblxuZW51bSBXaWRnZXRUeXBlIHtcbiAgQ2hhdFByZXZpZXcgPSBcIkNoYXRQcmV2aWV3XCIsXG4gIFNvY2lhbFByb29mVjIgPSBcIlNvY2lhbFByb29mVjJcIixcbiAgQ2hhdFByZXZpZXdWMiA9IFwiQ2hhdFByZXZpZXdWMlwiLFxuICBDaGF0UHJldmlld0lzTG9hZGluZyA9IFwiQ2hhdFByZXZpZXdJc0xvYWRpbmdcIixcbiAgQ2hhdFByZXZpZXdQb3N0SW50ZXJhY3Rpb24gPSBcIkNoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uXCIsXG4gIENoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb24gPSBcIkNoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb25cIixcbiAgU3VnZ2VzdGlvbkJhciA9IFwiU3VnZ2VzdGlvbkJhclwiLFxuICBTdWdnZXN0aW9uQmFyVjIgPSBcIlN1Z2dlc3Rpb25CYXJWMlwiLFxuICBJbWFnZVByb21wdENhcmQgPSBcIkltYWdlUHJvbXB0Q2FyZFwiLFxuICBJbWFnZUJhbm5lciA9IFwiSW1hZ2VCYW5uZXJcIixcbiAgU2luZ2xlSW1hZ2VQcm9tcHQgPSBcIlNpbmdsZUltYWdlUHJvbXB0XCIsXG4gIFNlYXJjaFByb21wdCA9IFwiU2VhcmNoUHJvbXB0XCIsXG4gIFNlYXJjaFplcm9TdGF0ZUVudHJ5UG9pbnQgPSBcIlNlYXJjaFplcm9TdGF0ZUVudHJ5UG9pbnRcIixcbiAgU2VhcmNoUmVzdWx0c0VudHJ5UG9pbnQgPSBcIlNlYXJjaFJlc3VsdHNFbnRyeVBvaW50XCIsXG4gIFNlYXJjaE92ZXJsYXlIb3N0ID0gXCJTZWFyY2hPdmVybGF5SG9zdFwiLFxuICBOb09wID0gXCJOb09wXCIsXG59XG5cbnR5cGUgV2lkZ2V0Q29uZmlnID1cbiAgfCBDaGF0UHJldmlld1dpZGdldENvbmZpZ1xuICB8IFNvY2lhbFByb29mVjJXaWRnZXRDb25maWdcbiAgfCBDaGF0UHJldmlld1YyV2lkZ2V0Q29uZmlnXG4gIHwgQ2hhdFByZXZpZXdQb3N0SW50ZXJhY3Rpb25XaWRnZXRDb25maWdcbiAgfCBDaGF0UHJldmlld0lzTG9hZGluZ1dpZGdldENvbmZpZ1xuICB8IENoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb25XaWRnZXRDb25maWdcbiAgfCBTdWdnZXN0aW9uQmFyV2lkZ2V0VjJDb25maWdcbiAgfCBJbWFnZVByb21wdFdpZGdldENvbmZpZ1xuICB8IEltYWdlQmFubmVyV2lkZ2V0Q29uZmlnXG4gIHwgU2luZ2xlSW1hZ2VQcm9tcHRXaWRnZXRDb25maWdcbiAgfCBTZWFyY2hQcm9tcHRXaWRnZXRDb25maWdcbiAgfCBTZWFyY2hFbnRyeVBvaW50V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoUmVzdWx0c0VudHJ5UG9pbnRXaWRnZXRDb25maWdcbiAgfCBTZWFyY2hPdmVybGF5SG9zdFdpZGdldENvbmZpZ1xuICB8IE5vT3BXaWRnZXRDb25maWc7XG5cbmludGVyZmFjZSBCYXNlV2lkZ2V0Q29uZmlnPFQgZXh0ZW5kcyBXaWRnZXRUeXBlPiB7XG4gIHdpZGdldENvbmZpZ0lkOiBzdHJpbmc7XG4gIHR5cGU6IFQ7XG4gIGNvbnRlbnRJZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEltYWdlQmFubmVyV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkltYWdlQmFubmVyPiB7XG4gIGltYWdlU3JjOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIGFzc2lzdGFudE1lc3NhZ2U6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3V2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3PiB7XG4gIHZhcmlhbnQ6IFwiZmlsbGVkXCIgfCBcImZsYXRcIiB8IFwib3V0bGluZWRcIjtcbiAgYWRkU2VwYXJhdG9ycz86IGJvb2xlYW47XG4gIHNvY2lhbFByb29mQ29uZmlnPzogU29jaWFsUHJvb2ZDb25maWc7XG4gIGZvb3RlckNvbmZpZz86IENoYXRQcmV2aWV3Rm9vdGVyQ29uZmlnO1xufVxuXG5pbnRlcmZhY2UgQ2hhdFByZXZpZXdIZWFkZXJWMkNvbmZpZyB7XG4gIHRpdGxlPzogc3RyaW5nOyAvLyBEZWZhdWx0OiAnU2hvcHBpbmcgQXNzaXN0YW50J1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgaW1hZ2VIZWlnaHQ/OiBudW1iZXI7XG59XG5cbnR5cGUgU2luZ2xlSW1hZ2VDb25maWcgPSB7XG4gIGxheW91dDogXCJzaW5nbGVcIjtcbiAgaW1hZ2VJbmRleDogbnVtYmVyO1xufTtcbnR5cGUgTXVsdGlJbWFnZUNvbmZpZyA9IHtcbiAgbGF5b3V0OiBcImdyaWRcIiB8IFwiaG9yaXpvbnRhbFwiO1xuICBpbWFnZU5hbWVzOiBzdHJpbmdbXTtcbn07XG50eXBlIFNvY2lhbFByb29mSW1hZ2VDb25maWcgPSBTaW5nbGVJbWFnZUNvbmZpZyB8IE11bHRpSW1hZ2VDb25maWc7XG5cbnR5cGUgQ2hhdFByZXZpZXdTdWdnZXN0aW9uQnV0dG9uQ29uZmlnID0ge1xuICBidXR0b25TdHJpbmdzOiBzdHJpbmdbXTtcbiAgYWNjZW50QnV0dG9uVmFyaWFudHM/OiB7XG4gICAgYnV0dG9uOiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgICBob3ZlcjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIH07XG4gIGJ1dHRvblZhcmlhbnRzOiB7XG4gICAgYnV0dG9uOiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgICBob3ZlcjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIH07XG4gIG51bVJvd3M/OiBOdW1Sb3dzO1xufTtcblxudHlwZSBDaGF0UHJldmlld0FuaW1hdGVkVGV4dENvbmZpZyA9IHtcbiAgbGVhZGluZ1RleHQ6IHN0cmluZztcbiAgYW5pbWF0ZWRTdHJpbmdzOiBzdHJpbmdbXTtcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdWYXJpYW50ID1cbiAgfCB7IHZhcmlhbnQ6IFwiZmxhdFwiIH1cbiAgfCB7IHZhcmlhbnQ6IFwiZmlsbGVkXCI7IGJhY2tncm91bmRGaWxsQ29sb3I6IHN0cmluZyB9XG4gIHwgeyB2YXJpYW50OiBcIm91dGxpbmVkXCIgfTtcblxuLy8gQmFzZSBpbnRlcmZhY2UgZm9yIGNvbW1vbiBjaGF0IHByZXZpZXcgcHJvcGVydGllc1xuaW50ZXJmYWNlIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7XG4gIGhlYWRlckNvbmZpZzogQ2hhdFByZXZpZXdIZWFkZXJWMkNvbmZpZztcbiAgc3VnZ2VzdGlvbkJ1dHRvbnNDb25maWc6IENoYXRQcmV2aWV3U3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZztcbiAgdXNlclF1ZXJ5QnV0dG9uQ29uZmlnOiBVc2VyUXVlcnlCdXR0b25Db25maWc7XG4gIGNoYXRQcmV2aWV3VmFyaWFudDogQ2hhdFByZXZpZXdWYXJpYW50O1xuICBhZGRTZXBhcmF0b3JzPzogYm9vbGVhbjtcbn1cblxuLy8gU3BlY2lmaWMgY2hhdCBwcmV2aWV3IHdpZGdldCBjb25maWd1cmF0aW9uc1xuaW50ZXJmYWNlIENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uPixcbiAgICBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBjaGF0UHJldmlld1ZhcmlhbnQ6IENoYXRQcmV2aWV3VmFyaWFudDtcbiAgYWRkU2VwYXJhdG9ycz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDaGF0UHJldmlld0lzTG9hZGluZ1dpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlld0lzTG9hZGluZz4sXG4gICAgQmFzZUNoYXRQcmV2aWV3Q29uZmlnIHt9XG5cbmludGVyZmFjZSBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb24+LFxuICAgIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7XG4gIHVzZUxhcmdlUHJvZHVjdENvbXBhcmlzb24/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hhdFByZXZpZXdWMldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlld1YyPixcbiAgICBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBhbmltYXRlZFRleHRDb25maWc6IENoYXRQcmV2aWV3QW5pbWF0ZWRUZXh0Q29uZmlnO1xufVxuXG5pbnRlcmZhY2UgU29jaWFsUHJvb2ZWMldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5Tb2NpYWxQcm9vZlYyPixcbiAgICBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBjdXN0b21lclF1ZXJ5Pzogc3RyaW5nOyAvLyBEZWZhdWx0OiAnYXNrZWQgd2hpY2ggcHJvZHVjdHMgYXJlIHRoZSBiZXN0J1xuICBpbWFnZUNvbmZpZzogU29jaWFsUHJvb2ZJbWFnZUNvbmZpZztcbn1cblxuaW50ZXJmYWNlIFN1Z2dlc3Rpb25CYXJXaWRnZXRWMkNvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TdWdnZXN0aW9uQmFyVjI+IHtcbiAgbWV0cmljRGlzcGxheUxvY2F0aW9uOiBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvbjtcbiAgbG9jYXRpb246IFN1Z2dlc3Rpb25CYXJMb2NhdGlvbkZvck1ldHJpY3M7XG4gIHZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBob3ZlclZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBidXR0b25UZXh0czoge1xuICAgIGRlZmF1bHQ6IHN0cmluZ1tdO1xuICAgIHByb2R1Y3RTcGVjaWZpYz86IHsgW3Byb2R1Y3RJZDogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgfTtcbiAgYm9sZEZpcnN0QnV0dG9uPzogYm9vbGVhbjtcbiAgdHdvUm93c09uTW9iaWxlPzogYm9vbGVhbjtcbiAgYW5pbWF0aW9uU3BlZWQ/OiBcInN0YW5kYXJkXCIgfCBcInNsb3dcIiB8IFwibm9uZVwiO1xuICBidXR0b25Cb3JkZXJSYWRpdXM/OiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCI7XG59XG5cbmludGVyZmFjZSBJbWFnZVByb21wdFdpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5JbWFnZVByb21wdENhcmQ+IHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxpZ2h0VGV4dD86IGJvb2xlYW47XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmdbXTtcbiAgc3RhdGljU3VnZ2VzdGlvbkNvcGllczogc3RyaW5nW107XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZzogVXNlclF1ZXJ5QnV0dG9uQ29uZmlnO1xuICBmYWxsYmFja0JhY2tncm91bmRDb2xvcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNpbmdsZUltYWdlUHJvbXB0PiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXRpY1N1Z2dlc3Rpb25Db3BpZXM6IHN0cmluZ1tdO1xuICB1c2VyUXVlcnlCdXR0b25Db25maWc6IFVzZXJRdWVyeUJ1dHRvbkNvbmZpZztcbn1cblxuaW50ZXJmYWNlIFNlYXJjaEVudHJ5UG9pbnRXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuU2VhcmNoWmVyb1N0YXRlRW50cnlQb2ludD4ge1xuICBzZWFyY2haZXJvU3RhdGVWYXJpYW50OiBTZWFyY2haZXJvU3RhdGVWYXJpYW50O1xuICBzZWFyY2hJbnB1dFZhcmlhbnQ6IFNlYXJjaElucHV0VmFyaWFudDtcbiAgc2VhcmNoSWNvblZhcmlhbnQ/OiBTZWFyY2hJY29uVmFyaWFudDtcbiAgc2VhcmNoSWNvblNpemU/OiBudW1iZXI7XG4gIHN1Z2dlc3Rpb25CdXR0b25Db25maWc6IFN1Z2dlc3Rpb25CdXR0b25Db25maWc7XG4gIGxheW91dDogU2VhcmNoWmVyb1N0YXRlTGF5b3V0O1xuICBzZWFyY2hCb3hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBhbmltYXRpb25TcGVlZD86IFwic3RhbmRhcmRcIiB8IFwic2xvd1wiIHwgXCJub25lXCI7XG4gIGNvbXBhY3RMYWJlbD86IHN0cmluZztcbiAgaW5pdGlhbFN1Z2dlc3Rpb25zPzogc3RyaW5nW107XG4gIHVzaW5nUG9ydGFsPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIE5vT3BXaWRnZXRDb25maWcgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuTm9PcD4ge31cbmludGVyZmFjZSBTZWFyY2hPdmVybGF5SG9zdFdpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TZWFyY2hPdmVybGF5SG9zdD4ge31cblxuaW50ZXJmYWNlIFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50V2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNlYXJjaFJlc3VsdHNFbnRyeVBvaW50PiB7XG4gIHNlYXJjaElucHV0VmFyaWFudDogU2VhcmNoSW5wdXRWYXJpYW50O1xuICBzZWFyY2hGaWx0ZXJTaWRlYmFyVmFyaWFudDogU2VhcmNoRmlsdGVyU2lkZWJhclZhcmlhbnQ7XG4gIHByb2R1Y3RHcmlkVmFyaWFudDogUHJvZHVjdEdyaWRWYXJpYW50O1xuICBzZWFyY2hCb3hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBub1Jlc3VsdHNGb3VuZFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SGVhZGVyUHJvcHMgZXh0ZW5kcyBUZXN0UHJvcHMge1xuICB0aXRsZT86IHN0cmluZztcbiAgbG9nbz86IHN0cmluZztcbiAgbG9nb0hlaWdodD86IG51bWJlcjtcbiAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBTZWFyY2hQcm9tcHRWYXJpYW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJRdWVyeU9wdGlvbnMge1xuICBmb290ZXJWYXJpYW50PzogXCJzdGFuZGFyZFwiO1xuICByZXBseUJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gIHJlcGx5QnV0dG9uSWNvbj86XG4gICAgfCBcIm1hZ25pZnlpbmdHbGFzc1wiXG4gICAgfCBcInNlbmRcIlxuICAgIHwgXCJ0aGluTWFnbmlmeWluZ0dsYXNzXCJcbiAgICB8IFwiYWktc2VhcmNoXCI7XG59XG5cbnR5cGUgU2VhcmNoUHJvbXB0VmFyaWFudCA9IFwicHJpbWFyeVwiO1xuaW50ZXJmYWNlIFNlYXJjaFByb21wdFdpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TZWFyY2hQcm9tcHQ+IHtcbiAgdmFyaWFudDogU2VhcmNoUHJvbXB0VmFyaWFudDtcbiAgdGl0bGU6IHN0cmluZztcbiAgaGVhZGVyQ29uZmlnOiBXaWRnZXRIZWFkZXJQcm9wcztcbiAgc3VnZ2VzdGlvbkJ1dHRvbnM6IHtcbiAgICB2YXJpYW50OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgICBob3ZlclZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICAgIGJ1dHRvblRleHRzOiBzdHJpbmdbXTtcbiAgfTtcbiAgZm9vdGVyQ29uZmlnPzogVXNlclF1ZXJ5T3B0aW9ucztcbn1cblxudHlwZSBQYWdlVmFyaWFudEJhc2UgPSB7XG4gIC8vIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBlYWNoIGVudHJ5IHdpdGhpbiB0aGUgcGFnZVZhcmlhbnRzLlxuICAvLyBVc2VmdWwgdG8gZGlmZmVyZW50aWF0ZSB3aGljaCB2YXJpYW50IGlzIGxvYWRlZCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZXMgb2YgYSBzaW5nbGUgdHlwZS5cbiAgdmFyaWFudElkOiBzdHJpbmc7XG4gIHdpZGdldE1vdW50aW5nOiBXaWRnZXRNb3VudGluZ1tdO1xuICB2YXJpYW50VGVzdHM6IFBhZ2VWYXJpYW50VGVzdFtdO1xufTtcblxudHlwZSBQTFBQYWdlVmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6IFwicGxwXCI7XG4gIHBscElkRXh0cmFjdG9yOiBJZEV4dHJhY3Rvcjtcbn07XG5cbnR5cGUgUERQUGFnZVZhcmlhbnQgPSBQYWdlVmFyaWFudEJhc2UgJiB7XG4gIHZhcmlhbnRUeXBlOiBcInBkcFwiO1xuICBwYXJlbnRQcm9kdWN0SWRFeHRyYWN0b3I/OiBJZEV4dHJhY3RvcjtcbiAgcHJvZHVjdElkRXh0cmFjdG9yOiBJZEV4dHJhY3Rvcjtcbn07XG5cbnR5cGUgVmlzaXRQYWdlVmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6IFwicGFnZV92aXNpdFwiO1xufTtcblxudHlwZSBPdGhlclBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogXCJvdGhlclwiO1xufTtcblxudHlwZSBIb21lUGFnZVZhcmlhbnQgPSBQYWdlVmFyaWFudEJhc2UgJiB7XG4gIHZhcmlhbnRUeXBlOiBcImhvbWVwYWdlXCI7XG59O1xuXG50eXBlIFNlYXJjaFBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogXCJzZWFyY2hcIjtcbn07XG5cbmV4cG9ydCB0eXBlIFBhZ2VWYXJpYW50Q29uZmlnID1cbiAgfCBQTFBQYWdlVmFyaWFudFxuICB8IFBEUFBhZ2VWYXJpYW50XG4gIHwgVmlzaXRQYWdlVmFyaWFudFxuICB8IE90aGVyUGFnZVZhcmlhbnRcbiAgfCBIb21lUGFnZVZhcmlhbnRcbiAgfCBTZWFyY2hQYWdlVmFyaWFudDtcblxuZXhwb3J0IHR5cGUgT3JnUGFnZUNvbmZpZyA9IHtcbiAgLy8gcGFnZVZhcmlhbnRzIGlzIGEgbGlzdCBvZiBwYWdlIHZhcmlhbnRzIHRoYXQgd2Ugc3VwcG9ydC5cbiAgcGFnZVZhcmlhbnRzOiBQYWdlVmFyaWFudENvbmZpZ1tdO1xuICAvLyB3aWRnZXRDb25maWdzIGlzIGEgbmFtZWQgc2V0IG9mIHdpZGdldCBjb25maWdzXG4gIHdpZGdldENvbmZpZ3M6IFJlY29yZDxzdHJpbmcsIFdpZGdldENvbmZpZz47XG4gIG1vdW50aW5nQ29uZmlnczogUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+O1xufTtcblxuaW50ZXJmYWNlIE9yZ0NvbmZpZ0NvbnRleHRUeXBlIHtcbiAgb3JnVUlDb25maWc6IE9yZ1VJQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBPcmdDb25maWcgPSBPcmdVSUNvbmZpZztcblxuZXhwb3J0IHtcbiAgQ2F0ZWdvcnlFeHRyYWN0b3JUeXBlLFxuICBDb2xvck5hbWVzLFxuICBjb2xvclZhcixcbiAgUGFnZVZhcmlhbnRUZXN0VHlwZSxcbiAgV2lkZ2V0VHlwZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXZlQ29uZmlnIHtcbiAgYW1wbGl0dWRlQXBpS2V5Pzogc3RyaW5nO1xuICBkYXRhUmVzaWRlbmN5Pzogc3RyaW5nO1xuICBlbnY/OiBzdHJpbmc7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIHJlYWN0QXBwTmFtZT86IHN0cmluZztcbiAgY2RuVXJsPzogc3RyaW5nO1xuICBjb250ZXh0U291cmNlPzogc3RyaW5nO1xuICBvcmdMZXZlbEFwaUtleT86IHN0cmluZztcbiAgb3JnU2hvcnROYW1lPzogc3RyaW5nO1xuICBpZGVudGlmeWluZ1ByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUge1xuICBDYXRlZ29yeUV4dHJhY3RvcixcbiAgQ2hhdE1lc3NhZ2VWYXJpYW50LFxuICBDaGF0TWVzc2FnZUNvbmZpZyxcbiAgQ2hhdFByZXZpZXdDb25maWcsXG4gIENoYXRQcmV2aWV3SXNMb2FkaW5nV2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvbldpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdQcm9kdWN0Q29tcGFyaXNvbldpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdTdWdnZXN0aW9uQnV0dG9uQ29uZmlnLFxuICBTb2NpYWxQcm9vZlYyV2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld0hlYWRlclYyQ29uZmlnLFxuICBDaGF0UHJldmlld1YyV2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld0Zvb3RlckNvbmZpZyxcbiAgQ2hhdFByZXZpZXdIZWFkZXJDb25maWcsXG4gIENoYXRQcmV2aWV3V2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld1ZhcmlhbnQsXG4gIENvbG9yTWFwcGluZyxcbiAgQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24sXG4gIEZsb2F0aW5nRW50cnlQb2ludENvbmZpZyxcbiAgRnVsbEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uLFxuICBJZEV4dHJhY3RvcixcbiAgSW1hZ2VCYW5uZXJXaWRnZXRDb25maWcsXG4gIEltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnLFxuICBJbnNlcnRpb25Qb2ludCxcbiAgTXVsdGlJbWFnZUNvbmZpZyxcbiAgT3JnQ29uZmlnQ29udGV4dFR5cGUsXG4gIE9yZ1VJQ29uZmlnLFxuICBQYWdlQ2FyZENvbmZpZyxcbiAgUGFnZUNhcmRWYXJpYW50LFxuICBQYWdlQ2FyZEhvdmVyVmFyaWFudCxcbiAgUGFnZUNhcmRJY29uVmFyaWFudCxcbiAgUHJvZHVjdENhcmRDb25maWcsXG4gIFByb2R1Y3RDYXJkVmFyaWFudCxcbiAgUHJvZHVjdENhcmRMYXlvdXRWYXJpYW50LFxuICBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudCxcbiAgUHJvZHVjdExpbmtIb3ZlclZhcmlhbnQsXG4gIFByb2R1Y3RMaW5rSWNvblZhcmlhbnQsXG4gIFByb2R1Y3RMaW5rVmFyaWFudCxcbiAgUHJvZHVjdFJldmlld0NvbmZpZyxcbiAgUHJvZHVjdFJldmlld1N0eWxlVmFyaWFudCxcbiAgUHJvZHVjdFJldmlld0NvbG9yVmFyaWFudCxcbiAgU2VhcmNoUHJvbXB0VmFyaWFudCxcbiAgU2VhcmNoUHJvbXB0V2lkZ2V0Q29uZmlnLFxuICBTZWFyY2hSZXN1bHRzRW50cnlQb2ludFdpZGdldENvbmZpZyxcbiAgU2hvd0Zsb2F0aW5nQnV0dG9uT3B0aW9ucyxcbiAgU2luZ2xlSW1hZ2VQcm9tcHRXaWRnZXRDb25maWcsXG4gIFNlYXJjaEVudHJ5UG9pbnRXaWRnZXRDb25maWcsXG4gIFNlYXJjaE92ZXJsYXlIb3N0V2lkZ2V0Q29uZmlnLFxuICBTb2NpYWxQcm9vZkNvbmZpZyxcbiAgU3VnZ2VzdGlvbkJhcldpZGdldFYyQ29uZmlnLFxuICBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnLFxuICBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudCxcbiAgVVJMVGVzdCxcbiAgVXNlclF1ZXJ5QnV0dG9uQ29uZmlnLFxuICBVc2VyUXVlcnlCdXR0b25JY29uLFxuICBXZWxjb21lU2VjdGlvbkNvbmZpZyxcbiAgV2VsY29tZVNlY3Rpb25WYXJpYW50LFxuICBXZWxjb21lU2VjdGlvbkNvbG9yVmFyaWFudCxcbiAgV2lkZ2V0Q29uZmlnLFxuICBXcmFwcGluZ0VsZW1lbnQsXG4gIFNlYXJjaENhcmRWYXJpYW50LFxuICBXaWRnZXREaXNwbGF5VGVzdHMsXG4gIE5vT3BXaWRnZXRDb25maWcsXG4gIFdpZGdldE1vdW50aW5nLFxuICBTdGF0aWNXaWRnZXRNb3VudGluZyxcbiAgRHluYW1pY1dpZGdldE1vdW50aW5nLFxuICBQRFBQYWdlVmFyaWFudCxcbiAgUExQUGFnZVZhcmlhbnQsXG4gIFZpc2l0UGFnZVZhcmlhbnQsXG4gIE90aGVyUGFnZVZhcmlhbnQsXG4gIEhvbWVQYWdlVmFyaWFudCxcbiAgU2VhcmNoUGFnZVZhcmlhbnQsXG4gIE51bVJvd3MsXG59O1xuIiwiaW1wb3J0IHsgQ3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50XCI7XG5cbmV4cG9ydCBlbnVtIEN1c3RvbWVyU2VydmljZVR5cGUge1xuICBzaG9waWZ5ID0gXCJzaG9waWZ5XCIsXG4gIGdvcmdpYXMgPSBcImdvcmdpYXNcIixcbiAga3VzdG9tZXIgPSBcImt1c3RvbWVyXCIsXG4gIGdyb292ZSA9IFwiZ3Jvb3ZlXCIsXG4gIHRpZGlvID0gXCJ0aWRpb1wiLFxuICB6b3dpZSA9IFwiem93aWVcIixcbiAgcmVkbyA9IFwicmVkb1wiLFxuICBnbGFkbHkgPSBcImdsYWRseVwiLFxuICByaWNocGFuZWwgPSBcInJpY2hwYW5lbFwiLFxuICB6ZW5kZXNrID0gXCJ6ZW5kZXNrXCIsXG4gIHVuc3VwcG9ydGVkID0gXCJ1bnN1cHBvcnRlZFwiLFxufVxuZXhwb3J0IGVudW0gQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlIHtcbiAgbm9uZSA9IFwibm9uZVwiLFxuICBzaW1wbGUgPSBcInNpbXBsZVwiLFxuICBmdWxsID0gXCJmdWxsXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24ge1xuICBwcm92aWRlcjogQ3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXI7XG4gIHN1cHBvcnRlZEludGVncmF0aW9uTW9kZXM6IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uTW9kZVtdO1xuICBhbGxvd0ZpbGVVcGxvYWQ/OiBib29sZWFuO1xuICBtYXhmaWxlVXBsb2FkU2l6ZT86IG51bWJlcjtcbiAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgbWV0aG9kIHdoZW4gbWlncmF0aW5nIG90aGVyIHByb3ZpZGVycyB0byB0aGUgbmV3IHVuaWZpZWQgQ1ggYnV0dG9uLlxuICBvblN3aXRjaFRvQWdlbnQ6ICgpID0+IHZvaWQ7XG4gIGlzRW5hYmxlZDogKCkgPT4gYm9vbGVhbjtcbiAgaXNCdXNpbmVzc0hvdXJzOiAoYXBpS2V5Pzogc3RyaW5nLCBhcGlFbmRwb2ludD86IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFLLG9EQUFMO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQWxCRztBQXlCTCxNQUFNLFlBQVksVUFBOEIsdUJBQXVCLE1BQU07Ozs7QUN6QjdFLE1BQWEsZUFBZTtDQUMxQixTQUFTO0NBQ1Qsa0JBQWtCO0NBQ2xCLFVBQVU7Q0FDVixhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtDQUNsQixhQUFhO0NBQ2IsT0FBTztDQUNQLGNBQWM7Q0FDZCxXQUFXO0NBQ1gsZUFBZTtDQUNmLFlBQVk7Q0FFWixnQkFBZ0I7Q0FDaEIsV0FBVztDQUNYLFNBQVM7Q0FDVCxpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLFNBQVM7Q0FDVCxVQUFVO0NBQ1YsU0FBUztDQUNULGVBQWU7Q0FDZixnQkFBZ0I7Q0FDaEIsZ0JBQWdCO0NBQ2hCLG1CQUFtQjtDQUNuQixlQUFlO0NBQ2YsV0FBVztDQUNYLGtCQUFrQjtDQUNsQixpQkFBaUI7Q0FDakIsWUFBWTtDQUNaLE9BQU87Q0FDUCxjQUFjO0NBQ2QsY0FBYztDQUNkLFNBQVM7Q0FDVjs7OztBQ25CRCxNQUFhLGFBQWEsT0FDeEIsaUJBQzhCO0FBQzlCLFNBQVEsY0FBUjtFQUNFLEtBQUssYUFBYSxVQUNoQiw2Q0FBTyw2QkFBNEMsTUFDaEQsYUFBV0EsU0FBTyxpQkFDcEI7RUFDSCxLQUFLLGFBQWEsTUFDaEIsNkNBQU8seUJBQW9DLE1BQ3hDLGFBQVdBLFNBQU8sYUFDcEI7RUFDSCxLQUFLLGFBQWEsUUFDaEIsNkNBQU8sMkJBQXdDLE1BQzVDLGFBQVdBLFNBQU8sZUFDcEI7RUFDSCxLQUFLLGFBQWEsY0FDaEIsNkNBQU8saUNBQW9ELE1BQ3hELGFBQVdBLFNBQU8scUJBQ3BCO0VBQ0gsS0FBSyxhQUFhLGlCQUNoQiw2Q0FBTyxvQ0FBMEQsTUFDOUQsYUFBV0EsU0FBTyx3QkFDcEI7RUFDSCxLQUFLLGFBQWEsU0FDaEIsNkNBQU8sNEJBQTBDLE1BQzlDLGFBQVdBLFNBQU8sZ0JBQ3BCO0VBQ0gsS0FBSyxhQUFhLFdBQ2hCLDZDQUFPLDhCQUE4QyxNQUNsRCxhQUFXQSxTQUFPLGtCQUNwQjtFQUNILEtBQUssYUFBYSxXQUNoQiw2Q0FBTyw4QkFBOEMsTUFDbEQsYUFBV0EsU0FBTyxrQkFDcEI7RUFDSCxLQUFLLGFBQWEsWUFDaEIsNkNBQU8sK0JBQWdELE1BQ3BELGFBQVdBLFNBQU8sbUJBQ3BCO0VBQ0gsS0FBSyxhQUFhLGdCQUNoQiw2Q0FBTyxtQ0FBd0QsTUFDNUQsYUFBV0EsU0FBTyx1QkFDcEI7RUFDSCxLQUFLLGFBQWEsZUFDaEIsNkNBQU8sa0NBQXNELE1BQzFELGFBQVdBLFNBQU8sc0JBQ3BCO0VBQ0gsS0FBSyxhQUFhLGlCQUNoQiw2Q0FBTyxvQ0FBMEQsTUFDOUQsYUFBV0EsU0FBTyx3QkFDcEI7RUFDSCxLQUFLLGFBQWEsWUFDaEIsNkNBQU8sK0JBQWdELE1BQ3BELGFBQVdBLFNBQU8sbUJBQ3BCO0VBR0gsS0FBSyxhQUFhLE1BQ2hCLDZDQUFPLHlCQUFvQyxNQUN4QyxhQUFXQSxTQUFPLGFBQ3BCO0VBRUgsS0FBSyxhQUFhLGFBQ2hCLDZDQUFPLGdDQUEyQyxNQUMvQyxhQUFXQSxTQUFPLGFBQ3BCO0VBR0gsS0FBSyxhQUFhLFVBQ2hCLDZDQUFPLDZCQUE0QyxNQUNoRCxhQUFXQSxTQUFPLGlCQUNwQjtFQUNILEtBQUssYUFBYSxjQUNoQiw2Q0FBTyxpQ0FBb0QsTUFDeEQsYUFBV0EsU0FBTyxxQkFDcEI7RUFDSCxLQUFLLGFBQWEsaUJBQ2hCLDZDQUFPLG9DQUEwRCxNQUM5RCxhQUFXQSxTQUFPLHdCQUNwQjtFQUNILEtBQUssYUFBYSxhQUNoQiw2Q0FBTyxnQ0FBa0QsTUFDdEQsYUFBV0EsU0FBTyxvQkFDcEI7RUFDSCxLQUFLLGFBQWEsYUFDaEIsNkNBQU8sZ0NBQWtELE1BQ3RELGFBQVdBLFNBQU8sb0JBQ3BCO0VBRUgsS0FBSyxhQUFhLGVBQ2hCLDZDQUFPLGtDQUFzRCxNQUMxRCxhQUFXQSxTQUFPLHNCQUNwQjtFQUNILEtBQUssYUFBYSxVQUNoQiw2Q0FBTyw2QkFBNEMsTUFDaEQsYUFBV0EsU0FBTyxpQkFDcEI7RUFDSCxLQUFLLGFBQWEsUUFDaEIsNkNBQU8sMkJBQXdDLE1BQzVDLGFBQVdBLFNBQU8sZUFDcEI7RUFDSCxLQUFLLGFBQWEsZ0JBQ2hCLDZDQUFPLG1DQUF3RCxNQUM1RCxhQUFXQSxTQUFPLHVCQUNwQjtFQUNILEtBQUssYUFBYSxZQUNoQiw2Q0FBTywrQkFBZ0QsTUFDcEQsYUFBV0EsU0FBTyxtQkFDcEI7RUFDSCxLQUFLLGFBQWEsUUFDaEIsNkNBQU8sMkJBQXdDLE1BQzVDLGFBQVdBLFNBQU8sZUFDcEI7RUFDSCxLQUFLLGFBQWEsU0FDaEIsNkNBQU8sNEJBQTBDLE1BQzlDLGFBQVdBLFNBQU8sZ0JBQ3BCO0VBRUgsS0FBSyxhQUFhLFFBQ2hCLDZDQUFPLDJCQUF3QyxNQUM1QyxhQUFXQSxTQUFPLGVBQ3BCO0VBQ0gsS0FBSyxhQUFhLGNBQ2hCLDZDQUFPLGlDQUFvRCxNQUN4RCxhQUFXQSxTQUFPLHFCQUNwQjtFQUNILEtBQUssYUFBYSxlQUNoQiw2Q0FBTyxrQ0FBc0QsTUFDMUQsYUFBV0EsU0FBTyxzQkFDcEI7RUFDSCxLQUFLLGFBQWEsZUFDaEIsNkNBQU8sa0NBQXNELE1BQzFELGFBQVdBLFNBQU8sc0JBQ3BCO0VBQ0gsS0FBSyxhQUFhLGtCQUNoQiw2Q0FBTyxxQ0FBNEQsTUFDaEUsYUFBV0EsU0FBTyx5QkFDcEI7RUFDSCxRQUNFLDZDQUFPLDJCQUFnQyxNQUNwQyxhQUFXQSxTQUFPLGVBQ3BCOzs7Ozs7QUNrVFAsSUFBSywwRUFBTDtBQUNFO0FBQ0E7O0VBRkc7QUErQkwsSUFBSyxzRUFBTDtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQW5CRztBQXdMTCxJQUFLLG9EQUFMO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0VBaEJHOzs7O0FDcnFCTCxJQUFZLHNFQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUYsSUFBWSw0RkFBTDtBQUNMO0FBQ0E7QUFDQSJ9
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { useEffect, RefObject, useRef } from 'react';
|
|
2
|
-
import { useReducedMotionWithOverride } from 'src/hooks/useReducedMotionWithOverride';
|
|
3
|
-
|
|
4
|
-
// IMPORTANT: All refs passed to this hook must be mutable (not Readonly)
|
|
5
|
-
interface UseHorizontalScrollAnimationOptions {
|
|
6
|
-
scrollContainerRef: RefObject<HTMLDivElement>;
|
|
7
|
-
animationSpeed?: 'standard' | 'slow' | 'none';
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// When using this hook, ensure that scrouuContainerRef is not undefined. It is allowed to
|
|
11
|
-
// prevent issued elsewhere in the codebase, but it should be dealt with whenever you use this hook.
|
|
12
|
-
export function useHorizontalScrollAnimation({
|
|
13
|
-
scrollContainerRef,
|
|
14
|
-
animationSpeed = 'standard',
|
|
15
|
-
}: UseHorizontalScrollAnimationOptions): void {
|
|
16
|
-
const reducedMotion = useReducedMotionWithOverride();
|
|
17
|
-
const resumeTimeoutRef = useRef<NodeJS.Timeout | null>(null);
|
|
18
|
-
const scrollAnimationRef = useRef<number | null>(null);
|
|
19
|
-
|
|
20
|
-
const pauseOnHover = true; // This is unlikely to need to be configurable but I'm throwing it up here just in case.
|
|
21
|
-
|
|
22
|
-
// Animation constants: time-based
|
|
23
|
-
let PIXELS_PER_SECOND = 40;
|
|
24
|
-
switch (animationSpeed) {
|
|
25
|
-
case 'standard':
|
|
26
|
-
PIXELS_PER_SECOND = 40;
|
|
27
|
-
break;
|
|
28
|
-
case 'slow':
|
|
29
|
-
PIXELS_PER_SECOND = 25;
|
|
30
|
-
break;
|
|
31
|
-
case 'none':
|
|
32
|
-
PIXELS_PER_SECOND = 0;
|
|
33
|
-
break;
|
|
34
|
-
default:
|
|
35
|
-
PIXELS_PER_SECOND = 40;
|
|
36
|
-
}
|
|
37
|
-
const RESUME_DELAY_MS = 2000;
|
|
38
|
-
const isAnimated = animationSpeed !== 'none';
|
|
39
|
-
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
if (!isAnimated || reducedMotion || !scrollContainerRef) return;
|
|
42
|
-
|
|
43
|
-
const container = scrollContainerRef.current;
|
|
44
|
-
if (!container) return;
|
|
45
|
-
if (container.scrollWidth <= container.clientWidth) return;
|
|
46
|
-
|
|
47
|
-
let isPaused = false;
|
|
48
|
-
let lastTimestamp: number | null = null;
|
|
49
|
-
let accumulatedScroll = 0; // Accumulate fractional pixels
|
|
50
|
-
|
|
51
|
-
const step = (timestamp: number) => {
|
|
52
|
-
if (lastTimestamp === null) lastTimestamp = timestamp;
|
|
53
|
-
if (!isPaused) {
|
|
54
|
-
const delta = timestamp - lastTimestamp;
|
|
55
|
-
lastTimestamp = timestamp;
|
|
56
|
-
|
|
57
|
-
// Accumulate the scroll amount (including fractional pixels)
|
|
58
|
-
accumulatedScroll += PIXELS_PER_SECOND * (delta / 1000);
|
|
59
|
-
|
|
60
|
-
// Only apply whole pixel movements
|
|
61
|
-
const pixelsToScroll = Math.floor(accumulatedScroll);
|
|
62
|
-
if (pixelsToScroll > 0) {
|
|
63
|
-
container.scrollLeft += pixelsToScroll;
|
|
64
|
-
accumulatedScroll -= pixelsToScroll; // Keep the fractional remainder
|
|
65
|
-
|
|
66
|
-
if (container.scrollLeft >= container.scrollWidth - container.clientWidth) {
|
|
67
|
-
container.scrollLeft = 0; // Reset scroll to create a looping effect
|
|
68
|
-
accumulatedScroll = 0; // Reset accumulated scroll when looping
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
scrollAnimationRef.current = requestAnimationFrame(step);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
// Start animation
|
|
76
|
-
scrollAnimationRef.current = requestAnimationFrame(step);
|
|
77
|
-
|
|
78
|
-
// Pause/resume logic
|
|
79
|
-
const pauseAnimation = () => {
|
|
80
|
-
isPaused = true;
|
|
81
|
-
if (resumeTimeoutRef.current) {
|
|
82
|
-
clearTimeout(resumeTimeoutRef.current);
|
|
83
|
-
resumeTimeoutRef.current = null;
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
const scheduleResumeAnimation = () => {
|
|
87
|
-
resumeTimeoutRef.current = setTimeout(() => {
|
|
88
|
-
isPaused = false;
|
|
89
|
-
lastTimestamp = null; // Reset timestamp so delta is correct after pause
|
|
90
|
-
}, RESUME_DELAY_MS);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
if (pauseOnHover) {
|
|
94
|
-
container.addEventListener('mouseenter', pauseAnimation);
|
|
95
|
-
container.addEventListener('mouseleave', scheduleResumeAnimation);
|
|
96
|
-
container.addEventListener('touchstart', pauseAnimation);
|
|
97
|
-
container.addEventListener('touchend', scheduleResumeAnimation);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return () => {
|
|
101
|
-
if (scrollAnimationRef.current) {
|
|
102
|
-
cancelAnimationFrame(scrollAnimationRef.current);
|
|
103
|
-
}
|
|
104
|
-
if (pauseOnHover) {
|
|
105
|
-
container.removeEventListener('mouseenter', pauseAnimation);
|
|
106
|
-
container.removeEventListener('mouseleave', scheduleResumeAnimation);
|
|
107
|
-
container.removeEventListener('touchstart', pauseAnimation);
|
|
108
|
-
container.removeEventListener('touchend', scheduleResumeAnimation);
|
|
109
|
-
}
|
|
110
|
-
if (resumeTimeoutRef.current) {
|
|
111
|
-
clearTimeout(resumeTimeoutRef.current);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
}, [isAnimated, reducedMotion, PIXELS_PER_SECOND, pauseOnHover, scrollContainerRef]);
|
|
115
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { useReducedMotionConfig } from 'framer-motion';
|
|
2
|
-
import { useMemo } from 'react';
|
|
3
|
-
|
|
4
|
-
export const useReducedMotionWithOverride = () => {
|
|
5
|
-
const reducedMotionConfig = useReducedMotionConfig();
|
|
6
|
-
const reducedMotion = useMemo(() => {
|
|
7
|
-
if (window?._spiffy?.reducedMotionOverride) {
|
|
8
|
-
return window?._spiffy?.reducedMotionOverride;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
return reducedMotionConfig;
|
|
12
|
-
}, [reducedMotionConfig]);
|
|
13
|
-
|
|
14
|
-
return reducedMotion;
|
|
15
|
-
};
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MotionValue,
|
|
3
|
-
transform,
|
|
4
|
-
useAnimate,
|
|
5
|
-
useMotionValue,
|
|
6
|
-
useTransform,
|
|
7
|
-
ValueAnimationTransition,
|
|
8
|
-
} from 'framer-motion';
|
|
9
|
-
import { useMemo, useState } from 'react';
|
|
10
|
-
import { Unit, useSnapCalculator } from './useSnapCalculator';
|
|
11
|
-
|
|
12
|
-
type SnapControl = {
|
|
13
|
-
animationKey?: MotionValue;
|
|
14
|
-
animation: ValueAnimationTransition;
|
|
15
|
-
height: number;
|
|
16
|
-
unit: Unit;
|
|
17
|
-
snaps: number[];
|
|
18
|
-
initSnap: number;
|
|
19
|
-
threshold?: number;
|
|
20
|
-
overlayOpacity: number;
|
|
21
|
-
onSnapComplete: (currentSnap: number, nextSnap: number, collapsed: boolean) => void;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const MIDDLE_SNAP_OFFSET = 5;
|
|
25
|
-
const SNAP_DISTANCE_OFFSET = 50;
|
|
26
|
-
|
|
27
|
-
export const useSnapControl = ({
|
|
28
|
-
animationKey,
|
|
29
|
-
animation,
|
|
30
|
-
height,
|
|
31
|
-
unit,
|
|
32
|
-
snaps,
|
|
33
|
-
initSnap,
|
|
34
|
-
onSnapComplete,
|
|
35
|
-
overlayOpacity,
|
|
36
|
-
}: SnapControl) => {
|
|
37
|
-
const [scope, animate] = useAnimate();
|
|
38
|
-
const animatedY = animationKey || useMotionValue(-1);
|
|
39
|
-
|
|
40
|
-
const { swipeviewHeightPx, snapsToPixels, viewportHeightPx, getPixelToSnap, getSnapToPixel } =
|
|
41
|
-
useSnapCalculator(snaps, height, unit);
|
|
42
|
-
|
|
43
|
-
const contentHeight = useTransform(animatedY, [0, swipeviewHeightPx], [swipeviewHeightPx, 0]);
|
|
44
|
-
|
|
45
|
-
const snapOverlayReference = useMemo(
|
|
46
|
-
() => [
|
|
47
|
-
getSnapToPixel(snaps[0]),
|
|
48
|
-
getSnapToPixel(snaps[1]) - MIDDLE_SNAP_OFFSET,
|
|
49
|
-
getSnapToPixel(snaps[2]),
|
|
50
|
-
],
|
|
51
|
-
[],
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
const displayOverlay = useTransform(() =>
|
|
55
|
-
animatedY.get() === -1
|
|
56
|
-
? 'none'
|
|
57
|
-
: transform(animatedY.get(), snapOverlayReference, ['none', 'none', 'block']),
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
const opacityOverlay = useTransform(() =>
|
|
61
|
-
animatedY.get() === -1
|
|
62
|
-
? 0
|
|
63
|
-
: transform(animatedY.get(), snapOverlayReference, [0, 0, overlayOpacity]),
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
const initSnapInPixels = snapsToPixels?.[initSnap];
|
|
67
|
-
const getInitSnap = () => snaps?.[initSnap];
|
|
68
|
-
const [currentSnap, setCurrentSnap] = useState<number>(getInitSnap());
|
|
69
|
-
const between = (x: number, min: number, max: number) => x >= min && x <= max;
|
|
70
|
-
|
|
71
|
-
const defineNextSnapByPosition = () => {
|
|
72
|
-
const scopeEl = scope.current;
|
|
73
|
-
const currentSnapRef = Math.abs(
|
|
74
|
-
viewportHeightPx - (swipeviewHeightPx - getSnapToPixel(currentSnap)),
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
const realGestureY =
|
|
78
|
-
scopeEl.getBoundingClientRect().y +
|
|
79
|
-
scopeEl.getBoundingClientRect().height -
|
|
80
|
-
(window.innerHeight - document.documentElement.clientHeight);
|
|
81
|
-
|
|
82
|
-
const isGoingUp = realGestureY < currentSnapRef;
|
|
83
|
-
|
|
84
|
-
const snapsToPixelsClone = Array.from(snapsToPixels);
|
|
85
|
-
isGoingUp
|
|
86
|
-
? snapsToPixelsClone.sort((a, b) => b - a) /* desc*/
|
|
87
|
-
: snapsToPixelsClone.sort((a, b) => a - b); /* asc */
|
|
88
|
-
|
|
89
|
-
if (realGestureY != currentSnapRef) {
|
|
90
|
-
const snapReference = snapsToPixelsClone.find((snap) => {
|
|
91
|
-
const current = Math.abs(viewportHeightPx - (swipeviewHeightPx - snap));
|
|
92
|
-
return isGoingUp ? current < realGestureY : current > realGestureY;
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
if (snapReference === undefined) {
|
|
96
|
-
return snapsToPixelsClone.slice(-1)[0];
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const prevSnapIndex = snapsToPixelsClone.indexOf(snapReference ?? -1);
|
|
100
|
-
const prevSnap = snapsToPixelsClone[prevSnapIndex - 1];
|
|
101
|
-
const prevSnapPx = Math.abs(viewportHeightPx - (swipeviewHeightPx - prevSnap));
|
|
102
|
-
const adjacentSnap = between(
|
|
103
|
-
realGestureY,
|
|
104
|
-
prevSnapPx - SNAP_DISTANCE_OFFSET,
|
|
105
|
-
prevSnapPx + SNAP_DISTANCE_OFFSET,
|
|
106
|
-
);
|
|
107
|
-
|
|
108
|
-
return adjacentSnap ? prevSnap : snapReference;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
return getSnapToPixel(currentSnap);
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
const jumpTo = (snapPx: number) => {
|
|
115
|
-
const collapsed = snapPx === swipeviewHeightPx;
|
|
116
|
-
const nextSnap = getPixelToSnap(snapPx);
|
|
117
|
-
animate(
|
|
118
|
-
scope.current,
|
|
119
|
-
{ y: snapPx },
|
|
120
|
-
{
|
|
121
|
-
...animation,
|
|
122
|
-
onComplete: () => {
|
|
123
|
-
onSnapComplete(currentSnap, nextSnap, collapsed);
|
|
124
|
-
setCurrentSnap(nextSnap);
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
return {
|
|
130
|
-
nextSnap,
|
|
131
|
-
collapsed,
|
|
132
|
-
};
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
const resetControls = () => {
|
|
136
|
-
setCurrentSnap(getInitSnap());
|
|
137
|
-
return 0;
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
return {
|
|
141
|
-
scope,
|
|
142
|
-
animatedY,
|
|
143
|
-
animate,
|
|
144
|
-
swipeviewHeightPx,
|
|
145
|
-
initSnapInPixels,
|
|
146
|
-
contentHeight,
|
|
147
|
-
currentSnap,
|
|
148
|
-
displayOverlay,
|
|
149
|
-
opacityOverlay,
|
|
150
|
-
getSnapToPixel,
|
|
151
|
-
jumpTo,
|
|
152
|
-
defineNextSnapByPosition,
|
|
153
|
-
resetControls,
|
|
154
|
-
};
|
|
155
|
-
};
|
|
File without changes
|
|
File without changes
|