PageSourceSearch

https://kyn-care.com/src/components/layout/Footer.tsx

js kyn-care.com collected 2026-10-08 11:36:23 UTC 93,547 bytes, 798 lines download raw bytes

1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/layout/Footer.tsx");import __vite__cjsImport0_react_jsxDevRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=9ce4103e"; const Fragment = __vite__cjsImport0_react_jsxDevRuntime["Fragment"]; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"];
2import RefreshRuntime from "/@react-refresh";
3const inWebWorker = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope;
4let prevRefreshReg;
5let prevRefreshSig;
6if (import.meta.hot && !inWebWorker) {
7  if (!window.__vite_plugin_react_preamble_installed__) {
8    throw new Error("@vitejs/plugin-react can't detect preamble. Something is wrong. See https://github.com/vitejs/vite-plugin-react/pull/11#discussion_r430879201");
9  }
10  prevRefreshReg = window.$RefreshReg$;
11  prevRefreshSig = window.$RefreshSig$;
12  window.$RefreshReg$ = (type, id) => {
13    RefreshRuntime.register(type, "/home/runner/workspace/client/src/components/layout/Footer.tsx " + id);
14  };
15  window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
16}
17var _s = $RefreshSig$(), _s2 = $RefreshSig$();
18import __vite__cjsImport3_react from "/@fs/home/runner/workspace/node_modules/.vite/deps/react.js?v=9ce4103e"; const useState = __vite__cjsImport3_react["useState"];
19import { Link, useLocation } from "/@fs/home/runner/workspace/node_modules/.vite/deps/wouter.js?v=9ce4103e";
20import { FaInstagram, FaTiktok, FaLinkedinIn, FaPinterest, FaFacebookF } from "/@fs/home/runner/workspace/node_modules/.vite/deps/react-icons_fa.js?v=9ce4103e";
21import { useLanguage } from "/src/lib/LanguageContext.tsx";
22import { useCurrency, currencySymbols } from "/src/lib/CurrencyContext.tsx";
23import CookieSettingsPanel from "/src/components/CookieSettingsPanel.tsx";
24import { apiRequest } from "/src/lib/queryClient.ts";
25import { useToast } from "/src/hooks/use-toast.ts";
26import { trackWaitlistSignup } from "/src/lib/analytics.ts";
27const currencyFlags = {
28  XOF: "🇸🇳",
29  USD: "🇺🇸",
30  EUR: "🇪🇺",
31  GBP: "🇬🇧",
32  CAD: "🇨🇦"
33};
34const CurrencyFooterSelector = () => {
35  _s();
36  const { currency, setCurrency } = useCurrency();
37  const currencies = ["XOF", "USD", "EUR", "GBP", "CAD"];
38  return /* @__PURE__ */ jsxDEV("div", { className: "flex items-center gap-3", children: currencies.map(
39    (curr) => /* @__PURE__ */ jsxDEV(
40      "button",
41      {
42        onClick: () => setCurrency(curr),
43        className: `flex items-center gap-1 text-xs transition-opacity ${currency === curr ? "opacity-100" : "opacity-40 hover:opacity-70"}`,
44        style: {
45          fontFamily: "Helvetica, Arial, sans-serif",
46          fontWeight: currency === curr ? 400 : 300,
47          color: "#1A1A1A"
48        },
49        "data-testid": `footer-currency-${curr}`,
50        children: [
51          /* @__PURE__ */ jsxDEV("span", { style: { fontSize: "12px" }, children: currencyFlags[curr] }, void 0, false, {
52            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
53            lineNumber: 39,
54            columnNumber: 11
55          }, this),
56          /* @__PURE__ */ jsxDEV("span", { children: [
57            curr,
58            " ",
59            currencySymbols[curr]
60          ] }, void 0, true, {
61            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
62            lineNumber: 40,
63            columnNumber: 11
64          }, this)
65        ]
66      },
67      curr,
68      true,
69      {
70        fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
71        lineNumber: 26,
72        columnNumber: 7
73      },
74      this
75    )
76  ) }, void 0, false, {
77    fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
78    lineNumber: 24,
79    columnNumber: 5
80  }, this);
81};
82_s(CurrencyFooterSelector, "rM2TMuaXlw1XZViGAN/umpnJpe8=", false, function() {
83  return [useCurrency];
84});
85_c = CurrencyFooterSelector;
86const Footer = () => {
87  _s2();
88  const { t, language } = useLanguage();
89  const [location, setLocation] = useLocation();
90  const [showCookieSettings, setShowCookieSettings] = useState(false);
91  const [footerEmail, setFooterEmail] = useState("");
92  const [isSubmitting, setIsSubmitting] = useState(false);
93  const { toast } = useToast();
94  const isPlaybookPage = location === "/playbook" || location === "/skincare-guide";
95  const handleFooterEmailSubmit = async (e) => {
96    e.preventDefault();
97    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
98    if (!footerEmail || !emailRegex.test(footerEmail)) {
99      toast({
100        title: language === "fr" ? "Erreur" : "Error",
101        description: language === "fr" ? "Veuillez entrer une adresse email valide." : "Please enter a valid email address.",
102        variant: "destructive"
103      });
104      return;
105    }
106    setIsSubmitting(true);
107    try {
108      await apiRequest("/api/waitlist", {
109        method: "POST",
110        data: { email: footerEmail, source: "footer", language }
111      });
112      trackWaitlistSignup("footer");
113      toast({
114        title: language === "fr" ? "Vous êtes sur la liste !" : "You're on the list!",
115        description: language === "fr" ? "Bienvenue chez KYN !" : "Welcome to KYN!"
116      });
117      setFooterEmail("");
118    } catch (error) {
119      if (error.message?.includes("already")) {
120        toast({
121          title: language === "fr" ? "Déjà avec nous" : "Already with us",
122          description: language === "fr" ? "Cet email fait déjà partie de notre communauté." : "This email is already part of our community."
123        });
124      } else {
125        toast({
126          title: language === "fr" ? "Erreur" : "Error",
127          description: language === "fr" ? "Une erreur est survenue." : "Something went wrong.",
128          variant: "destructive"
129        });
130      }
131    } finally {
132      setIsSubmitting(false);
133    }
134  };
135  const handleLogoClick = (e) => {
136    e.preventDefault();
137    window.scrollTo({ top: 0, behavior: "smooth" });
138  };
139  const handleAboutClick = (e) => {
140    e.preventDefault();
141    if (location === "/") {
142      const aboutSection = document.getElementById("from-us-to-you");
143      if (aboutSection) {
144        const navHeight = 118;
145        const elementPosition = aboutSection.getBoundingClientRect().top + window.scrollY;
146        window.scrollTo({ top: elementPosition - navHeight, behavior: "smooth" });
147      }
148    } else {
149      setLocation("/");
150      setTimeout(() => {
151        const aboutSection = document.getElementById("from-us-to-you");
152        if (aboutSection) {
153          const navHeight = 118;
154          const elementPosition = aboutSection.getBoundingClientRect().top + window.scrollY;
155          window.scrollTo({ top: elementPosition - navHeight, behavior: "smooth" });
156        }
157      }, 100);
158    }
159  };
160  const handleWaitlistClick = (e) => {
161    e.preventDefault();
162    if (location === "/") {
163      const section = document.querySelector("[data-subscription-section]");
164      if (section) {
165        const navHeight = 118;
166        const elementPosition = section.getBoundingClientRect().top + window.scrollY;
167        window.scrollTo({ top: elementPosition - navHeight, behavior: "smooth" });
168      }
169    } else {
170      setLocation("/");
171      setTimeout(() => {
172        const section = document.querySelector("[data-subscription-section]");
173        if (section) {
174          const navHeight = 118;
175          const elementPosition = section.getBoundingClientRect().top + window.scrollY;
176          window.scrollTo({ top: elementPosition - navHeight, behavior: "smooth" });
177        }
178      }, 100);
179    }
180  };
181  const handleFAQClick = (e) => {
182    e.preventDefault();
183    if (location === "/") {
184      const faqSection = document.getElementById("faq");
185      if (faqSection) {
186        const navHeight = 118;
187        const elementPosition = faqSection.getBoundingClientRect().top + window.scrollY;
188        window.scrollTo({ top: elementPosition - navHeight, behavior: "smooth" });
189      }
190    } else {
191      setLocation("/");
192      setTimeout(() => {
193        const faqSection = document.getElementById("faq");
194        if (faqSection) {
195          const navHeight = 118;
196          const elementPosition = faqSection.getBoundingClientRect().top + window.scrollY;
197          window.scrollTo({ top: elementPosition - navHeight, behavior: "smooth" });
198        }
199      }, 100);
200    }
201  };
202  const handleContactClick = (e) => {
203    e.preventDefault();
204    setLocation("/contact");
205    setTimeout(() => {
206      window.scrollTo({ top: 0, behavior: "smooth" });
207    }, 100);
208  };
209  const handleJournalClick = (e) => {
210    window.scrollTo({ top: 0, behavior: "smooth" });
211  };
212  const handleTermsClick = (e) => {
213    window.scrollTo({ top: 0, behavior: "smooth" });
214  };
215  const handlePrivacyClick = (e) => {
216    window.scrollTo({ top: 0, behavior: "smooth" });
217  };
218  return /* @__PURE__ */ jsxDEV("footer", { style: { backgroundColor: "#f5f5f5" }, children: [
219    /* @__PURE__ */ jsxDEV("div", { className: "max-w-7xl mx-auto px-6 lg:pl-6 lg:pr-12 py-12 lg:py-16", children: [
220      /* @__PURE__ */ jsxDEV("div", { className: "hidden lg:flex lg:justify-between lg:gap-16", children: [
221        /* @__PURE__ */ jsxDEV("div", { children: [
222          /* @__PURE__ */ jsxDEV(
223            "a",
224            {
225              href: "/",
226              onClick: handleLogoClick,
227              className: "inline-block cursor-pointer hover:opacity-70 transition-opacity",
228              children: /* @__PURE__ */ jsxDEV(
229                "h2",
230                {
231                  className: "text-4xl md:text-5xl font-normal tracking-wider",
232                  style: { fontFamily: "Helvetica, Arial, sans-serif", color: "#1A1A1A" },
233                  children: "KYN"
234                },
235                void 0,
236                false,
237                {
238                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
239                  lineNumber: 203,
240                  columnNumber: 15
241                },
242                this
243              )
244            },
245            void 0,
246            false,
247            {
248              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
249              lineNumber: 198,
250              columnNumber: 13
251            },
252            this
253          ),
254          !isPlaybookPage && /* @__PURE__ */ jsxDEV(Fragment, { children: [
255            /* @__PURE__ */ jsxDEV(
256              "p",
257              {
258                className: "mt-8 text-sm leading-relaxed whitespace-nowrap",
259                style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" },
260                children: language === "fr" ? "Rejoignez notre liste pour être les premiers informés de toutes les nouveautés KYN." : "Join our mailing list to be the first to hear about all things KYN."
261              },
262              void 0,
263              false,
264              {
265                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
266                lineNumber: 213,
267                columnNumber: 17
268              },
269              this
270            ),
271            /* @__PURE__ */ jsxDEV(
272              "form",
273              {
274                onSubmit: handleFooterEmailSubmit,
275                className: "flex items-stretch mt-6",
276                style: { maxWidth: "400px", border: "1px solid #1A1A1A" },
277                children: [
278                  /* @__PURE__ */ jsxDEV(
279                    "input",
280                    {
281                      type: "email",
282                      value: footerEmail,
283                      onChange: (e) => setFooterEmail(e.target.value),
284                      placeholder: "E-mail",
285                      className: "flex-1 px-4 py-3 focus:outline-none",
286                      style: { fontFamily: "Helvetica, Arial, sans-serif", fontSize: "13px", fontWeight: 300, backgroundColor: "transparent", border: "none", color: "#1A1A1A" },
287                      "data-testid": "footer-input-email"
288                    },
289                    void 0,
290                    false,
291                    {
292                      fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
293                      lineNumber: 227,
294                      columnNumber: 19
295                    },
296                    this
297                  ),
298                  /* @__PURE__ */ jsxDEV(
299                    "button",
300                    {
301                      type: "submit",
302                      disabled: isSubmitting,
303                      className: "px-5 uppercase transition-opacity hover:opacity-70 disabled:opacity-50",
304                      style: { backgroundColor: "transparent", color: "#1A1A1A", fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, letterSpacing: "1px", border: "none", borderLeft: "1px solid #1A1A1A", fontSize: "11px" },
305                      "data-testid": "footer-button-submit",
306                      children: isSubmitting ? "..." : language === "fr" ? "ENVOYER" : "SUBSCRIBE"
307                    },
308                    void 0,
309                    false,
310                    {
311                      fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
312                      lineNumber: 236,
313                      columnNumber: 19
314                    },
315                    this
316                  )
317                ]
318              },
319              void 0,
320              true,
321              {
322                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
323                lineNumber: 222,
324                columnNumber: 17
325              },
326              this
327            )
328          ] }, void 0, true, {
329            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
330            lineNumber: 212,
331            columnNumber: 13
332          }, this),
333          /* @__PURE__ */ jsxDEV("div", { className: "flex items-center gap-3 mt-8", children: [
334            /* @__PURE__ */ jsxDEV("a", { href: "https://www.instagram.com/kyn_care/", target: "_blank", rel: "noopener noreferrer", className: "hover:opacity-60 transition-opacity", "aria-label": "Instagram", children: /* @__PURE__ */ jsxDEV(FaInstagram, { size: 20, color: "#1A1A1A" }, void 0, false, {
335              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
336              lineNumber: 252,
337              columnNumber: 17
338            }, this) }, void 0, false, {
339              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
340              lineNumber: 251,
341              columnNumber: 15
342            }, this),
343            /* @__PURE__ */ jsxDEV("a", { href: "https://www.facebook.com/share/1K5UiuyF6c/?mibextid=wwXIfr", target: "_blank", rel: "noopener noreferrer", className: "hover:opacity-60 transition-opacity", "aria-label": "Facebook", children: /* @__PURE__ */ jsxDEV(FaFacebookF, { size: 20, color: "#1A1A1A" }, void 0, false, {
344              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
345              lineNumber: 255,
346              columnNumber: 17
347            }, this) }, void 0, false, {
348              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
349              lineNumber: 254,
350              columnNumber: 15
351            }, this),
352            /* @__PURE__ */ jsxDEV("a", { href: "https://www.tiktok.com/@kyn_care", target: "_blank", rel: "noopener noreferrer", className: "hover:opacity-60 transition-opacity", "aria-label": "TikTok", children: /* @__PURE__ */ jsxDEV(FaTiktok, { size: 20, color: "#1A1A1A" }, void 0, false, {
353              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
354              lineNumber: 258,
355              columnNumber: 17
356            }, this) }, void 0, false, {
357              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
358              lineNumber: 257,
359              columnNumber: 15
360            }, this),
361            /* @__PURE__ */ jsxDEV("a", { href: "https://www.linkedin.com/company/kyn-care/", target: "_blank", rel: "noopener noreferrer", className: "hover:opacity-60 transition-opacity", "aria-label": "LinkedIn", children: /* @__PURE__ */ jsxDEV(FaLinkedinIn, { size: 20, color: "#1A1A1A" }, void 0, false, {
362              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
363              lineNumber: 261,
364              columnNumber: 17
365            }, this) }, void 0, false, {
366              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
367              lineNumber: 260,
368              columnNumber: 15
369            }, this),
370            /* @__PURE__ */ jsxDEV("a", { href: "https://www.pinterest.com/kyn_care/", target: "_blank", rel: "noopener noreferrer", className: "hover:opacity-60 transition-opacity", "aria-label": "Pinterest", children: /* @__PURE__ */ jsxDEV(FaPinterest, { size: 20, color: "#1A1A1A" }, void 0, false, {
371              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
372              lineNumber: 264,
373              columnNumber: 17
374            }, this) }, void 0, false, {
375              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
376              lineNumber: 263,
377              columnNumber: 15
378            }, this)
379          ] }, void 0, true, {
380            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
381            lineNumber: 250,
382            columnNumber: 13
383          }, this)
384        ] }, void 0, true, {
385          fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
386          lineNumber: 197,
387          columnNumber: 11
388        }, this),
389        /* @__PURE__ */ jsxDEV("div", { children: [
390          /* @__PURE__ */ jsxDEV(
391            "p",
392            {
393              className: "text-sm uppercase tracking-widest mb-10",
394              style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 400, color: "#1A1A1A", letterSpacing: "2px" },
395              children: language === "fr" ? "L'INNOVATION À CHAQUE COUCHE DE LA BEAUTÉ." : "INNOVATION FOR EVERY LAYER OF BEAUTY."
396            },
397            void 0,
398            false,
399            {
400              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
401              lineNumber: 271,
402              columnNumber: 13
403            },
404            this
405          ),
406          /* @__PURE__ */ jsxDEV("div", { className: "grid grid-cols-2 gap-12", children: [
407            /* @__PURE__ */ jsxDEV("div", { children: [
408              /* @__PURE__ */ jsxDEV("h3", { className: "text-sm uppercase tracking-wider mb-5", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 500, color: "#1A1A1A", letterSpacing: "1.5px" }, children: t("brand") }, void 0, false, {
409                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
410                lineNumber: 281,
411                columnNumber: 17
412              }, this),
413              /* @__PURE__ */ jsxDEV("ul", { className: "space-y-3", children: [
414                /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "/#subscribe-section", onClick: handleWaitlistClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("waitlistNav") }, void 0, false, {
415                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
416                  lineNumber: 285,
417                  columnNumber: 23
418                }, this) }, void 0, false, {
419                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
420                  lineNumber: 285,
421                  columnNumber: 19
422                }, this),
423                /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "/#faq", onClick: handleFAQClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("faqNav") }, void 0, false, {
424                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
425                  lineNumber: 286,
426                  columnNumber: 23
427                }, this) }, void 0, false, {
428                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
429                  lineNumber: 286,
430                  columnNumber: 19
431                }, this),
432                /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "/contact", onClick: handleContactClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("contactUs") }, void 0, false, {
433                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
434                  lineNumber: 287,
435                  columnNumber: 23
436                }, this) }, void 0, false, {
437                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
438                  lineNumber: 287,
439                  columnNumber: 19
440                }, this),
441                /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV(Link, { href: "/supply-chain", onClick: () => window.scrollTo(0, 0), className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, "data-testid": "footer-link-supply-chain", children: t("kynSupplyChainAct") }, void 0, false, {
442                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
443                  lineNumber: 288,
444                  columnNumber: 23
445                }, this) }, void 0, false, {
446                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
447                  lineNumber: 288,
448                  columnNumber: 19
449                }, this)
450              ] }, void 0, true, {
451                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
452                lineNumber: 284,
453                columnNumber: 17
454              }, this)
455            ] }, void 0, true, {
456              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
457              lineNumber: 280,
458              columnNumber: 15
459            }, this),
460            /* @__PURE__ */ jsxDEV("div", { children: [
461              /* @__PURE__ */ jsxDEV("h3", { className: "text-sm uppercase tracking-wider mb-5", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 500, color: "#1A1A1A", letterSpacing: "1.5px" }, children: t("legal") }, void 0, false, {
462                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
463                lineNumber: 294,
464                columnNumber: 17
465              }, this),
466              /* @__PURE__ */ jsxDEV("ul", { className: "space-y-3", children: [
467                /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV(Link, { href: "/terms", onClick: handleTermsClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("terms") }, void 0, false, {
468                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
469                  lineNumber: 298,
470                  columnNumber: 23
471                }, this) }, void 0, false, {
472                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
473                  lineNumber: 298,
474                  columnNumber: 19
475                }, this),
476                /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV(Link, { href: "/privacy", onClick: handlePrivacyClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("privacy") }, void 0, false, {
477                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
478                  lineNumber: 299,
479                  columnNumber: 23
480                }, this) }, void 0, false, {
481                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
482                  lineNumber: 299,
483                  columnNumber: 19
484                }, this),
485                /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("button", { onClick: () => setShowCookieSettings(true), className: "text-sm hover:opacity-60 transition-opacity text-left", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A", background: "none", border: "none", padding: 0, cursor: "pointer" }, "data-testid": "footer-link-cookies", children: t("cookiePreferences") }, void 0, false, {
486                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
487                  lineNumber: 300,
488                  columnNumber: 23
489                }, this) }, void 0, false, {
490                  fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
491                  lineNumber: 300,
492                  columnNumber: 19
493                }, this)
494              ] }, void 0, true, {
495                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
496                lineNumber: 297,
497                columnNumber: 17
498              }, this)
499            ] }, void 0, true, {
500              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
501              lineNumber: 293,
502              columnNumber: 15
503            }, this)
504          ] }, void 0, true, {
505            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
506            lineNumber: 278,
507            columnNumber: 13
508          }, this)
509        ] }, void 0, true, {
510          fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
511          lineNumber: 270,
512          columnNumber: 11
513        }, this)
514      ] }, void 0, true, {
515        fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
516        lineNumber: 195,
517        columnNumber: 9
518      }, this),
519      /* @__PURE__ */ jsxDEV("div", { className: "lg:hidden", children: [
520        /* @__PURE__ */ jsxDEV("a", { href: "/", onClick: handleLogoClick, className: "inline-block cursor-pointer hover:opacity-70 transition-opacity", children: /* @__PURE__ */ jsxDEV("h2", { className: "text-4xl font-normal tracking-wider", style: { fontFamily: "Helvetica, Arial, sans-serif", color: "#1A1A1A" }, children: "KYN" }, void 0, false, {
521          fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
522          lineNumber: 311,
523          columnNumber: 13
524        }, this) }, void 0, false, {
525          fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
526          lineNumber: 310,
527          columnNumber: 11
528        }, this),
529        !isPlaybookPage && /* @__PURE__ */ jsxDEV(Fragment, { children: [
530          /* @__PURE__ */ jsxDEV("p", { className: "mt-6 text-sm leading-relaxed", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: language === "fr" ? "Rejoignez notre liste pour être les premiers informés." : "Join our mailing list to be the first to hear about all things KYN." }, void 0, false, {
531            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
532            lineNumber: 317,
533            columnNumber: 15
534          }, this),
535          /* @__PURE__ */ jsxDEV("form", { onSubmit: handleFooterEmailSubmit, className: "flex items-stretch mt-4", style: { border: "1px solid #CCCCCC" }, children: [
536            /* @__PURE__ */ jsxDEV(
537              "input",
538              {
539                type: "email",
540                value: footerEmail,
541                onChange: (e) => setFooterEmail(e.target.value),
542                placeholder: "E-mail",
543                className: "flex-1 px-3 py-2.5 focus:outline-none text-sm",
544                style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, backgroundColor: "transparent", border: "none", color: "#1A1A1A" },
545                "data-testid": "footer-input-email-mobile"
546              },
547              void 0,
548              false,
549              {
550                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
551                lineNumber: 323,
552                columnNumber: 17
553              },
554              this
555            ),
556            /* @__PURE__ */ jsxDEV(
557              "button",
558              {
559                type: "submit",
560                disabled: isSubmitting,
561                className: "px-4 uppercase transition-opacity hover:opacity-70 disabled:opacity-50 text-xs",
562                style: { backgroundColor: "transparent", color: "#1A1A1A", fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 400, letterSpacing: "1px", border: "none", borderLeft: "1px solid #CCCCCC" },
563                "data-testid": "footer-button-submit-mobile",
564                children: isSubmitting ? "..." : language === "fr" ? "ENVOYER" : "SUBSCRIBE"
565              },
566              void 0,
567              false,
568              {
569                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
570                lineNumber: 332,
571                columnNumber: 17
572              },
573              this
574            )
575          ] }, void 0, true, {
576            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
577            lineNumber: 322,
578            columnNumber: 15
579          }, this)
580        ] }, void 0, true, {
581          fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
582          lineNumber: 315,
583          columnNumber: 11
584        }, this),
585        /* @__PURE__ */ jsxDEV("div", { className: "grid grid-cols-3 gap-6 mt-10", children: [
586          /* @__PURE__ */ jsxDEV("div", { children: [
587            /* @__PURE__ */ jsxDEV("h3", { className: "text-xs uppercase tracking-wider mb-3", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 500, color: "#1A1A1A", letterSpacing: "1px" }, children: t("brand") }, void 0, false, {
588              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
589              lineNumber: 349,
590              columnNumber: 15
591            }, this),
592            /* @__PURE__ */ jsxDEV("ul", { className: "space-y-2", children: [
593              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "/#subscribe-section", onClick: handleWaitlistClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("waitlistNav") }, void 0, false, {
594                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
595                lineNumber: 351,
596                columnNumber: 21
597              }, this) }, void 0, false, {
598                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
599                lineNumber: 351,
600                columnNumber: 17
601              }, this),
602              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "/#faq", onClick: handleFAQClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("faqNav") }, void 0, false, {
603                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
604                lineNumber: 352,
605                columnNumber: 21
606              }, this) }, void 0, false, {
607                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
608                lineNumber: 352,
609                columnNumber: 17
610              }, this),
611              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "/contact", onClick: handleContactClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("contactUs") }, void 0, false, {
612                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
613                lineNumber: 353,
614                columnNumber: 21
615              }, this) }, void 0, false, {
616                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
617                lineNumber: 353,
618                columnNumber: 17
619              }, this),
620              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV(Link, { href: "/supply-chain", onClick: () => window.scrollTo(0, 0), className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("kynSupplyChainAct") }, void 0, false, {
621                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
622                lineNumber: 354,
623                columnNumber: 21
624              }, this) }, void 0, false, {
625                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
626                lineNumber: 354,
627                columnNumber: 17
628              }, this)
629            ] }, void 0, true, {
630              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
631              lineNumber: 350,
632              columnNumber: 15
633            }, this)
634          ] }, void 0, true, {
635            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
636            lineNumber: 348,
637            columnNumber: 13
638          }, this),
639          /* @__PURE__ */ jsxDEV("div", { children: [
640            /* @__PURE__ */ jsxDEV("h3", { className: "text-xs uppercase tracking-wider mb-3", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 500, color: "#1A1A1A", letterSpacing: "1px" }, children: language === "fr" ? "SUIVRE" : "FOLLOW" }, void 0, false, {
641              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
642              lineNumber: 360,
643              columnNumber: 15
644            }, this),
645            /* @__PURE__ */ jsxDEV("ul", { className: "space-y-2", children: [
646              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "https://www.instagram.com/kyn_care/", target: "_blank", rel: "noopener noreferrer", className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: "Instagram" }, void 0, false, {
647                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
648                lineNumber: 362,
649                columnNumber: 21
650              }, this) }, void 0, false, {
651                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
652                lineNumber: 362,
653                columnNumber: 17
654              }, this),
655              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "https://www.tiktok.com/@kyn_care", target: "_blank", rel: "noopener noreferrer", className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: "TikTok" }, void 0, false, {
656                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
657                lineNumber: 363,
658                columnNumber: 21
659              }, this) }, void 0, false, {
660                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
661                lineNumber: 363,
662                columnNumber: 17
663              }, this),
664              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "https://www.facebook.com/share/1K5UiuyF6c/?mibextid=wwXIfr", target: "_blank", rel: "noopener noreferrer", className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: "Facebook" }, void 0, false, {
665                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
666                lineNumber: 364,
667                columnNumber: 21
668              }, this) }, void 0, false, {
669                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
670                lineNumber: 364,
671                columnNumber: 17
672              }, this),
673              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("a", { href: "https://www.linkedin.com/company/kyn-care/", target: "_blank", rel: "noopener noreferrer", className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: "LinkedIn" }, void 0, false, {
674                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
675                lineNumber: 365,
676                columnNumber: 21
677              }, this) }, void 0, false, {
678                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
679                lineNumber: 365,
680                columnNumber: 17
681              }, this)
682            ] }, void 0, true, {
683              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
684              lineNumber: 361,
685              columnNumber: 15
686            }, this)
687          ] }, void 0, true, {
688            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
689            lineNumber: 359,
690            columnNumber: 13
691          }, this),
692          /* @__PURE__ */ jsxDEV("div", { children: [
693            /* @__PURE__ */ jsxDEV("h3", { className: "text-xs uppercase tracking-wider mb-3", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 500, color: "#1A1A1A", letterSpacing: "1px" }, children: t("legal") }, void 0, false, {
694              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
695              lineNumber: 371,
696              columnNumber: 15
697            }, this),
698            /* @__PURE__ */ jsxDEV("ul", { className: "space-y-2", children: [
699              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV(Link, { href: "/terms", onClick: handleTermsClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("terms") }, void 0, false, {
700                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
701                lineNumber: 373,
702                columnNumber: 21
703              }, this) }, void 0, false, {
704                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
705                lineNumber: 373,
706                columnNumber: 17
707              }, this),
708              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV(Link, { href: "/privacy", onClick: handlePrivacyClick, className: "text-sm hover:opacity-60 transition-opacity", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("privacy") }, void 0, false, {
709                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
710                lineNumber: 374,
711                columnNumber: 21
712              }, this) }, void 0, false, {
713                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
714                lineNumber: 374,
715                columnNumber: 17
716              }, this),
717              /* @__PURE__ */ jsxDEV("li", { children: /* @__PURE__ */ jsxDEV("button", { onClick: () => setShowCookieSettings(true), className: "text-sm hover:opacity-60 transition-opacity text-left", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A", background: "none", border: "none", padding: 0, cursor: "pointer" }, children: t("cookiePreferences") }, void 0, false, {
718                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
719                lineNumber: 375,
720                columnNumber: 21
721              }, this) }, void 0, false, {
722                fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
723                lineNumber: 375,
724                columnNumber: 17
725              }, this)
726            ] }, void 0, true, {
727              fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
728              lineNumber: 372,
729              columnNumber: 15
730            }, this)
731          ] }, void 0, true, {
732            fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
733            lineNumber: 370,
734            columnNumber: 13
735          }, this)
736        ] }, void 0, true, {
737          fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
738          lineNumber: 346,
739          columnNumber: 11
740        }, this)
741      ] }, void 0, true, {
742        fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
743        lineNumber: 308,
744        columnNumber: 9
745      }, this)
746    ] }, void 0, true, {
747      fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
748      lineNumber: 193,
749      columnNumber: 7
750    }, this),
751    /* @__PURE__ */ jsxDEV("div", { className: "border-t", style: { borderColor: "#e0e0e0" }, children: /* @__PURE__ */ jsxDEV("div", { className: "max-w-7xl mx-auto px-6 lg:px-12 py-5", children: /* @__PURE__ */ jsxDEV("p", { className: "text-xs text-center", style: { fontFamily: "Helvetica, Arial, sans-serif", fontWeight: 300, color: "#1A1A1A" }, children: t("copyright") }, void 0, false, {
752      fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
753      lineNumber: 385,
754      columnNumber: 11
755    }, this) }, void 0, false, {
756      fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
757      lineNumber: 384,
758      columnNumber: 9
759    }, this) }, void 0, false, {
760      fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
761      lineNumber: 383,
762      columnNumber: 7
763    }, this),
764    /* @__PURE__ */ jsxDEV(CookieSettingsPanel, { isOpen: showCookieSettings, onClose: () => setShowCookieSettings(false) }, void 0, false, {
765      fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
766      lineNumber: 391,
767      columnNumber: 7
768    }, this)
769  ] }, void 0, true, {
770    fileName: "/home/runner/workspace/client/src/components/layout/Footer.tsx",
771    lineNumber: 192,
772    columnNumber: 5
773  }, this);
774};
775_s2(Footer, "F3supBnhmA1+XRJYtJ8rGbeD8lI=", false, function() {
776  return [useLanguage, useLocation, useToast];
777});
778_c2 = Footer;
779export default Footer;
780var _c, _c2;
781$RefreshReg$(_c, "CurrencyFooterSelector");
782$RefreshReg$(_c2, "Footer");
783if (import.meta.hot && !inWebWorker) {
784  window.$RefreshReg$ = prevRefreshReg;
785  window.$RefreshSig$ = prevRefreshSig;
786}
787if (import.meta.hot && !inWebWorker) {
788  RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
789    RefreshRuntime.registerExportsForReactRefresh("/home/runner/workspace/client/src/components/layout/Footer.tsx", currentExports);
790    import.meta.hot.accept((nextExports) => {
791      if (!nextExports) return;
792      const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/home/runner/workspace/client/src/components/layout/Footer.tsx", currentExports, nextExports);
793      if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
794    });
795  });
796}
797
798//# sourceMappingURL=data:application/json;base64,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VFMLFFBQVEsUUFBUU0sU0FBUyxHQUFHQyxRQUFRLFVBQVUsR0FBSTNELFlBQUUsbUJBQW1CLEtBQXpTO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQTJTLEtBQS9TO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQXdUO0FBQUEsaUJBSDFUO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBSUE7QUFBQSxlQU5GO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBT0E7QUFBQSxhQS9CRjtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBZ0NBO0FBQUEsV0F0RUY7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQXVFQTtBQUFBLFNBMUxGO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0EyTEE7QUFBQSxJQUdBLHVCQUFDLFNBQUksV0FBVSxZQUFXLE9BQU8sRUFBRTRELGFBQWEsVUFBVSxHQUN4RCxpQ0FBQyxTQUFJLFdBQVUsd0NBQ2IsaUNBQUMsT0FBRSxXQUFVLHVCQUFzQixPQUFPLEVBQUVuRSxZQU
798FZLGdDQUFnQ0MsWUFBWSxLQUFLQyxPQUFPLFVBQVUsR0FDdkhLLFlBQUUsV0FBVyxLQURoQjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBRUEsS0FIRjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBSUEsS0FMRjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBTUE7QUFBQSxJQUVBLHVCQUFDLHVCQUFvQixRQUFRSSxvQkFBb0IsU0FBUyxNQUFNQyxzQkFBc0IsS0FBSyxLQUEzRjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQTZGO0FBQUEsT0F2TS9GO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0F3TUE7QUFFSjtBQUFDTixJQTNWS0QsUUFBZ0I7QUFBQSxVQUNJekIsYUFDUU4sYUFJZFcsUUFBUTtBQUFBO0FBQUFtRixNQU50Qi9EO0FBNlZOLGVBQWVBO0FBQU8sSUFBQUQsSUFBQWdFO0FBQUFDLGFBQUFqRSxJQUFBO0FBQUFpRSxhQUFBRCxLQUFBIiwibmFtZXMiOlsidXNlU3RhdGUiLCJMaW5rIiwidXNlTG9jYXRpb24iLCJGYUluc3RhZ3JhbSIsIkZhVGlrdG9rIiwiRmFMaW5rZWRpbkluIiwiRmFQaW50ZXJlc3QiLCJGYUZhY2Vib29rRiIsInVzZUxhbmd1YWdlIiwidXNlQ3VycmVuY3kiLCJjdXJyZW5jeVN5bWJvbHMiLCJDb29raWVTZXR0aW5nc1BhbmVsIiwiYXBpUmVxdWVzdCIsInVzZVRvYXN0IiwidHJhY2tXYWl0bGlzdFNpZ251cCIsImN1cnJlbmN5RmxhZ3MiLCJYT0YiLCJVU0QiLCJFVVIiLCJHQlAiLCJDQUQiLCJDdXJyZW5jeUZvb3RlclNlbGVjdG9yIiwiX3MiLCJjdXJyZW5jeSIsInNldEN1cnJlbmN5IiwiY3VycmVuY2llcyIsIm1hcCIsImN1cnIiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsImNvbG9yIiwiZm9udFNpemUiLCJfYyIsIkZvb3RlciIsIl9zMiIsInQiLCJsYW5ndWFnZSIsImxvY2F0aW9uIiwic2V0TG9jYXRpb24iLCJzaG93Q29va2llU2V0dGluZ3MiLCJzZXRTaG93Q29va2llU2V0dGluZ3MiLCJmb290ZXJFbWFpbCIsInNldEZvb3RlckVtYWlsIiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwidG9hc3QiLCJpc1BsYXlib29rUGFnZSIsImhhbmRsZUZvb3RlckVtYWlsU3VibWl0IiwiZSIsInByZXZlbnREZWZhdWx0IiwiZW1haWxSZWdleCIsInRlc3QiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwidmFyaWFudCIsIm1ldGhvZCIsImRhdGEiLCJlbWFpbCIsInNvdXJjZSIsImVycm9yIiwibWVzc2FnZSIsImluY2x1ZGVzIiwiaGFuZGxlTG9nb0NsaWNrIiwid2luZG93Iiwic2Nyb2xsVG8iLCJ0b3AiLCJiZWhhdmlvciIsImhhbmRsZUFib3V0Q2xpY2siLCJhYm91dFNlY3Rpb24iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwibmF2SGVpZ2h0IiwiZWxlbWVudFBvc2l0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwic2Nyb2xsWSIsInNldFRpbWVvdXQiLCJoYW5kbGVXYWl0bGlzdENsaWNrIiwic2VjdGlvbiIsInF1ZXJ5U2VsZWN0b3IiLCJoYW5kbGVGQVFDbGljayIsImZhcVNlY3Rpb24iLCJoYW5kbGVDb250YWN0Q2xpY2siLCJoYW5kbGVKb3VybmFsQ2xpY2siLCJoYW5kbGVUZXJtc0NsaWNrIiwiaGFuZGxlUHJpdmFjeUNsaWNrIiwiYmFja2dyb3VuZENvbG9yIiwibWF4V2lkdGgiLCJib3JkZXIiLCJ0YXJnZXQiLCJ2YWx1ZSIsImxldHRlclNwYWNpbmciLCJib3JkZXJMZWZ0IiwiYmFja2dyb3VuZCIsInBhZGRpbmciLCJjdXJzb3IiLCJib3JkZXJDb2xvciIsIl9jMiIsIiRSZWZyZXNoUmVnJCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJGb290ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmssIHVzZUxvY2F0aW9uIH0gZnJvbSAnd291dGVyJztcbmltcG9ydCB7IEZhSW5zdGFncmFtLCBGYVRpa3RvaywgRmFMaW5rZWRpbkluLCBGYVBpbnRlcmVzdCwgRmFGYWNlYm9va0YgfSBmcm9tICdyZWFjdC1pY29ucy9mYSc7XG5pbXBvcnQgeyB1c2VMYW5ndWFnZSB9IGZyb20gJ0AvbGliL0xhbmd1YWdlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VDdXJyZW5jeSwgQ3VycmVuY3ksIGN1cnJlbmN5U3ltYm9scyB9IGZyb20gJ0AvbGliL0N1cnJlbmN5Q29udGV4dCc7XG5pbXBvcnQgQ29va2llU2V0dGluZ3NQYW5lbCBmcm9tICdAL2NvbXBvbmVudHMvQ29va2llU2V0dGluZ3NQYW5lbCc7XG5pbXBvcnQgeyBhcGlSZXF1ZXN0IH0gZnJvbSAnQC9saWIvcXVlcnlDbGllbnQnO1xuaW1wb3J0IHsgdXNlVG9hc3QgfSBmcm9tICdAL2hvb2tzL3VzZS10b2FzdCc7XG5pbXBvcnQgeyB0cmFja1dhaXRsaXN0U2lnbnVwIH0gZnJvbSAnQC9saWIvYW5hbHl0aWNzJztcblxuY29uc3QgY3VycmVuY3lGbGFnczogUmVjb3JkPEN1cnJlbmN5LCBzdHJpbmc+ID0ge1xuICBYT0Y6ICfwn4e48J+HsycsXG4gIFVTRDogJ/Cfh7rwn4e4JyxcbiAgRVVSOiAn8J+HqvCfh7onLFxuICBHQlA6ICfwn4es8J+HpycsXG4gIENBRDogJ/Cfh6jwn4emJyxcbn07XG5cbmNvbnN0IEN1cnJlbmN5Rm9vdGVyU2VsZWN0b3I6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCB7IGN1cnJlbmN5LCBzZXRDdXJyZW5jeSB9ID0gdXNlQ3VycmVuY3koKTtcbiAgY29uc3QgY3VycmVuY2llczogQ3VycmVuY3lbXSA9IFsnWE9GJywgJ1VTRCcsICdFVVInLCAnR0JQJywgJ0NBRCddO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAge2N1cnJlbmNpZXMubWFwKChjdXJyKSA9PiAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBrZXk9e2N1cnJ9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Q3VycmVuY3koY3Vycil9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC14cyB0cmFuc2l0aW9uLW9wYWNpdHkgJHtcbiAgICAgICAgICAgIGN1cnJlbmN5ID09PSBjdXJyID8gJ29wYWNpdHktMTAwJyA6ICdvcGFjaXR5LTQwIGhvdmVyOm9wYWNpdHktNzAnXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6ICdIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6IGN1cnJlbmN5ID09PSBjdXJyID8gNDAwIDogMzAwLFxuICAgICAgICAgICAgY29sb3I6ICcjMUExQTFBJ1xuICAgICAgICAgI
798H19XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bmb290ZXItY3VycmVuY3ktJHtjdXJyfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzEycHgnIH19PntjdXJyZW5jeUZsYWdzW2N1cnJdfTwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj57Y3Vycn0ge2N1cnJlbmN5U3ltYm9sc1tjdXJyXX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBGb290ZXI6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCB7IHQsIGxhbmd1YWdlIH0gPSB1c2VMYW5ndWFnZSgpO1xuICBjb25zdCBbbG9jYXRpb24sIHNldExvY2F0aW9uXSA9IHVzZUxvY2F0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q29va2llU2V0dGluZ3MsIHNldFNob3dDb29raWVTZXR0aW5nc10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmb290ZXJFbWFpbCwgc2V0Rm9vdGVyRW1haWxdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBbaXNTdWJtaXR0aW5nLCBzZXRJc1N1Ym1pdHRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB7IHRvYXN0IH0gPSB1c2VUb2FzdCgpO1xuICBcbiAgLy8gSGlkZSBtYWlsaW5nIGxpc3QgZm9ybSBvbiBwbGF5Ym9vayBwYWdlc1xuICBjb25zdCBpc1BsYXlib29rUGFnZSA9IGxvY2F0aW9uID09PSAnL3BsYXlib29rJyB8fCBsb2NhdGlvbiA9PT0gJy9za2luY2FyZS1ndWlkZSc7XG5cbiAgY29uc3QgaGFuZGxlRm9vdGVyRW1haWxTdWJtaXQgPSBhc3luYyAoZTogUmVhY3QuRm9ybUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcbiAgICBpZiAoIWZvb3RlckVtYWlsIHx8ICFlbWFpbFJlZ2V4LnRlc3QoZm9vdGVyRW1haWwpKSB7XG4gICAgICB0b2FzdCh7XG4gICAgICAgIHRpdGxlOiBsYW5ndWFnZSA9PT0gJ2ZyJyA/ICdFcnJldXInIDogJ0Vycm9yJyxcbiAgICAgICAgZGVzY3JpcHRpb246IGxhbmd1YWdlID09PSAnZnInID8gJ1ZldWlsbGV6IGVudHJlciB1bmUgYWRyZXNzZSBlbWFpbCB2YWxpZGUuJyA6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLicsXG4gICAgICAgIHZhcmlhbnQ6ICdkZXN0cnVjdGl2ZScsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRJc1N1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFwaVJlcXVlc3QoJy9hcGkvd2FpdGxpc3QnLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBkYXRhOiB7IGVtYWlsOiBmb290ZXJFbWFpbCwgc291cmNlOiAnZm9vdGVyJywgbGFuZ3VhZ2UgfSxcbiAgICAgIH0pO1xuICAgICAgdHJhY2tXYWl0bGlzdFNpZ251cCgnZm9vdGVyJyk7XG4gICAgICB0b2FzdCh7XG4gICAgICAgIHRpdGxlOiBsYW5ndWFnZSA9PT0gJ2ZyJyA/IFwiVm91cyDDqnRlcyBzdXIgbGEgbGlzdGUgIVwiIDogXCJZb3UncmUgb24gdGhlIGxpc3QhXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBsYW5ndWFnZSA9PT0gJ2ZyJyA/IFwiQmllbnZlbnVlIGNoZXogS1lOICFcIiA6IFwiV2VsY29tZSB0byBLWU4hXCIsXG4gICAgICB9KTtcbiAgICAgIHNldEZvb3RlckVtYWlsKCcnKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBpZiAoZXJyb3IubWVzc2FnZT8uaW5jbHVkZXMoJ2FscmVhZHknKSkge1xuICAgICAgICB0b2FzdCh7XG4gICAgICAgICAgdGl0bGU6IGxhbmd1YWdlID09PSAnZnInID8gJ0TDqWrDoCBhdmVjIG5vdXMnIDogJ0FscmVhZHkgd2l0aCB1cycsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGxhbmd1YWdlID09PSAnZnInID8gJ0NldCBlbWFpbCBmYWl0IGTDqWrDoCBwYXJ0aWUgZGUgbm90cmUgY29tbXVuYXV0w6kuJyA6ICdUaGlzIGVtYWlsIGlzIGFscmVhZHkgcGFydCBvZiBvdXIgY29tbXVuaXR5LicsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9hc3Qoe1xuICAgICAgICAgIHRpdGxlOiBsYW5ndWFnZSA9PT0gJ2ZyJyA/ICdFcnJldXInIDogJ0Vycm9yJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogbGFuZ3VhZ2UgPT09ICdmcicgPyAnVW5lIGVycmV1ciBlc3Qgc3VydmVudWUuJyA6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4nLFxuICAgICAgICAgIHZhcmlhbnQ6ICdkZXN0cnVjdGl2ZScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVMb2dvQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBYm91dENsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGxvY2F0aW9uID09PSAnLycpIHtcbiAgICAgIGNvbnN0IGFib3V0U2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcm9tLXVzLXRvLXlvdScpO1xuICAgICAgaWYgKGFib3V0U2VjdGlvbikge1xuICAgICAgICBjb25zdCBuYXZIZWlnaHQgPSAxMTg7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRQb3NpdGlvbiA9IGFib3V0U2VjdGlvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiBlbGVtZW50UG9zaXRpb24gLSBuYXZIZWlnaHQsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TG9jYXRpb24oJy8nKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBhYm91dFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnJvbS11cy10by15b3UnKTtcbiAgICAgICAgaWYgKGFib3V0U2VjdGlvbikge1xuICAgICAgICAgIGNvbnN0IG5hdkhlaWdodCA9IDExODtcbiAgICAgICAgICBjb25zdCBlbGVtZW50UG9zaXRpb24gPSBhYm91dFNlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFk7XG4gICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiBlbGVtZW50UG9zaXRpb24gLSBuYXZIZWlnaHQsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gI
798H07XG5cbiAgY29uc3QgaGFuZGxlV2FpdGxpc3RDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChsb2NhdGlvbiA9PT0gJy8nKSB7XG4gICAgICBjb25zdCBzZWN0aW9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtc3Vic2NyaXB0aW9uLXNlY3Rpb25dJyk7XG4gICAgICBpZiAoc2VjdGlvbikge1xuICAgICAgICBjb25zdCBuYXZIZWlnaHQgPSAxMTg7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRQb3NpdGlvbiA9IHNlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFk7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogZWxlbWVudFBvc2l0aW9uIC0gbmF2SGVpZ2h0LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldExvY2F0aW9uKCcvJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXN1YnNjcmlwdGlvbi1zZWN0aW9uXScpO1xuICAgICAgICBpZiAoc2VjdGlvbikge1xuICAgICAgICAgIGNvbnN0IG5hdkhlaWdodCA9IDExODtcbiAgICAgICAgICBjb25zdCBlbGVtZW50UG9zaXRpb24gPSBzZWN0aW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogZWxlbWVudFBvc2l0aW9uIC0gbmF2SGVpZ2h0LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZBUUNsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGxvY2F0aW9uID09PSAnLycpIHtcbiAgICAgIGNvbnN0IGZhcVNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmFxJyk7XG4gICAgICBpZiAoZmFxU2VjdGlvbikge1xuICAgICAgICBjb25zdCBuYXZIZWlnaHQgPSAxMTg7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRQb3NpdGlvbiA9IGZhcVNlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFk7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogZWxlbWVudFBvc2l0aW9uIC0gbmF2SGVpZ2h0LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldExvY2F0aW9uKCcvJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZmFxU2VjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmYXEnKTtcbiAgICAgICAgaWYgKGZhcVNlY3Rpb24pIHtcbiAgICAgICAgICBjb25zdCBuYXZIZWlnaHQgPSAxMTg7XG4gICAgICAgICAgY29uc3QgZWxlbWVudFBvc2l0aW9uID0gZmFxU2VjdGlvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IGVsZW1lbnRQb3NpdGlvbiAtIG5hdkhlaWdodCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDb250YWN0Q2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBzZXRMb2NhdGlvbignL2NvbnRhY3QnKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIH0sIDEwMCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSm91cm5hbENsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUZXJtc0NsaWNrID0gKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQcml2YWN5Q2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGZvb3RlciBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6ICcjZjVmNWY1JyB9fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNiBsZzpwbC02IGxnOnByLTEyIHB5LTEyIGxnOnB5LTE2XCI+XG4gICAgICAgIHsvKiBEZXNrdG9wIExheW91dCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbGc6ZmxleCBsZzpqdXN0aWZ5LWJldHdlZW4gbGc6Z2FwLTE2XCI+XG4gICAgICAgICAgey8qIExlZnQgU2lkZSAtIExvZ28sIFRleHQsIEVtYWlsLCBTb2NpYWwgSWNvbnMgKi99XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxhIFxuICAgICAgICAgICAgICBocmVmPVwiL1wiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUxvZ29DbGlja31cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIGN1cnNvci1wb2ludGVyIGhvdmVyOm9wYWNpdHktNzAgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGgyIFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtNHhsIG1kOnRleHQtNXhsIGZvbnQtbm9ybWFsIHRyYWNraW5nLXdpZGVyXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgY29sb3I6ICcjMUExQTFBJyB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgS1lOXG4gICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHshaXNQbGF5Ym9va1BhZ2UgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxwIFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXQtOCB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCB3aGl0ZXNwYWNlLW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2xhbmd1YWdlID09PSAnZnInIFxuICAgICAgICAgICAgICAgICAgICA/IFwiUmVqb2lnbmV6IG5vdHJlIGxpc3RlIHBvdXIgw6p0cmUgbGVzIHByZW1pZXJzIGluZm9ybcOpcyBkZSB0b3V0ZXMgbGVzIG5vdXZlYXV0w6lzIEtZTi5cIiBcbiAgICAgICAgICAgICAgICAgICAgOiAnSm9pbiBvdXIgbWFpbGluZyBsaXN0IHRvIGJlIHRoZSBmaXJzdCB0byBoZWFyIGFib3V0IGFsbCB0aGluZ3MgS1lOLid9XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxmb3JtIFxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e2hhbmRsZUZvb3RlckVtYWlsU3VibWl0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdHJldGNoIG10LTZcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWF4V2lkdGg6ICc0MDBweCcsIGJvcmRlcjogJzFweCBzb2xpZCAjMUExQTFBJyB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eX
798BlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9vdGVyRW1haWx9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0Rm9vdGVyRW1haWwoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkUtbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMSBweC00IHB5LTMgZm9jdXM6b3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRTaXplOiAnMTNweCcsIGZvbnRXZWlnaHQ6IDMwMCwgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLCBib3JkZXI6ICdub25lJywgY29sb3I6ICcjMUExQTFBJyB9fVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZvb3Rlci1pbnB1dC1lbWFpbFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHgtNSB1cHBlcmNhc2UgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktNzAgZGlzYWJsZWQ6b3BhY2l0eS01MFwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JywgY29sb3I6ICcjMUExQTFBJywgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgbGV0dGVyU3BhY2luZzogJzFweCcsIGJvcmRlcjogJ25vbmUnLCBib3JkZXJMZWZ0OiAnMXB4IHNvbGlkICMxQTFBMUEnLCBmb250U2l6ZTogJzExcHgnIH19XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZm9vdGVyLWJ1dHRvbi1zdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aXNTdWJtaXR0aW5nID8gJy4uLicgOiAobGFuZ3VhZ2UgPT09ICdmcicgPyAnRU5WT1lFUicgOiAnU1VCU0NSSUJFJyl9XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgey8qIFNvY2lhbCBJY29ucyBSb3cgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIG10LThcIj5cbiAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20va3luX2NhcmUvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIGNsYXNzTmFtZT1cImhvdmVyOm9wYWNpdHktNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCIgYXJpYS1sYWJlbD1cIkluc3RhZ3JhbVwiPlxuICAgICAgICAgICAgICAgIDxGYUluc3RhZ3JhbSBzaXplPXsyMH0gY29sb3I9XCIjMUExQTFBXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3NoYXJlLzFLNVVpdXlGNmMvP21pYmV4dGlkPXd3WElmclwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBjbGFzc05hbWU9XCJob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eVwiIGFyaWEtbGFiZWw9XCJGYWNlYm9va1wiPlxuICAgICAgICAgICAgICAgIDxGYUZhY2Vib29rRiBzaXplPXsyMH0gY29sb3I9XCIjMUExQTFBXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cudGlrdG9rLmNvbS9Aa3luX2NhcmVcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3NOYW1lPVwiaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHlcIiBhcmlhLWxhYmVsPVwiVGlrVG9rXCI+XG4gICAgICAgICAgICAgICAgPEZhVGlrdG9rIHNpemU9ezIwfSBjb2xvcj1cIiMxQTFBMUFcIiAvPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9reW4tY2FyZS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3NOYW1lPVwiaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHlcIiBhcmlhLWxhYmVsPVwiTGlua2VkSW5cIj5cbiAgICAgICAgICAgICAgICA8RmFMaW5rZWRpbkluIHNpemU9ezIwfSBjb2xvcj1cIiMxQTFBMUFcIiAvPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5waW50ZXJlc3QuY29tL2t5bl9jYXJlL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBjbGFzc05hbWU9XCJob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eVwiIGFyaWEtbGFiZWw9XCJQaW50ZXJlc3RcIj5cbiAgICAgICAgICAgICAgICA8RmFQaW50ZXJlc3Qgc2l6ZT17MjB9IGNvbG9yPVwiIzFBMUExQVwiIC8+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIHsvKiBSaWdodCBTaWRlIC0gU2xvZ2FuICsgMiBDb2x1bW5zICovfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IG1iLTEwXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDQwMCwgY29sb3I6ICcjMUExQTFBJywgbGV0dGVyU3BhY2luZzogJzJweCcgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2xhbmd1YWdlID09PSAnZnInID8gXCJMJ0lOTk9WQVRJT04gw4AgQ0hBUVVFIENPVUNIRSBERSBMQSBCRUFVVMOJLlwiIDogJ0lOTk9WQVRJT04gRk9SIEVWRVJZIExBWUVSIE9GIEJFQVVUWS4nfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTEyXCI+XG4gICAgICAgICAgICAgI
798HsvKiBCUkFORCAqL31cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgbWItNVwiIHN0eWxlPXt7IGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLCBmb250V2VpZ2h0OiA1MDAsIGNvbG9yOiAnIzFBMUExQScsIGxldHRlclNwYWNpbmc6ICcxLjVweCcgfX0+XG4gICAgICAgICAgICAgICAgICB7dCgnYnJhbmQnKX1cbiAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPVwiLyNzdWJzY3JpYmUtc2VjdGlvblwiIG9uQ2xpY2s9e2hhbmRsZVdhaXRsaXN0Q2xpY2t9IGNsYXNzTmFtZT1cInRleHQtc20gaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHlcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnIH19Pnt0KCd3YWl0bGlzdE5hdicpfTwvYT48L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIvI2ZhcVwiIG9uQ2xpY2s9e2hhbmRsZUZBUUNsaWNrfSBjbGFzc05hbWU9XCJ0ZXh0LXNtIGhvdmVyOm9wYWNpdHktNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgY29sb3I6ICcjMUExQTFBJyB9fT57dCgnZmFxTmF2Jyl9PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj1cIi9jb250YWN0XCIgb25DbGljaz17aGFuZGxlQ29udGFjdENsaWNrfSBjbGFzc05hbWU9XCJ0ZXh0LXNtIGhvdmVyOm9wYWNpdHktNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgY29sb3I6ICcjMUExQTFBJyB9fT57dCgnY29udGFjdFVzJyl9PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+PExpbmsgaHJlZj1cIi9zdXBwbHktY2hhaW5cIiBvbkNsaWNrPXsoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCl9IGNsYXNzTmFtZT1cInRleHQtc20gaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHlcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnIH19IGRhdGEtdGVzdGlkPVwiZm9vdGVyLWxpbmstc3VwcGx5LWNoYWluXCI+e3QoJ2t5blN1cHBseUNoYWluQWN0Jyl9PC9MaW5rPjwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB7LyogTEVHQUwgKi99XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtc20gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIG1iLTVcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogNTAwLCBjb2xvcjogJyMxQTFBMUEnLCBsZXR0ZXJTcGFjaW5nOiAnMS41cHgnIH19PlxuICAgICAgICAgICAgICAgICAge3QoJ2xlZ2FsJyl9XG4gICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgICA8bGk+PExpbmsgaHJlZj1cIi90ZXJtc1wiIG9uQ2xpY2s9e2hhbmRsZVRlcm1zQ2xpY2t9IGNsYXNzTmFtZT1cInRleHQtc20gaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHlcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnIH19Pnt0KCd0ZXJtcycpfTwvTGluaz48L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPjxMaW5rIGhyZWY9XCIvcHJpdmFjeVwiIG9uQ2xpY2s9e2hhbmRsZVByaXZhY3lDbGlja30gY2xhc3NOYW1lPVwidGV4dC1zbSBob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eVwiIHN0eWxlPXt7IGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLCBmb250V2VpZ2h0OiAzMDAsIGNvbG9yOiAnIzFBMUExQScgfX0+e3QoJ3ByaXZhY3knKX08L0xpbms+PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT48YnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldFNob3dDb29raWVTZXR0aW5ncyh0cnVlKX0gY2xhc3NOYW1lPVwidGV4dC1zbSBob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWxlZnRcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnLCBiYWNrZ3JvdW5kOiAnbm9uZScsIGJvcmRlcjogJ25vbmUnLCBwYWRkaW5nOiAwLCBjdXJzb3I6ICdwb2ludGVyJyB9fSBkYXRhLXRlc3RpZD1cImZvb3Rlci1saW5rLWNvb2tpZXNcIj57dCgnY29va2llUHJlZmVyZW5jZXMnKX08L2J1dHRvbj48L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgey8qIE1vYmlsZSBMYXlvdXQgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGc6aGlkZGVuXCI+XG4gICAgICAgICAgey8qIExvZ28gKi99XG4gICAgICAgICAgPGEgaHJlZj1cIi9cIiBvbkNsaWNrPXtoYW5kbGVMb2dvQ2xpY2t9IGNsYXNzTmFtZT1cImlubGluZS1ibG9jayBjdXJzb3ItcG9pbnRlciBob3ZlcjpvcGFjaXR5LTcwIHRyYW5zaXRpb24tb3BhY2l0eVwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtNHhsIGZvbnQtbm9ybWFsIHRyYWNraW5nLXdpZGVyXCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGNvbG9yOiAnIzFBMUExQScgfX0+S1lOPC9oMj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgXG4gICAgICAgICAgeyFpc1BsYXlib29rUGFnZSAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7LyogTWFpbGluZyBsaXN0IHRleHQgKi99XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTYgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnIH19PlxuICAgICAgICAgICAgICAgI
798HtsYW5ndWFnZSA9PT0gJ2ZyJyA/IFwiUmVqb2lnbmV6IG5vdHJlIGxpc3RlIHBvdXIgw6p0cmUgbGVzIHByZW1pZXJzIGluZm9ybcOpcy5cIiA6ICdKb2luIG91ciBtYWlsaW5nIGxpc3QgdG8gYmUgdGhlIGZpcnN0IHRvIGhlYXIgYWJvdXQgYWxsIHRoaW5ncyBLWU4uJ31cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgey8qIEVtYWlsIGZvcm0gKi99XG4gICAgICAgICAgICAgIDxmb3JtIG9uU3VibWl0PXtoYW5kbGVGb290ZXJFbWFpbFN1Ym1pdH0gY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdHJldGNoIG10LTRcIiBzdHlsZT17eyBib3JkZXI6ICcxcHggc29saWQgI0NDQ0NDQycgfX0+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2Zvb3RlckVtYWlsfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRGb290ZXJFbWFpbChlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkUtbWFpbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgcHgtMyBweS0yLjUgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtc21cIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLCBib3JkZXI6ICdub25lJywgY29sb3I6ICcjMUExQTFBJyB9fVxuICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJmb290ZXItaW5wdXQtZW1haWwtbW9iaWxlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTQgdXBwZXJjYXNlIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTcwIGRpc2FibGVkOm9wYWNpdHktNTAgdGV4dC14c1wiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsIGNvbG9yOiAnIzFBMUExQScsIGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLCBmb250V2VpZ2h0OiA0MDAsIGxldHRlclNwYWNpbmc6ICcxcHgnLCBib3JkZXI6ICdub25lJywgYm9yZGVyTGVmdDogJzFweCBzb2xpZCAjQ0NDQ0NDJyB9fVxuICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJmb290ZXItYnV0dG9uLXN1Ym1pdC1tb2JpbGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtpc1N1Ym1pdHRpbmcgPyAnLi4uJyA6IChsYW5ndWFnZSA9PT0gJ2ZyJyA/ICdFTlZPWUVSJyA6ICdTVUJTQ1JJQkUnKX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICBcbiAgICAgICAgICB7LyogMyBDb2x1bW5zICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMyBnYXAtNiBtdC0xMFwiPlxuICAgICAgICAgICAgey8qIEJSQU5EICovfVxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQteHMgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIG1iLTNcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogNTAwLCBjb2xvcjogJyMxQTFBMUEnLCBsZXR0ZXJTcGFjaW5nOiAnMXB4JyB9fT57dCgnYnJhbmQnKX08L2gzPlxuICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIvI3N1YnNjcmliZS1zZWN0aW9uXCIgb25DbGljaz17aGFuZGxlV2FpdGxpc3RDbGlja30gY2xhc3NOYW1lPVwidGV4dC1zbSBob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eVwiIHN0eWxlPXt7IGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLCBmb250V2VpZ2h0OiAzMDAsIGNvbG9yOiAnIzFBMUExQScgfX0+e3QoJ3dhaXRsaXN0TmF2Jyl9PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIvI2ZhcVwiIG9uQ2xpY2s9e2hhbmRsZUZBUUNsaWNrfSBjbGFzc05hbWU9XCJ0ZXh0LXNtIGhvdmVyOm9wYWNpdHktNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgY29sb3I6ICcjMUExQTFBJyB9fT57dCgnZmFxTmF2Jyl9PC9hPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIvY29udGFjdFwiIG9uQ2xpY2s9e2hhbmRsZUNvbnRhY3RDbGlja30gY2xhc3NOYW1lPVwidGV4dC1zbSBob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eVwiIHN0eWxlPXt7IGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLCBmb250V2VpZ2h0OiAzMDAsIGNvbG9yOiAnIzFBMUExQScgfX0+e3QoJ2NvbnRhY3RVcycpfTwvYT48L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48TGluayBocmVmPVwiL3N1cHBseS1jaGFpblwiIG9uQ2xpY2s9eygpID0+IHdpbmRvdy5zY3JvbGxUbygwLCAwKX0gY2xhc3NOYW1lPVwidGV4dC1zbSBob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eVwiIHN0eWxlPXt7IGZvbnRGYW1pbHk6IFwiSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlwiLCBmb250V2VpZ2h0OiAzMDAsIGNvbG9yOiAnIzFBMUExQScgfX0+e3QoJ2t5blN1cHBseUNoYWluQWN0Jyl9PC9MaW5rPjwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgey8qIEZPTExPVyAqL31cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXhzIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciBtYi0zXCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDUwMCwgY29sb3I6ICcjMUExQTFBJywgbGV0dGVyU3BhY2luZzogJzFweCcgfX0+e2xhbmd1YWdlID09PSAnZnInID8gJ1NVSVZSRScgOiAnRk9MTE9XJ308L2gzPlxuICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL2t5bl9jYXJlL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGhvdmVyOm9wYWNpdHktNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgY29sb3I6ICcjMUExQTFBJyB9fT5JbnN0YWdyYW08L2E+PC9saT5cbiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj1cImh0dHBzOi8vd3d3LnRpa3Rvay5jb20vQGt5bl9jYXJlXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIGNsYXNzTmFtZT1cInRleHQtc20gaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHlcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnIH19PlRpa1RvazwvYT48L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3NoYXJlLzFLNVVpdXlGNmMvP21pYmV4dGlkPXd3WElmclwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGhvdmVyOm9wYWNpdHktNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgY29sb3I6ICcjMUExQTFBJyB9fT5GYWNlYm9vazwvYT48L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkva3luLWNhcmUvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIGNsYXNzTmFtZT1cInRleHQtc20gaG92ZXI6b3BhY2l0eS02MCB0cmFuc2l0aW9uLW9wYWNpdHlcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnIH19PkxpbmtlZEluPC9hPjwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgey8qIExFR0FMICovfVxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQteHMgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIG1iLTNcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogNTAwLCBjb2xvcjogJyMxQTFBMUEnLCBsZXR0ZXJTcGFjaW5nOiAnMXB4JyB9fT57dCgnbGVnYWwnKX08L2gzPlxuICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgICAgICAgPGxpPjxMaW5rIGhyZWY9XCIvdGVybXNcIiBvbkNsaWNrPXtoYW5kbGVUZXJtc0NsaWNrfSBjbGFzc05hbWU9XCJ0ZXh0LXNtIGhvdmVyOm9wYWNpdHktNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgY29sb3I6ICcjMUExQTFBJyB9fT57dCgndGVybXMnKX08L0xpbms+PC9saT5cbiAgICAgICAgICAgICAgICA8bGk+PExpbmsgaHJlZj1cIi9wcml2YWN5XCIgb25DbGljaz17aGFuZGxlUHJpdmFjeUNsaWNrfSBjbGFzc05hbWU9XCJ0ZXh0LXNtIGhvdmVyOm9wYWNpdHktNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgY29sb3I6ICcjMUExQTFBJyB9fT57dCgncHJpdmFjeScpfTwvTGluaz48L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48YnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldFNob3dDb29raWVTZXR0aW5ncy
798h0cnVlKX0gY2xhc3NOYW1lPVwidGV4dC1zbSBob3ZlcjpvcGFjaXR5LTYwIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWxlZnRcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcIkhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWZcIiwgZm9udFdlaWdodDogMzAwLCBjb2xvcjogJyMxQTFBMUEnLCBiYWNrZ3JvdW5kOiAnbm9uZScsIGJvcmRlcjogJ25vbmUnLCBwYWRkaW5nOiAwLCBjdXJzb3I6ICdwb2ludGVyJyB9fT57dCgnY29va2llUHJlZmVyZW5jZXMnKX08L2J1dHRvbj48L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIHsvKiBDb3B5cmlnaHQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci10XCIgc3R5bGU9e3sgYm9yZGVyQ29sb3I6ICcjZTBlMGUwJyB9fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC02IGxnOnB4LTEyIHB5LTVcIj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtY2VudGVyXCIgc3R5bGU9e3sgZm9udEZhbWlseTogXCJIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmXCIsIGZvbnRXZWlnaHQ6IDMwMCwgY29sb3I6ICcjMUExQTFBJyB9fT5cbiAgICAgICAgICAgIHt0KCdjb3B5cmlnaHQnKX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxDb29raWVTZXR0aW5nc1BhbmVsIGlzT3Blbj17c2hvd0Nvb2tpZVNldHRpbmdzfSBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29va2llU2V0dGluZ3MoZmFsc2UpfSAvPlxuICAgIDwvZm9vdGVyPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBGb290ZXI7XG4iXSwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3Jrc3BhY2UvY2xpZW50L3NyYy9jb21wb25lbnRzL2xheW91dC9Gb290ZXIudHN4In0=

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.