/*Every rule that now hard-codes swaps to this*/

/* =========================
   NutraLabel Global Styles
   =========================
   A lightweight, DRY stylesheet that consolidates shared rules,
   centralises colour tokens, and bakes‑in dark‑mode support.
   Component‑specific rules (navigation, footer, etc.) now live in
   their own files – keeping this one focused on layout, type & forms.
   -------------------------------------------------------------- */

body {
  border: red 2px solid;
}
main.container {
  border: rgb(70, 238, 140) 2px solid;
}
.pricing-cards {
  border: blue 2px solid;
}
.container {
  border: purple 2px solid;
}

/* --------------
   1.  Design Tokens
   -------------------------*/
:root {
  /* Brand colors */
  --nl-green-dark: #14410b; /* primary */
  --nl-green-light: #73af7e; /* accent  */
  --nl-white: #ffffff;
  /* Greyscale (for subtle tints/lines) */
  --grey-100: #f6f6f6;
  --grey-200: #e0e0e0;
  --grey-700: #4d4d4d;
  /* Typography */
  --font-base: "Segoe UI", system-ui, Arial, sans-serif;
  --fs-100: 0.875rem; /* 14px */
  --fs-200: 1rem; /* 16px */
  --fs-300: 1.25rem; /* 20px */
  --radius-sm: 0.25rem;
  --radius-md: 0.5rem;
  --shadow-md: 0 0 0.75rem rgba(0, 0, 0, 0.1);
  --navbar-height: 110px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --nl-green-dark: #14410b; /* flip for dark bg */
    --nl-green-light: #73af7e;
    --nl-white: #121212;
    --grey-100: #1a1a1a;
    --grey-200: #222;
    --grey-700: #c2c2c2;
  }
}

/* Flexbox Compatibility to cover all major search engine implementations:*/
.foo {
  display: -webkit-box; /* OLD - Safari, iOS */
  display: -moz-box; /* OLD - Firefox */
  display: -ms-flexbox; /* IE10             */
  display: -webkit-flex; /* Newer WebKit     */
  display: flex; /* Standard         */
  -webkit-flex-direction: row;
  -ms-flex-direction: row;
  flex-direction: row;
}

/* -------------------------
   Customer Service Chat Modal
   -------------------------*/
.open-button {
  /* from W3Schools model */
  background: #555;
  color: #fff;
  position: fixed;
  bottom: 23px;
  right: 28px;
  padding: 16px 20px;
  cursor: pointer;
}
.chat-popup {
  display: none;
  position: fixed;
  bottom: 0;
  right: 15px;
  border: 3px solid #f1f1f1;
  z-index: 9;
}
.form-container {
  max-width: 300px;
  background: #fff;
  padding: 10px;
}
.form-container textarea {
  width: 100%;
  padding: 15px;
  margin: 5px 0 22px 0;
  background: #f1f1f1;
}
/*
.btn {
  background: #04aa6d;
  color: #fff;
  padding: 16px 20px;
  border: none;
  width: 100%;
  opacity: 0.8;
}*/
.cancel {
  background: red;
}

/* -------------------------
   2.  CSS Reset / Base
   -------------------------*/
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html,
body {
  scroll-behavior: smooth;
  height: 100%; /* Changed from 100vh to 100% */
  min-height: 100vh; /* NEW: Ensure minimum viewport height */
  line-height: 1.5; /* custom reset */
  font-family: Arial, sans-serif; /* custom reset */
  margin: 0;
  padding: 0;
}

/* ===== PROPER FLEXBOX LAYOUT FOR STICKY FOOTER ===== */
/* Let .flex-container control layout */
.flex-container {
  display: flex;
  flex-direction: column;
  min-height: 100vh; /* Ensure full viewport height */
  /* Remove height: 100%; and width: 100vw; */
  height: 100%; /* NEW: Allow growth beyond viewport */
  width: 100vw;
}

body {
  font-family: var(--font-base);
  font-size: var(--fs-100);
  background: linear-gradient(135deg, #14410b 0%, #73af7e 100%);
  color: white; /* Add a white overlay for logo transparency */
  position: relative;
  justify-content: flex-start;
  align-content: stretch;
  align-self: flex-start;
  margin: 0;
  padding: 0;
  z-index: 0;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background-image: url("/assets/images/logos/NutraLabel-logo.svg"); /* Set background image */
  background-size: 100px;
  background-repeat: repeat;
  background-attachment: fixed;
  opacity: 0.15; /* Adjust for more/less transparency */
  z-index: 0;
}

.container {
  max-width: 1200px;
  margin: 0;
  padding: 0;
  background: #fff; /* White background for content */
  padding-top: 0; /* Remove top padding if not needed */
  display: block; /* Flexbox Fallback Compatibility across browsers */
}

main.container {
  display: flex; /* NEW: Make main a flex container */
  flex: 1 0 auto; /* Grow to fill available space */
  max-width: 900px; /* Narrowed from 1400px */
  margin: 0;
  margin-bottom: 0;
  margin-top: 0; /* Remove any top margin that might add space */
  position: relative;
  align-items: center;
  text-align: center;
  flex-direction: column;
  padding: 0;
  box-sizing: border-box;
  z-index: 1;
  min-height: auto;
  color: var(--nl-green-dark);
}
/*Flexbox fallback*/
@supports (display: grid) {
  .container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    grid-gap: 20px;
  }
}
@supports (display: grid) {
  .gallery {
    display: grid;
  }
}

img,
svg {
  max-width: 100%;
  height: auto;
  display: block;
}

/* Center the demo image */
.img-responsive {
  display: block;
  margin-left: auto;
  margin-right: auto;
  max-width: 100%;
  height: auto;
  /* Optional: add some spacing */
  margin-top: 1.5rem;
  margin-bottom: 1.5rem;
}

/* Blog images: make all blog images responsive and max 100% width */

.entry-featured-image-url img,
.post-content img {
  width: 100%;
  height: auto;
  display: block;
  margin: 0 auto 1em auto;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.07);
  background: #f6f6f6;
}

Accessible skip‑link */ .skip-link {
  position: absolute;
  top: -4rem;
  left: 1rem;
  padding: 0.5em 1em;
  background: var(--nl-green-dark);
  color: var(--nl-white);
  border-radius: var(--radius-sm);
  z-index: 1000;
}

.skip-link:focus {
  top: 1rem;
}

a:focus,
button:focus,
input:focus,
.btn:focus {
  outline: none;
  outline-offset: 2px;
}

/* Unified Button Styles */
.btn,
.login-trigger,
.register-trigger,
a.btn,
a.login-trigger,
a.register-trigger,
button.btn,
button.login-trigger,
button.register-trigger {
  display: inline-block;
  padding: 0.75em 1.5em;
  box-sizing: border-box;
  border-color: #b4f8c0;
  border: 2px solid var(--nl-green-dark);
  border-radius: var(--radius-sm);
  background: linear-gradient(150deg, #14410b 0%, #73af7e 100%);
  color: #fff;
  cursor: pointer;
  background-color: var(--nl-green-dark);
  background-size: 200% 200%;
  font-weight: 600;
  text-decoration: none;
  font-size: 17px;
  font-family: Raleway, var(--font-base), sans-serif;
  position: relative;
  transition: background-position 0.25s ease-out, box-shadow 0.25s ease-out;
  min-width: 120px;
  text-align: center;
  overflow: hidden; /*Ensures the shine stays inside the button */
}

/* glossy “shine” that sweeps across on hover */
.btn::before,
a.btn::before,
.login-trigger::before,
a.login-trigger::before,
.register-trigger::before,
.register-trigger:hover::before,
a.login-trigger:hover::before,
.btn:focus-visible::before,
a.btn:focus-visible::before,
a.register-trigger::before,
.register-trigger:focus-visible::before,
a.login-trigger:focus-visible::before,
a.register-trigger:focus-visible::before,
.form-box .btn::before,
body.dark-mode .btn::before,
body.dark-mode .login-trigger::before,
body.dark-mode .register-trigger::before,
body.dark-mode a.btn::before,
body.dark-mode a.login-trigger::before,
body.dark-mode a.register-trigger::before {
  content: "";
  position: absolute;
  top: -150%;
  left: -40%;
  width: 30%;
  height: 220%;
  background: rgba(255, 255, 255, 0.4);
  transform: rotate(25deg);
  transition: left 0.6s ease-out, top 0.6s ease-out;
  pointer-events: none;
}

/* Hover/focus styles */
.btn:hover,
.login-trigger:hover,
.register-trigger:hover,
a.btn:hover,
a.login-trigger:hover,
a.register-trigger:hover,
button.btn:hover,
button.login-trigger:hover,
.form-box .btn:hover,
a.form-box .btn:hover,
button.register-trigger:hover,
.form-box .btn:focus-visible,
.btn:focus-visible,
.login-trigger:focus-visible,
.register-trigger:focus-visible {
  background: var(--nl-green-dark);
  background-position: 100% 0; /* slides the gradient */
  transform: translateY(-2px) scale(1.03); /* tiny lift */
  color: var(--nl-white);
  box-shadow: 0 0 4px #97e4a5, /* soft glow core */ 0 0 10px #238a45;
  outline: none;
}

.btn:hover::before,
.btn:focus-visible::before {
  left: 150%;
  top: 80%;
}

/* -------------------------
   2.  Typography
   -------------------------*/
h1,
h2,
h3,
h4,
h5,
h6,
title {
  font-weight: 600;
  line-height: 1.2;
  margin: 1rem 0 0.75em 0;
  text-align: center;
  background: transparent;
  color: var(--nl-green-dark) !important;
  text-decoration: bold;
  transition: 100ms;
  font-size: medium;
}

h1 {
  font-size: clamp(2rem, 5vw+1rem, 3rem);
  color: #fff;
  font-family: "ITCErasStd-Bold";
  font-size: large;
  text-decoration: bold;
  /* Reduce top margin to shrink space above heading */
  margin-top: 0.5rem; /* was 2rem in h1, now much smaller */
}

/* -------------------------
  3.  Forms
  -------------------------*/
form label {
  color: #fff !important;
  text-align: left;
  margin-left: 0;
}

form input,
form textarea,
form select {
  margin-left: 0 !important;
}

.form-inner {
  display: flex;
  flex-direction: column;
  padding: 2rem;
  max-width: 500px;
  margin: auto;
  text-align: left;
  transform: translateX(2rem); /* Pos value shifts right */
}

#regForm {
  margin: 100px auto;
  padding: 40px;
  width: 70%;
  min-width: 300px;
  align-items: center;
}

/* input[type="submit"],*/
input,
textarea,
select,
input[type="text"],
input[type="password"],
input[type="email"],
input[type="tel"],
form input[type="text"],
form input[type="password"] {
  border: 2px solid var(--nl-green-dark) !important;
  padding: 8px;
  width: 100%;
  max-width: 550px;
  border-radius: 8px; /* This sets the rounded corners*/
  box-sizing: border-box;

  font-size: var(--fs-100);
  margin-left: 0.5em;
  flex: 1 1 auto;
  color: #222;
  margin-bottom: 1em;
  padding-right: 2.5rem;
}

form label,
form .password-field {
  display: flex;
  align-items: center;
  gap: 0.5em;
  margin-bottom: 1em;
  tab-size: 4;
  text-rendering: optimizeLegibility;
  line-height: 1.5;
  min-width: 90px;
}

.form-remember {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 1rem 0;
}

/*Simple form‑error state */
.invalid {
  background: #ffecec;
  border-color: #e44d4d;
}

/* Simple form‑success state */
.valid {
  background: #e6ffec;
  border-color: #4caf50;
}

.login-row button[type="submit"],
.modal-content .btn[type="submit"],
.form-box .btn[type="submit"] {
  width: auto;
  display: block;
  margin: 1.5em auto 0 auto; /*center the button */
  /*transform: translateX(2rem);  Pos value shifts right */
  border-radius: 10px;
  padding: 0.75em 2em;
  border: 2px solid var(--nl-green-dark);
  background: linear-gradient(135deg, #73af7e, #14410b);
  color: #fff;
  font-weight: bold;
}

/* Registration form navigation buttons */
.form-navigation .btn {
  display: flex;
  gap: 10px;
}

.form-navigation .btn.visible {
  display: inline-block; /* Show when needed */
}

.submit .btn {
  display: none; /* Default hidden */
}

.submit .btn.visible {
  display: inline-block; /* Show when needed */
}

/* Wizard step circles */
.step {
  height: 20px;
  width: 20px;
  margin: 0 4px;
  background-color: #bbbbbb;
  border-radius: 50%;
  display: inline-block;
  opacity: 0.5;
  transition: background-color 0.3s, opacity 0.3s;
}
.step.active {
  background-color: #014d0b;
  opacity: 1;
}

.tab {
  display: none;
}

.company-website-row {
  display: flex;
  align-items: center;
  gap: 1.5em;
}

.qr-preview {
  min-width: 100px;
  min-height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 1.5px solid #014d0b;
  border-radius: 8px;
  padding: 0.5em;
  margin-left: 1em;
}
/* -------------------------
    Tabels
   -------------------------*/

@media (max-width: 48rem) {
  table {
    border-collapse: collapse;
    width: 100%;
    margin: 1em auto;
    font-size: var(--fs-100);
    font-family: var(--font-base);
    background-color: var(--grey-100);
    color: black;
  }
  th,
  td {
    border: 1px solid #ddd;
    padding: 0.5rem;
    text-align: left;
  }
  th {
    background-color: #f4f4f4;
  }
  tr:nth-child(even) {
    background-color: #fafafa;
  }
}

#complianceResults ul {
  list-style: none;
  padding-left: 0;
  margin-top: 1em;
}

#complianceResults li {
  margin-bottom: 0.5em;
  color: #014d0b;
}

#complianceResults a {
  color: #014d0b;
  text-decoration: underline;
  font-size: 1em;
}

.fda-results-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 1em;
  color: #000;
  background: #fff;
}

.fda-results-table th,
.fda-results-table td {
  border: 1px solid #000;
  padding: 0.5em 1em;
  text-align: left;
  vertical-align: top;
}

.fda-results-table th {
  background: #f4f4f4;
}

.fda-results-table tr:nth-child(even) {
  background: #fafafa;
}

.fda-results-table a {
  color: #014d0b;
  text-decoration: underline;
}

/*FAQ*/
#faqList {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  padding: 2em;
  border-radius: 10px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  margin: 2em auto;
  max-width: 800px;
  font-family: var(--font-base);
  font-size: var(--fs-100);
  line-height: 1.2;
  text-align: left;
  color: #222;
  background-color: var(--nl-green-light);
}

.faq-item {
  width: 100%;
  max-width: 600px;
  margin-bottom: 1em;
}

.faq-question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  background: transparent;
  border: none;
  font-size: 1.1em;
  font-weight: bold;
  color: #222;
  cursor: pointer;
  padding: 0.75em 0;
  transition: background 0.2s;
}

.faq-arrow {
  margin-left: 0.5em;
  transition: transform 0.2s;
}

.faq-question[aria-expanded="true"] .faq-arrow {
  transform: rotate(180deg);
}

.faq-answer {
  padding: 0.5em 1em;
  border-left: 2px solid #73af7e;
  color: #222;
  background: transparent;
}

/* ----------------
     Footer
   ----------------*/
.footer,
.custom-footer-grid {
  flex: 0 0 auto; /*Don't grow or shrink */
  margin-top: auto; /*Push to bottom if content is short */
  margin-bottom: 0 !important; /* Remove any bottom margin */
}

.footer {
  margin-left: 0 !important; /* Remove any left margin */
  padding-left: 0 !important; /* Add left padding for footer content */
  margin-bottom: 0 !important; /* Remove any bottom margin */
}

.custom-footer-grid {
  width: 100vw !important;
  max-width: none !important;
  grid-template-columns: 1fr auto 1fr;
  margin-left: 0 !important;
  margin-right: 0 !important;
  position: relative !important;
  padding: 10px 30px !important;
  min-height: 110px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  background: linear-gradient(135deg, #73af7e, #14410b);
  bottom: 0;
  left: 0;
  box-sizing: border-box !important;
  margin-bottom: 0 !important; /* Remove any bottom margin */
}

/* Footer Text*/
.footer-text {
  flex: 1 1 auto;
  text-align: center;
  color: #f9f9f9;
  order: 2;
  font-size: 12px !important;
  transform: translateX(-1rem); /* Negative value shifts left*/
  min-width: 200px; /* Prevent collapse */
  margin: 0 1rem; /* Add spacing from edges */
}

.footer-actions {
  flex: 1 1 0;
  display: flex;
  order: 3 !important;
  justify-content: center !important;
}

/* Fixed logo sizing for navbar and footer */
.footer-logo img,
.navbar-logo img,
#NutraLabelLogo img {
  width: 100px !important;
  height: auto !important;
  max-width: 100px !important;
  min-width: 80px !important;
  object-fit: contain !important;
  display: block !important;
}

/* Navbar logo container */
.navbar-logo {
  flex: 0 1 auto !important;
  margin-left: 0 !important; /* Remove any conflicting margin */
  margin-right: 0 !important; /* Remove any conflicting margin */
}

/* Footer logo container */
.footer-logo {
  flex: 0 0 auto !important;
  order: 1 !important;
}

/* Prevent flexbox from shrinking the logo container*/
.navbar-logo,
.footer-logo {
  width: 100px !important;
  min-width: 80px; /* Prevents shrinking */
  padding-left: 10px !important; /* Move padding to logo element */
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  padding-left: 10px !important;
}
.footer-logo {
  flex: 0 0 auto !important;
}

@media (max-width: 480px) {
  .custom-footer-grid {
    padding: 15px 10px !important;
    min-height: 120px !important;
  }

  .footer-text {
    font-size: 11px !important;
  }

  .footer-logo img,
  .navbar-logo img,
  #NutraLabelLogo img {
    width: 80px !important;
    min-width: 60px !important;
    max-width: 80px !important;
  }
  .navbar-logo,
  .footer-logo {
    width: 80px !important;
    padding-left: 10px !important;
  }
}

/* Breadcrumbs */
nav[aria-label="breadcrumb"] {
  flex: 0 0 auto; /* Don't grow or shrink */
  max-width: 95vw;
  width: 100%;
  position: sticky;
}
.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  list-style: none;
  padding: 0.3em;
  background: #f6f6f6;
  border-radius: var(--radius-sm);
  margin-bottom: 0.5em;
  background: transparent;
  gap: 0.7em;
  justify-content: flex-start; /* Left justify breadcrumbs */
  text-align: left; /* Ensure text is left-aligned */
  margin-left: 0; /* Align to left of viewport */
  margin-right: auto; /* Prevent centering */
  width: auto; /* Remove any max-width constraints */
}
.breadcrumb-item + .breadcrumb-item:before {
  content: ">";
  margin: 0 0.5em;
  color: ar(--grey-200, #e0e0e0);
}
.breadcrumb-item,
.breadcrumb-item a {
  color: var(--grey-200, #e0e0e0);
  text-decoration: none;
  transition: color 0.2s;
  text-decoration: none;
  font-size: 10px;
}
.breadcrumb-item.active {
  color: var(--grey-700, #4d4d4d);
  font-weight: bold;
  pointer-events: none;
  text-decoration: underline;
}

.breadcrumb-item a:hover {
  color: #8ef3b3; /*Hover color */
}

/* -------------------------
   Pricing
   -------------------------*/

/* ===== PRICING SECTION STANDARDIZATION ===== */
.pricing-section {
  max-width: 1400px !important;
  margin: 0 auto !important;
  padding: 3rem 1rem !important;
  text-align: center !important;
}

.pricing-section h1,
.pricing-section h2 {
  color: white !important;
  margin-bottom: 1rem !important;
  text-align: center !important;
}

.pricing-section p {
  color: #e0e0e0 !important;
  margin-bottom: 3rem !important;
  text-align: center !important;
  font-size: 1.1rem !important;
}

/* ===== UNIFIED PRICING GRID - 3 CARDS ACROSS ===== */
.pricing-cards,
.pricing {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 2rem !important;
  justify-content: center !important;
  align-items: stretch !important;
  max-width: 1200px !important;
  margin: 2rem auto !important;
  padding: 0 1rem !important;
}
/* ===== UNIFIED CARD STYLING ===== */
.pricing-cards .pricing-card,
.pricing .card {
  color: #333 !important;
  border: 2px solid var(--nl-green-light) !important;
  border-radius: 16px !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1) !important;
  padding: 2.5rem 2rem !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  text-align: center !important;
  transition: all 0.3s ease !important;
  position: relative !important;
  min-height: 500px !important;
}

/* ===== FEATURED CARD STYLING ===== */
.pricing-cards .pricing-card.featured,
.pricing .card.featured {
  border-color: red !important;
  border-width: 3px !important;
  transform: scale(1.05) !important;
  gap: 0 !important;
  flex-grow: 0 !important;
  margin-top: auto; /* Push to bottom if content is short */
  padding: 20px 15px !important;
  min-height: 140px !important;
  text-align: center !important;
  transform: scale(1.02) !important;
  box-shadow: 0 12px 32px rgba(20, 65, 11, 0.2) !important;
}

.pricing-cards .pricing-card.featured::before,
.pricing .card.featured::before {
  content: "MOST POPULAR" !important;
  position: absolute !important;
  top: -12px !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  background: var(--nl-green-dark) !important;
  color: white !important;
  padding: 6px 20px !important;
  border-radius: 20px !important;
  font-size: 12px !important;
  font-weight: bold !important;
  letter-spacing: 1px !important;
}

/* ===== CARD HOVER EFFECTS ===== */
.pricing-cards .pricing-card:hover,
.pricing .card:hover {
  transform: translateY(-8px) scale(1.02) !important;
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.15) !important;
  border-color: var(--nl-green-dark) !important;
  transform: translateY(-8px) scale(1.04) !important;
}

/* ===== PLAN NAMES ===== */
.pricing-cards .plan-name,
.pricing .card h3 {
  font-size: 1.8rem !important;
  font-weight: bold !important;
  color: var(--nl-green-dark) !important;
  margin: 0 0 1rem 0 !important;
  text-align: center !important;
}

/* ===== PRICING DISPLAY ===== */
.pricing-cards .plan-price,
.pricing .card .price {
  font-size: 2.5rem !important;
  font-weight: bold !important;
  color: var(--nl-green-dark) !important;
  margin: 0 0 1rem 0 !important;
  text-align: center !important;
}

.pricing-cards .plan-price span,
.pricing .card .price span {
  font-size: 1rem !important;
  color: #666 !important;
  font-weight: normal !important;
}

/* ===== PLAN DESCRIPTIONS ===== */
.pricing-cards .plan-description,
.pricing .card p {
  color: #666 !important;
  margin: 0 0 2rem 0 !important;
  text-align: center !important;
  font-size: 1rem !important;
  line-height: 1.5 !important;
}

/* ===== FEATURES LISTS ===== */
.pricing-cards .plan-features,
.pricing .card .features {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 0 2rem 0 !important;
  flex-grow: 1 !important;
}

.pricing-cards .plan-features li,
.pricing .card .features li {
  padding: 0.5rem 0 !important;
  color: #333 !important;
  position: relative !important;
  text-align: left !important;
  font-size: 0.95rem !important;
  line-height: 1.4 !important;
}

/* ===== CALL-TO-ACTION BUTTONS ===== */
.pricing-cards .plan-cta,
.pricing .card .plan-cta {
  background: var(--nl-green-dark) !important;
  color: white !important;
  border: 2px solid var(--nl-green-dark) !important;
  border-radius: 8px !important;
  padding: 1rem 2rem !important;
  text-decoration: none !important;
  font-weight: 600 !important;
  font-size: 1rem !important;
  transition: all 0.3s ease !important;
  margin-top: auto !important;
  display: inline-block !important;
  min-width: 140px !important;
  text-align: center !important;
}

.blog-card p,
.blog-card .post-content {
  white-space: normal;
  word-break: break-word;
  overflow-wrap: break-word;
}

.blog-card .post-content {
  font-size: 1em;
  color: #222;
  text-align: center;
  margin-top: 0.5em;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: break-word;
  line-height: 1.4;
}

/* Responsive: 2 columns on tablets, 1 on mobile */
@media (max-width: 900px) {
  .blog-grid,
  .pricing {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 1.5rem !important;
  }
  .pricing-cards .pricing-card,
  .pricing .card {
    padding: 2rem 1.5rem !important;
    min-height: 450px !important;
  }
  .pricing-cards .pricing-card.featured,
  .pricing .card.featured {
    transform: scale(1.02) !important;
  }

  .pricing-cards .pricing-card.featured:hover,
  .pricing .card.featured:hover {
    transform: translateY(-8px) scale(1.04) !important;
  }
  .pricing-section {
    padding: 2rem 0.5rem !important;
  }
}

@media (max-width: 600px) {
  .blog-card,
  .pricing-cards,
  .pricing {
    grid-template-columns: 1fr !important;
    gap: 1rem !important;
    padding: 0 0.5rem !important;
  }

  .pricing-cards .pricing-card,
  .pricing .card {
    padding: 2rem 1.5rem !important;
    min-height: 450px !important;
  }

  .pricing-cards .pricing-card.featured,
  .pricing .card.featured {
    transform: scale(1) !important;
  }

  .pricing-cards .pricing-card.featured:hover,
  .pricing .card.featured:hover {
    transform: translateY(-8px) scale(1.02) !important;
  }

  .pricing-section {
    padding: 2rem 0.5rem !important;
  }
}

/* ===== CUSTOM FONT: ITCErasStd-Bold ===== */
@font-face {
  font-family: "ITCErasStd-Bold";
  src: url("/assets/fonts/ITCErasStd-Bold.otf") format("opentype");
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

/* -------------------------
   Search Box Layout
   -------------------------*/
.search-box {
  margin: 2rem 0;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
  position: relative;
  display: inline-block;
}

.search-box label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: bold;
  color: #14410b;
}

.search-box input {
  padding-left: 2em; /* space for the icon */
  padding-right: 2em; /* space for clear X */
  height: 2.5em;
  line-height: 2.5em;
  vertical-align: middle;
  width: 100%;
  max-width: 400px;
  border: 2px solid var(--nl-green-dark);
  border-radius: 8px; /* This sets the rounded corners */
  box-sizing: border-box;
  font-size: var(--fs-100);
  color: #222;
  background: white;
}

.search-box input[type="text"]:focus {
  outline: none;
  border-color: #014d0b;
  box-shadow: 0 0 5px rgba(1, 77, 11, 0.5);
}

.search-box #clearSearch,
.faq-search-box #clearSearch,
.case-studies-search-box #clearSearch {
  position: absolute;
  right: 0.5em;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  font-size: 1.2em;
  color: #888;
  background: none;
  border: none;
  padding: 0;
  z-index: 2;
  transition: color 0.2s;
  pointer-events: auto;
  line-height: 1;
}

.search-box #clearSearch:hover,
.faq-search-box #clearSearch:hover,
.case-studies-search-box #clearSearch:hover {
  color: #14410b;
}

.search-icon {
  position: absolute;
  left: 0.5em;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  color: #000;
  filter: grayscale(100%) brightness(2);
  font-size: 1.1em;
  line-height: 1;
}

/* Unified search input wrapper for other layouts */
.search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  background: white;
  border: 2px solid #73af7e;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  max-width: 400px;
}

.search-input-wrapper input[type="text"],
.search-input-wrapper input {
  flex: 1 1 auto; /* Grows to fill space */
  border: none;
  outline: none;
  padding: 12px 15px;
  font-size: 16px;
  background: white;
  color: #333;
}

.search-input-wrapper input::placeholder {
  color: #999;
  font-style: italic;
}

.search-input-wrapper .search-icon {
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f8f9fa;
  border-right: 1px solid #e9ecef;
  font-size: 16px;
  color: #73af7e;
  order: 1;
  position: static;
  pointer-events: none;
}

.search-input-wrapper .clear-search,
.search-input-wrapper #clearComplianceSearch {
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f8f9fa;
  border-left: 1px solid #e9ecef;
  font-size: 14px;
  color: #dc3545;
  cursor: pointer;
  transition: background-color 0.2s;
  order: 3;
  padding: 0;
}

.search-input-wrapper .clear-search:hover,
.search-input-wrapper #clearComplianceSearch:hover {
  background: #e9ecef;
  color: #014d0b;
}

.search-input-wrapper:focus-within {
  border-color: #14410b;
  box-shadow: 0 0 0 3px rgba(115, 175, 126, 0.2);
}

.search-input-wrapper:focus-within .search-icon {
  background: #73af7e;
  color: white;
}

/* Mobile responsive */
@media (max-width: 480px) {
  .search-box {
    margin: 1rem 0;
    max-width: 100%;
  }
  .search-icon,
  .clear-search,
  .search-input-wrapper .search-icon,
  .search-input-wrapper .clear-search {
    flex: 0 0 35px;
    width: 35px;
    height: 35px;
    font-size: 14px;
  }
  .search-input-wrapper input,
  .search-box input {
    padding: 10px 12px;
    font-size: 14px;
  }
}

/* -------------------------
   Features Section
   -------------------------*/
.features-section {
  background: transparent;
  padding: 2rem 1rem;
  margin: 2rem 0;
  border-radius: 8px;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  background: rgba(255, 255, 255, 0.95); /* Semi-transparent white */
  color: #333;
}

.features-section h1 {
  color: #14410b;
  text-align: center;
  margin-bottom: 2rem;
}

.features-section ul {
  list-style: none;
  padding: 0;
  margin: 2rem 0;
}

.features-section li {
  padding: 0.75rem 0;
  border-bottom: 1px solid #e9ecef;
  color: #333;
  position: relative;
  padding-left: 2rem;
}

.features-section li:before {
  content: "?";
  position: absolute;
  left: 0;
  color: #73af7e;
  font-weight: bold;
  font-size: 1.2em;
}

.features-section li:last-child {
  border-bottom: none;
}

/* Recall table styling */
#recall-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 2rem;
  background: white;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

#recall-table th {
  background: #73af7e;
  color: white;
  padding: 12px;
  text-align: left;
  font-weight: bold;
}

#recall-table td {
  padding: 12px;
  border-bottom: 1px solid #e9ecef;
  color: #333;
}

#recall-table tr:hover {
  background: #f8f9fa;
}
/* This ensures older browsers still get a usable layout. lets you apply styles only if the browser supports a specific CSS feature—great for graceful degradation. */
@supports (display: grid) {
  .layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
}

@supports not (display: grid) {
  .layout {
    float: left;
    width: 50%;
  }
}
.test {
  display: flex;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2Fzc2V0cy9jc3Mvc3R5bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qRXZlcnkgcnVsZSB0aGF0IG5vdyBoYXJkLWNvZGVzIHN3YXBzIHRvIHRoaXMqL1xyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBOdXRyYUxhYmVsIEdsb2JhbCBTdHlsZXNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBBIGxpZ2h0d2VpZ2h0LCBEUlkgc3R5bGVzaGVldCB0aGF0IGNvbnNvbGlkYXRlcyBzaGFyZWQgcnVsZXMsXHJcbiAgIGNlbnRyYWxpc2VzIGNvbG91ciB0b2tlbnMsIGFuZCBiYWtlc+KAkWluIGRhcmvigJFtb2RlIHN1cHBvcnQuXHJcbiAgIENvbXBvbmVudOKAkXNwZWNpZmljIHJ1bGVzIChuYXZpZ2F0aW9uLCBmb290ZXIsIGV0Yy4pIG5vdyBsaXZlIGluXHJcbiAgIHRoZWlyIG93biBmaWxlcyDigJMga2VlcGluZyB0aGlzIG9uZSBmb2N1c2VkIG9uIGxheW91dCwgdHlwZSAmIGZvcm1zLlxyXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuYm9keSB7XHJcbiAgYm9yZGVyOiByZWQgMnB4IHNvbGlkO1xyXG59XHJcbm1haW4uY29udGFpbmVyIHtcclxuICBib3JkZXI6IHJnYig3MCwgMjM4LCAxNDApIDJweCBzb2xpZDtcclxufVxyXG4ucHJpY2luZy1jYXJkcyB7XHJcbiAgYm9yZGVyOiBibHVlIDJweCBzb2xpZDtcclxufVxyXG4uY29udGFpbmVyIHtcclxuICBib3JkZXI6IHB1cnBsZSAycHggc29saWQ7XHJcbn1cclxuXHJcbi8qIC0tLS0tLS0tLS0tLS0tXHJcbiAgIDEuICBEZXNpZ24gVG9rZW5zXHJcbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG46cm9vdCB7XHJcbiAgLyogQnJhbmQgY29sb3JzICovXHJcbiAgLS1ubC1ncmVlbi1kYXJrOiAjMTQ0MTBiOyAvKiBwcmltYXJ5ICovXHJcbiAgLS1ubC1ncmVlbi1saWdodDogIzczYWY3ZTsgLyogYWNjZW50ICAqL1xyXG4gIC0tbmwtd2hpdGU6ICNmZmZmZmY7XHJcbiAgLyogR3JleXNjYWxlIChmb3Igc3VidGxlIHRpbnRzL2xpbmVzKSAqL1xyXG4gIC0tZ3JleS0xMDA6ICNmNmY2ZjY7XHJcbiAgLS1ncmV5LTIwMDogI2UwZTBlMDtcclxuICAtLWdyZXktNzAwOiAjNGQ0ZDRkO1xyXG4gIC8qIFR5cG9ncmFwaHkgKi9cclxuICAtLWZvbnQtYmFzZTogXCJTZWdvZSBVSVwiLCBzeXN0ZW0tdWksIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gIC0tZnMtMTAwOiAwLjg3NXJlbTsgLyogMTRweCAqL1xyXG4gIC0tZnMtMjAwOiAxcmVtOyAvKiAxNnB4ICovXHJcbiAgLS1mcy0zMDA6IDEuMjVyZW07IC8qIDIwcHggKi9cclxuICAtLXJhZGl1cy1zbTogMC4yNXJlbTtcclxuICAtLXJhZGl1cy1tZDogMC41cmVtO1xyXG4gIC0tc2hhZG93LW1kOiAwIDAgMC43NXJlbSByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgLS1uYXZiYXItaGVpZ2h0OiAxMTBweDtcclxufVxyXG5cclxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xyXG4gIDpyb290IHtcclxuICAgIC0tbmwtZ3JlZW4tZGFyazogIzE0NDEwYjsgLyogZmxpcCBmb3IgZGFyayBiZyAqL1xyXG4gICAgLS1ubC1ncmVlbi1saWdodDogIzczYWY3ZTtcclxuICAgIC0tbmwtd2hpdGU6ICMxMjEyMTI7XHJcbiAgICAtLWdyZXktMTAwOiAjMWExYTFhO1xyXG4gICAgLS1ncmV5LTIwMDogIzIyMjtcclxuICAgIC0tZ3JleS03MDA6ICNjMmMyYzI7XHJcbiAgfVxyXG59XHJcblxyXG4vKiBGbGV4Ym94IENvbXBhdGliaWxpdHkgdG8gY292ZXIgYWxsIG1ham9yIHNlYXJjaCBlbmdpbmUgaW1wbGVtZW50YXRpb25zOiovXHJcbi5mb28ge1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94OyAvKiBPTEQgLSBTYWZhcmksIGlPUyAqL1xyXG4gIGRpc3BsYXk6IC1tb3otYm94OyAvKiBPTEQgLSBGaXJlZm94ICovXHJcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8qIElFMTAgICAgICAgICAgICAgKi9cclxuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7IC8qIE5ld2VyIFdlYktpdCAgICAgKi9cclxuICBkaXNwbGF5OiBmbGV4OyAvKiBTdGFuZGFyZCAgICAgICAgICovXHJcbiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbn1cclxuXHJcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgQ3VzdG9tZXIgU2VydmljZSBDaGF0IE1vZGFsXHJcbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4ub3Blbi1idXR0b24ge1xyXG4gIC8qIGZyb20gVzNTY2hvb2xzIG1vZGVsICovXHJcbiAgYmFja2dyb3VuZDogIzU1NTtcclxuICBjb2xvcjogI2ZmZjtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgYm90dG9tOiAyM3B4O1xyXG4gIHJpZ2h0OiAyOHB4O1xyXG4gIHBhZGRpbmc6IDE2cHggMjBweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuLmNoYXQtcG9wdXAge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogMDtcclxuICByaWdodDogMTVweDtcclxuICBib3JkZXI6IDNweCBzb2xpZCAjZjFmMWYxO1xyXG4gIHotaW5kZXg6IDk7XHJcbn1cclxuLmZvcm0tY29udGFpbmVyIHtcclxuICBtYXgtd2lkdGg6IDMwMHB4O1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgcGFkZGluZzogMTBweDtcclxufVxyXG4uZm9ybS1jb250YWluZXIgdGV4dGFyZWEge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHBhZGRpbmc6IDE1cHg7XHJcbiAgbWFyZ2luOiA1cHggMCAyMnB4IDA7XHJcbiAgYmFja2dyb3VuZDogI2YxZjFmMTtcclxufVxyXG4vKlxyXG4uYnRuIHtcclxuICBiYWNrZ3JvdW5kOiAjMDRhYTZkO1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIHBhZGRpbmc6IDE2cHggMjBweDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgb3BhY2l0eTogMC44O1xyXG59Ki9cclxuLmNhbmNlbCB7XHJcbiAgYmFja2dyb3VuZDogcmVkO1xyXG59XHJcblxyXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgIDIuwqAgQ1NTwqBSZXNldCAvIEJhc2VcclxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiosXHJcbio6OmJlZm9yZSxcclxuKjo6YWZ0ZXIge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbmh0bWwsXHJcbmJvZHkge1xyXG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xyXG4gIGhlaWdodDogMTAwJTsgLyogQ2hhbmdlZCBmcm9tIDEwMHZoIHRvIDEwMCUgKi9cclxuICBtaW4taGVpZ2h0OiAxMDB2aDsgLyogTkVXOiBFbnN1cmUgbWluaW11bSB2aWV3cG9ydCBoZWlnaHQgKi9cclxuICBsaW5lLWhlaWdodDogMS41OyAvKiBjdXN0b20gcmVzZXQgKi9cclxuICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IC8qIGN1c3RvbSByZXNldCAqL1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4vKiA9PT09PSBQUk9QRVIgRkxFWEJPWCBMQVlPVVQgRk9SIFNUSUNLWSBGT09URVIgPT09PT0gKi9cclxuLyogTGV0IC5mbGV4LWNvbnRhaW5lciBjb250cm9sIGxheW91dCAqL1xyXG4uZmxleC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBtaW4taGVpZ2h0OiAxMDB2aDsgLyogRW5zdXJlIGZ1bGwgdmlld3BvcnQgaGVpZ2h0ICovXHJcbiAgLyogUmVtb3ZlIGhlaWdodDogMTAwJTsgYW5kIHdpZHRoOiAxMDB2dzsgKi9cclxuICBoZWlnaHQ6IDEwMCU7IC8qIE5FVzogQWxsb3cgZ3Jvd3RoIGJleW9uZCB2aWV3cG9ydCAqL1xyXG4gIHdpZHRoOiAxMDB2dztcclxufVxyXG5cclxuYm9keSB7XHJcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtYmFzZSk7XHJcbiAgZm9udC1zaXplOiB2YXIoLS1mcy0xMDApO1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxNDQxMGIgMCUsICM3M2FmN2UgMTAwJSk7XHJcbiAgY29sb3I6IHdoaXRlOyAvKiBBZGQgYSB3aGl0ZSBvdmVybGF5IGZvciBsb2dvIHRyYW5zcGFyZW5jeSAqL1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgYWxpZ24tY29udGVudDogc3RyZXRjaDtcclxuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG4gIHotaW5kZXg6IDA7XHJcbn1cclxuXHJcbmJvZHk6OmJlZm9yZSB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgaW5zZXQ6IDA7XHJcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWFnZXMvbG9nb3MvTnV0cmFMYWJlbC1sb2dvLnN2Z1wiKTsgLyogU2V0IGJhY2tncm91bmQgaW1hZ2UgKi9cclxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMHB4O1xyXG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7XHJcbiAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDtcclxuICBvcGFjaXR5OiAwLjE1OyAvKiBBZGp1c3QgZm9yIG1vcmUvbGVzcyB0cmFuc3BhcmVuY3kgKi9cclxuICB6LWluZGV4OiAwO1xyXG59XHJcblxyXG4uY29udGFpbmVyIHtcclxuICBtYXgtd2lkdGg6IDEyMDBweDtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBiYWNrZ3JvdW5kOiAjZmZmOyAvKiBXaGl0ZSBiYWNrZ3JvdW5kIGZvciBjb250ZW50ICovXHJcbiAgcGFkZGluZy10b3A6IDA7IC8qIFJlbW92ZSB0b3AgcGFkZGluZyBpZiBub3QgbmVlZGVkICovXHJcbiAgZGlzcGxheTogYmxvY2s7IC8qIEZsZXhib3ggRmFsbGJhY2sgQ29tcGF0aWJpbGl0eSBhY3Jvc3MgYnJvd3NlcnMgKi9cclxufVxyXG5cclxubWFpbi5jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7IC8qIE5FVzogTWFrZSBtYWluIGEgZmxleCBjb250YWluZXIgKi9cclxuICBmbGV4OiAxIDAgYXV0bzsgLyogR3JvdyB0byBmaWxsIGF2YWlsYWJsZSBzcGFjZSAqL1xyXG4gIG1heC13aWR0aDogOTAwcHg7IC8qIE5hcnJvd2VkIGZyb20gMTQwMHB4ICovXHJcbiAgbWFyZ2luOiAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgbWFyZ2luLXRvcDogMDsgLyogUmVtb3ZlIGFueSB0b3AgbWFyZ2luIHRoYXQgbWlnaHQgYWRkIHNwYWNlICovXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgcGFkZGluZzogMDtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIHotaW5kZXg6IDE7XHJcbiAgbWluLWhlaWdodDogYXV0bztcclxuICBjb2xvcjogdmFyKC0tbmwtZ3JlZW4tZGFyayk7XHJcbn1cclxuLypGbGV4Ym94IGZhbGxiYWNrKi9cclxuQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSB7XHJcbiAgLmNvbnRhaW5lciB7XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNTBweCwgMWZyKSk7XHJcbiAgICBncmlkLWdhcDogMjBweDtcclxuICB9XHJcbn1cclxuQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSB7XHJcbiAgLmdhbGxlcnkge1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICB9XHJcbn1cclxuXHJcbmltZyxcclxuc3ZnIHtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vKiBDZW50ZXIgdGhlIGRlbW8gaW1hZ2UgKi9cclxuLmltZy1yZXNwb25zaXZlIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW4tbGVmdDogYXV0bztcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxuICAvKiBPcHRpb25hbDogYWRkIHNvbWUgc3BhY2luZyAqL1xyXG4gIG1hcmdpbi10b3A6IDEuNXJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XHJcbn1cclxuXHJcbi8qIEJsb2cgaW1hZ2VzOiBtYWtlIGFsbCBibG9nIGltYWdlcyByZXNwb25zaXZlIGFuZCBtYXggMTAwJSB3aWR0aCAqL1xyXG5cclxuLmVudHJ5LWZlYXR1cmVkLWltYWdlLXVybCBpbWcsXHJcbi5wb3N0LWNvbnRlbnQgaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luOiAwIGF1dG8gMWVtIGF1dG87XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDcpO1xyXG4gIGJhY2tncm91bmQ6ICNmNmY2ZjY7XHJcbn1cclxuXHJcbkFjY2Vzc2libGUgc2tpcOKAkWxpbmsgKi8gLnNraXAtbGluayB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogLTRyZW07XHJcbiAgbGVmdDogMXJlbTtcclxuICBwYWRkaW5nOiAwLjVlbSAxZW07XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tbmwtZ3JlZW4tZGFyayk7XHJcbiAgY29sb3I6IHZhcigtLW5sLXdoaXRlKTtcclxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbn1cclxuXHJcbi5za2lwLWxpbms6Zm9jdXMge1xyXG4gIHRvcDogMXJlbTtcclxufVxyXG5cclxuYTpmb2N1cyxcclxuYnV0dG9uOmZvY3VzLFxyXG5pbnB1dDpmb2N1cyxcclxuLmJ0bjpmb2N1cyB7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBvdXRsaW5lLW9mZnNldDogMnB4O1xyXG59XHJcblxyXG4vKiBVbmlmaWVkIEJ1dHRvbiBTdHlsZXMgKi9cclxuLmJ0bixcclxuLmxvZ2luLXRyaWdnZXIsXHJcbi5yZWdpc3Rlci10cmlnZ2VyLFxyXG5hLmJ0bixcclxuYS5sb2dpbi10cmlnZ2VyLFxyXG5hLnJlZ2lzdGVyLXRyaWdnZXIsXHJcbmJ1dHRvbi5idG4sXHJcbmJ1dHRvbi5sb2dpbi10cmlnZ2VyLFxyXG5idXR0b24ucmVnaXN0ZXItdHJpZ2dlciB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHBhZGRpbmc6IDAuNzVlbSAxLjVlbTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGJvcmRlci1jb2xvcjogI2I0ZjhjMDtcclxuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ubC1ncmVlbi1kYXJrKTtcclxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNTBkZWcsICMxNDQxMGIgMCUsICM3M2FmN2UgMTAwJSk7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5sLWdyZWVuLWRhcmspO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMjAwJSAyMDAlO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBmb250LWZhbWlseTogUmFsZXdheSwgdmFyKC0tZm9udC1iYXNlKSwgc2Fucy1zZXJpZjtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbiAwLjI1cyBlYXNlLW91dCwgYm94LXNoYWRvdyAwLjI1cyBlYXNlLW91dDtcclxuICBtaW4td2lkdGg6IDEyMHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBvdmVyZmxvdzogaGlkZGVuOyAvKkVuc3VyZXMgdGhlIHNoaW5lIHN0YXlzIGluc2lkZSB0aGUgYnV0dG9uICovXHJcbn1cclxuXHJcbi8qIGdsb3NzeSDigJxzaGluZeKAnSB0aGF0IHN3ZWVwcyBhY3Jvc3Mgb24gaG92ZXIgKi9cclxuLmJ0bjo6YmVmb3JlLFxyXG5hLmJ0bjo6YmVmb3JlLFxyXG4ubG9naW4tdHJpZ2dlcjo6YmVmb3JlLFxyXG5hLmxvZ2luLXRyaWdnZXI6OmJlZm9yZSxcclxuLnJlZ2lzdGVyLXRyaWdnZXI6OmJlZm9yZSxcclxuLnJlZ2lzdGVyLXRyaWdnZXI6aG92ZXI6OmJlZm9yZSxcclxuYS5sb2dpbi10cmlnZ2VyOmhvdmVyOjpiZWZvcmUsXHJcbi5idG46Zm9jdXMtdmlzaWJsZTo6YmVmb3JlLFxyXG5hLmJ0bjpmb2N1cy12aXNpYmxlOjpiZWZvcmUsXHJcbmEucmVnaXN0ZXItdHJpZ2dlcjo6YmVmb3JlLFxyXG4ucmVnaXN0ZXItdHJpZ2dlcjpmb2N1cy12aXNpYmxlOjpiZWZvcmUsXHJcbmEubG9naW4tdHJpZ2dlcjpmb2N1cy12aXNpYmxlOjpiZWZvcmUsXHJcbmEucmVnaXN0ZXItdHJpZ2dlcjpmb2N1cy12aXNpYmxlOjpiZWZvcmUsXHJcbi5mb3JtLWJveCAuYnRuOjpiZWZvcmUsXHJcbmJvZHkuZGFyay1tb2RlIC5idG46OmJlZm9yZSxcclxuYm9keS5kYXJrLW1vZGUgLmxvZ2luLXRyaWdnZXI6OmJlZm9yZSxcclxuYm9keS5kYXJrLW1vZGUgLnJlZ2lzdGVyLXRyaWdnZXI6OmJlZm9yZSxcclxuYm9keS5kYXJrLW1vZGUgYS5idG46OmJlZm9yZSxcclxuYm9keS5kYXJrLW1vZGUgYS5sb2dpbi10cmlnZ2VyOjpiZWZvcmUsXHJcbmJvZHkuZGFyay1tb2RlIGEucmVnaXN0ZXItdHJpZ2dlcjo6YmVmb3JlIHtcclxuICBjb250ZW50OiBcIlwiO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IC0xNTAlO1xyXG4gIGxlZnQ6IC00MCU7XHJcbiAgd2lkdGg6IDMwJTtcclxuICBoZWlnaHQ6IDIyMCU7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xyXG4gIHRyYW5zZm9ybTogcm90YXRlKDI1ZGVnKTtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuNnMgZWFzZS1vdXQsIHRvcCAwLjZzIGVhc2Utb3V0O1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG59XHJcblxyXG4vKiBIb3Zlci9mb2N1cyBzdHlsZXMgKi9cclxuLmJ0bjpob3ZlcixcclxuLmxvZ2luLXRyaWdnZXI6aG92ZXIsXHJcbi5yZWdpc3Rlci10cmlnZ2VyOmhvdmVyLFxyXG5hLmJ0bjpob3ZlcixcclxuYS5sb2dpbi10cmlnZ2VyOmhvdmVyLFxyXG5hLnJlZ2lzdGVyLXRyaWdnZXI6aG92ZXIsXHJcbmJ1dHRvbi5idG46aG92ZXIsXHJcbmJ1dHRvbi5sb2dpbi10cmlnZ2VyOmhvdmVyLFxyXG4uZm9ybS1ib3ggLmJ0bjpob3ZlcixcclxuYS5mb3JtLWJveCAuYnRuOmhvdmVyLFxyXG5idXR0b24ucmVnaXN0ZXItdHJpZ2dlcjpob3ZlcixcclxuLmZvcm0tYm94IC5idG46Zm9jdXMtdmlzaWJsZSxcclxuLmJ0bjpmb2N1cy12aXNpYmxlLFxyXG4ubG9naW4tdHJpZ2dlcjpmb2N1cy12aXNpYmxlLFxyXG4ucmVnaXN0ZXItdHJpZ2dlcjpmb2N1cy12aXNpYmxlIHtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ubC1ncmVlbi1kYXJrKTtcclxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDA7IC8qIHNsaWRlcyB0aGUgZ3JhZGllbnQgKi9cclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMyk7IC8qIHRpbnkgbGlmdCAqL1xyXG4gIGNvbG9yOiB2YXIoLS1ubC13aGl0ZSk7XHJcbiAgYm94LXNoYWRvdzogMCAwIDRweCAjOTdlNGE1LCAvKiBzb2Z0IGdsb3cgY29yZSAqLyAwIDAgMTBweCAjMjM4YTQ1O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi5idG46aG92ZXI6OmJlZm9yZSxcclxuLmJ0bjpmb2N1cy12aXNpYmxlOjpiZWZvcmUge1xyXG4gIGxlZnQ6IDE1MCU7XHJcbiAgdG9wOiA4MCU7XHJcbn1cclxuXHJcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgMi7CoCBUeXBvZ3JhcGh5XHJcbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5oMSxcclxuaDIsXHJcbmgzLFxyXG5oNCxcclxuaDUsXHJcbmg2LFxyXG50aXRsZSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBsaW5lLWhlaWdodDogMS4yO1xyXG4gIG1hcmdpbjogMXJlbSAwIDAuNzVlbSAwO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICBjb2xvcjogdmFyKC0tbmwtZ3JlZW4tZGFyaykgIWltcG9ydGFudDtcclxuICB0ZXh0LWRlY29yYXRpb246IGJvbGQ7XHJcbiAgdHJhbnNpdGlvbjogMTAwbXM7XHJcbiAgZm9udC1zaXplOiBtZWRpdW07XHJcbn1cclxuXHJcbmgxIHtcclxuICBmb250LXNpemU6IGNsYW1wKDJyZW0sIDV2dysxcmVtLCAzcmVtKTtcclxuICBjb2xvcjogI2ZmZjtcclxuICBmb250LWZhbWlseTogXCJJVENFcmFzU3RkLUJvbGRcIjtcclxuICBmb250LXNpemU6IGxhcmdlO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogYm9sZDtcclxuICAvKiBSZWR1Y2UgdG9wIG1hcmdpbiB0byBzaHJpbmsgc3BhY2UgYWJvdmUgaGVhZGluZyAqL1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTsgLyogd2FzIDJyZW0gaW4gaDEsIG5vdyBtdWNoIHNtYWxsZXIgKi9cclxufVxyXG5cclxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIDMuICBGb3Jtc1xyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5mb3JtIGxhYmVsIHtcclxuICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgbWFyZ2luLWxlZnQ6IDA7XHJcbn1cclxuXHJcbmZvcm0gaW5wdXQsXHJcbmZvcm0gdGV4dGFyZWEsXHJcbmZvcm0gc2VsZWN0IHtcclxuICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZm9ybS1pbm5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHBhZGRpbmc6IDJyZW07XHJcbiAgbWF4LXdpZHRoOiA1MDBweDtcclxuICBtYXJnaW46IGF1dG87XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnJlbSk7IC8qIFBvcyB2YWx1ZSBzaGlmdHMgcmlnaHQgKi9cclxufVxyXG5cclxuI3JlZ0Zvcm0ge1xyXG4gIG1hcmdpbjogMTAwcHggYXV0bztcclxuICBwYWRkaW5nOiA0MHB4O1xyXG4gIHdpZHRoOiA3MCU7XHJcbiAgbWluLXdpZHRoOiAzMDBweDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcblxyXG4vKiBpbnB1dFt0eXBlPVwic3VibWl0XCJdLCovXHJcbmlucHV0LFxyXG50ZXh0YXJlYSxcclxuc2VsZWN0LFxyXG5pbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG5pbnB1dFt0eXBlPVwiZW1haWxcIl0sXHJcbmlucHV0W3R5cGU9XCJ0ZWxcIl0sXHJcbmZvcm0gaW5wdXRbdHlwZT1cInRleHRcIl0sXHJcbmZvcm0gaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdIHtcclxuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ubC1ncmVlbi1kYXJrKSAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmc6IDhweDtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDU1MHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDhweDsgLyogVGhpcyBzZXRzIHRoZSByb3VuZGVkIGNvcm5lcnMqL1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblxyXG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtMTAwKTtcclxuICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgY29sb3I6ICMyMjI7XHJcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gIHBhZGRpbmctcmlnaHQ6IDIuNXJlbTtcclxufVxyXG5cclxuZm9ybSBsYWJlbCxcclxuZm9ybSAucGFzc3dvcmQtZmllbGQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuNWVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICB0YWItc2l6ZTogNDtcclxuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgbWluLXdpZHRoOiA5MHB4O1xyXG59XHJcblxyXG4uZm9ybS1yZW1lbWJlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMC41cmVtO1xyXG4gIG1hcmdpbjogMXJlbSAwO1xyXG59XHJcblxyXG4vKlNpbXBsZSBmb3Jt4oCRZXJyb3Igc3RhdGUgKi9cclxuLmludmFsaWQge1xyXG4gIGJhY2tncm91bmQ6ICNmZmVjZWM7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZTQ0ZDRkO1xyXG59XHJcblxyXG4vKiBTaW1wbGUgZm9ybeKAkXN1Y2Nlc3Mgc3RhdGUgKi9cclxuLnZhbGlkIHtcclxuICBiYWNrZ3JvdW5kOiAjZTZmZmVjO1xyXG4gIGJvcmRlci1jb2xvcjogIzRjYWY1MDtcclxufVxyXG5cclxuLmxvZ2luLXJvdyBidXR0b25bdHlwZT1cInN1Ym1pdFwiXSxcclxuLm1vZGFsLWNvbnRlbnQgLmJ0blt0eXBlPVwic3VibWl0XCJdLFxyXG4uZm9ybS1ib3ggLmJ0blt0eXBlPVwic3VibWl0XCJdIHtcclxuICB3aWR0aDogYXV0bztcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW46IDEuNWVtIGF1dG8gMCBhdXRvOyAvKmNlbnRlciB0aGUgYnV0dG9uICovXHJcbiAgLyp0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnJlbSk7ICBQb3MgdmFsdWUgc2hpZnRzIHJpZ2h0ICovXHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICBwYWRkaW5nOiAwLjc1ZW0gMmVtO1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLW5sLWdyZWVuLWRhcmspO1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM3M2FmN2UsICMxNDQxMGIpO1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG59XHJcblxyXG4vKiBSZWdpc3RyYXRpb24gZm9ybSBuYXZpZ2F0aW9uIGJ1dHRvbnMgKi9cclxuLmZvcm0tbmF2aWdhdGlvbiAuYnRuIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTBweDtcclxufVxyXG5cclxuLmZvcm0tbmF2aWdhdGlvbiAuYnRuLnZpc2libGUge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLyogU2hvdyB3aGVuIG5lZWRlZCAqL1xyXG59XHJcblxyXG4uc3VibWl0IC5idG4ge1xyXG4gIGRpc3BsYXk6IG5vbmU7IC8qIERlZmF1bHQgaGlkZGVuICovXHJcbn1cclxuXHJcbi5zdWJtaXQgLmJ0bi52aXNpYmxlIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIFNob3cgd2hlbiBuZWVkZWQgKi9cclxufVxyXG5cclxuLyogV2l6YXJkIHN0ZXAgY2lyY2xlcyAqL1xyXG4uc3RlcCB7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIG1hcmdpbjogMCA0cHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JiYmJiYjtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIG9wYWNpdHk6IDAuNTtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MsIG9wYWNpdHkgMC4zcztcclxufVxyXG4uc3RlcC5hY3RpdmUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMTRkMGI7XHJcbiAgb3BhY2l0eTogMTtcclxufVxyXG5cclxuLnRhYiB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmNvbXBhbnktd2Vic2l0ZS1yb3cge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDEuNWVtO1xyXG59XHJcblxyXG4ucXItcHJldmlldyB7XHJcbiAgbWluLXdpZHRoOiAxMDBweDtcclxuICBtaW4taGVpZ2h0OiAxMDBweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBib3JkZXI6IDEuNXB4IHNvbGlkICMwMTRkMGI7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gIHBhZGRpbmc6IDAuNWVtO1xyXG4gIG1hcmdpbi1sZWZ0OiAxZW07XHJcbn1cclxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgVGFiZWxzXHJcbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4cmVtKSB7XHJcbiAgdGFibGUge1xyXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luOiAxZW0gYXV0bztcclxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtMTAwKTtcclxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJhc2UpO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ3JleS0xMDApO1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gIH1cclxuICB0aCxcclxuICB0ZCB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xyXG4gICAgcGFkZGluZzogMC41cmVtO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICB9XHJcbiAgdGgge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmNDtcclxuICB9XHJcbiAgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XHJcbiAgfVxyXG59XHJcblxyXG4jY29tcGxpYW5jZVJlc3VsdHMgdWwge1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgcGFkZGluZy1sZWZ0OiAwO1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuI2NvbXBsaWFuY2VSZXN1bHRzIGxpIHtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICBjb2xvcjogIzAxNGQwYjtcclxufVxyXG5cclxuI2NvbXBsaWFuY2VSZXN1bHRzIGEge1xyXG4gIGNvbG9yOiAjMDE0ZDBiO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gIGZvbnQtc2l6ZTogMWVtO1xyXG59XHJcblxyXG4uZmRhLXJlc3VsdHMtdGFibGUge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcbiAgbWFyZ2luLXRvcDogMWVtO1xyXG4gIGNvbG9yOiAjMDAwO1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbn1cclxuXHJcbi5mZGEtcmVzdWx0cy10YWJsZSB0aCxcclxuLmZkYS1yZXN1bHRzLXRhYmxlIHRkIHtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xyXG4gIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbn1cclxuXHJcbi5mZGEtcmVzdWx0cy10YWJsZSB0aCB7XHJcbiAgYmFja2dyb3VuZDogI2Y0ZjRmNDtcclxufVxyXG5cclxuLmZkYS1yZXN1bHRzLXRhYmxlIHRyOm50aC1jaGlsZChldmVuKSB7XHJcbiAgYmFja2dyb3VuZDogI2ZhZmFmYTtcclxufVxyXG5cclxuLmZkYS1yZXN1bHRzLXRhYmxlIGEge1xyXG4gIGNvbG9yOiAjMDE0ZDBiO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG59XHJcblxyXG4vKkZBUSovXHJcbiNmYXFMaXN0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICB3aWR0aDogMTAwJTtcclxuICBwYWRkaW5nOiAyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gIG1hcmdpbjogMmVtIGF1dG87XHJcbiAgbWF4LXdpZHRoOiA4MDBweDtcclxuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1iYXNlKTtcclxuICBmb250LXNpemU6IHZhcigtLWZzLTEwMCk7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMjtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGNvbG9yOiAjMjIyO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5sLWdyZWVuLWxpZ2h0KTtcclxufVxyXG5cclxuLmZhcS1pdGVtIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtd2lkdGg6IDYwMHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuLmZhcS1xdWVzdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICB3aWR0aDogMTAwJTtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgZm9udC1zaXplOiAxLjFlbTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBjb2xvcjogIzIyMjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgcGFkZGluZzogMC43NWVtIDA7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG59XHJcblxyXG4uZmFxLWFycm93IHtcclxuICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7XHJcbn1cclxuXHJcbi5mYXEtcXVlc3Rpb25bYXJpYS1leHBhbmRlZD1cInRydWVcIl0gLmZhcS1hcnJvdyB7XHJcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcclxufVxyXG5cclxuLmZhcS1hbnN3ZXIge1xyXG4gIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICM3M2FmN2U7XHJcbiAgY29sb3I6ICMyMjI7XHJcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi8qIC0tLS0tLS0tLS0tLS0tLS1cclxuICAgICBGb290ZXJcclxuICAgLS0tLS0tLS0tLS0tLS0tLSovXHJcbi5mb290ZXIsXHJcbi5jdXN0b20tZm9vdGVyLWdyaWQge1xyXG4gIGZsZXg6IDAgMCBhdXRvOyAvKkRvbid0IGdyb3cgb3Igc2hyaW5rICovXHJcbiAgbWFyZ2luLXRvcDogYXV0bzsgLypQdXNoIHRvIGJvdHRvbSBpZiBjb250ZW50IGlzIHNob3J0ICovXHJcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyAvKiBSZW1vdmUgYW55IGJvdHRvbSBtYXJnaW4gKi9cclxufVxyXG5cclxuLmZvb3RlciB7XHJcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgLyogUmVtb3ZlIGFueSBsZWZ0IG1hcmdpbiAqL1xyXG4gIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBBZGQgbGVmdCBwYWRkaW5nIGZvciBmb290ZXIgY29udGVudCAqL1xyXG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgLyogUmVtb3ZlIGFueSBib3R0b20gbWFyZ2luICovXHJcbn1cclxuXHJcbi5jdXN0b20tZm9vdGVyLWdyaWQge1xyXG4gIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50O1xyXG4gIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xyXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gMWZyO1xyXG4gIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XHJcbiAgcGFkZGluZzogMTBweCAzMHB4ICFpbXBvcnRhbnQ7XHJcbiAgbWluLWhlaWdodDogMTEwcHggIWltcG9ydGFudDtcclxuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM3M2FmN2UsICMxNDQxMGIpO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcclxuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IC8qIFJlbW92ZSBhbnkgYm90dG9tIG1hcmdpbiAqL1xyXG59XHJcblxyXG4vKiBGb290ZXIgVGV4dCovXHJcbi5mb290ZXItdGV4dCB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGNvbG9yOiAjZjlmOWY5O1xyXG4gIG9yZGVyOiAyO1xyXG4gIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMXJlbSk7IC8qIE5lZ2F0aXZlIHZhbHVlIHNoaWZ0cyBsZWZ0Ki9cclxuICBtaW4td2lkdGg6IDIwMHB4OyAvKiBQcmV2ZW50IGNvbGxhcHNlICovXHJcbiAgbWFyZ2luOiAwIDFyZW07IC8qIEFkZCBzcGFjaW5nIGZyb20gZWRnZXMgKi9cclxufVxyXG5cclxuLmZvb3Rlci1hY3Rpb25zIHtcclxuICBmbGV4OiAxIDEgMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG9yZGVyOiAzICFpbXBvcnRhbnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogRml4ZWQgbG9nbyBzaXppbmcgZm9yIG5hdmJhciBhbmQgZm9vdGVyICovXHJcbi5mb290ZXItbG9nbyBpbWcsXHJcbi5uYXZiYXItbG9nbyBpbWcsXHJcbiNOdXRyYUxhYmVsTG9nbyBpbWcge1xyXG4gIHdpZHRoOiAxMDBweCAhaW1wb3J0YW50O1xyXG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xyXG4gIG1heC13aWR0aDogMTAwcHggIWltcG9ydGFudDtcclxuICBtaW4td2lkdGg6IDgwcHggIWltcG9ydGFudDtcclxuICBvYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnQ7XHJcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogTmF2YmFyIGxvZ28gY29udGFpbmVyICovXHJcbi5uYXZiYXItbG9nbyB7XHJcbiAgZmxleDogMCAxIGF1dG8gIWltcG9ydGFudDtcclxuICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OyAvKiBSZW1vdmUgYW55IGNvbmZsaWN0aW5nIG1hcmdpbiAqL1xyXG4gIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyAvKiBSZW1vdmUgYW55IGNvbmZsaWN0aW5nIG1hcmdpbiAqL1xyXG59XHJcblxyXG4vKiBGb290ZXIgbG9nbyBjb250YWluZXIgKi9cclxuLmZvb3Rlci1sb2dvIHtcclxuICBmbGV4OiAwIDAgYXV0byAhaW1wb3J0YW50O1xyXG4gIG9yZGVyOiAxICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIFByZXZlbnQgZmxleGJveCBmcm9tIHNocmlua2luZyB0aGUgbG9nbyBjb250YWluZXIqL1xyXG4ubmF2YmFyLWxvZ28sXHJcbi5mb290ZXItbG9nbyB7XHJcbiAgd2lkdGg6IDEwMHB4ICFpbXBvcnRhbnQ7XHJcbiAgbWluLXdpZHRoOiA4MHB4OyAvKiBQcmV2ZW50cyBzaHJpbmtpbmcgKi9cclxuICBwYWRkaW5nLWxlZnQ6IDEwcHggIWltcG9ydGFudDsgLyogTW92ZSBwYWRkaW5nIHRvIGxvZ28gZWxlbWVudCAqL1xyXG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XHJcbiAgcGFkZGluZy1sZWZ0OiAxMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuLmZvb3Rlci1sb2dvIHtcclxuICBmbGV4OiAwIDAgYXV0byAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAuY3VzdG9tLWZvb3Rlci1ncmlkIHtcclxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAhaW1wb3J0YW50O1xyXG4gICAgbWluLWhlaWdodDogMTIwcHggIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5mb290ZXItdGV4dCB7XHJcbiAgICBmb250LXNpemU6IDExcHggIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5mb290ZXItbG9nbyBpbWcsXHJcbiAgLm5hdmJhci1sb2dvIGltZyxcclxuICAjTnV0cmFMYWJlbExvZ28gaW1nIHtcclxuICAgIHdpZHRoOiA4MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICBtaW4td2lkdGg6IDYwcHggIWltcG9ydGFudDtcclxuICAgIG1heC13aWR0aDogODBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuICAubmF2YmFyLWxvZ28sXHJcbiAgLmZvb3Rlci1sb2dvIHtcclxuICAgIHdpZHRoOiA4MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHggIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi8qIEJyZWFkY3J1bWJzICovXHJcbm5hdlthcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiXSB7XHJcbiAgZmxleDogMCAwIGF1dG87IC8qIERvbid0IGdyb3cgb3Igc2hyaW5rICovXHJcbiAgbWF4LXdpZHRoOiA5NXZ3O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHBvc2l0aW9uOiBzdGlja3k7XHJcbn1cclxuLmJyZWFkY3J1bWIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgcGFkZGluZzogMC4zZW07XHJcbiAgYmFja2dyb3VuZDogI2Y2ZjZmNjtcclxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIGdhcDogMC43ZW07XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyAvKiBMZWZ0IGp1c3RpZnkgYnJlYWRjcnVtYnMgKi9cclxuICB0ZXh0LWFsaWduOiBsZWZ0OyAvKiBFbnN1cmUgdGV4dCBpcyBsZWZ0LWFsaWduZWQgKi9cclxuICBtYXJnaW4tbGVmdDogMDsgLyogQWxpZ24gdG8gbGVmdCBvZiB2aWV3cG9ydCAqL1xyXG4gIG1hcmdpbi1yaWdodDogYXV0bzsgLyogUHJldmVudCBjZW50ZXJpbmcgKi9cclxuICB3aWR0aDogYXV0bzsgLyogUmVtb3ZlIGFueSBtYXgtd2lkdGggY29uc3RyYWludHMgKi9cclxufVxyXG4uYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTpiZWZvcmUge1xyXG4gIGNvbnRlbnQ6IFwiPlwiO1xyXG4gIG1hcmdpbjogMCAwLjVlbTtcclxuICBjb2xvcjogYXIoLS1ncmV5LTIwMCwgI2UwZTBlMCk7XHJcbn1cclxuLmJyZWFkY3J1bWItaXRlbSxcclxuLmJyZWFkY3J1bWItaXRlbSBhIHtcclxuICBjb2xvcjogdmFyKC0tZ3JleS0yMDAsICNlMGUwZTApO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbn1cclxuLmJyZWFkY3J1bWItaXRlbS5hY3RpdmUge1xyXG4gIGNvbG9yOiB2YXIoLS1ncmV5LTcwMCwgIzRkNGQ0ZCk7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbn1cclxuXHJcbi5icmVhZGNydW1iLWl0ZW0gYTpob3ZlciB7XHJcbiAgY29sb3I6ICM4ZWYzYjM7IC8qSG92ZXIgY29sb3IgKi9cclxufVxyXG5cclxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICBQcmljaW5nXHJcbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyogPT09PT0gUFJJQ0lORyBTRUNUSU9OIFNUQU5EQVJESVpBVElPTiA9PT09PSAqL1xyXG4ucHJpY2luZy1zZWN0aW9uIHtcclxuICBtYXgtd2lkdGg6IDE0MDBweCAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgcGFkZGluZzogM3JlbSAxcmVtICFpbXBvcnRhbnQ7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5wcmljaW5nLXNlY3Rpb24gaDEsXHJcbi5wcmljaW5nLXNlY3Rpb24gaDIge1xyXG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnByaWNpbmctc2VjdGlvbiBwIHtcclxuICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiA9PT09PSBVTklGSUVEIFBSSUNJTkcgR1JJRCAtIDMgQ0FSRFMgQUNST1NTID09PT09ICovXHJcbi5wcmljaW5nLWNhcmRzLFxyXG4ucHJpY2luZyB7XHJcbiAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xyXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikgIWltcG9ydGFudDtcclxuICBnYXA6IDJyZW0gIWltcG9ydGFudDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7XHJcbiAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDtcclxuICBtYXJnaW46IDJyZW0gYXV0byAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmc6IDAgMXJlbSAhaW1wb3J0YW50O1xyXG59XHJcbi8qID09PT09IFVOSUZJRUQgQ0FSRCBTVFlMSU5HID09PT09ICovXHJcbi5wcmljaW5nLWNhcmRzIC5wcmljaW5nLWNhcmQsXHJcbi5wcmljaW5nIC5jYXJkIHtcclxuICBjb2xvcjogIzMzMyAhaW1wb3J0YW50O1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLW5sLWdyZWVuLWxpZ2h0KSAhaW1wb3J0YW50O1xyXG4gIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDtcclxuICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC4xKSAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmc6IDIuNXJlbSAycmVtICFpbXBvcnRhbnQ7XHJcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAhaW1wb3J0YW50O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xyXG4gIG1pbi1oZWlnaHQ6IDUwMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qID09PT09IEZFQVRVUkVEIENBUkQgU1RZTElORyA9PT09PSAqL1xyXG4ucHJpY2luZy1jYXJkcyAucHJpY2luZy1jYXJkLmZlYXR1cmVkLFxyXG4ucHJpY2luZyAuY2FyZC5mZWF0dXJlZCB7XHJcbiAgYm9yZGVyLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuICBib3JkZXItd2lkdGg6IDNweCAhaW1wb3J0YW50O1xyXG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSkgIWltcG9ydGFudDtcclxuICBnYXA6IDAgIWltcG9ydGFudDtcclxuICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDtcclxuICBtYXJnaW4tdG9wOiBhdXRvOyAvKiBQdXNoIHRvIGJvdHRvbSBpZiBjb250ZW50IGlzIHNob3J0ICovXHJcbiAgcGFkZGluZzogMjBweCAxNXB4ICFpbXBvcnRhbnQ7XHJcbiAgbWluLWhlaWdodDogMTQwcHggIWltcG9ydGFudDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpICFpbXBvcnRhbnQ7XHJcbiAgYm94LXNoYWRvdzogMCAxMnB4IDMycHggcmdiYSgyMCwgNjUsIDExLCAwLjIpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5wcmljaW5nLWNhcmRzIC5wcmljaW5nLWNhcmQuZmVhdHVyZWQ6OmJlZm9yZSxcclxuLnByaWNpbmcgLmNhcmQuZmVhdHVyZWQ6OmJlZm9yZSB7XHJcbiAgY29udGVudDogXCJNT1NUIFBPUFVMQVJcIiAhaW1wb3J0YW50O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xyXG4gIHRvcDogLTEycHggIWltcG9ydGFudDtcclxuICBsZWZ0OiA1MCUgIWltcG9ydGFudDtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgIWltcG9ydGFudDtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ubC1ncmVlbi1kYXJrKSAhaW1wb3J0YW50O1xyXG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmc6IDZweCAyMHB4ICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xyXG4gIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDFweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiA9PT09PSBDQVJEIEhPVkVSIEVGRkVDVFMgPT09PT0gKi9cclxuLnByaWNpbmctY2FyZHMgLnByaWNpbmctY2FyZDpob3ZlcixcclxuLnByaWNpbmcgLmNhcmQ6aG92ZXIge1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KSBzY2FsZSgxLjAyKSAhaW1wb3J0YW50O1xyXG4gIGJveC1zaGFkb3c6IDAgMTZweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4xNSkgIWltcG9ydGFudDtcclxuICBib3JkZXItY29sb3I6IHZhcigtLW5sLWdyZWVuLWRhcmspICFpbXBvcnRhbnQ7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpIHNjYWxlKDEuMDQpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qID09PT09IFBMQU4gTkFNRVMgPT09PT0gKi9cclxuLnByaWNpbmctY2FyZHMgLnBsYW4tbmFtZSxcclxuLnByaWNpbmcgLmNhcmQgaDMge1xyXG4gIGZvbnQtc2l6ZTogMS44cmVtICFpbXBvcnRhbnQ7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcclxuICBjb2xvcjogdmFyKC0tbmwtZ3JlZW4tZGFyaykgIWltcG9ydGFudDtcclxuICBtYXJnaW46IDAgMCAxcmVtIDAgIWltcG9ydGFudDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogPT09PT0gUFJJQ0lORyBESVNQTEFZID09PT09ICovXHJcbi5wcmljaW5nLWNhcmRzIC5wbGFuLXByaWNlLFxyXG4ucHJpY2luZyAuY2FyZCAucHJpY2Uge1xyXG4gIGZvbnQtc2l6ZTogMi41cmVtICFpbXBvcnRhbnQ7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDtcclxuICBjb2xvcjogdmFyKC0tbmwtZ3JlZW4tZGFyaykgIWltcG9ydGFudDtcclxuICBtYXJnaW46IDAgMCAxcmVtIDAgIWltcG9ydGFudDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnByaWNpbmctY2FyZHMgLnBsYW4tcHJpY2Ugc3BhbixcclxuLnByaWNpbmcgLmNhcmQgLnByaWNlIHNwYW4ge1xyXG4gIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50O1xyXG4gIGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiA9PT09PSBQTEFOIERFU0NSSVBUSU9OUyA9PT09PSAqL1xyXG4ucHJpY2luZy1jYXJkcyAucGxhbi1kZXNjcmlwdGlvbixcclxuLnByaWNpbmcgLmNhcmQgcCB7XHJcbiAgY29sb3I6ICM2NjYgIWltcG9ydGFudDtcclxuICBtYXJnaW46IDAgMCAycmVtIDAgIWltcG9ydGFudDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDtcclxuICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qID09PT09IEZFQVRVUkVTIExJU1RTID09PT09ICovXHJcbi5wcmljaW5nLWNhcmRzIC5wbGFuLWZlYXR1cmVzLFxyXG4ucHJpY2luZyAuY2FyZCAuZmVhdHVyZXMge1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcclxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgbWFyZ2luOiAwIDAgMnJlbSAwICFpbXBvcnRhbnQ7XHJcbiAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5wcmljaW5nLWNhcmRzIC5wbGFuLWZlYXR1cmVzIGxpLFxyXG4ucHJpY2luZyAuY2FyZCAuZmVhdHVyZXMgbGkge1xyXG4gIHBhZGRpbmc6IDAuNXJlbSAwICFpbXBvcnRhbnQ7XHJcbiAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XHJcbiAgZm9udC1zaXplOiAwLjk1cmVtICFpbXBvcnRhbnQ7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiA9PT09PSBDQUxMLVRPLUFDVElPTiBCVVRUT05TID09PT09ICovXHJcbi5wcmljaW5nLWNhcmRzIC5wbGFuLWN0YSxcclxuLnByaWNpbmcgLmNhcmQgLnBsYW4tY3RhIHtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ubC1ncmVlbi1kYXJrKSAhaW1wb3J0YW50O1xyXG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLW5sLWdyZWVuLWRhcmspICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4ICFpbXBvcnRhbnQ7XHJcbiAgcGFkZGluZzogMXJlbSAycmVtICFpbXBvcnRhbnQ7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xyXG4gIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgIWltcG9ydGFudDtcclxuICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgbWluLXdpZHRoOiAxNDBweCAhaW1wb3J0YW50O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uYmxvZy1jYXJkIHAsXHJcbi5ibG9nLWNhcmQgLnBvc3QtY29udGVudCB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xyXG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XHJcbn1cclxuXHJcbi5ibG9nLWNhcmQgLnBvc3QtY29udGVudCB7XHJcbiAgZm9udC1zaXplOiAxZW07XHJcbiAgY29sb3I6ICMyMjI7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcclxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XHJcbn1cclxuXHJcbi8qIFJlc3BvbnNpdmU6IDIgY29sdW1ucyBvbiB0YWJsZXRzLCAxIG9uIG1vYmlsZSAqL1xyXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcclxuICAuYmxvZy1ncmlkLFxyXG4gIC5wcmljaW5nIHtcclxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikgIWltcG9ydGFudDtcclxuICAgIGdhcDogMS41cmVtICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIC5wcmljaW5nLWNhcmRzIC5wcmljaW5nLWNhcmQsXHJcbiAgLnByaWNpbmcgLmNhcmQge1xyXG4gICAgcGFkZGluZzogMnJlbSAxLjVyZW0gIWltcG9ydGFudDtcclxuICAgIG1pbi1oZWlnaHQ6IDQ1MHB4ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIC5wcmljaW5nLWNhcmRzIC5wcmljaW5nLWNhcmQuZmVhdHVyZWQsXHJcbiAgLnByaWNpbmcgLmNhcmQuZmVhdHVyZWQge1xyXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKSAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLnByaWNpbmctY2FyZHMgLnByaWNpbmctY2FyZC5mZWF0dXJlZDpob3ZlcixcclxuICAucHJpY2luZyAuY2FyZC5mZWF0dXJlZDpob3ZlciB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgc2NhbGUoMS4wNCkgIWltcG9ydGFudDtcclxuICB9XHJcbiAgLnByaWNpbmctc2VjdGlvbiB7XHJcbiAgICBwYWRkaW5nOiAycmVtIDAuNXJlbSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XHJcbiAgLmJsb2ctY2FyZCxcclxuICAucHJpY2luZy1jYXJkcyxcclxuICAucHJpY2luZyB7XHJcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50O1xyXG4gICAgZ2FwOiAxcmVtICFpbXBvcnRhbnQ7XHJcbiAgICBwYWRkaW5nOiAwIDAuNXJlbSAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLnByaWNpbmctY2FyZHMgLnByaWNpbmctY2FyZCxcclxuICAucHJpY2luZyAuY2FyZCB7XHJcbiAgICBwYWRkaW5nOiAycmVtIDEuNXJlbSAhaW1wb3J0YW50O1xyXG4gICAgbWluLWhlaWdodDogNDUwcHggIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5wcmljaW5nLWNhcmRzIC5wcmljaW5nLWNhcmQuZmVhdHVyZWQsXHJcbiAgLnByaWNpbmcgLmNhcmQuZmVhdHVyZWQge1xyXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKSAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLnByaWNpbmctY2FyZHMgLnByaWNpbmctY2FyZC5mZWF0dXJlZDpob3ZlcixcclxuICAucHJpY2luZyAuY2FyZC5mZWF0dXJlZDpob3ZlciB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgc2NhbGUoMS4wMikgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5wcmljaW5nLXNlY3Rpb24ge1xyXG4gICAgcGFkZGluZzogMnJlbSAwLjVyZW0gIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi8qID09PT09IENVU1RPTSBGT05UOiBJVENFcmFzU3RkLUJvbGQgPT09PT0gKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IFwiSVRDRXJhc1N0ZC1Cb2xkXCI7XHJcbiAgc3JjOiB1cmwoXCIvYXNzZXRzL2ZvbnRzL0lUQ0VyYXNTdGQtQm9sZC5vdGZcIikgZm9ybWF0KFwib3BlbnR5cGVcIik7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxufVxyXG5cclxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICBTZWFyY2ggQm94IExheW91dFxyXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuLnNlYXJjaC1ib3gge1xyXG4gIG1hcmdpbjogMnJlbSAwO1xyXG4gIG1heC13aWR0aDogNjAwcHg7XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuXHJcbi5zZWFyY2gtYm94IGxhYmVsIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgY29sb3I6ICMxNDQxMGI7XHJcbn1cclxuXHJcbi5zZWFyY2gtYm94IGlucHV0IHtcclxuICBwYWRkaW5nLWxlZnQ6IDJlbTsgLyogc3BhY2UgZm9yIHRoZSBpY29uICovXHJcbiAgcGFkZGluZy1yaWdodDogMmVtOyAvKiBzcGFjZSBmb3IgY2xlYXIgWCAqL1xyXG4gIGhlaWdodDogMi41ZW07XHJcbiAgbGluZS1oZWlnaHQ6IDIuNWVtO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiA0MDBweDtcclxuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ubC1ncmVlbi1kYXJrKTtcclxuICBib3JkZXItcmFkaXVzOiA4cHg7IC8qIFRoaXMgc2V0cyB0aGUgcm91bmRlZCBjb3JuZXJzICovXHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBmb250LXNpemU6IHZhcigtLWZzLTEwMCk7XHJcbiAgY29sb3I6ICMyMjI7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbn1cclxuXHJcbi5zZWFyY2gtYm94IGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJvcmRlci1jb2xvcjogIzAxNGQwYjtcclxuICBib3gtc2hhZG93OiAwIDAgNXB4IHJnYmEoMSwgNzcsIDExLCAwLjUpO1xyXG59XHJcblxyXG4uc2VhcmNoLWJveCAjY2xlYXJTZWFyY2gsXHJcbi5mYXEtc2VhcmNoLWJveCAjY2xlYXJTZWFyY2gsXHJcbi5jYXNlLXN0dWRpZXMtc2VhcmNoLWJveCAjY2xlYXJTZWFyY2gge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICByaWdodDogMC41ZW07XHJcbiAgdG9wOiA1MCU7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBmb250LXNpemU6IDEuMmVtO1xyXG4gIGNvbG9yOiAjODg4O1xyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgei1pbmRleDogMjtcclxuICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzO1xyXG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG59XHJcblxyXG4uc2VhcmNoLWJveCAjY2xlYXJTZWFyY2g6aG92ZXIsXHJcbi5mYXEtc2VhcmNoLWJveCAjY2xlYXJTZWFyY2g6aG92ZXIsXHJcbi5jYXNlLXN0dWRpZXMtc2VhcmNoLWJveCAjY2xlYXJTZWFyY2g6aG92ZXIge1xyXG4gIGNvbG9yOiAjMTQ0MTBiO1xyXG59XHJcblxyXG4uc2VhcmNoLWljb24ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiAwLjVlbTtcclxuICB0b3A6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgY29sb3I6ICMwMDA7XHJcbiAgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSkgYnJpZ2h0bmVzcygyKTtcclxuICBmb250LXNpemU6IDEuMWVtO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG59XHJcblxyXG4vKiBVbmlmaWVkIHNlYXJjaCBpbnB1dCB3cmFwcGVyIGZvciBvdGhlciBsYXlvdXRzICovXHJcbi5zZWFyY2gtaW5wdXQtd3JhcHBlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBib3JkZXI6IDJweCBzb2xpZCAjNzNhZjdlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgbWF4LXdpZHRoOiA0MDBweDtcclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dC13cmFwcGVyIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxyXG4uc2VhcmNoLWlucHV0LXdyYXBwZXIgaW5wdXQge1xyXG4gIGZsZXg6IDEgMSBhdXRvOyAvKiBHcm93cyB0byBmaWxsIHNwYWNlICovXHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgcGFkZGluZzogMTJweCAxNXB4O1xyXG4gIGZvbnQtc2l6ZTogMTZweDtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBjb2xvcjogIzMzMztcclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dC13cmFwcGVyIGlucHV0OjpwbGFjZWhvbGRlciB7XHJcbiAgY29sb3I6ICM5OTk7XHJcbiAgZm9udC1zdHlsZTogaXRhbGljO1xyXG59XHJcblxyXG4uc2VhcmNoLWlucHV0LXdyYXBwZXIgLnNlYXJjaC1pY29uIHtcclxuICBmbGV4OiAwIDAgNDBweDtcclxuICB3aWR0aDogNDBweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGJhY2tncm91bmQ6ICNmOGY5ZmE7XHJcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U5ZWNlZjtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbiAgY29sb3I6ICM3M2FmN2U7XHJcbiAgb3JkZXI6IDE7XHJcbiAgcG9zaXRpb246IHN0YXRpYztcclxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dC13cmFwcGVyIC5jbGVhci1zZWFyY2gsXHJcbi5zZWFyY2gtaW5wdXQtd3JhcHBlciAjY2xlYXJDb21wbGlhbmNlU2VhcmNoIHtcclxuICBmbGV4OiAwIDAgNDBweDtcclxuICB3aWR0aDogNDBweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGJhY2tncm91bmQ6ICNmOGY5ZmE7XHJcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTllY2VmO1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBjb2xvcjogI2RjMzU0NTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gIG9yZGVyOiAzO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi5zZWFyY2gtaW5wdXQtd3JhcHBlciAuY2xlYXItc2VhcmNoOmhvdmVyLFxyXG4uc2VhcmNoLWlucHV0LXdyYXBwZXIgI2NsZWFyQ29tcGxpYW5jZVNlYXJjaDpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogI2U5ZWNlZjtcclxuICBjb2xvcjogIzAxNGQwYjtcclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dC13cmFwcGVyOmZvY3VzLXdpdGhpbiB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjMTQ0MTBiO1xyXG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDExNSwgMTc1LCAxMjYsIDAuMik7XHJcbn1cclxuXHJcbi5zZWFyY2gtaW5wdXQtd3JhcHBlcjpmb2N1cy13aXRoaW4gLnNlYXJjaC1pY29uIHtcclxuICBiYWNrZ3JvdW5kOiAjNzNhZjdlO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLyogTW9iaWxlIHJlc3BvbnNpdmUgKi9cclxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XHJcbiAgLnNlYXJjaC1ib3gge1xyXG4gICAgbWFyZ2luOiAxcmVtIDA7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG4gIC5zZWFyY2gtaWNvbixcclxuICAuY2xlYXItc2VhcmNoLFxyXG4gIC5zZWFyY2gtaW5wdXQtd3JhcHBlciAuc2VhcmNoLWljb24sXHJcbiAgLnNlYXJjaC1pbnB1dC13cmFwcGVyIC5jbGVhci1zZWFyY2gge1xyXG4gICAgZmxleDogMCAwIDM1cHg7XHJcbiAgICB3aWR0aDogMzVweDtcclxuICAgIGhlaWdodDogMzVweDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICB9XHJcbiAgLnNlYXJjaC1pbnB1dC13cmFwcGVyIGlucHV0LFxyXG4gIC5zZWFyY2gtYm94IGlucHV0IHtcclxuICAgIHBhZGRpbmc6IDEwcHggMTJweDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICB9XHJcbn1cclxuXHJcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgRmVhdHVyZXMgU2VjdGlvblxyXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuLmZlYXR1cmVzLXNlY3Rpb24ge1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIHBhZGRpbmc6IDJyZW0gMXJlbTtcclxuICBtYXJnaW46IDJyZW0gMDtcclxuICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpOyAvKiBTZW1pLXRyYW5zcGFyZW50IHdoaXRlICovXHJcbiAgY29sb3I6ICMzMzM7XHJcbn1cclxuXHJcbi5mZWF0dXJlcy1zZWN0aW9uIGgxIHtcclxuICBjb2xvcjogIzE0NDEwYjtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcclxufVxyXG5cclxuLmZlYXR1cmVzLXNlY3Rpb24gdWwge1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgcGFkZGluZzogMDtcclxuICBtYXJnaW46IDJyZW0gMDtcclxufVxyXG5cclxuLmZlYXR1cmVzLXNlY3Rpb24gbGkge1xyXG4gIHBhZGRpbmc6IDAuNzVyZW0gMDtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZWNlZjtcclxuICBjb2xvcjogIzMzMztcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgcGFkZGluZy1sZWZ0OiAycmVtO1xyXG59XHJcblxyXG4uZmVhdHVyZXMtc2VjdGlvbiBsaTpiZWZvcmUge1xyXG4gIGNvbnRlbnQ6IFwiP1wiO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiAwO1xyXG4gIGNvbG9yOiAjNzNhZjdlO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIGZvbnQtc2l6ZTogMS4yZW07XHJcbn1cclxuXHJcbi5mZWF0dXJlcy1zZWN0aW9uIGxpOmxhc3QtY2hpbGQge1xyXG4gIGJvcmRlci1ib3R0b206IG5vbmU7XHJcbn1cclxuXHJcbi8qIFJlY2FsbCB0YWJsZSBzdHlsaW5nICovXHJcbiNyZWNhbGwtdGFibGUge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcbiAgbWFyZ2luLXRvcDogMnJlbTtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG59XHJcblxyXG4jcmVjYWxsLXRhYmxlIHRoIHtcclxuICBiYWNrZ3JvdW5kOiAjNzNhZjdlO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAxMnB4O1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbiNyZWNhbGwtdGFibGUgdGQge1xyXG4gIHBhZGRpbmc6IDEycHg7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOWVjZWY7XHJcbiAgY29sb3I6ICMzMzM7XHJcbn1cclxuXHJcbiNyZWNhbGwtdGFibGUgdHI6aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6ICNmOGY5ZmE7XHJcbn1cclxuLyogVGhpcyBlbnN1cmVzIG9sZGVyIGJyb3dzZXJzIHN0aWxsIGdldCBhIHVzYWJsZSBsYXlvdXQuIGxldHMgeW91IGFwcGx5IHN0eWxlcyBvbmx5IGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIGEgc3BlY2lmaWMgQ1NTIGZlYXR1cmXigJRncmVhdCBmb3IgZ3JhY2VmdWwgZGVncmFkYXRpb24uICovXHJcbkBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkge1xyXG4gIC5sYXlvdXQge1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcclxuICB9XHJcbn1cclxuXHJcbkBzdXBwb3J0cyBub3QgKGRpc3BsYXk6IGdyaWQpIHtcclxuICAubGF5b3V0IHtcclxuICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcbn1cclxuLnRlc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbn1cclxuIl19 */