/* InsightsHive Build CSS - Source file with imports */
/* This file contains @import statements and gets compiled to main.css */
/* Import Base Styles */
/* CSS Reset and Base Styles */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
html {
  font-size: 100%;
  scroll-behavior: smooth;
}
body {
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  line-height: 1.6;
  color: var(--text-primary);
  background: var(--bg-primary);
  transition: background-color 0.3s ease, color 0.3s ease;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* Remove default list styles */
ul,
ol {
  list-style: none;
}
/* Remove default link styles */
a {
  text-decoration: none;
  color: inherit;
}
/* Improve image display */
img {
  max-width: 100%;
  height: auto;
  display: block;
}
/* Form elements */
button,
input,
textarea,
select {
  font: inherit;
  color: inherit;
}
button {
  cursor: pointer;
  background: none;
  border: none;
}
/* Focus styles for accessibility */
:focus {
  outline: 2px solid var(--accent-primary);
  outline-offset: 2px;
}
/* Skip links for accessibility */
.skip-link {
  position: absolute;
  top: -40px;
  left: 6px;
  background: var(--accent-primary);
  color: white;
  padding: 8px;
  border-radius: 4px;
  text-decoration: none;
  z-index: 9999;
}
.skip-link:focus {
  top: 6px;
}
/* Screen reader only text */
.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
/* CSS Custom Properties (Variables) */
:root {
  /* Light mode colors */
  --color-primary-50: #f9f7fb;
  --color-primary-100: #f4e1f5;
  --color-primary-200: #d6cdea;
  --color-primary-500: #a359bc;
  --color-primary-600: #9d4edd;
  --color-primary-900: #1e1e1e;

  --color-neutral-50: #ffffff;
  --color-neutral-100: #f9f7fb;
  --color-neutral-200: #f4e1f5;
  --color-neutral-600: #666666;
  --color-neutral-700: #333333;
  --color-neutral-900: #1e1e1e;

  /* Dark mode colors - will be overridden */
  --bg-primary: var(--color-neutral-100);
  --bg-secondary: var(--color-neutral-50);
  --bg-card: var(--color-primary-100);
  --text-primary: var(--color-neutral-900);
  --text-secondary: var(--color-neutral-600);
  --accent-primary: var(--color-primary-500);
  --accent-secondary: var(--color-primary-200);
  --border-color: rgba(0, 0, 0, 0.1);
  --shadow-light: rgba(0, 0, 0, 0.1);
  --shadow-medium: rgba(0, 0, 0, 0.15);
  --nav-bg: var(--color-neutral-50);
  --footer-bg: var(--color-primary-500);
  --footer-text: var(--color-neutral-50);

  /* Typography Scale */
  --font-size-xs: 0.75rem;      /* 12px */
  --font-size-sm: 0.875rem;     /* 14px */
  --font-size-base: 1rem;       /* 16px */
  --font-size-lg: 1.125rem;     /* 18px */
  --font-size-xl: 1.25rem;      /* 20px */
  --font-size-2xl: 1.5rem;      /* 24px */
  --font-size-3xl: 1.875rem;    /* 30px */
  --font-size-4xl: 2.25rem;     /* 36px */
  --font-size-5xl: 3rem;        /* 48px */

  /* Font Weights */
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  /* Line Heights */
  --line-height-tight: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.75;

  /* Spacing Scale */
  --space-1: 0.25rem;    /* 4px */
  --space-2: 0.5rem;     /* 8px */
  --space-3: 0.75rem;    /* 12px */
  --space-4: 1rem;       /* 16px */
  --space-5: 1.25rem;    /* 20px */
  --space-6: 1.5rem;     /* 24px */
  --space-8: 2rem;       /* 32px */
  --space-10: 2.5rem;    /* 40px */
  --space-12: 3rem;      /* 48px */
  --space-16: 4rem;      /* 64px */
  --space-20: 5rem;      /* 80px */

  /* Border Radius */
  --radius-sm: 0.25rem;   /* 4px */
  --radius-md: 0.5rem;    /* 8px */
  --radius-lg: 0.75rem;   /* 12px */
  --radius-xl: 1rem;      /* 16px */
  --radius-full: 9999px;

  /* Shadows */
  --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);

  /* Transitions */
  --transition-fast: 150ms ease-in-out;
  --transition-base: 300ms ease-in-out;
  --transition-slow: 500ms ease-in-out;

  /* Breakpoints (for reference in JS) */
  --breakpoint-sm: 640px;
  --breakpoint-md: 768px;
  --breakpoint-lg: 1024px;
  --breakpoint-xl: 1280px;

  /* Z-index scale */
  --z-dropdown: 1000;
  --z-sticky: 1020;
  --z-fixed: 1030;
  --z-modal-backdrop: 1040;
  --z-modal: 1050;
  --z-popover: 1060;
  --z-tooltip: 1070;
  --z-toast: 1080;
}
/* Dark mode overrides */
[data-theme="dark"] {
  --bg-primary: #1a1a1d;
  --bg-secondary: #2d2d2d;
  --bg-card: #3a2f3f;
  --text-primary: #e8dff2;
  --text-secondary: #cccccc;
  --accent-primary: #a359bc;
  --accent-secondary: #f2e6fa;
  --border-color: rgba(255, 255, 255, 0.2);
  --shadow-light: rgba(0, 0, 0, 0.3);
  --shadow-medium: rgba(0, 0, 0, 0.4);
  --nav-bg: #2d2d2d;
  --footer-bg: #1a1a1a;
  --footer-text: #ffffff;
}
/* Typography Styles */
/* Headings */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
  margin-bottom: var(--space-4);
  color: var(--text-primary);
}
h1 {
  font-size: var(--font-size-4xl);
}
h2 {
  font-size: var(--font-size-3xl);
}
h3 {
  font-size: var(--font-size-2xl);
}
h4 {
  font-size: var(--font-size-xl);
}
h5 {
  font-size: var(--font-size-lg);
}
h6 {
  font-size: var(--font-size-base);
}
/* Paragraphs */
p {
  margin-bottom: var(--space-4);
  line-height: var(--line-height-relaxed);
  color: var(--text-primary);
}
/* Links */
a {
  color: var(--accent-primary);
  transition: color var(--transition-fast);
}
a:hover,
a:focus {
  color: var(--accent-primary);
  text-decoration: underline;
}
/* Lists */
ul,
ol {
  padding-left: var(--space-6);
  margin-bottom: var(--space-4);
}
ul {
  list-style-type: disc;
}
ol {
  list-style-type: decimal;
}
li {
  margin-bottom: var(--space-2);
  color: var(--text-secondary);
  line-height: var(--line-height-normal);
}
/* Strong and emphasis */
strong {
  font-weight: var(--font-weight-bold);
  color: var(--text-primary);
}
em {
  font-style: italic;
}
/* Code and preformatted text */
code {
  font-family: 'Courier New', monospace;
  background: var(--bg-card);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-sm);
}
pre {
  background: var(--bg-card);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  overflow-x: auto;
  margin-bottom: var(--space-4);
}
pre code {
  background: none;
  padding: 0;
}
/* Blockquotes */
blockquote {
  border-left: 4px solid var(--accent-primary);
  padding-left: var(--space-4);
  margin: var(--space-6) 0;
  font-style: italic;
  color: var(--text-secondary);
}
/* Small text */
small {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
}
/* Text utilities */
.text-center {
  text-align: center;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-primary {
  color: var(--text-primary);
}
.text-secondary {
  color: var(--text-secondary);
}
.text-accent {
  color: var(--accent-primary);
}
.font-bold {
  font-weight: var(--font-weight-bold);
}
.font-medium {
  font-weight: var(--font-weight-medium);
}
.font-normal {
  font-weight: var(--font-weight-normal);
}
/* Responsive typography adjustments */
@media (max-width: 768px) {
  h1 {
    font-size: var(--font-size-3xl);
  }
  
  h2 {
    font-size: var(--font-size-2xl);
  }
  
  h3 {
    font-size: var(--font-size-xl);
  }
  
  body {
    font-size: var(--font-size-sm);
  }
}
@media (max-width: 480px) {
  h1 {
    font-size: var(--font-size-2xl);
  }
  
  h2 {
    font-size: var(--font-size-xl);
  }
}
/* Import Layout Styles */
/* Grid Layout - BEM Methodology */
/* Container */
.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 var(--space-5);
}
/* Base grid */
.grid {
  display: grid;
  gap: var(--space-6);
  align-items: stretch;
}
/* Grid items should fill the full height */
.grid > * {
  height: 100%;
}
/* Two column grid */
.grid-2 {
  grid-template-columns: 1fr 1fr;
}
/* Three column grid */
.grid-3 {
  grid-template-columns: 1fr 1fr 1fr;
}
/* Four column grid */
.grid-4 {
  grid-template-columns: repeat(4, 1fr);
}
/* Auto-fit grid for responsive cards */
.grid-auto {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
/* Card body should expand to fill available space */
.grid .card {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.grid .card .card__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
/* Team member cards specific layout */
.grid .card--team-member {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.grid .card--team-member .team-member__bio {
  flex: 1;
}
/* Grid spacing within card sections - FIX THE PADDING ISSUE */
.card--section .grid,
.card--section .grid-2,
.card--section .grid-3,
.card--section .grid-4 {
  margin-bottom: var(--space-6);
}
/* Remove bottom margin from last grid in a card section */
.card--section .grid:last-child,
.card--section .grid-2:last-child,
.card--section .grid-3:last-child,
.card--section .grid-4:last-child {
  margin-bottom: 0;
}
/* Additional spacing between consecutive grids */
.card--section .grid + .grid,
.card--section .grid-2 + .grid-2,
.card--section .grid-3 + .grid-3,
.card--section .grid-4 + .grid-4 {
  margin-top: var(--space-6);
}
/* Responsive grid adjustments */
@media (max-width: 768px) {
  .grid-2,
  .grid-3,
  .grid-4 {
    grid-template-columns: 1fr;
  }
  
  .grid {
    gap: var(--space-4);
  }

  /* Adjust grid spacing on mobile */
  .card--section .grid,
  .card--section .grid-2,
  .card--section .grid-3,
  .card--section .grid-4 {
    margin-bottom: var(--space-4);
  }

  .card--section .grid + .grid,
  .card--section .grid-2 + .grid-2,
  .card--section .grid-3 + .grid-3,
  .card--section .grid-4 + .grid-4 {
    margin-top: var(--space-4);
  }
}
@media (max-width: 1024px) and (min-width: 769px) {
  .grid-3,
  .grid-4 {
    grid-template-columns: 1fr 1fr;
  }
}
/* Flexbox utilities */
.flex {
  display: flex;
}
.flex-wrap {
  flex-wrap: wrap;
}
.flex-col {
  flex-direction: column;
}
.flex-row {
  flex-direction: row;
}
.items-center {
  align-items: center;
}
.items-start {
  align-items: flex-start;
}
.items-end {
  align-items: flex-end;
}
.items-stretch {
  align-items: stretch;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.justify-around {
  justify-content: space-around;
}
.justify-start {
  justify-content: flex-start;
}
.justify-end {
  justify-content: flex-end;
}
/* Grid alignment utilities */
.place-items-center {
  place-items: center;
}
.place-items-start {
  place-items: start;
}
.place-content-center {
  place-content: center;
}
/* Grid area utilities */
.col-span-1 {
  grid-column: span 1;
}
.col-span-2 {
  grid-column: span 2;
}
.col-span-3 {
  grid-column: span 3;
}
.col-span-full {
  grid-column: 1 / -1;
}
.row-span-1 {
  grid-row: span 1;
}
.row-span-2 {
  grid-row: span 2;
}
.row-span-3 {
  grid-row: span 3;
}
/* Grid gap variations */
.gap-2 {
  gap: var(--space-2);
}
.gap-4 {
  gap: var(--space-4);
}
.gap-6 {
  gap: var(--space-6);
}
.gap-8 {
  gap: var(--space-6);
}
/* Row and column gaps */
.gap-x-2 {
  -moz-column-gap: var(--space-2);
       column-gap: var(--space-2);
}
.gap-x-4 {
  -moz-column-gap: var(--space-4);
       column-gap: var(--space-4);
}
.gap-x-6 {
  -moz-column-gap: var(--space-6);
       column-gap: var(--space-6);
}
.gap-y-2 {
  row-gap: var(--space-2);
}
.gap-y-4 {
  row-gap: var(--space-4);
}
.gap-y-6 {
  row-gap: var(--space-6);
}
/* Auto-grid responsive */
.auto-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: var(--space-6);
  align-items: stretch;
}
.auto-grid > * {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.auto-grid-sm {
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.auto-grid-lg {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
/* Header Layout - BEM Methodology */
.header {
  background: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%);
  color: white;
  padding: var(--space-6) 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}
/* Header background pattern/texture */
.header::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><circle cx="50" cy="50" r="2" fill="rgba(255,255,255,0.1)"/></svg>') repeat;
  background-size: 50px 50px;
  opacity: 0.3;
  pointer-events: none;
}
.header__container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 var(--space-5);
  position: relative;
  z-index: 1;
}
/* Logo/Brand */
.header__logo {
  font-size: var(--font-size-5xl);
  font-weight: var(--font-weight-bold);
  margin-bottom: var(--space-2);
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* Tagline */
.header__tagline {
  font-size: var(--font-size-2xl);
  opacity: 0.9;
  margin-bottom: var(--space-4);
  font-weight: var(--font-weight-medium);
}
/* Hero description */
.header__description {
  font-size: var(--font-size-lg);
  max-width: 800px;
  margin: 0 auto;
  opacity: 0.95;
  line-height: var(--line-height-relaxed);
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}
/* Header variants */
.header--compact {
  padding: var(--space-6) 0;
}
.header--compact .header__logo {
  font-size: var(--font-size-4xl);
  margin-bottom: var(--space-1);
}
.header--compact .header__tagline {
  font-size: var(--font-size-xl);
  margin-bottom: var(--space-2);
}
.header--compact .header__description {
  font-size: var(--font-size-base);
}
/* Page-specific header styling */
.header--home {
  padding: var(--space-12) 0;
}
.header--about {
  background: linear-gradient(135deg, var(--color-primary-600) 0%, var(--accent-primary) 100%);
}
.header--products {
  background: linear-gradient(135deg, var(--accent-primary) 0%, var(--color-primary-600) 100%);
}
.header--team {
  background: linear-gradient(135deg, var(--color-primary-500) 0%, var(--color-primary-600) 100%);
}
.header--technology {
  background: linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-primary-500) 100%);
}
.header--contact {
  background: linear-gradient(135deg, var(--accent-secondary) 0%, var(--accent-primary) 100%);
}
/* Header CTA buttons */
.header__cta {
  margin-top: var(--space-6);
}
.header__cta-button {
  background: rgba(255, 255, 255, 0.2);
  color: white;
  border: 2px solid rgba(255, 255, 255, 0.3);
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-lg);
  text-decoration: none;
  font-weight: var(--font-weight-medium);
  transition: all var(--transition-base);
  display: inline-block;
  margin: 0 var(--space-2);
  backdrop-filter: blur(10px);
}
.header__cta-button:hover,
.header__cta-button:focus {
  background: rgba(255, 255, 255, 0.3);
  border-color: rgba(255, 255, 255, 0.5);
  transform: translateY(-2px);
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
.header__cta-button--primary {
  background: white;
  color: var(--accent-primary);
  border-color: white;
}
.header__cta-button--primary:hover,
.header__cta-button--primary:focus {
  background: rgba(255, 255, 255, 0.9);
  color: var(--accent-primary);
}
/* Responsive design */
@media (max-width: 768px) {
  .header {
    padding: var(--space-6) 0;
  }

  .header__container {
    padding: 0 var(--space-4);
  }

  .header__logo {
    font-size: var(--font-size-4xl);
  }

  .header__tagline {
    font-size: var(--font-size-lg);
  }

  .header__description {
    font-size: var(--font-size-base);
    padding: 0 var(--space-4);
  }

  .header--home {
    padding: var(--space-6) 0;
  }

  .header__cta {
    margin-top: var(--space-6);
  }

  .header__cta-button {
    display: block;
    margin: var(--space-2) 0;
    text-align: center;
  }
}
@media (max-width: 480px) {
  .header {
    padding: var(--space-4) 0;
  }

  .header__container {
    padding: 0 var(--space-3);
  }

  .header__logo {
    font-size: var(--font-size-3xl);
  }

  .header__tagline {
    font-size: var(--font-size-base);
  }

  .header__description {
    font-size: var(--font-size-sm);
  }

  .header--home {
    padding: var(--space-6) 0;
  }
}
/* Dark mode adjustments */
[data-theme="dark"] .header {
  background: linear-gradient(135deg, #2d2d2d 0%, var(--accent-primary) 100%);
}
[data-theme="dark"] .header__cta-button {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.2);
}
[data-theme="dark"] .header__cta-button:hover,
[data-theme="dark"] .header__cta-button:focus {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.3);
}
/* Animation for header elements */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.header__logo,
.header__tagline,
.header__description {
  animation: fadeInUp 0.8s ease-out;
}
.header__tagline {
  animation-delay: 0.2s;
}
.header__description {
  animation-delay: 0.4s;
}
/* Disable animations for users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  .header__logo,
  .header__tagline,
  .header__description {
    animation: none;
  }
}
/* Footer Layout - BEM Methodology */
.footer {
  background: var(--footer-bg);
  color: var(--footer-text);
  text-align: center;
  padding: var(--space-6) 0;
  margin-top: var(--space-12);
  transition: background-color var(--transition-base);
}
.footer__container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 var(--space-5);
}
/* Contact information */
.footer__contact {
  text-align: center;
  margin-bottom: var(--space-6);
}
.footer__contact-title {
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-bold);
  margin-bottom: var(--space-4);
  color: var(--footer-text);
}
.footer__contact-info {
  margin-bottom: var(--space-2);
  font-size: var(--font-size-base);
  line-height: var(--line-height-relaxed);
}
.footer__contact-info a {
  color: var(--accent-secondary);
  text-decoration: none;
  transition: color var(--transition-fast);
}
.footer__contact-info a:hover,
.footer__contact-info a:focus {
  color: white;
  text-decoration: underline;
}
/* Footer bottom/legal */
.footer__bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  padding-top: var(--space-6);
  font-size: var(--font-size-sm);
  color: rgba(255, 255, 255, 0.8);
}
.footer__bottom-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  flex-wrap: wrap;
}
.footer__legal {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-6);
  flex-wrap: wrap;
}
.footer__legal-link {
  color: var(--accent-secondary);
  text-decoration: none;
  transition: color var(--transition-fast);
}
.footer__legal-link:hover,
.footer__legal-link:focus {
  color: white;
  text-decoration: underline;
}
.footer__copyright {
  font-size: var(--font-size-sm);
  color: rgba(255, 255, 255, 0.7);
}
/* Responsive design */
@media (max-width: 768px) {
  .footer {
    padding: var(--space-6) 0;
    margin-top: var(--space-6);
  }

  .footer__container {
    padding: 0 var(--space-4);
  }

  .footer__legal {
    flex-direction: column;
    gap: var(--space-2);
  }

  .footer__bottom-content {
    flex-direction: column;
    text-align: center;
    gap: var(--space-3);
  }
}
@media (max-width: 480px) {
  .footer {
    padding: var(--space-4) 0;
  }

  .footer__container {
    padding: 0 var(--space-3);
  }

  .footer__contact-title {
    font-size: var(--font-size-lg);
  }
}
/* Dark mode specific adjustments */
[data-theme="dark"] .footer {
  background: #1a1a1a;
}
/* Import Component Styles */
/* Button Components - BEM Methodology */
/* Base button class */
.btn {
  display: inline-block;
  padding: var(--space-3) var(--space-6);
  border: none;
  border-radius: var(--radius-md);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-medium);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: all var(--transition-base);
  line-height: 1;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  position: relative;
  overflow: hidden;
}
.btn:focus {
  outline: 2px solid var(--accent-primary);
  outline-offset: 2px;
}
.btn:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  pointer-events: none;
}
/* Button variants */
.btn--primary {
  background: linear-gradient(135deg, var(--accent-primary), var(--color-primary-600));
  color: white;
  box-shadow: 0 4px 8px rgba(163, 89, 188, 0.3);
}
.btn--primary:hover,
.btn--primary:focus {
  background: linear-gradient(135deg, var(--color-primary-600), var(--accent-primary));
  color: #2d2d2d;
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(163, 89, 188, 0.4);
  text-decoration: none;
}
.btn--secondary {
  background: var(--bg-secondary);
  color: var(--text-primary);
  border: 2px solid var(--border-color);
  transition: all var(--transition-base);
}
.btn--secondary:hover,
.btn--secondary:focus {
  background: var(--bg-card);
  border-color: var(--accent-primary);
  color: #2d2d2d;
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
  text-decoration: none;
}
/* Button sizes */
.btn--small {
  padding: var(--space-2) var(--space-4);
  font-size: var(--font-size-sm);
}
.btn--large {
  padding: var(--space-4) var(--space-8);
  font-size: var(--font-size-lg);
}
/* CTA button */
.btn--cta {
  background: linear-gradient(135deg, white, rgba(255,255,255,0.9));
  color: var(--accent-primary);
  padding: var(--space-4) var(--space-8);
  border: none;
  border-radius: var(--radius-md);
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-bold);
  cursor: pointer;
  margin: var(--space-4) var(--space-2);
  transition: all var(--transition-base);
  text-decoration: none;
  display: inline-block;
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
  position: relative;
  overflow: hidden;
}
.btn--cta:hover,
.btn--cta:focus {
  transform: translateY(-3px);
  box-shadow: 0 8px 20px rgba(0,0,0,0.15);
  background: linear-gradient(135deg, rgba(255,255,255,1), rgba(255,255,255,0.95));
  color: #2d2d2d;
  text-decoration: none;
}
/* Top CTA button */
.btn--cta-top {
  background: linear-gradient(135deg, var(--accent-primary), var(--color-primary-600));
  color: white;
  padding: var(--space-4) var(--space-8);
  border: none;
  border-radius: var(--radius-lg);
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-bold);
  cursor: pointer;
  transition: all var(--transition-base);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(163, 89, 188, 0.3);
  white-space: nowrap;
  flex-shrink: 0;
}
.btn--cta-top:hover,
.btn--cta-top:focus {
  transform: translateY(-3px);
  box-shadow: 0 8px 20px rgba(163, 89, 188, 0.4);
  background: linear-gradient(135deg, var(--color-primary-600), var(--accent-primary));
  color: #2d2d2d;
  text-decoration: none;
}
/* Theme toggle button */
.btn--theme-toggle {
  position: fixed;
  bottom: var(--space-5);
  right: var(--space-5);
  z-index: var(--z-fixed);
  background: linear-gradient(135deg, var(--accent-primary), var(--color-primary-600));
  color: white;
  border: none;
  border-radius: var(--radius-full);
  width: 50px;
  height: 50px;
  font-size: var(--font-size-xl);
  cursor: pointer;
  transition: all var(--transition-base);
  box-shadow: 0 4px 12px rgba(163, 89, 188, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
}
.btn--theme-toggle:hover,
.btn--theme-toggle:focus {
  transform: scale(1.1) rotate(15deg);
  box-shadow: 0 6px 20px rgba(163, 89, 188, 0.5);
}
/* Menu toggle button (hamburger) */
.btn--menu-toggle {
  display: none;
  flex-direction: column;
  cursor: pointer;
  padding: var(--space-2);
  background: none;
  border: none;
  z-index: var(--z-fixed);
  transition: all var(--transition-base);
}
.btn--menu-toggle:hover {
  transform: scale(1.05);
}
.btn--menu-toggle__line {
  width: 25px;
  height: 3px;
  background: var(--text-primary);
  margin: 3px 0;
  transition: var(--transition-base);
  display: block;
  border-radius: 2px;
}
/* Hamburger menu animation */
.btn--menu-toggle--active .btn--menu-toggle__line:nth-child(1) {
  transform: rotate(-45deg) translate(-5px, 6px);
  background: var(--accent-primary);
}
.btn--menu-toggle--active .btn--menu-toggle__line:nth-child(2) {
  opacity: 0;
}
.btn--menu-toggle--active .btn--menu-toggle__line:nth-child(3) {
  transform: rotate(45deg) translate(-5px, -6px);
  background: var(--accent-primary);
}
/* Button groups */
.btn-group {
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
  align-items: center;
}
.btn-group--center {
  justify-content: center;
}
/* Responsive adjustments */
@media (max-width: 768px) {
  .btn--theme-toggle {
    bottom: var(--space-4);
    right: var(--space-4);
    width: 45px;
    height: 45px;
    font-size: var(--font-size-base);
  }

  .btn--menu-toggle {
    display: flex;
  }

  .btn--cta {
    display: block;
    width: 100%;
    margin: var(--space-2) 0;
    padding: var(--space-4);
  }

  .btn-group {
    flex-direction: column;
  }

  .btn-group .btn {
    width: 100%;
  }

  /* Better touch targets on mobile */
  .btn {
    min-height: 44px;
    padding: var(--space-4) var(--space-6);
  }

  .btn--small {
    min-height: 36px;
    padding: var(--space-3) var(--space-4);
  }
}
@media (max-width: 480px) {
  .btn--theme-toggle {
    bottom: var(--space-3);
    right: var(--space-3);
    width: 40px;
    height: 40px;
    font-size: var(--font-size-sm);
  }

  .btn--cta {
    font-size: var(--font-size-base);
    padding: var(--space-3) var(--space-4);
  }

  .btn--large {
    padding: var(--space-4) var(--space-6);
    font-size: var(--font-size-base);
  }

  .btn--cta-top {
    font-size: var(--font-size-base);
    padding: var(--space-3) var(--space-6);
    width: 100%;
    max-width: 280px;
  }
}
/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
  .btn,
  .btn--theme-toggle,
  .btn--menu-toggle__line {
    transition: none;
    animation: none;
  }

  .btn:hover {
    transform: none;
  }
}
/* Card Components - BEM Methodology */
/* Base card component */
.card {
  background: var(--bg-card);
  padding: var(--space-6);
  border-radius: var(--radius-lg);
  border-left: 4px solid var(--accent-primary);
  box-shadow: var(--shadow-md);
  transition: all var(--transition-base);
  margin-bottom: var(--space-4);
  display: flex;
  flex-direction: column;
  height: 100%;
  position: relative;
  overflow: hidden;
}
.card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
}
/* Card header */
.card__header {
  margin-bottom: var(--space-4);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--border-color);
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: var(--space-2);
  flex-shrink: 0;
}
.card__title {
  color: var(--accent-primary);
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-bold);
  margin-bottom: 0;
  flex: 1;
}
/* Card body */
.card__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
.card__body p:last-child {
  margin-bottom: 0;
}
.card__body ul {
  margin-bottom: 0;
}
.card__body li {
  margin-bottom: var(--space-2);
}
.card__body li:last-child {
  margin-bottom: 0;
}
/* Card footer */
.card__footer {
  margin-top: var(--space-4);
  padding-top: var(--space-4);
  border-top: 1px solid var(--border-color);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
  flex-shrink: 0;
  margin-top: auto;
}
/* Section Header with CTA */
.section-header-with-cta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-6);
  gap: var(--space-4);
  flex-wrap: wrap;
}
.section-header-with-cta h1 {
  color: var(--accent-primary);
  font-size: var(--font-size-4xl);
  font-weight: var(--font-weight-bold);
  margin-bottom: 0;
  flex: 1;
}
/* Top CTA Button */
.card--highlight {
  border-left-color: var(--color-primary-600);
  background: linear-gradient(135deg, var(--bg-card) 45%, var(--color-primary-50) 100%);
  margin-bottom: var(--space-6);
}
/* Metric cards for KPIs */
.card--metric {
  background: linear-gradient(135deg, var(--bg-card) 45%, var(--color-primary-50) 100%);
  text-align: center;
  transition: all 0.3s ease;
  border-left: none;
  border-radius: var(--radius-xl);
}
.card--metric:hover {
  transform: translateY(-8px);
  box-shadow: var(--shadow-xl);
}
.metric-number {
  font-size: var(--font-size-5xl);
  font-weight: var(--font-weight-bold);
  background: linear-gradient(135deg, var(--accent-primary), var(--color-primary-600));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  display: block;
  line-height: 1;
  margin-bottom: var(--space-2);
}
.metric-label {
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
/* Team member card */
.card--team-member {
  text-align: center;
  background: var(--bg-secondary);
  border-left: none;
  border-radius: var(--radius-xl);
  transition: all var(--transition-base);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  height: 100%;
  position: relative;
  overflow: hidden;
  gap: var(--space-4);
}
.card--team-member::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, 
    var(--accent-primary), 
    var(--color-primary-600), 
    var(--accent-secondary)
  );
  transform: scaleX(0);
  transition: transform 0.3s ease;
}
.card--team-member:hover::before {
  transform: scaleX(1);
}
.card--team-member:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-xl);
}
.card--team-member .team-member__photo {
  width: 120px;
  height: 120px;
  border-radius: var(--radius-full);
  margin: 0 auto var(--space-4) auto;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: var(--font-size-2xl);
  font-weight: var(--font-weight-bold);
  overflow: hidden;
  position: relative;
  background: linear-gradient(135deg, var(--accent-primary) 45%, var(--accent-secondary) 100%);
  flex-shrink: 0;
  transition: transform 0.3s ease;
}
.card--team-member:hover .team-member__photo {
  transform: scale(1.05);
}
.card--team-member .team-member__photo img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: var(--radius-full);
}
.card--team-member .team-member__name {
  color: var(--accent-primary);
  font-size: var(--font-size-xl);
  margin-bottom: var(--space-2);
  flex-shrink: 0;
}
.card--team-member .team-member__title {
  color: var(--text-primary);
  font-size: var(--font-size-lg);
  margin-bottom: var(--space-4);
  flex-shrink: 0;
}
.card--team-member .team-member__bio {
  text-align: left;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  align-items: stretch;
}
/* Nested cards within team member cards */
.card--team-member .card {
  margin-bottom: 0;
  padding: var(--space-4);
  border-left: 2px solid var(--accent-primary);
  box-shadow: var(--shadow-sm);
}
.card--team-member .card:last-child {
  margin-bottom: 0;
}
.card--team-member .card .card__header {
  margin-bottom: var(--space-2);
  padding-bottom: var(--space-2);
}
.card--team-member .card .card__title {
  font-size: var(--font-size-base);
  color: var(--accent-primary);
}
.card--team-member .card .card__body {
  flex: 1;
}
.card--team-member .card .card__body p {
  margin-bottom: var(--space-2);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
}
.card--team-member .card .card__body ul {
  margin-bottom: 0;
}
.card--team-member .card .card__body li {
  margin-bottom: var(--space-1);
  font-size: var(--font-size-base);
}
/* Testimonial cards */
.card--testimonial {
  background: var(--bg-card);
  border-left: 4px solid var(--accent-secondary);
  position: relative;
  font-style: italic;
}
.card--testimonial::before {
  content: '"';
  position: absolute;
  top: var(--space-2);
  left: var(--space-4);
  font-size: 4rem;
  color: var(--accent-primary);
  opacity: 0.2;
  line-height: 1;
  font-style: normal;
}
.testimonial__author {
  margin-top: var(--space-4);
  padding-top: var(--space-4);
  border-top: 1px solid var(--border-color);
  font-style: normal;
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
}
/* CTA section card */
.card--cta {
  background: linear-gradient(135deg, var(--accent-primary) 45%, var(--accent-secondary) 100%);
  color: white;
  text-align: center;
  padding: var(--space-12) var(--space-6);
  border-radius: var(--radius-xl);
  margin: var(--space-12) 0;
  border: none;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  position: relative;
  overflow: hidden;
}
.card--cta::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><circle cx="50" cy="50" r="2" fill="rgba(255,255,255,0.1)"/></svg>') repeat;
  background-size: 50px 50px;
  opacity: 0.3;
  pointer-events: none;
}
.card--cta h2,
.card--cta h3 {
  color: white;
  margin-bottom: var(--space-4);
  position: relative;
  z-index: 1;
}
.card--cta p {
  color: rgba(255, 255, 255, 0.9);
  font-size: var(--font-size-lg);
  margin-bottom: var(--space-6);
  position: relative;
  z-index: 1;
}
/* Section card (main content areas) */
.card--section {
  background: var(--bg-secondary);
  margin-bottom: var(--space-6);
  padding: var(--space-6);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  border-left: none;
  display: flex;
  flex-direction: column;
}
.card--section h1,
.card--section h2 {
  color: var(--accent-primary);
  font-size: var(--font-size-3xl);
  margin-bottom: var(--space-6);
  border-bottom: 3px solid var(--accent-primary);
  padding-bottom: var(--space-2);
}
.card--section h3 {
  color: var(--text-primary);
  font-size: var(--font-size-2xl);
  margin: var(--space-6) 0 var(--space-4) 0;
}
/* Badge System */
.card .badge {
  display: inline-block;
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-bold);
  margin-top: var(--space-2);
  flex-shrink: 0;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.badge--status {
  background: linear-gradient(135deg, #28a745, #20c997);
  color: white;
  box-shadow: 0 2px 4px rgba(40, 167, 69, 0.3);
}
.badge--beta {
  background: linear-gradient(135deg, #ffc107, #fd7e14);
  color: #333;
  box-shadow: 0 2px 4px rgba(255, 193, 7, 0.3);
}
.badge--ai {
  background: linear-gradient(135deg, var(--accent-primary), var(--color-primary-600));
  color: white;
  box-shadow: 0 2px 4px rgba(163, 89, 188, 0.3);
  animation: pulse-ai 2s infinite;
}
@keyframes pulse-ai {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}
/* Grid-specific card adjustments */
.grid .card {
  margin: 0;
}
/* Override grid equal height for team member nested cards */
.grid .card--team-member .card {
  height: auto;
}
/* Responsive adjustments */
@media (max-width: 768px) {
  .card {
    padding: var(--space-4);
  }

  .card--section {
    padding: var(--space-6);
    margin-bottom: var(--space-6);
  }

  .card--section h1,
  .card--section h2 {
    font-size: var(--font-size-2xl);
  }

  .card--section h3 {
    font-size: var(--font-size-xl);
  }

  .card--team-member .team-member__photo {
    width: 100px;
    height: 100px;
    font-size: var(--font-size-xl);
  }

  .card--team-member {
    gap: var(--space-3);
  }

  .card--team-member .team-member__bio {
    gap: var(--space-3);
  }

  .card--team-member .card {
    padding: var(--space-3);
  }

  .card--cta {
    padding: var(--space-6);
  }

  .card__footer {
    flex-direction: column;
    gap: var(--space-2);
  }

  .metric-number {
    font-size: var(--font-size-4xl);
  }

  /* Mobile responsive for section header with CTA */
  .section-header-with-cta {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--space-3);
  }

  .section-header-with-cta h1 {
    font-size: var(--font-size-3xl);
    text-align: center;
  }
}
@media (max-width: 480px) {
  .card {
    padding: var(--space-3);
  }

  .card--section {
    padding: var(--space-4);
  }

  .card--team-member .team-member__photo {
    width: 80px;
    height: 80px;
    font-size: var(--font-size-lg);
  }

  .card--team-member {
    gap: var(--space-2);
  }

  .card--team-member .team-member__bio {
    gap: var(--space-2);
  }

  .card--team-member .card {
    padding: var(--space-2);
  }

  .card--cta {
    padding: var(--space-6) var(--space-4);
  }

  .metric-number {
    font-size: var(--font-size-3xl);
  }

  .section-header-with-cta h1 {
    font-size: var(--font-size-2xl);
  }
}
/* Navigation Components - BEM Methodology */
/* Main navigation */
.nav {
  background: var(--nav-bg);
  box-shadow: var(--shadow-md);
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  transition: all var(--transition-base);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--border-color);
}
/* Enhanced scrolled state */
.nav--scrolled {
  background: rgba(var(--nav-bg), 0.95);
  backdrop-filter: blur(20px);
  box-shadow: var(--shadow-lg);
}
.nav__container {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: var(--space-4) var(--space-5);
  position: relative;
  width: 100%;
  margin: 0;
  transition: all var(--transition-base);
}
/* Logo that appears when header is not visible */
.nav__logo {
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-bold);
  color: var(--accent-primary);
  text-decoration: none;
  transition: all var(--transition-base);
  opacity: 0;
  transform: translateX(-20px);
  pointer-events: none;
  white-space: nowrap;
  position: absolute;
  left: var(--space-5);
}
.nav__logo:hover {
  color: var(--color-primary-600);
  transform: translateX(0) scale(1.05);
}
/* Show logo when scrolled - DESKTOP ONLY */
.nav--scrolled .nav__logo {
  opacity: 1;
  transform: translateX(0);
  pointer-events: auto;
}
/* Navigation links */
.nav__links {
  display: flex;
  list-style: none;
  gap: var(--space-6);
  margin: 0;
  padding: 0;
  align-items: center;
}
.nav__link {
  text-decoration: none;
  color: var(--text-primary);
  font-weight: var(--font-weight-medium);
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-md);
  transition: all var(--transition-base);
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-1);
}
/* Enhanced hover effects */
.nav__link::before {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 50%;
  width: 0;
  height: 2px;
  background: var(--accent-primary);
  transition: all var(--transition-base);
  transform: translateX(-50%);
}
.nav__link:hover::before {
  width: 100%;
}
.nav__link:hover,
.nav__link:focus {
  background: rgba(var(--accent-primary), 0.1);
  color: var(--accent-primary);
  transform: translateY(-1px);
}
.nav__link--active {
  background: var(--accent-primary);
  color: white;
  box-shadow: 0 2px 8px rgba(163, 89, 188, 0.3);
}
.nav__link--active::before {
  display: none;
}
.nav__link--active:hover,
.nav__link--active:focus {
  background: var(--color-primary-600);
  color: #2d2d2d;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(163, 89, 188, 0.4);
  text-decoration: none;
}
/* Navigation icons */
.nav__link-icon {
  font-size: var(--font-size-sm);
  opacity: 0;
  transform: translateX(-5px);
  transition: all var(--transition-base);
}
.nav__link:hover .nav__link-icon {
  opacity: 1;
  transform: translateX(0);
}
/* Mobile menu toggle */
.btn--menu-toggle {
  display: none;
  flex-direction: column;
  cursor: pointer;
  padding: var(--space-2);
  background: none;
  border: none;
  z-index: calc(var(--z-modal) + 10);
  position: relative;
  border-radius: var(--radius-md);
  transition: all var(--transition-base);
  min-width: 40px;
  min-height: 40px;
  justify-content: center;
  align-items: center;
}
.btn--menu-toggle:hover {
  background: rgba(var(--accent-primary), 0.1);
}
.btn--menu-toggle__line {
  width: 25px;
  height: 3px;
  background: var(--text-primary);
  margin: 3px 0;
  transition: var(--transition-base);
  display: block;
  border-radius: 2px;
  pointer-events: none;
}
/* Hamburger animation states */
.btn--menu-toggle--active .btn--menu-toggle__line:nth-child(1) {
  transform: rotate(-45deg) translate(-5px, 6px);
  background: var(--accent-primary);
}
.btn--menu-toggle--active .btn--menu-toggle__line:nth-child(2) {
  opacity: 0;
  transform: translateX(-20px);
}
.btn--menu-toggle--active .btn--menu-toggle__line:nth-child(3) {
  transform: rotate(45deg) translate(-5px, -6px);
  background: var(--accent-primary);
}
/* MOBILE BACKDROP */
.nav__backdrop {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: calc(var(--z-modal) + 1);
  opacity: 0;
  visibility: hidden;
  transition: all var(--transition-base);
  backdrop-filter: blur(2px);
  pointer-events: none;
}
.nav__backdrop--active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
/* Breadcrumbs */
.breadcrumbs {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
  font-size: var(--font-size-sm);
  padding: var(--space-2) 0;
}
.breadcrumbs__item {
  color: var(--text-secondary);
  transition: color var(--transition-base);
}
.breadcrumbs__item:hover {
  color: var(--text-primary);
}
.breadcrumbs__item--current {
  color: var(--text-primary);
  font-weight: var(--font-weight-medium);
}
.breadcrumbs__separator {
  color: var(--text-secondary);
  font-size: var(--font-size-xs);
}
.breadcrumbs__link {
  color: var(--accent-primary);
  text-decoration: none;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  transition: all var(--transition-base);
}
.breadcrumbs__link:hover {
  background: rgba(var(--accent-primary), 0.1);
  text-decoration: underline;
}
/* Mobile navigation styles */
@media (max-width: 768px) {
  .btn--menu-toggle {
    display: flex;
  }

  /* Mobile logo positioning */
  .nav__logo {
    position: static !important;
    opacity: 1 !important;
    transform: none !important;
    font-size: var(--font-size-lg);
    pointer-events: auto !important;
    order: -1 !important;
  }

  .nav__logo:hover {
    transform: scale(1.05);
  }

  .nav__container {
    justify-content: space-between;
    padding: var(--space-3) var(--space-4);
  }

  .nav--scrolled .nav__container {
    justify-content: space-between;
  }

  /* Mobile navigation links */
  .nav__links {
    position: fixed;
    top: 0;
    left: -100%;
    width: 85%;
    max-width: 320px;
    height: 100vh;
    height: 100dvh;
    background: var(--bg-primary);
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    gap: var(--space-3);
    transition: left var(--transition-base);
    z-index: calc(var(--z-modal) + 10);
    box-shadow: var(--shadow-lg);
    overflow-y: auto;
    overflow-x: hidden;
    border-right: 3px solid var(--accent-primary);
    padding: calc(var(--space-6) + env(safe-area-inset-top, 0px)) var(--space-4) calc(var(--space-6) + env(safe-area-inset-bottom, 0px)) var(--space-4);
    -webkit-overflow-scrolling: touch;
    pointer-events: auto;
  }

  /* Active state positioning */
  .nav__links--active {
    left: 0;
  }

  /* Mobile navigation links styling */
  .nav__link {
    font-size: var(--font-size-base);
    padding: var(--space-3) var(--space-4);
    width: 90%;
    max-width: 260px;
    text-align: center;
    border-radius: var(--radius-lg);
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg-card);
    border: 2px solid var(--border-color);
    box-shadow: var(--shadow-md);
    font-weight: var(--font-weight-semibold);
    color: var(--text-primary);
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    flex-shrink: 0;
    pointer-events: auto;
    position: relative;
    z-index: 10;
    cursor: pointer;
    transform: translateZ(0);
  }

  .nav__link:hover,
  .nav__link:focus,
  .nav__link:active {
    background: var(--accent-primary);
    color: white;
    border-color: var(--accent-primary);
    transform: scale(1.02) translateZ(0);
    box-shadow: var(--shadow-lg);
  }

  .nav__link--active {
    background: var(--accent-primary);
    color: white;
    border-color: var(--accent-primary);
    box-shadow: var(--shadow-lg);
  }

  .nav__link--active:hover,
  .nav__link--active:focus,
  .nav__link--active:active {
    background: var(--accent-primary);
    color: #2d2d2d;
    border-color: var(--accent-primary);
    text-decoration: none;
  }

  .nav__link .nav__link-icon {
    opacity: 1;
    transform: translateX(0);
    font-size: var(--font-size-sm);
    margin-right: var(--space-2);
    pointer-events: none;
  }
}
/* Even smaller screens */
@media (max-width: 480px) {
  .nav__links {
    width: 90%;
    max-width: 280px;
    gap: var(--space-2);
    padding: calc(var(--space-4) + env(safe-area-inset-top, 0px)) var(--space-3) calc(var(--space-4) + env(safe-area-inset-bottom, 0px)) var(--space-3);
  }

  .nav__link {
    font-size: var(--font-size-sm);
    padding: var(--space-2) var(--space-3);
    min-height: 40px;
    width: 95%;
  }

  .nav__link .nav__link-icon {
    font-size: var(--font-size-xs);
    margin-right: var(--space-1);
  }
}
/* Landscape orientation on mobile */
@media (max-width: 768px) and (orientation: landscape) {
  .nav__links {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-content: flex-start;
    padding: calc(var(--space-3) + env(safe-area-inset-top, 0px)) var(--space-3) calc(var(--space-3) + env(safe-area-inset-bottom, 0px)) var(--space-3);
    gap: var(--space-2);
    width: 100%;
    max-width: none;
  }

  .nav__link {
    width: auto;
    min-width: 120px;
    flex: 0 0 auto;
  }
}
/* Large screen optimizations */
@media (min-width: 1200px) {
  .nav__container {
    padding: var(--space-4) var(--space-6);
    justify-content: center;
  }

  .nav--scrolled .nav__container {
    justify-content: center;
  }

  .nav__logo {
    font-size: var(--font-size-2xl);
  }

  .nav__links {
    gap: var(--space-10);
  }

  .nav__link {
    padding: var(--space-3) var(--space-5);
    font-size: var(--font-size-lg);
  }
}
/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
  .nav,
  .nav__link,
  .nav__logo,
  .btn--menu-toggle__line,
  .nav__links,
  .nav__link::before,
  .nav__container,
  .nav__backdrop {
    transition: none;
    animation: none;
  }

  .nav__link:hover,
  .nav__logo:hover {
    transform: none;
  }
}
/* Banner Components - BEM Methodology */
/* Supported by Google Banner */
.supported-banner {
  background: var(--bg-secondary);
  padding: var(--space-2) var(--space-4);
  border-bottom: 1px solid var(--border-color);
  text-align: center;
}
.supported-banner__content {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: nowrap;
}
.supported-banner__text {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  white-space: nowrap;
}
.supported-banner__logo {
  height: 40px;
  width: auto;
  background: white;
  padding: 10px 20px;
  border-radius: 6px;
  transition: transform var(--transition-fast);
}
.supported-banner__logo:hover {
  transform: scale(1.02);
}
/* Mobile responsive */
@media (max-width: 480px) {
  .supported-banner {
    padding: var(--space-2) var(--space-3);
  }

  .supported-banner__logo {
    height: 32px;
    padding: 6px 12px;
  }
}
/* App Store Links and Download Components - BEM Methodology */
/* App store links container */
.app-store-links {
  display: flex;
  gap: var(--space-2);
  margin: var(--space-3) 0;
  flex-wrap: wrap;
}
.app-store-links .btn {
  flex: 1;
  min-width: 120px;
  text-align: center;
  white-space: nowrap;
}
/* App download card styling */
.app-download-card {
  background: var(--bg-card);
  padding: var(--space-4);
  border-radius: var(--radius-lg);
  border: 2px solid var(--border-color);
  text-align: center;
  transition: all var(--transition-base);
  position: relative;
  overflow: hidden;
}
.app-download-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, 
    var(--accent-primary), 
    var(--color-primary-600)
  );
  transform: scaleX(0);
  transition: transform 0.3s ease;
}
.app-download-card:hover::before {
  transform: scaleX(1);
}
.app-download-card:hover {
  border-color: var(--accent-primary);
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}
.app-download-card h4 {
  color: var(--accent-primary);
  font-size: var(--font-size-lg);
  margin-bottom: var(--space-2);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
}
.app-download-card p {
  color: var(--text-secondary);
  font-size: var(--font-size-sm);
  margin-bottom: var(--space-3);
}
.app-download-card .btn {
  width: 100%;
  font-weight: var(--font-weight-bold);
}
/* Special spacing for nested app download cards */
.card--app-download {
  margin-top: var(--space-4);
}
/* Mobile optimizations */
@media (max-width: 768px) {
  .app-store-links {
    flex-direction: column;
    gap: var(--space-2);
  }

  .app-store-links .btn {
    width: 100%;
    flex: none;
  }

  .app-download-card {
    margin-bottom: var(--space-4);
  }
}
@media (max-width: 480px) {
  .app-download-card {
    padding: var(--space-3);
  }
}
/* Import Utilities */
/* Spacing Utilities - BEM Methodology */
/* Margin utilities */
.m-0 { margin: 0; }
.mt-4 { margin-top: var(--space-4); }
.mb-4 { margin-bottom: var(--space-4); }
.mb-6 { margin-bottom: var(--space-6); }
.mx-auto { margin-left: auto; margin-right: auto; }
/* Padding utilities */
.p-0 { padding: 0; }
/* Display utilities */
.block { display: block; }
.flex { display: flex; }
.grid { display: grid; }
.hidden { display: none; }
/* Position utilities */
.relative { position: relative; }
/* Width and height utilities */
.w-full { width: 100%; }
.h-full { height: 100%; }
/* Mobile responsive spacing */
@media (max-width: 768px) {
  .md\:mb-4 { margin-bottom: var(--space-4); }
  .md\:p-4 { padding: var(--space-4); }
}
@media (max-width: 480px) {
  .sm\:p-3 { padding: var(--space-3); }
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1aWxkLmNzcyIsImJhc2UvcmVzZXQuY3NzIiwiYmFzZS92YXJpYWJsZXMuY3NzIiwiYmFzZS90eXBvZ3JhcGh5LmNzcyIsImxheW91dC9ncmlkLmNzcyIsImxheW91dC9oZWFkZXIuY3NzIiwibGF5b3V0L2Zvb3Rlci5jc3MiLCJjb21wb25lbnRzL2J1dHRvbnMuY3NzIiwiY29tcG9uZW50cy9jYXJkcy5jc3MiLCJjb21wb25lbnRzL25hdmlnYXRpb24uY3NzIiwiY29tcG9uZW50cy9iYW5uZXIuY3NzIiwiY29tcG9uZW50cy9hcHAtc3RvcmUuY3NzIiwidXRpbGl0aWVzL3NwYWNpbmcuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCx3RUFBd0U7QUFFeEUsdUJBQXVCO0FDSHZCLDhCQUE4QjtBQUU5Qjs7O0VBR0UsU0FBUztFQUNULFVBQVU7RUFDVixzQkFBc0I7QUFDeEI7QUFFQTtFQUNFLGVBQWU7RUFDZix1QkFBdUI7QUFDekI7QUFFQTtFQUNFLDREQUE0RDtFQUM1RCxnQkFBZ0I7RUFDaEIsMEJBQTBCO0VBQzFCLDZCQUE2QjtFQUM3Qix1REFBdUQ7RUFDdkQsbUNBQW1DO0VBQ25DLGtDQUFrQztBQUNwQztBQUVBLCtCQUErQjtBQUMvQjs7RUFFRSxnQkFBZ0I7QUFDbEI7QUFFQSwrQkFBK0I7QUFDL0I7RUFDRSxxQkFBcUI7RUFDckIsY0FBYztBQUNoQjtBQUVBLDBCQUEwQjtBQUMxQjtFQUNFLGVBQWU7RUFDZixZQUFZO0VBQ1osY0FBYztBQUNoQjtBQUVBLGtCQUFrQjtBQUNsQjs7OztFQUlFLGFBQWE7RUFDYixjQUFjO0FBQ2hCO0FBRUE7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLFlBQVk7QUFDZDtBQUVBLG1DQUFtQztBQUNuQztFQUNFLHdDQUF3QztFQUN4QyxtQkFBbUI7QUFDckI7QUFFQSxpQ0FBaUM7QUFDakM7RUFDRSxrQkFBa0I7RUFDbEIsVUFBVTtFQUNWLFNBQVM7RUFDVCxpQ0FBaUM7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QUFFQSxrREFBa0Q7QUFDbEQ7RUFDRSwwQkFBMEI7QUFDNUI7QUFFQSx5QkFBeUI7QUFDekI7RUFDRTtJQUNFLHNCQUFzQjtJQUN0QixtQkFBbUI7RUFDckI7O0VBRUE7SUFDRSxXQUFXO0lBQ1gsVUFBVTtFQUNaOztFQUVBO0lBQ0UsNkJBQTZCO0VBQy9CO0FBQ0Y7QUFFQTtFQUNFO0lBQ0UsdUJBQXVCO0VBQ3pCO0FBQ0Y7QVhqRkEscUJBQXFCO0FZcEJyQix3Q0FBd0M7QUFFeEMscUJBQXFCO0FBQ3JCLE9BQU8sU0FBUyxFQUFFO0FBQ2xCLFFBQVEsMEJBQTBCLEVBQUU7QUFDcEMsUUFBUSw2QkFBNkIsRUFBRTtBQUN2QyxRQUFRLDZCQUE2QixFQUFFO0FBQ3ZDLFdBQVcsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUU7QUFFbEQsc0JBQXNCO0FBQ3RCLE9BQU8sVUFBVSxFQUFFO0FBQ25CLHNCQUFzQjtBQUN0QixTQUFTLGNBQWMsRUFBRTtBQUN6QixRQUFRLGFBQWEsRUFBRTtBQUN2QixRQUFRLGFBQWEsRUFBRTtBQUN2QixVQUFVLGFBQWEsRUFBRTtBQUV6Qix1QkFBdUI7QUFDdkIsWUFBWSxrQkFBa0IsRUFBRTtBQUVoQywrQkFBK0I7QUFDL0IsVUFBVSxXQUFXLEVBQUU7QUFDdkIsVUFBVSxZQUFZLEVBQUU7QUFFeEIsOEJBQThCO0FBQzlCO0VBQ0UsWUFBWSw2QkFBNkIsRUFBRTtFQUMzQyxXQUFXLHVCQUF1QixFQUFFO0FBQ3RDO0FBRUE7RUFDRSxXQUFXLHVCQUF1QixFQUFFO0FBQ3RDIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogSW5zaWdodHNIaXZlIEJ1aWxkIENTUyAtIFNvdXJjZSBmaWxlIHdpdGggaW1wb3J0cyAqL1xuLyogVGhpcyBmaWxlIGNvbnRhaW5zIEBpbXBvcnQgc3RhdGVtZW50cyBhbmQgZ2V0cyBjb21waWxlZCB0byBtYWluLmNzcyAqL1xuXG4vKiBJbXBvcnQgQmFzZSBTdHlsZXMgKi9cbkBpbXBvcnQgJ2Jhc2UvcmVzZXQuY3NzJztcbkBpbXBvcnQgJ2Jhc2UvdmFyaWFibGVzLmNzcyc7XG5AaW1wb3J0ICdiYXNlL3R5cG9ncmFwaHkuY3NzJztcblxuLyogSW1wb3J0IExheW91dCBTdHlsZXMgKi9cbkBpbXBvcnQgJ2xheW91dC9ncmlkLmNzcyc7XG5AaW1wb3J0ICdsYXlvdXQvaGVhZGVyLmNzcyc7XG5AaW1wb3J0ICdsYXlvdXQvZm9vdGVyLmNzcyc7XG5cbi8qIEltcG9ydCBDb21wb25lbnQgU3R5bGVzICovXG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbnMuY3NzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FyZHMuY3NzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbmF2aWdhdGlvbi5jc3MnO1xuQGltcG9ydCAnY29tcG9uZW50cy9iYW5uZXIuY3NzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYXBwLXN0b3JlLmNzcyc7XG5cbi8qIEltcG9ydCBVdGlsaXRpZXMgKi9cbkBpbXBvcnQgJ3V0aWxpdGllcy9zcGFjaW5nLmNzcyc7IiwiLyogQ1NTIFJlc2V0IGFuZCBCYXNlIFN0eWxlcyAqL1xuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbmh0bWwge1xuICBmb250LXNpemU6IDEwMCU7XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIFRhaG9tYSwgR2VuZXZhLCBWZXJkYW5hLCBzYW5zLXNlcmlmO1xuICBsaW5lLWhlaWdodDogMS42O1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2U7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4vKiBSZW1vdmUgZGVmYXVsdCBsaXN0IHN0eWxlcyAqL1xudWwsXG5vbCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi8qIFJlbW92ZSBkZWZhdWx0IGxpbmsgc3R5bGVzICovXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLyogSW1wcm92ZSBpbWFnZSBkaXNwbGF5ICovXG5pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qIEZvcm0gZWxlbWVudHMgKi9cbmJ1dHRvbixcbmlucHV0LFxudGV4dGFyZWEsXG5zZWxlY3Qge1xuICBmb250OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuYnV0dG9uIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi8qIEZvY3VzIHN0eWxlcyBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuOmZvY3VzIHtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogU2tpcCBsaW5rcyBmb3IgYWNjZXNzaWJpbGl0eSAqL1xuLnNraXAtbGluayB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNDBweDtcbiAgbGVmdDogNnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogOHB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgei1pbmRleDogOTk5OTtcbn1cblxuLnNraXAtbGluazpmb2N1cyB7XG4gIHRvcDogNnB4O1xufVxuXG4vKiBTY3JlZW4gcmVhZGVyIG9ubHkgdGV4dCAqL1xuLnZpc3VhbGx5LWhpZGRlbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xufSIsIi8qIENTUyBDdXN0b20gUHJvcGVydGllcyAoVmFyaWFibGVzKSAqL1xuXG46cm9vdCB7XG4gIC8qIExpZ2h0IG1vZGUgY29sb3JzICovXG4gIC0tY29sb3ItcHJpbWFyeS01MDogI2Y5ZjdmYjtcbiAgLS1jb2xvci1wcmltYXJ5LTEwMDogI2Y0ZTFmNTtcbiAgLS1jb2xvci1wcmltYXJ5LTIwMDogI2Q2Y2RlYTtcbiAgLS1jb2xvci1wcmltYXJ5LTUwMDogI2EzNTliYztcbiAgLS1jb2xvci1wcmltYXJ5LTYwMDogIzlkNGVkZDtcbiAgLS1jb2xvci1wcmltYXJ5LTkwMDogIzFlMWUxZTtcblxuICAtLWNvbG9yLW5ldXRyYWwtNTA6ICNmZmZmZmY7XG4gIC0tY29sb3ItbmV1dHJhbC0xMDA6ICNmOWY3ZmI7XG4gIC0tY29sb3ItbmV1dHJhbC0yMDA6ICNmNGUxZjU7XG4gIC0tY29sb3ItbmV1dHJhbC02MDA6ICM2NjY2NjY7XG4gIC0tY29sb3ItbmV1dHJhbC03MDA6ICMzMzMzMzM7XG4gIC0tY29sb3ItbmV1dHJhbC05MDA6ICMxZTFlMWU7XG5cbiAgLyogRGFyayBtb2RlIGNvbG9ycyAtIHdpbGwgYmUgb3ZlcnJpZGRlbiAqL1xuICAtLWJnLXByaW1hcnk6IHZhcigtLWNvbG9yLW5ldXRyYWwtMTAwKTtcbiAgLS1iZy1zZWNvbmRhcnk6IHZhcigtLWNvbG9yLW5ldXRyYWwtNTApO1xuICAtLWJnLWNhcmQ6IHZhcigtLWNvbG9yLXByaW1hcnktMTAwKTtcbiAgLS10ZXh0LXByaW1hcnk6IHZhcigtLWNvbG9yLW5ldXRyYWwtOTAwKTtcbiAgLS10ZXh0LXNlY29uZGFyeTogdmFyKC0tY29sb3ItbmV1dHJhbC02MDApO1xuICAtLWFjY2VudC1wcmltYXJ5OiB2YXIoLS1jb2xvci1wcmltYXJ5LTUwMCk7XG4gIC0tYWNjZW50LXNlY29uZGFyeTogdmFyKC0tY29sb3ItcHJpbWFyeS0yMDApO1xuICAtLWJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAtLXNoYWRvdy1saWdodDogcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAtLXNoYWRvdy1tZWRpdW06IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIC0tbmF2LWJnOiB2YXIoLS1jb2xvci1uZXV0cmFsLTUwKTtcbiAgLS1mb290ZXItYmc6IHZhcigtLWNvbG9yLXByaW1hcnktNTAwKTtcbiAgLS1mb290ZXItdGV4dDogdmFyKC0tY29sb3ItbmV1dHJhbC01MCk7XG5cbiAgLyogVHlwb2dyYXBoeSBTY2FsZSAqL1xuICAtLWZvbnQtc2l6ZS14czogMC43NXJlbTsgICAgICAvKiAxMnB4ICovXG4gIC0tZm9udC1zaXplLXNtOiAwLjg3NXJlbTsgICAgIC8qIDE0cHggKi9cbiAgLS1mb250LXNpemUtYmFzZTogMXJlbTsgICAgICAgLyogMTZweCAqL1xuICAtLWZvbnQtc2l6ZS1sZzogMS4xMjVyZW07ICAgICAvKiAxOHB4ICovXG4gIC0tZm9udC1zaXplLXhsOiAxLjI1cmVtOyAgICAgIC8qIDIwcHggKi9cbiAgLS1mb250LXNpemUtMnhsOiAxLjVyZW07ICAgICAgLyogMjRweCAqL1xuICAtLWZvbnQtc2l6ZS0zeGw6IDEuODc1cmVtOyAgICAvKiAzMHB4ICovXG4gIC0tZm9udC1zaXplLTR4bDogMi4yNXJlbTsgICAgIC8qIDM2cHggKi9cbiAgLS1mb250LXNpemUtNXhsOiAzcmVtOyAgICAgICAgLyogNDhweCAqL1xuXG4gIC8qIEZvbnQgV2VpZ2h0cyAqL1xuICAtLWZvbnQtd2VpZ2h0LW5vcm1hbDogNDAwO1xuICAtLWZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xuICAtLWZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4gIC0tZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuXG4gIC8qIExpbmUgSGVpZ2h0cyAqL1xuICAtLWxpbmUtaGVpZ2h0LXRpZ2h0OiAxLjI1O1xuICAtLWxpbmUtaGVpZ2h0LW5vcm1hbDogMS41O1xuICAtLWxpbmUtaGVpZ2h0LXJlbGF4ZWQ6IDEuNzU7XG5cbiAgLyogU3BhY2luZyBTY2FsZSAqL1xuICAtLXNwYWNlLTE6IDAuMjVyZW07ICAgIC8qIDRweCAqL1xuICAtLXNwYWNlLTI6IDAuNXJlbTsgICAgIC8qIDhweCAqL1xuICAtLXNwYWNlLTM6IDAuNzVyZW07ICAgIC8qIDEycHggKi9cbiAgLS1zcGFjZS00OiAxcmVtOyAgICAgICAvKiAxNnB4ICovXG4gIC0tc3BhY2UtNTogMS4yNXJlbTsgICAgLyogMjBweCAqL1xuICAtLXNwYWNlLTY6IDEuNXJlbTsgICAgIC8qIDI0cHggKi9cbiAgLS1zcGFjZS04OiAycmVtOyAgICAgICAvKiAzMnB4ICovXG4gIC0tc3BhY2UtMTA6IDIuNXJlbTsgICAgLyogNDBweCAqL1xuICAtLXNwYWNlLTEyOiAzcmVtOyAgICAgIC8qIDQ4cHggKi9cbiAgLS1zcGFjZS0xNjogNHJlbTsgICAgICAvKiA2NHB4ICovXG4gIC0tc3BhY2UtMjA6IDVyZW07ICAgICAgLyogODBweCAqL1xuXG4gIC8qIEJvcmRlciBSYWRpdXMgKi9cbiAgLS1yYWRpdXMtc206IDAuMjVyZW07ICAgLyogNHB4ICovXG4gIC0tcmFkaXVzLW1kOiAwLjVyZW07ICAgIC8qIDhweCAqL1xuICAtLXJhZGl1cy1sZzogMC43NXJlbTsgICAvKiAxMnB4ICovXG4gIC0tcmFkaXVzLXhsOiAxcmVtOyAgICAgIC8qIDE2cHggKi9cbiAgLS1yYWRpdXMtZnVsbDogOTk5OXB4O1xuXG4gIC8qIFNoYWRvd3MgKi9cbiAgLS1zaGFkb3ctc206IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gIC0tc2hhZG93LWxnOiAwIDEwcHggMTVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCA0cHggNnB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgLS1zaGFkb3cteGw6IDAgMjBweCAyNXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDEwcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG5cbiAgLyogVHJhbnNpdGlvbnMgKi9cbiAgLS10cmFuc2l0aW9uLWZhc3Q6IDE1MG1zIGVhc2UtaW4tb3V0O1xuICAtLXRyYW5zaXRpb24tYmFzZTogMzAwbXMgZWFzZS1pbi1vdXQ7XG4gIC0tdHJhbnNpdGlvbi1zbG93OiA1MDBtcyBlYXNlLWluLW91dDtcblxuICAvKiBCcmVha3BvaW50cyAoZm9yIHJlZmVyZW5jZSBpbiBKUykgKi9cbiAgLS1icmVha3BvaW50LXNtOiA2NDBweDtcbiAgLS1icmVha3BvaW50LW1kOiA3NjhweDtcbiAgLS1icmVha3BvaW50LWxnOiAxMDI0cHg7XG4gIC0tYnJlYWtwb2ludC14bDogMTI4MHB4O1xuXG4gIC8qIFotaW5kZXggc2NhbGUgKi9cbiAgLS16LWRyb3Bkb3duOiAxMDAwO1xuICAtLXotc3RpY2t5OiAxMDIwO1xuICAtLXotZml4ZWQ6IDEwMzA7XG4gIC0tei1tb2RhbC1iYWNrZHJvcDogMTA0MDtcbiAgLS16LW1vZGFsOiAxMDUwO1xuICAtLXotcG9wb3ZlcjogMTA2MDtcbiAgLS16LXRvb2x0aXA6IDEwNzA7XG4gIC0tei10b2FzdDogMTA4MDtcbn1cblxuLyogRGFyayBtb2RlIG92ZXJyaWRlcyAqL1xuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIHtcbiAgLS1iZy1wcmltYXJ5OiAjMWExYTFkO1xuICAtLWJnLXNlY29uZGFyeTogIzJkMmQyZDtcbiAgLS1iZy1jYXJkOiAjM2EyZjNmO1xuICAtLXRleHQtcHJpbWFyeTogI2U4ZGZmMjtcbiAgLS10ZXh0LXNlY29uZGFyeTogI2NjY2NjYztcbiAgLS1hY2NlbnQtcHJpbWFyeTogI2EzNTliYztcbiAgLS1hY2NlbnQtc2Vjb25kYXJ5OiAjZjJlNmZhO1xuICAtLWJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAtLXNoYWRvdy1saWdodDogcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAtLXNoYWRvdy1tZWRpdW06IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgLS1uYXYtYmc6ICMyZDJkMmQ7XG4gIC0tZm9vdGVyLWJnOiAjMWExYTFhO1xuICAtLWZvb3Rlci10ZXh0OiAjZmZmZmZmO1xufSIsIi8qIFR5cG9ncmFwaHkgU3R5bGVzICovXG5cbi8qIEhlYWRpbmdzICovXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC10aWdodCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbn1cblxuaDEge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS00eGwpO1xufVxuXG5oMiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTN4bCk7XG59XG5cbmgzIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbn1cblxuaDQge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG59XG5cbmg1IHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xufVxuXG5oNiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xufVxuXG4vKiBQYXJhZ3JhcGhzICovXG5wIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1yZWxheGVkKTtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG59XG5cbi8qIExpbmtzICovXG5hIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuYTpob3ZlcixcbmE6Zm9jdXMge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLyogTGlzdHMgKi9cbnVsLFxub2wge1xuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNlLTYpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbn1cblxudWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG59XG5cbm9sIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBkZWNpbWFsO1xufVxuXG5saSB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xuICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKTtcbn1cblxuLyogU3Ryb25nIGFuZCBlbXBoYXNpcyAqL1xuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbn1cblxuZW0ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qIENvZGUgYW5kIHByZWZvcm1hdHRlZCB0ZXh0ICovXG5jb2RlIHtcbiAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEpIHZhcigtLXNwYWNlLTIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG59XG5cbnByZSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbnByZSBjb2RlIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLyogQmxvY2txdW90ZXMgKi9cbmJsb2NrcXVvdGUge1xuICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjZS00KTtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS02KSAwO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8qIFNtYWxsIHRleHQgKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4vKiBUZXh0IHV0aWxpdGllcyAqL1xuLnRleHQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udGV4dC1sZWZ0IHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLnRleHQtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnRleHQtcHJpbWFyeSB7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xufVxuXG4udGV4dC1zZWNvbmRhcnkge1xuICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4udGV4dC1hY2NlbnQge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xufVxuXG4uZm9udC1ib2xkIHtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xufVxuXG4uZm9udC1tZWRpdW0ge1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbn1cblxuLmZvbnQtbm9ybWFsIHtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCk7XG59XG5cbi8qIFJlc3BvbnNpdmUgdHlwb2dyYXBoeSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIGgxIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0zeGwpO1xuICB9XG4gIFxuICBoMiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbiAgfVxuICBcbiAgaDMge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgfVxuICBcbiAgYm9keSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICBoMSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbiAgfVxuICBcbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgfVxufSIsIi8qIEdyaWQgTGF5b3V0IC0gQkVNIE1ldGhvZG9sb2d5ICovXG5cbi8qIENvbnRhaW5lciAqL1xuLmNvbnRhaW5lciB7XG4gIG1heC13aWR0aDogMTIwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS01KTtcbn1cblxuLyogQmFzZSBncmlkICovXG4uZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4vKiBHcmlkIGl0ZW1zIHNob3VsZCBmaWxsIHRoZSBmdWxsIGhlaWdodCAqL1xuLmdyaWQgPiAqIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4vKiBUd28gY29sdW1uIGdyaWQgKi9cbi5ncmlkLTIge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG59XG5cbi8qIFRocmVlIGNvbHVtbiBncmlkICovXG4uZ3JpZC0zIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmcjtcbn1cblxuLyogRm91ciBjb2x1bW4gZ3JpZCAqL1xuLmdyaWQtNCB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7XG59XG5cbi8qIEF1dG8tZml0IGdyaWQgZm9yIHJlc3BvbnNpdmUgY2FyZHMgKi9cbi5ncmlkLWF1dG8ge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTtcbn1cblxuLyogQ2FyZCBib2R5IHNob3VsZCBleHBhbmQgdG8gZmlsbCBhdmFpbGFibGUgc3BhY2UgKi9cbi5ncmlkIC5jYXJkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uZ3JpZCAuY2FyZCAuY2FyZF9fYm9keSB7XG4gIGZsZXg6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLyogVGVhbSBtZW1iZXIgY2FyZHMgc3BlY2lmaWMgbGF5b3V0ICovXG4uZ3JpZCAuY2FyZC0tdGVhbS1tZW1iZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5ncmlkIC5jYXJkLS10ZWFtLW1lbWJlciAudGVhbS1tZW1iZXJfX2JpbyB7XG4gIGZsZXg6IDE7XG59XG5cbi8qIEdyaWQgc3BhY2luZyB3aXRoaW4gY2FyZCBzZWN0aW9ucyAtIEZJWCBUSEUgUEFERElORyBJU1NVRSAqL1xuLmNhcmQtLXNlY3Rpb24gLmdyaWQsXG4uY2FyZC0tc2VjdGlvbiAuZ3JpZC0yLFxuLmNhcmQtLXNlY3Rpb24gLmdyaWQtMyxcbi5jYXJkLS1zZWN0aW9uIC5ncmlkLTQge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogUmVtb3ZlIGJvdHRvbSBtYXJnaW4gZnJvbSBsYXN0IGdyaWQgaW4gYSBjYXJkIHNlY3Rpb24gKi9cbi5jYXJkLS1zZWN0aW9uIC5ncmlkOmxhc3QtY2hpbGQsXG4uY2FyZC0tc2VjdGlvbiAuZ3JpZC0yOmxhc3QtY2hpbGQsXG4uY2FyZC0tc2VjdGlvbiAuZ3JpZC0zOmxhc3QtY2hpbGQsXG4uY2FyZC0tc2VjdGlvbiAuZ3JpZC00Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBBZGRpdGlvbmFsIHNwYWNpbmcgYmV0d2VlbiBjb25zZWN1dGl2ZSBncmlkcyAqL1xuLmNhcmQtLXNlY3Rpb24gLmdyaWQgKyAuZ3JpZCxcbi5jYXJkLS1zZWN0aW9uIC5ncmlkLTIgKyAuZ3JpZC0yLFxuLmNhcmQtLXNlY3Rpb24gLmdyaWQtMyArIC5ncmlkLTMsXG4uY2FyZC0tc2VjdGlvbiAuZ3JpZC00ICsgLmdyaWQtNCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTYpO1xufVxuXG4vKiBSZXNwb25zaXZlIGdyaWQgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZ3JpZC0yLFxuICAuZ3JpZC0zLFxuICAuZ3JpZC00IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxuICBcbiAgLmdyaWQge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIH1cblxuICAvKiBBZGp1c3QgZ3JpZCBzcGFjaW5nIG9uIG1vYmlsZSAqL1xuICAuY2FyZC0tc2VjdGlvbiAuZ3JpZCxcbiAgLmNhcmQtLXNlY3Rpb24gLmdyaWQtMixcbiAgLmNhcmQtLXNlY3Rpb24gLmdyaWQtMyxcbiAgLmNhcmQtLXNlY3Rpb24gLmdyaWQtNCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIH1cblxuICAuY2FyZC0tc2VjdGlvbiAuZ3JpZCArIC5ncmlkLFxuICAuY2FyZC0tc2VjdGlvbiAuZ3JpZC0yICsgLmdyaWQtMixcbiAgLmNhcmQtLXNlY3Rpb24gLmdyaWQtMyArIC5ncmlkLTMsXG4gIC5jYXJkLS1zZWN0aW9uIC5ncmlkLTQgKyAuZ3JpZC00IHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgLmdyaWQtMyxcbiAgLmdyaWQtNCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICB9XG59XG5cbi8qIEZsZXhib3ggdXRpbGl0aWVzICovXG4uZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5mbGV4LXdyYXAge1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5mbGV4LWNvbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5mbGV4LXJvdyB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbi5pdGVtcy1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaXRlbXMtc3RhcnQge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cblxuLml0ZW1zLWVuZCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cblxuLml0ZW1zLXN0cmV0Y2gge1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuLmp1c3RpZnktY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5qdXN0aWZ5LWJldHdlZW4ge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5qdXN0aWZ5LWFyb3VuZCB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuXG4uanVzdGlmeS1zdGFydCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cblxuLmp1c3RpZnktZW5kIHtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cblxuLyogR3JpZCBhbGlnbm1lbnQgdXRpbGl0aWVzICovXG4ucGxhY2UtaXRlbXMtY2VudGVyIHtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbn1cblxuLnBsYWNlLWl0ZW1zLXN0YXJ0IHtcbiAgcGxhY2UtaXRlbXM6IHN0YXJ0O1xufVxuXG4ucGxhY2UtY29udGVudC1jZW50ZXIge1xuICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIEdyaWQgYXJlYSB1dGlsaXRpZXMgKi9cbi5jb2wtc3Bhbi0xIHtcbiAgZ3JpZC1jb2x1bW46IHNwYW4gMTtcbn1cblxuLmNvbC1zcGFuLTIge1xuICBncmlkLWNvbHVtbjogc3BhbiAyO1xufVxuXG4uY29sLXNwYW4tMyB7XG4gIGdyaWQtY29sdW1uOiBzcGFuIDM7XG59XG5cbi5jb2wtc3Bhbi1mdWxsIHtcbiAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbn1cblxuLnJvdy1zcGFuLTEge1xuICBncmlkLXJvdzogc3BhbiAxO1xufVxuXG4ucm93LXNwYW4tMiB7XG4gIGdyaWQtcm93OiBzcGFuIDI7XG59XG5cbi5yb3ctc3Bhbi0zIHtcbiAgZ3JpZC1yb3c6IHNwYW4gMztcbn1cblxuLyogR3JpZCBnYXAgdmFyaWF0aW9ucyAqL1xuLmdhcC0yIHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmdhcC00IHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmdhcC02IHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmdhcC04IHtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogUm93IGFuZCBjb2x1bW4gZ2FwcyAqL1xuLmdhcC14LTIge1xuICBjb2x1bW4tZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmdhcC14LTQge1xuICBjb2x1bW4tZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmdhcC14LTYge1xuICBjb2x1bW4tZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmdhcC15LTIge1xuICByb3ctZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmdhcC15LTQge1xuICByb3ctZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmdhcC15LTYge1xuICByb3ctZ2FwOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogQXV0by1ncmlkIHJlc3BvbnNpdmUgKi9cbi5hdXRvLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG59XG5cbi5hdXRvLWdyaWQgPiAqIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uYXV0by1ncmlkLXNtIHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG59XG5cbi5hdXRvLWdyaWQtbGcge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTtcbn0iLCIvKiBIZWFkZXIgTGF5b3V0IC0gQkVNIE1ldGhvZG9sb2d5ICovXG5cbi5oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hY2NlbnQtcHJpbWFyeSkgMCUsIHZhcigtLWFjY2VudC1zZWNvbmRhcnkpIDEwMCUpO1xuICBjb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBIZWFkZXIgYmFja2dyb3VuZCBwYXR0ZXJuL3RleHR1cmUgKi9cbi5oZWFkZXI6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxMDAgMTAwXCI+PGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIyXCIgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC4xKVwiLz48L3N2Zz4nKSByZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogNTBweCA1MHB4O1xuICBvcGFjaXR5OiAwLjM7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uaGVhZGVyX19jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtNSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cblxuLyogTG9nby9CcmFuZCAqL1xuLmhlYWRlcl9fbG9nbyB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTV4bCk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIHRleHQtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4vKiBUYWdsaW5lICovXG4uaGVhZGVyX190YWdsaW5lIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbiAgb3BhY2l0eTogMC45O1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG59XG5cbi8qIEhlcm8gZGVzY3JpcHRpb24gKi9cbi5oZWFkZXJfX2Rlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICBtYXgtd2lkdGg6IDgwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgb3BhY2l0eTogMC45NTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXJlbGF4ZWQpO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLyogSGVhZGVyIHZhcmlhbnRzICovXG4uaGVhZGVyLS1jb21wYWN0IHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNikgMDtcbn1cblxuLmhlYWRlci0tY29tcGFjdCAuaGVhZGVyX19sb2dvIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtNHhsKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMSk7XG59XG5cbi5oZWFkZXItLWNvbXBhY3QgLmhlYWRlcl9fdGFnbGluZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5oZWFkZXItLWNvbXBhY3QgLmhlYWRlcl9fZGVzY3JpcHRpb24ge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbn1cblxuLyogUGFnZS1zcGVjaWZpYyBoZWFkZXIgc3R5bGluZyAqL1xuLmhlYWRlci0taG9tZSB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEyKSAwO1xufVxuXG4uaGVhZGVyLS1hYm91dCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLXByaW1hcnktNjAwKSAwJSwgdmFyKC0tYWNjZW50LXByaW1hcnkpIDEwMCUpO1xufVxuXG4uaGVhZGVyLS1wcm9kdWN0cyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFjY2VudC1wcmltYXJ5KSAwJSwgdmFyKC0tY29sb3ItcHJpbWFyeS02MDApIDEwMCUpO1xufVxuXG4uaGVhZGVyLS10ZWFtIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY29sb3ItcHJpbWFyeS01MDApIDAlLCB2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCkgMTAwJSk7XG59XG5cbi5oZWFkZXItLXRlY2hub2xvZ3kge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCkgMCUsIHZhcigtLWNvbG9yLXByaW1hcnktNTAwKSAxMDAlKTtcbn1cblxuLmhlYWRlci0tY29udGFjdCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFjY2VudC1zZWNvbmRhcnkpIDAlLCB2YXIoLS1hY2NlbnQtcHJpbWFyeSkgMTAwJSk7XG59XG5cbi8qIEhlYWRlciBDVEEgYnV0dG9ucyAqL1xuLmhlYWRlcl9fY3RhIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG59XG5cbi5oZWFkZXJfX2N0YS1idXR0b24ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS02KTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAwIHZhcigtLXNwYWNlLTIpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG59XG5cbi5oZWFkZXJfX2N0YS1idXR0b246aG92ZXIsXG4uaGVhZGVyX19jdGEtYnV0dG9uOmZvY3VzIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLmhlYWRlcl9fY3RhLWJ1dHRvbi0tcHJpbWFyeSB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xufVxuXG4uaGVhZGVyX19jdGEtYnV0dG9uLS1wcmltYXJ5OmhvdmVyLFxuLmhlYWRlcl9fY3RhLWJ1dHRvbi0tcHJpbWFyeTpmb2N1cyB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbn1cblxuLyogUmVzcG9uc2l2ZSBkZXNpZ24gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuaGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KSAwO1xuICB9XG5cbiAgLmhlYWRlcl9fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTQpO1xuICB9XG5cbiAgLmhlYWRlcl9fbG9nbyB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtNHhsKTtcbiAgfVxuXG4gIC5oZWFkZXJfX3RhZ2xpbmUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgfVxuXG4gIC5oZWFkZXJfX2Rlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTQpO1xuICB9XG5cbiAgLmhlYWRlci0taG9tZSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNikgMDtcbiAgfVxuXG4gIC5oZWFkZXJfX2N0YSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG4gIH1cblxuICAuaGVhZGVyX19jdGEtYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IHZhcigtLXNwYWNlLTIpIDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAuaGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSAwO1xuICB9XG5cbiAgLmhlYWRlcl9fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTMpO1xuICB9XG5cbiAgLmhlYWRlcl9fbG9nbyB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtM3hsKTtcbiAgfVxuXG4gIC5oZWFkZXJfX3RhZ2xpbmUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICB9XG5cbiAgLmhlYWRlcl9fZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgfVxuXG4gIC5oZWFkZXItLWhvbWUge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpIDA7XG4gIH1cbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmhlYWRlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMyZDJkMmQgMCUsIHZhcigtLWFjY2VudC1wcmltYXJ5KSAxMDAlKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5oZWFkZXJfX2N0YS1idXR0b24ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmhlYWRlcl9fY3RhLWJ1dHRvbjpob3ZlcixcbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuaGVhZGVyX19jdGEtYnV0dG9uOmZvY3VzIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbn1cblxuLyogQW5pbWF0aW9uIGZvciBoZWFkZXIgZWxlbWVudHMgKi9cbkBrZXlmcmFtZXMgZmFkZUluVXAge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuLmhlYWRlcl9fbG9nbyxcbi5oZWFkZXJfX3RhZ2xpbmUsXG4uaGVhZGVyX19kZXNjcmlwdGlvbiB7XG4gIGFuaW1hdGlvbjogZmFkZUluVXAgMC44cyBlYXNlLW91dDtcbn1cblxuLmhlYWRlcl9fdGFnbGluZSB7XG4gIGFuaW1hdGlvbi1kZWxheTogMC4ycztcbn1cblxuLmhlYWRlcl9fZGVzY3JpcHRpb24ge1xuICBhbmltYXRpb24tZGVsYXk6IDAuNHM7XG59XG5cbi8qIERpc2FibGUgYW5pbWF0aW9ucyBmb3IgdXNlcnMgd2hvIHByZWZlciByZWR1Y2VkIG1vdGlvbiAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmhlYWRlcl9fbG9nbyxcbiAgLmhlYWRlcl9fdGFnbGluZSxcbiAgLmhlYWRlcl9fZGVzY3JpcHRpb24ge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxufSIsIi8qIEZvb3RlciBMYXlvdXQgLSBCRU0gTWV0aG9kb2xvZ3kgKi9cblxuLmZvb3RlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWZvb3Rlci1iZyk7XG4gIGNvbG9yOiB2YXIoLS1mb290ZXItdGV4dCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNikgMDtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMTIpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5mb290ZXJfX2NvbnRhaW5lciB7XG4gIG1heC13aWR0aDogMTIwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCB2YXIoLS1zcGFjZS01KTtcbn1cblxuLyogQ29udGFjdCBpbmZvcm1hdGlvbiAqL1xuLmZvb3Rlcl9fY29udGFjdCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG59XG5cbi5mb290ZXJfX2NvbnRhY3QtdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGNvbG9yOiB2YXIoLS1mb290ZXItdGV4dCk7XG59XG5cbi5mb290ZXJfX2NvbnRhY3QtaW5mbyB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXJlbGF4ZWQpO1xufVxuXG4uZm9vdGVyX19jb250YWN0LWluZm8gYSB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtc2Vjb25kYXJ5KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uZm9vdGVyX19jb250YWN0LWluZm8gYTpob3Zlcixcbi5mb290ZXJfX2NvbnRhY3QtaW5mbyBhOmZvY3VzIHtcbiAgY29sb3I6IHdoaXRlO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLyogRm9vdGVyIGJvdHRvbS9sZWdhbCAqL1xuLmZvb3Rlcl9fYm90dG9tIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTYpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG59XG5cbi5mb290ZXJfX2JvdHRvbS1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5mb290ZXJfX2xlZ2FsIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmZvb3Rlcl9fbGVnYWwtbGluayB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtc2Vjb25kYXJ5KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uZm9vdGVyX19sZWdhbC1saW5rOmhvdmVyLFxuLmZvb3Rlcl9fbGVnYWwtbGluazpmb2N1cyB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5mb290ZXJfX2NvcHlyaWdodCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbn1cblxuLyogUmVzcG9uc2l2ZSBkZXNpZ24gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KSAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTYpO1xuICB9XG5cbiAgLmZvb3Rlcl9fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTQpO1xuICB9XG5cbiAgLmZvb3Rlcl9fbGVnYWwge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgfVxuXG4gIC5mb290ZXJfX2JvdHRvbS1jb250ZW50IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAuZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSAwO1xuICB9XG5cbiAgLmZvb3Rlcl9fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTMpO1xuICB9XG5cbiAgLmZvb3Rlcl9fY29udGFjdC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICB9XG59XG5cbi8qIERhcmsgbW9kZSBzcGVjaWZpYyBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5mb290ZXIge1xuICBiYWNrZ3JvdW5kOiAjMWExYTFhO1xufSIsIi8qIEJ1dHRvbiBDb21wb25lbnRzIC0gQkVNIE1ldGhvZG9sb2d5ICovXG5cbi8qIEJhc2UgYnV0dG9uIGNsYXNzICovXG4uYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS02KTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmJ0bjpmb2N1cyB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5idG46ZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjY7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4vKiBCdXR0b24gdmFyaWFudHMgKi9cbi5idG4tLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hY2NlbnQtcHJpbWFyeSksIHZhcigtLWNvbG9yLXByaW1hcnktNjAwKSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMTYzLCA4OSwgMTg4LCAwLjMpO1xufVxuXG4uYnRuLS1wcmltYXJ5OmhvdmVyLFxuLmJ0bi0tcHJpbWFyeTpmb2N1cyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLXByaW1hcnktNjAwKSwgdmFyKC0tYWNjZW50LXByaW1hcnkpKTtcbiAgY29sb3I6ICMyZDJkMmQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDE2MywgODksIDE4OCwgMC40KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uYnRuLS1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zZWNvbmRhcnkpO1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5idG4tLXNlY29uZGFyeTpob3Zlcixcbi5idG4tLXNlY29uZGFyeTpmb2N1cyB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnLWNhcmQpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgY29sb3I6ICMyZDJkMmQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4vKiBCdXR0b24gc2l6ZXMgKi9cbi5idG4tLXNtYWxsIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLmJ0bi0tbGFyZ2Uge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS04KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xufVxuXG4vKiBDVEEgYnV0dG9uICovXG4uYnRuLS1jdGEge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB3aGl0ZSwgcmdiYSgyNTUsMjU1LDI1NSwwLjkpKTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgdmFyKC0tc3BhY2UtOCk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS0yKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC4xKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYnRuLS1jdGE6aG92ZXIsXG4uYnRuLS1jdGE6Zm9jdXMge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjE1KTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsMjU1LDI1NSwxKSwgcmdiYSgyNTUsMjU1LDI1NSwwLjk1KSk7XG4gIGNvbG9yOiAjMmQyZDJkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIFRvcCBDVEEgYnV0dG9uICovXG4uYnRuLS1jdGEtdG9wIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYWNjZW50LXByaW1hcnkpLCB2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCkpO1xuICBjb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTgpO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDE2MywgODksIDE4OCwgMC4zKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5idG4tLWN0YS10b3A6aG92ZXIsXG4uYnRuLS1jdGEtdG9wOmZvY3VzIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAyMHB4IHJnYmEoMTYzLCA4OSwgMTg4LCAwLjQpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCksIHZhcigtLWFjY2VudC1wcmltYXJ5KSk7XG4gIGNvbG9yOiAjMmQyZDJkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIFRoZW1lIHRvZ2dsZSBidXR0b24gKi9cbi5idG4tLXRoZW1lLXRvZ2dsZSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiB2YXIoLS1zcGFjZS01KTtcbiAgcmlnaHQ6IHZhcigtLXNwYWNlLTUpO1xuICB6LWluZGV4OiB2YXIoLS16LWZpeGVkKTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYWNjZW50LXByaW1hcnkpLCB2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCkpO1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICB3aWR0aDogNTBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgxNjMsIDg5LCAxODgsIDAuNCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uYnRuLS10aGVtZS10b2dnbGU6aG92ZXIsXG4uYnRuLS10aGVtZS10b2dnbGU6Zm9jdXMge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKDE1ZGVnKTtcbiAgYm94LXNoYWRvdzogMCA2cHggMjBweCByZ2JhKDE2MywgODksIDE4OCwgMC41KTtcbn1cblxuLyogTWVudSB0b2dnbGUgYnV0dG9uIChoYW1idXJnZXIpICovXG4uYnRuLS1tZW51LXRvZ2dsZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMik7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgei1pbmRleDogdmFyKC0tei1maXhlZCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uYnRuLS1tZW51LXRvZ2dsZTpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi5idG4tLW1lbnUtdG9nZ2xlX19saW5lIHtcbiAgd2lkdGg6IDI1cHg7XG4gIGhlaWdodDogM3B4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICBtYXJnaW46IDNweCAwO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuXG4vKiBIYW1idXJnZXIgbWVudSBhbmltYXRpb24gKi9cbi5idG4tLW1lbnUtdG9nZ2xlLS1hY3RpdmUgLmJ0bi0tbWVudS10b2dnbGVfX2xpbmU6bnRoLWNoaWxkKDEpIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUoLTVweCwgNnB4KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xufVxuXG4uYnRuLS1tZW51LXRvZ2dsZS0tYWN0aXZlIC5idG4tLW1lbnUtdG9nZ2xlX19saW5lOm50aC1jaGlsZCgyKSB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5idG4tLW1lbnUtdG9nZ2xlLS1hY3RpdmUgLmJ0bi0tbWVudS10b2dnbGVfX2xpbmU6bnRoLWNoaWxkKDMpIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZSgtNXB4LCAtNnB4KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xufVxuXG4vKiBCdXR0b24gZ3JvdXBzICovXG4uYnRuLWdyb3VwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uYnRuLWdyb3VwLS1jZW50ZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLyogUmVzcG9uc2l2ZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5idG4tLXRoZW1lLXRvZ2dsZSB7XG4gICAgYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgICByaWdodDogdmFyKC0tc3BhY2UtNCk7XG4gICAgd2lkdGg6IDQ1cHg7XG4gICAgaGVpZ2h0OiA0NXB4O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICB9XG5cbiAgLmJ0bi0tbWVudS10b2dnbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAuYnRuLS1jdGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2UtMikgMDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuXG4gIC5idG4tZ3JvdXAge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cblxuICAuYnRuLWdyb3VwIC5idG4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLyogQmV0dGVyIHRvdWNoIHRhcmdldHMgb24gbW9iaWxlICovXG4gIC5idG4ge1xuICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgdmFyKC0tc3BhY2UtNik7XG4gIH1cblxuICAuYnRuLS1zbWFsbCB7XG4gICAgbWluLWhlaWdodDogMzZweDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmJ0bi0tdGhlbWUtdG9nZ2xlIHtcbiAgICBib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICAgIHJpZ2h0OiB2YXIoLS1zcGFjZS0zKTtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICB9XG5cbiAgLmJ0bi0tY3RhIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKSB2YXIoLS1zcGFjZS00KTtcbiAgfVxuXG4gIC5idG4tLWxhcmdlIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS02KTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgfVxuXG4gIC5idG4tLWN0YS10b3Age1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTYpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMjgwcHg7XG4gIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLmJ0bixcbiAgLmJ0bi0tdGhlbWUtdG9nZ2xlLFxuICAuYnRuLS1tZW51LXRvZ2dsZV9fbGluZSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAuYnRuOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn0iLCIvKiBDYXJkIENvbXBvbmVudHMgLSBCRU0gTWV0aG9kb2xvZ3kgKi9cblxuLyogQmFzZSBjYXJkIGNvbXBvbmVudCAqL1xuLmNhcmQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uY2FyZDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLyogQ2FyZCBoZWFkZXIgKi9cbi5jYXJkX19oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmNhcmRfX3RpdGxlIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGZsZXg6IDE7XG59XG5cbi8qIENhcmQgYm9keSAqL1xuLmNhcmRfX2JvZHkge1xuICBmbGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5jYXJkX19ib2R5IHA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jYXJkX19ib2R5IHVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmNhcmRfX2JvZHkgbGkge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmNhcmRfX2JvZHkgbGk6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi8qIENhcmQgZm9vdGVyICovXG4uY2FyZF9fZm9vdGVyIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1hcmdpbi10b3A6IGF1dG87XG59XG5cbi8qIFNlY3Rpb24gSGVhZGVyIHdpdGggQ1RBICovXG4uc2VjdGlvbi1oZWFkZXItd2l0aC1jdGEge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5zZWN0aW9uLWhlYWRlci13aXRoLWN0YSBoMSB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTR4bCk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZmxleDogMTtcbn1cblxuLyogVG9wIENUQSBCdXR0b24gKi9cbi5jYXJkLS1oaWdobGlnaHQge1xuICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS02MDApO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1iZy1jYXJkKSA0NSUsIHZhcigtLWNvbG9yLXByaW1hcnktNTApIDEwMCUpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLyogTWV0cmljIGNhcmRzIGZvciBLUElzICovXG4uY2FyZC0tbWV0cmljIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYmctY2FyZCkgNDUlLCB2YXIoLS1jb2xvci1wcmltYXJ5LTUwKSAxMDAlKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICBib3JkZXItbGVmdDogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhsKTtcbn1cblxuLmNhcmQtLW1ldHJpYzpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXhsKTtcbn1cblxuLm1ldHJpYy1udW1iZXIge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS01eGwpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFjY2VudC1wcmltYXJ5KSwgdmFyKC0tY29sb3ItcHJpbWFyeS02MDApKTtcbiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4ubWV0cmljLWxhYmVsIHtcbiAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xufVxuXG4vKiBUZWFtIG1lbWJlciBjYXJkICovXG4uY2FyZC0tdGVhbS1tZW1iZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnLXNlY29uZGFyeSk7XG4gIGJvcmRlci1sZWZ0OiBub25lO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uY2FyZC0tdGVhbS1tZW1iZXI6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogNHB4O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIFxuICAgIHZhcigtLWFjY2VudC1wcmltYXJ5KSwgXG4gICAgdmFyKC0tY29sb3ItcHJpbWFyeS02MDApLCBcbiAgICB2YXIoLS1hY2NlbnQtc2Vjb25kYXJ5KVxuICApO1xuICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbn1cblxuLmNhcmQtLXRlYW0tbWVtYmVyOmhvdmVyOjpiZWZvcmUge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcbn1cblxuLmNhcmQtLXRlYW0tbWVtYmVyOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteGwpO1xufVxuXG4uY2FyZC0tdGVhbS1tZW1iZXIgLnRlYW0tbWVtYmVyX19waG90byB7XG4gIHdpZHRoOiAxMjBweDtcbiAgaGVpZ2h0OiAxMjBweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICBtYXJnaW46IDAgYXV0byB2YXIoLS1zcGFjZS00KSBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0yeGwpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYWNjZW50LXByaW1hcnkpIDQ1JSwgdmFyKC0tYWNjZW50LXNlY29uZGFyeSkgMTAwJSk7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xufVxuXG4uY2FyZC0tdGVhbS1tZW1iZXI6aG92ZXIgLnRlYW0tbWVtYmVyX19waG90byB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi5jYXJkLS10ZWFtLW1lbWJlciAudGVhbS1tZW1iZXJfX3Bob3RvIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG59XG5cbi5jYXJkLS10ZWFtLW1lbWJlciAudGVhbS1tZW1iZXJfX25hbWUge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmNhcmQtLXRlYW0tbWVtYmVyIC50ZWFtLW1lbWJlcl9fdGl0bGUge1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5jYXJkLS10ZWFtLW1lbWJlciAudGVhbS1tZW1iZXJfX2JpbyB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZsZXg6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4vKiBOZXN0ZWQgY2FyZHMgd2l0aGluIHRlYW0gbWVtYmVyIGNhcmRzICovXG4uY2FyZC0tdGVhbS1tZW1iZXIgLmNhcmQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG59XG5cbi5jYXJkLS10ZWFtLW1lbWJlciAuY2FyZDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmNhcmQtLXRlYW0tbWVtYmVyIC5jYXJkIC5jYXJkX19oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uY2FyZC0tdGVhbS1tZW1iZXIgLmNhcmQgLmNhcmRfX3RpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG59XG5cbi5jYXJkLS10ZWFtLW1lbWJlciAuY2FyZCAuY2FyZF9fYm9keSB7XG4gIGZsZXg6IDE7XG59XG5cbi5jYXJkLS10ZWFtLW1lbWJlciAuY2FyZCAuY2FyZF9fYm9keSBwIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKTtcbn1cblxuLmNhcmQtLXRlYW0tbWVtYmVyIC5jYXJkIC5jYXJkX19ib2R5IHVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmNhcmQtLXRlYW0tbWVtYmVyIC5jYXJkIC5jYXJkX19ib2R5IGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xufVxuXG4vKiBUZXN0aW1vbmlhbCBjYXJkcyAqL1xuLmNhcmQtLXRlc3RpbW9uaWFsIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7XG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tYWNjZW50LXNlY29uZGFyeSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY2FyZC0tdGVzdGltb25pYWw6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcIic7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgbGVmdDogdmFyKC0tc3BhY2UtNCk7XG4gIGZvbnQtc2l6ZTogNHJlbTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgb3BhY2l0eTogMC4yO1xuICBsaW5lLWhlaWdodDogMTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4udGVzdGltb25pYWxfX2F1dGhvciB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLyogQ1RBIHNlY3Rpb24gY2FyZCAqL1xuLmNhcmQtLWN0YSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFjY2VudC1wcmltYXJ5KSA0NSUsIHZhcigtLWFjY2VudC1zZWNvbmRhcnkpIDEwMCUpO1xuICBjb2xvcjogd2hpdGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMTIpIHZhcigtLXNwYWNlLTYpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICBtYXJnaW46IHZhcigtLXNwYWNlLTEyKSAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5jYXJkLS1jdGE6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAxMDAgMTAwXCI+PGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIyXCIgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC4xKVwiLz48L3N2Zz4nKSByZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogNTBweCA1MHB4O1xuICBvcGFjaXR5OiAwLjM7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY2FyZC0tY3RhIGgyLFxuLmNhcmQtLWN0YSBoMyB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cblxuLmNhcmQtLWN0YSBwIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuXG4vKiBTZWN0aW9uIGNhcmQgKG1haW4gY29udGVudCBhcmVhcykgKi9cbi5jYXJkLS1zZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctc2Vjb25kYXJ5KTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICBib3JkZXItbGVmdDogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmNhcmQtLXNlY3Rpb24gaDEsXG4uY2FyZC0tc2VjdGlvbiBoMiB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTN4bCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5jYXJkLS1zZWN0aW9uIGgzIHtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTJ4bCk7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2UtNikgMCB2YXIoLS1zcGFjZS00KSAwO1xufVxuXG4vKiBCYWRnZSBTeXN0ZW0gKi9cbi5jYXJkIC5iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMSkgdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xuICBmbGV4LXNocmluazogMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xufVxuXG4uYmFkZ2UtLXN0YXR1cyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMyOGE3NDUsICMyMGM5OTcpO1xuICBjb2xvcjogd2hpdGU7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDQwLCAxNjcsIDY5LCAwLjMpO1xufVxuXG4uYmFkZ2UtLWJldGEge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZmZjMTA3LCAjZmQ3ZTE0KTtcbiAgY29sb3I6ICMzMzM7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDI1NSwgMTkzLCA3LCAwLjMpO1xufVxuXG4uYmFkZ2UtLWFpIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tYWNjZW50LXByaW1hcnkpLCB2YXIoLS1jb2xvci1wcmltYXJ5LTYwMCkpO1xuICBjb2xvcjogd2hpdGU7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDE2MywgODksIDE4OCwgMC4zKTtcbiAgYW5pbWF0aW9uOiBwdWxzZS1haSAycyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZS1haSB7XG4gIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICA1MCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOyB9XG59XG5cbi8qIEdyaWQtc3BlY2lmaWMgY2FyZCBhZGp1c3RtZW50cyAqL1xuLmdyaWQgLmNhcmQge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIE92ZXJyaWRlIGdyaWQgZXF1YWwgaGVpZ2h0IGZvciB0ZWFtIG1lbWJlciBuZXN0ZWQgY2FyZHMgKi9cbi5ncmlkIC5jYXJkLS10ZWFtLW1lbWJlciAuY2FyZCB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyogUmVzcG9uc2l2ZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuXG4gIC5jYXJkLS1zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS02KTtcbiAgfVxuXG4gIC5jYXJkLS1zZWN0aW9uIGgxLFxuICAuY2FyZC0tc2VjdGlvbiBoMiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbiAgfVxuXG4gIC5jYXJkLS1zZWN0aW9uIGgzIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG4gIH1cblxuICAuY2FyZC0tdGVhbS1tZW1iZXIgLnRlYW0tbWVtYmVyX19waG90byB7XG4gICAgd2lkdGg6IDEwMHB4O1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICB9XG5cbiAgLmNhcmQtLXRlYW0tbWVtYmVyIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG5cbiAgLmNhcmQtLXRlYW0tbWVtYmVyIC50ZWFtLW1lbWJlcl9fYmlvIHtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG5cbiAgLmNhcmQtLXRlYW0tbWVtYmVyIC5jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxuXG4gIC5jYXJkLS1jdGEge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTYpO1xuICB9XG5cbiAgLmNhcmRfX2Zvb3RlciB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICB9XG5cbiAgLm1ldHJpYy1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTR4bCk7XG4gIH1cblxuICAvKiBNb2JpbGUgcmVzcG9uc2l2ZSBmb3Igc2VjdGlvbiBoZWFkZXIgd2l0aCBDVEEgKi9cbiAgLnNlY3Rpb24taGVhZGVyLXdpdGgtY3RhIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIH1cblxuICAuc2VjdGlvbi1oZWFkZXItd2l0aC1jdGEgaDEge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTN4bCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAuY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMyk7XG4gIH1cblxuICAuY2FyZC0tc2VjdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gIH1cblxuICAuY2FyZC0tdGVhbS1tZW1iZXIgLnRlYW0tbWVtYmVyX19waG90byB7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgfVxuXG4gIC5jYXJkLS10ZWFtLW1lbWJlciB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgfVxuXG4gIC5jYXJkLS10ZWFtLW1lbWJlciAudGVhbS1tZW1iZXJfX2JpbyB7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgfVxuXG4gIC5jYXJkLS10ZWFtLW1lbWJlciAuY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMik7XG4gIH1cblxuICAuY2FyZC0tY3RhIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KSB2YXIoLS1zcGFjZS00KTtcbiAgfVxuXG4gIC5tZXRyaWMtbnVtYmVyIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0zeGwpO1xuICB9XG5cbiAgLnNlY3Rpb24taGVhZGVyLXdpdGgtY3RhIGgxIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0yeGwpO1xuICB9XG59IiwiLyogTmF2aWdhdGlvbiBDb21wb25lbnRzIC0gQkVNIE1ldGhvZG9sb2d5ICovXG5cbi8qIE1haW4gbmF2aWdhdGlvbiAqL1xuLm5hdiB7XG4gIGJhY2tncm91bmQ6IHZhcigtLW5hdi1iZyk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbiAgei1pbmRleDogdmFyKC0tei1zdGlja3kpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbn1cblxuLyogRW5oYW5jZWQgc2Nyb2xsZWQgc3RhdGUgKi9cbi5uYXYtLXNjcm9sbGVkIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1uYXYtYmcpLCAwLjk1KTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xufVxuXG4ubmF2X19jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCkgdmFyKC0tc3BhY2UtNSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi8qIExvZ28gdGhhdCBhcHBlYXJzIHdoZW4gaGVhZGVyIGlzIG5vdCB2aXNpYmxlICovXG4ubmF2X19sb2dvIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IHZhcigtLXNwYWNlLTUpO1xufVxuXG4ubmF2X19sb2dvOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktNjAwKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHNjYWxlKDEuMDUpO1xufVxuXG4vKiBTaG93IGxvZ28gd2hlbiBzY3JvbGxlZCAtIERFU0tUT1AgT05MWSAqL1xuLm5hdi0tc2Nyb2xsZWQgLm5hdl9fbG9nbyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG59XG5cbi8qIE5hdmlnYXRpb24gbGlua3MgKi9cbi5uYXZfX2xpbmtzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubmF2X19saW5rIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xufVxuXG4vKiBFbmhhbmNlZCBob3ZlciBlZmZlY3RzICovXG4ubmF2X19saW5rOjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IC0ycHg7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMnB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbi5uYXZfX2xpbms6aG92ZXI6OmJlZm9yZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubmF2X19saW5rOmhvdmVyLFxuLm5hdl9fbGluazpmb2N1cyB7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tYWNjZW50LXByaW1hcnkpLCAwLjEpO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi5uYXZfX2xpbmstLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgxNjMsIDg5LCAxODgsIDAuMyk7XG59XG5cbi5uYXZfX2xpbmstLWFjdGl2ZTo6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm5hdl9fbGluay0tYWN0aXZlOmhvdmVyLFxuLm5hdl9fbGluay0tYWN0aXZlOmZvY3VzIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS02MDApO1xuICBjb2xvcjogIzJkMmQyZDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMTYzLCA4OSwgMTg4LCAwLjQpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIE5hdmlnYXRpb24gaWNvbnMgKi9cbi5uYXZfX2xpbmstaWNvbiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01cHgpO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLm5hdl9fbGluazpob3ZlciAubmF2X19saW5rLWljb24ge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi8qIE1vYmlsZSBtZW51IHRvZ2dsZSAqL1xuLmJ0bi0tbWVudS10b2dnbGUge1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIHotaW5kZXg6IGNhbGModmFyKC0tei1tb2RhbCkgKyAxMCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gIG1pbi13aWR0aDogNDBweDtcbiAgbWluLWhlaWdodDogNDBweDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5idG4tLW1lbnUtdG9nZ2xlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1hY2NlbnQtcHJpbWFyeSksIDAuMSk7XG59XG5cbi5idG4tLW1lbnUtdG9nZ2xlX19saW5lIHtcbiAgd2lkdGg6IDI1cHg7XG4gIGhlaWdodDogM3B4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICBtYXJnaW46IDNweCAwO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogSGFtYnVyZ2VyIGFuaW1hdGlvbiBzdGF0ZXMgKi9cbi5idG4tLW1lbnUtdG9nZ2xlLS1hY3RpdmUgLmJ0bi0tbWVudS10b2dnbGVfX2xpbmU6bnRoLWNoaWxkKDEpIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUoLTVweCwgNnB4KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xufVxuXG4uYnRuLS1tZW51LXRvZ2dsZS0tYWN0aXZlIC5idG4tLW1lbnUtdG9nZ2xlX19saW5lOm50aC1jaGlsZCgyKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7XG59XG5cbi5idG4tLW1lbnUtdG9nZ2xlLS1hY3RpdmUgLmJ0bi0tbWVudS10b2dnbGVfX2xpbmU6bnRoLWNoaWxkKDMpIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZSgtNXB4LCAtNnB4KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xufVxuXG4vKiBNT0JJTEUgQkFDS0RST1AgKi9cbi5uYXZfX2JhY2tkcm9wIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgei1pbmRleDogY2FsYyh2YXIoLS16LW1vZGFsKSArIDEpO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5uYXZfX2JhY2tkcm9wLS1hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLyogQnJlYWRjcnVtYnMgKi9cbi5icmVhZGNydW1icyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIDA7XG59XG5cbi5icmVhZGNydW1ic19faXRlbSB7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5icmVhZGNydW1ic19faXRlbTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xufVxuXG4uYnJlYWRjcnVtYnNfX2l0ZW0tLWN1cnJlbnQge1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG59XG5cbi5icmVhZGNydW1ic19fc2VwYXJhdG9yIHtcbiAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xufVxuXG4uYnJlYWRjcnVtYnNfX2xpbmsge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTEpIHZhcigtLXNwYWNlLTIpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLmJyZWFkY3J1bWJzX19saW5rOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1hY2NlbnQtcHJpbWFyeSksIDAuMSk7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4vKiBNb2JpbGUgbmF2aWdhdGlvbiBzdHlsZXMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuYnRuLS1tZW51LXRvZ2dsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC8qIE1vYmlsZSBsb2dvIHBvc2l0aW9uaW5nICovXG4gIC5uYXZfX2xvZ28ge1xuICAgIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgb3JkZXI6IC0xICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubmF2X19sb2dvOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICB9XG5cbiAgLm5hdl9fY29udGFpbmVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gIH1cblxuICAubmF2LS1zY3JvbGxlZCAubmF2X19jb250YWluZXIge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuXG4gIC8qIE1vYmlsZSBuYXZpZ2F0aW9uIGxpbmtzICovXG4gIC5uYXZfX2xpbmtzIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiA4NSU7XG4gICAgbWF4LXdpZHRoOiAzMjBweDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIGhlaWdodDogMTAwZHZoO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgei1pbmRleDogY2FsYyh2YXIoLS16LW1vZGFsKSArIDEwKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIGJvcmRlci1yaWdodDogM3B4IHNvbGlkIHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTYpICsgZW52KHNhZmUtYXJlYS1pbnNldC10b3AsIDBweCkpIHZhcigtLXNwYWNlLTQpIGNhbGModmFyKC0tc3BhY2UtNikgKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSkgdmFyKC0tc3BhY2UtNCk7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB9XG5cbiAgLyogQWN0aXZlIHN0YXRlIHBvc2l0aW9uaW5nICovXG4gIC5uYXZfX2xpbmtzLS1hY3RpdmUge1xuICAgIGxlZnQ6IDA7XG4gIH1cblxuICAvKiBNb2JpbGUgbmF2aWdhdGlvbiBsaW5rcyBzdHlsaW5nICovXG4gIC5uYXZfX2xpbmsge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpIHZhcigtLXNwYWNlLTQpO1xuICAgIHdpZHRoOiA5MCU7XG4gICAgbWF4LXdpZHRoOiAyNjBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBtaW4taGVpZ2h0OiA0NHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgfVxuXG4gIC5uYXZfX2xpbms6aG92ZXIsXG4gIC5uYXZfX2xpbms6Zm9jdXMsXG4gIC5uYXZfX2xpbms6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMikgdHJhbnNsYXRlWigwKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICB9XG5cbiAgLm5hdl9fbGluay0tYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gIH1cblxuICAubmF2X19saW5rLS1hY3RpdmU6aG92ZXIsXG4gIC5uYXZfX2xpbmstLWFjdGl2ZTpmb2N1cyxcbiAgLm5hdl9fbGluay0tYWN0aXZlOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICAgIGNvbG9yOiAjMmQyZDJkO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gIC5uYXZfX2xpbmsgLm5hdl9fbGluay1pY29uIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjZS0yKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxufVxuXG4vKiBFdmVuIHNtYWxsZXIgc2NyZWVucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5uYXZfX2xpbmtzIHtcbiAgICB3aWR0aDogOTAlO1xuICAgIG1heC13aWR0aDogMjgwcHg7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLTQpICsgZW52KHNhZmUtYXJlYS1pbnNldC10b3AsIDBweCkpIHZhcigtLXNwYWNlLTMpIGNhbGModmFyKC0tc3BhY2UtNCkgKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSkgdmFyKC0tc3BhY2UtMyk7XG4gIH1cblxuICAubmF2X19saW5rIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtMyk7XG4gICAgbWluLWhlaWdodDogNDBweDtcbiAgICB3aWR0aDogOTUlO1xuICB9XG5cbiAgLm5hdl9fbGluayAubmF2X19saW5rLWljb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNlLTEpO1xuICB9XG59XG5cbi8qIExhbmRzY2FwZSBvcmllbnRhdGlvbiBvbiBtb2JpbGUgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gIC5uYXZfX2xpbmtzIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtMykgKyBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwgMHB4KSkgdmFyKC0tc3BhY2UtMykgY2FsYyh2YXIoLS1zcGFjZS0zKSArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKSB2YXIoLS1zcGFjZS0zKTtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgfVxuXG4gIC5uYXZfX2xpbmsge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMTIwcHg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cbn1cblxuLyogTGFyZ2Ugc2NyZWVuIG9wdGltaXphdGlvbnMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLm5hdl9fY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS02KTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC5uYXYtLXNjcm9sbGVkIC5uYXZfX2NvbnRhaW5lciB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAubmF2X19sb2dvIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0yeGwpO1xuICB9XG5cbiAgLm5hdl9fbGlua3Mge1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMTApO1xuICB9XG5cbiAgLm5hdl9fbGluayB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICB9XG59XG5cbi8qIFJlZHVjZWQgbW90aW9uIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5uYXYsXG4gIC5uYXZfX2xpbmssXG4gIC5uYXZfX2xvZ28sXG4gIC5idG4tLW1lbnUtdG9nZ2xlX19saW5lLFxuICAubmF2X19saW5rcyxcbiAgLm5hdl9fbGluazo6YmVmb3JlLFxuICAubmF2X19jb250YWluZXIsXG4gIC5uYXZfX2JhY2tkcm9wIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxuXG4gIC5uYXZfX2xpbms6aG92ZXIsXG4gIC5uYXZfX2xvZ286aG92ZXIge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufSIsIi8qIEJhbm5lciBDb21wb25lbnRzIC0gQkVNIE1ldGhvZG9sb2d5ICovXG5cbi8qIFN1cHBvcnRlZCBieSBHb29nbGUgQmFubmVyICovXG4uc3VwcG9ydGVkLWJhbm5lciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnLXNlY29uZGFyeSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTQpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc3VwcG9ydGVkLWJhbm5lcl9fY29udGVudCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbn1cblxuLnN1cHBvcnRlZC1iYW5uZXJfX3RleHQge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5zdXBwb3J0ZWQtYmFubmVyX19sb2dvIHtcbiAgaGVpZ2h0OiA0MHB4O1xuICB3aWR0aDogYXV0bztcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLnN1cHBvcnRlZC1iYW5uZXJfX2xvZ286aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpO1xufVxuXG4vKiBNb2JpbGUgcmVzcG9uc2l2ZSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5zdXBwb3J0ZWQtYmFubmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKSB2YXIoLS1zcGFjZS0zKTtcbiAgfVxuXG4gIC5zdXBwb3J0ZWQtYmFubmVyX19sb2dvIHtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogNnB4IDEycHg7XG4gIH1cbn1cbiIsIi8qIEFwcCBTdG9yZSBMaW5rcyBhbmQgRG93bmxvYWQgQ29tcG9uZW50cyAtIEJFTSBNZXRob2RvbG9neSAqL1xuXG4vKiBBcHAgc3RvcmUgbGlua3MgY29udGFpbmVyICovXG4uYXBwLXN0b3JlLWxpbmtzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgbWFyZ2luOiB2YXIoLS1zcGFjZS0zKSAwO1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5hcHAtc3RvcmUtbGlua3MgLmJ0biB7XG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMTIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogQXBwIGRvd25sb2FkIGNhcmQgc3R5bGluZyAqL1xuLmFwcC1kb3dubG9hZC1jYXJkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hcHAtZG93bmxvYWQtY2FyZDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgaGVpZ2h0OiAzcHg7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgXG4gICAgdmFyKC0tYWNjZW50LXByaW1hcnkpLCBcbiAgICB2YXIoLS1jb2xvci1wcmltYXJ5LTYwMClcbiAgKTtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5hcHAtZG93bmxvYWQtY2FyZDpob3Zlcjo6YmVmb3JlIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG59XG5cbi5hcHAtZG93bmxvYWQtY2FyZDpob3ZlciB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG59XG5cbi5hcHAtZG93bmxvYWQtY2FyZCBoNCB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTEpO1xufVxuXG4uYXBwLWRvd25sb2FkLWNhcmQgcCB7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5hcHAtZG93bmxvYWQtY2FyZCAuYnRuIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbn1cblxuLyogU3BlY2lhbCBzcGFjaW5nIGZvciBuZXN0ZWQgYXBwIGRvd25sb2FkIGNhcmRzICovXG4uY2FyZC0tYXBwLWRvd25sb2FkIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIE1vYmlsZSBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmFwcC1zdG9yZS1saW5rcyB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICB9XG5cbiAgLmFwcC1zdG9yZS1saW5rcyAuYnRuIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbGV4OiBub25lO1xuICB9XG5cbiAgLmFwcC1kb3dubG9hZC1jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmFwcC1kb3dubG9hZC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgfVxufSIsIi8qIFNwYWNpbmcgVXRpbGl0aWVzIC0gQkVNIE1ldGhvZG9sb2d5ICovXG5cbi8qIE1hcmdpbiB1dGlsaXRpZXMgKi9cbi5tLTAgeyBtYXJnaW46IDA7IH1cbi5tdC00IHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7IH1cbi5tYi00IHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7IH1cbi5tYi02IHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7IH1cbi5teC1hdXRvIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuXG4vKiBQYWRkaW5nIHV0aWxpdGllcyAqL1xuLnAtMCB7IHBhZGRpbmc6IDA7IH1cbi8qIERpc3BsYXkgdXRpbGl0aWVzICovXG4uYmxvY2sgeyBkaXNwbGF5OiBibG9jazsgfVxuLmZsZXggeyBkaXNwbGF5OiBmbGV4OyB9XG4uZ3JpZCB7IGRpc3BsYXk6IGdyaWQ7IH1cbi5oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG5cbi8qIFBvc2l0aW9uIHV0aWxpdGllcyAqL1xuLnJlbGF0aXZlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG5cbi8qIFdpZHRoIGFuZCBoZWlnaHQgdXRpbGl0aWVzICovXG4udy1mdWxsIHsgd2lkdGg6IDEwMCU7IH1cbi5oLWZ1bGwgeyBoZWlnaHQ6IDEwMCU7IH1cblxuLyogTW9iaWxlIHJlc3BvbnNpdmUgc3BhY2luZyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5tZFxcOm1iLTQgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTsgfVxuICAubWRcXDpwLTQgeyBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTsgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLnNtXFw6cC0zIHsgcGFkZGluZzogdmFyKC0tc3BhY2UtMyk7IH1cbn0iXX0= */