/* ==========================================================================
   HubRaiz — Main Stylesheet Entry Point
   Imports all CSS partials in documented architecture order.
   PostCSS + postcss-import bundles this into dist/style.css at build time.
   ========================================================================== */

/* 1. Self-hosted font faces */

/* ==========================================================================
   Self-hosted typography
   IBM Plex files are installed from @fontsource during npm install and copied
   into /assets/fonts by Eleventy at build time. No runtime Google Fonts calls.
   ========================================================================== */

@font-face {
  font-family: "IBM Plex Serif";
  src: url("/assets/fonts/ibm-plex-serif/ibm-plex-serif-latin-600-normal.e279e4f8ba.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Serif";
  src: url("/assets/fonts/ibm-plex-serif/ibm-plex-serif-latin-700-normal.886ea167fa.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/assets/fonts/ibm-plex-sans/ibm-plex-sans-latin-400-normal.3b646991d3.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/assets/fonts/ibm-plex-sans/ibm-plex-sans-latin-500-normal.0717336fb3.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/assets/fonts/ibm-plex-sans/ibm-plex-sans-latin-500-italic.f68312ae7d.woff2") format("woff2");
  font-weight: 500;
  font-style: italic;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/assets/fonts/ibm-plex-sans/ibm-plex-sans-latin-600-normal.8960851d69.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/assets/fonts/ibm-plex-sans/ibm-plex-sans-latin-700-normal.42e7b0c143.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* 2. Design tokens — MUST follow fonts; all component partials depend on these */

/* ==========================================================================
   1. DESIGN TOKENS
   CSS custom properties organized by role:
   
   ┌─ Palette Primitives ─────────────────────────────────────┐
   │  Surface, Neutral — base color scales                    │
   │  Feed semantic tokens; also consumed directly by some    │
   │  component overrides (especially .dark selector blocks)  │
   └──────────────────────────────────────────────────────────┘
   ┌─ Accent System ──────────────────────────────────────────┐
   │  --accent-primary / --accent-secondary + variants        │
   │  SWAP between default and alt themes                     │
   └──────────────────────────────────────────────────────────┘
   ┌─ Semantic Tokens ────────────────────────────────────────┐
   │  --bg-primary, --text-*, --glass-*, --pill-*, etc.      │
   │  Override in .dark / [alt] / [alt].dark / @media        │
   └──────────────────────────────────────────────────────────┘
   ┌─ Scheme Tokens ──────────────────────────────────────────┐
   │  --scheme-* — context-specific overrides per theme       │
   │  Each defined in :root and overridden per theme block    │
   └──────────────────────────────────────────────────────────┘
   ┌─ Structural Tokens ──────────────────────────────────────┐
   │  --chrome-shadow-*, --glass-inset-*, --ui-surface-*     │
   │  --toggle-*, --drawer-close-*, --btn-inset-*            │
   │  Shadows, highlights, translucent overlays               │
   └──────────────────────────────────────────────────────────┘
   
   Theme structure:
     :root                         → Default (Orange) light mode
     .dark                         → Default (Orange) dark mode
     [data-color-scheme="alt"]     → Alt (Olive) light mode
     [data-color-scheme="alt"].dark→ Alt (Olive) dark mode
     @media(prefers-color-scheme:dark) → Non-JS dark fallback
   ========================================================================== */

:root {
  color-scheme: light;

  /* Surface palette — base canvas tones for backgrounds & light text on dark */
  --surface-50: #FAF7F2;
  --surface-100: #F5F0E8;
  --surface-200: #EBE3D5;
  --surface-300: #D4C8B4;
  --surface-400: #B8A68E;

  /* Neutral palette — text, borders, and structural tones */
  --neutral-200: #D1BFA8;
  --neutral-300: #B09A7E;
  --neutral-400: #8A7260;
  --neutral-500: #6E5A48;
  --neutral-600: #5C4A3A;
  --neutral-700: #4A3A2E;
  --neutral-800: #3D2E22;
  --neutral-900: #2C1810;

  /* Glass card/panel shadow tokens */
  --card-shadow:       rgba(44, 24, 16, 0.04);
  --card-shadow-hover: rgba(255, 92, 0, 0.08);

  /* Marketplace colors */
  --ml-yellow: #FFE600;
  --ml-yellow-hover: #FFD700;
  --ml-navy: #2D3277;
  --ml-shadow: rgba(255, 230, 0, 0.25);
  --ml-shadow-hover: rgba(255, 230, 0, 0.35);
  --shopee-orange: #EE4D2D;
  --shopee-orange-hover: #D73211;
  --shopee-shadow: rgba(238, 77, 45, 0.25);
  --shopee-shadow-hover: rgba(238, 77, 45, 0.35);

  /* Fonts */
  --font-heading: "IBM Plex Serif", Georgia, "Times New Roman", Cambria, "Noto Serif", serif;
  --font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-ui: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

  /* Transition presets */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --duration-normal: 0.2s;
  --duration-slow: 0.3s;

  /* Accent system — primary accent with secondary as fallback */
  --accent-primary: #FF5C00;
  --accent-primary-hover: #E94F00;
  --accent-primary-light: rgba(255, 92, 0, 0.12);
  --accent-primary-border: rgba(255, 92, 0, 0.25);
  --accent-primary-shadow: rgba(255, 92, 0, 0.25);

  --accent-secondary: #636B2F;
  --accent-secondary-light: rgba(99, 107, 47, 0.12);
  --accent-secondary-border: rgba(99, 107, 47, 0.25);

  /* Semantic colors — light mode defaults */
  --bg-primary: #F5F0E8;
  --text-primary: #2C1810;
  --text-secondary: #5C4A3A;
  --text-muted: #725E4C;
  --text-placeholder: rgba(92, 74, 58, 0.4);
  --glass-bg: rgba(255, 255, 255, 0.85);
  --glass-border: rgba(255, 92, 0, 0.14);
  --glass-hover-bg: rgba(255, 255, 255, 0.92);
  --glass-hover-border: rgba(255, 92, 0, 0.2);
  --filter-bar-bg: rgba(250, 247, 242, 0.88);
  --filter-bar-border: rgba(255, 255, 255, 0.5);
  --search-bg: rgba(255, 255, 255, 0.8);
  --search-border: rgba(255, 255, 255, 0.5);
  --search-focus-bg: rgba(255, 255, 255, 0.92);
  --search-focus-border: rgba(255, 92, 0, 0.4);
  --pill-inactive-bg: rgba(255, 255, 255, 0.7);
  --pill-inactive-border: rgba(255, 255, 255, 0.5);
  --pill-inactive-text: #5C4A3A;
  --drawer-panel-bg: rgba(250, 247, 242, 0.92);
  --drawer-border: rgba(255, 255, 255, 0.5);
  --drawer-overlay-bg: rgba(44, 24, 16, 0.4);
  --desc-fade: rgba(255, 255, 255, 0.85);
  --footer-bg: #2C1810;
  --footer-text: #E5DFD4;
  --footer-muted: rgba(200, 190, 175, 0.75);
  --scheme-footer-accent: #FF8C5A;
  --scheme-footer-icon: rgba(255, 140, 90, 0.65);
  --scheme-footer-border: rgba(255, 140, 90, 0.12);
  --footer-disclaimer: rgba(200, 190, 175, 0.8);

  /* Scheme-specific accent tokens — default (orange) theme */
  --scheme-hero-tagline: #FF5C00;
  /* Tag, pill, badge tokens use --accent-primary family directly
     so they swap automatically with the active color scheme. */
  --scheme-badge-bg: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-primary-hover) 100%);
  --scheme-scroll-thumb: rgba(255, 92, 0, 0.4);
  --scheme-focus-ring: #FF5C00;
  --scheme-hero-logo-bg: rgba(255, 92, 0, 0.06);
  --scheme-hero-logo-bg-dark: rgba(255, 140, 90, 0.16);
  --scheme-hero-trust: #6E5A48;
  --scheme-hero-scroll-color: rgba(255, 92, 0, 0.6);
  --scheme-image-wrap-bg: rgba(235, 227, 213, 0.3);
  --scheme-image-wrap-bg-dark: rgba(44, 24, 16, 0.4);
  --scheme-overlay-gradient: rgba(44, 24, 16, 0.2);
  --scheme-overlay-gradient-dark: rgba(0, 0, 0, 0.2);
  --scheme-search-focus-ring: rgba(255, 92, 0, 0.08);
  --scheme-search-focus-ring-strong: rgba(255, 92, 0, 0.1);
  --scheme-trust-divider: rgba(255, 140, 90, 0.3);
  --scheme-trust-divider-dark: rgba(255, 92, 0, 0.12);
  /* Marketplace badge — subtle accent tint (footer is always dark) */
  --scheme-marketplace-badge-bg: rgba(255, 140, 90, 0.15);
  --scheme-marketplace-badge-border: rgba(255, 140, 90, 0.3);

  /* Tag hierarchy — both use accent-primary-light bg (hero icon style).
     Brand tags: full accent text + full accent border + bold = pops.
     Category tags: faded accent text + faded accent border + normal = recedes.
     No separate -dark tokens needed; accent tokens auto-swap. */
  /* ── Text on accent ────────────────────────────────────────
     Text on solid/filled accent backgrounds (skip link, CTA buttons). */
  --text-on-accent: #2C1810;

  /* ── Selection highlight ─────────────────────────────────── */
  --selection-bg-dark: rgba(255, 140, 90, 0.35);

  /* ── Glass morphism inset highlights ────────────────────────
     Subtle top-edge highlight that simulates light reflection
     on glass surfaces in light and dark modes */
  --glass-inset: rgba(255, 255, 255, 0.3);
  --glass-inset-hover: rgba(255, 255, 255, 0.4);
  --glass-inset-dark: rgba(229, 223, 212, 0.05);
  --glass-inset-dark-hover: rgba(229, 223, 212, 0.08);

  /* ── Structural shadows ─────────────────────────────────────
     Warm-tinted drop shadows for UI chrome (panels, drawers, FABs).
     Light mode uses warm brown base; dark mode uses pure black. */
  --chrome-shadow-sm: rgba(44, 24, 16, 0.05);
  --chrome-shadow-md: rgba(44, 24, 16, 0.08);
  --chrome-shadow-lg: rgba(44, 24, 16, 0.12);
  --chrome-shadow-dark: rgba(0, 0, 0, 0.2);
  --logo-drop-shadow:   rgba(0, 0, 0, 0.35);  /* hero logo glow drop-shadow */

  /* ── Translucent UI surfaces ────────────────────────────────
     Semi-transparent white overlays for circular glass elements
     (hero scroll button, trust divider, toggle FAB).
     Dark mode uses much lower opacity for subtle visibility. */
  --ui-surface-bg: rgba(255, 255, 255, 0.3);
  --ui-surface-border: rgba(255, 255, 255, 0.4);
  --ui-surface-hover-bg: rgba(255, 255, 255, 0.5);
  --ui-surface-bg-dark: rgba(255, 255, 255, 0.05);
  --ui-surface-border-dark: rgba(255, 255, 255, 0.1);
  --ui-surface-hover-bg-dark: rgba(255, 255, 255, 0.12);

  /* ── Toggle FAB surfaces ────────────────────────────────────
     The floating action button for dark/light mode has its own
     surface tokens because it uses a distinct opacity range. */
  --toggle-bg: rgba(255, 255, 255, 0.5);
  --toggle-border: rgba(255, 255, 255, 0.6);
  --toggle-bg-dark: rgba(255, 255, 255, 0.1);
  --toggle-border-dark: rgba(255, 255, 255, 0.15);

  /* ── Drawer close button ──────────────────────────────────── */
  --drawer-close-bg: rgba(250, 247, 242, 0.6);
  --drawer-close-bg-dark: rgba(255, 255, 255, 0.1);
  --drawer-close-bg-dark-hover: rgba(255, 255, 255, 0.15);

  /* ── Button inset highlights ────────────────────────────────
     Top-edge highlight for CTA-style buttons */
  --btn-inset: rgba(255, 255, 255, 0.15);
  --btn-inset-hover: rgba(255, 255, 255, 0.2);
  --ml-inset: rgba(255, 255, 255, 0.5);
  --ml-inset-hover: rgba(255, 255, 255, 0.6);

  /* ── Scheme swatch border ─────────────────────────────────── */
  --scheme-swatch-border: rgba(128, 128, 128, 0.15);

  /* ── Spacing scale ──────────────────────────────────────────
     Numeric scale used by u-m* / u-p* utility classes.
     Follows a 4px base grid: 1 = 0.25rem (4px). */
  --spacing-0: 0;
  --spacing-px: 1px;
  --spacing-0-5: 0.125rem;
  --spacing-1: 0.25rem;
  --spacing-1-5: 0.375rem;
  --spacing-2: 0.5rem;
  --spacing-2-5: 0.625rem;
  --spacing-3: 0.75rem;
  --spacing-3-5: 0.875rem;
  --spacing-4: 1rem;
  --spacing-5: 1.25rem;
  --spacing-6: 1.5rem;
  --spacing-7: 1.75rem;
  --spacing-8: 2rem;
  --spacing-9: 2.25rem;
  --spacing-10: 2.5rem;
  --spacing-11: 2.75rem;
  --spacing-12: 3rem;
  --spacing-14: 3.5rem;
  --spacing-16: 4rem;
  --spacing-20: 5rem;
  --spacing-24: 6rem;

  /* ── Font-size scale ────────────────────────────────────────
     Used by u-text-* utility classes. */
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;

  /* ── Font-weight scale ──────────────────────────────────────
     Used by u-text-*-bold utility classes and standalone weight classes. */
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-display: 700;

  /* ── Line-height scale ──────────────────────────────────────
     Used by u-leading-* utility classes. */
  --leading-none: 1;
  --leading-tight: 1.25;
  --leading-snug: 1.375;
  --leading-normal: 1.5;
  --leading-relaxed: 1.625;
  --leading-loose: 2;

  /* ── Border-radius scale ────────────────────────────────────
     Used by u-rounded-* utility classes. */
  --radius-none: 0;
  --radius-sm: 0.25rem;
  --radius-md: 0.5rem;
  --radius-lg: 0.75rem;
  --radius-xl: 1rem;
  --radius-2xl: 1.5rem;
  --radius-full: 9999px;
}

/* ── Dark mode tokens ──────────────────────────────────────
   These semantic token values appear TWICE intentionally:
   1. .dark { }           → JS-driven toggle (localStorage / user click)
   2. @media prefers-color-scheme: dark → Non-JS fallback when no
      .light or .dark class is present on <html>
   DO NOT deduplicate — they serve different code paths.
   When updating dark-mode values, update BOTH blocks.
   ─────────────────────────────────────────────────────── */

/* JS-driven dark mode */

.dark {
  color-scheme: dark;
  --bg-primary: #1A1816;
  --text-primary: #E5DFD4;
  --text-secondary: #D4C5B8;
  --text-muted: #B09A7E;
  --text-placeholder: rgba(200, 190, 175, 0.35);
  --glass-bg: rgba(35, 32, 28, 0.88);
  --glass-border: rgba(255, 140, 90, 0.2);
  --glass-hover-bg: rgba(45, 40, 34, 0.92);
  --glass-hover-border: rgba(255, 140, 90, 0.2);
  --filter-bar-bg: rgba(26, 24, 22, 0.92);
  --filter-bar-border: rgba(60, 55, 45, 0.5);
  --search-bg: rgba(35, 32, 28, 0.85);
  --search-border: rgba(60, 55, 45, 0.5);
  --search-focus-bg: rgba(40, 36, 30, 0.92);
  --search-focus-border: rgba(255, 140, 90, 0.4);
  --pill-inactive-bg: rgba(35, 32, 28, 0.75);
  --pill-inactive-border: rgba(60, 55, 45, 0.5);
  --pill-inactive-text: #E5DFD4;
  --drawer-panel-bg: rgba(30, 28, 24, 0.95);
  --drawer-border: rgba(60, 55, 45, 0.5);
  --drawer-overlay-bg: rgba(0, 0, 0, 0.5);
  --desc-fade: rgba(35, 32, 28, 0.85);
  --footer-bg: #131210;
  --footer-disclaimer: rgba(200, 190, 175, 0.75);

  /* Dark mode scheme token overrides */
  --scheme-hero-tagline: var(--scheme-footer-accent);

  /* Dark mode accent — lighter shade for contrast on dark bg */
  --accent-primary: #FF8C5A;
  --accent-primary-hover: #FFA070;
  --accent-primary-light: rgba(255, 140, 90, 0.15);
  --accent-primary-border: rgba(255, 140, 90, 0.3);
  --accent-primary-shadow: rgba(255, 140, 90, 0.25);
  --card-shadow-hover: rgba(255, 140, 90, 0.08);

  /* Focus ring uses lightened accent for visibility on dark bg */
  --scheme-focus-ring: var(--accent-primary);

  /* Text on solid accent backgrounds — dark tint for contrast on bright accent */
  --text-on-accent: #551F00;
}

/* Scheme override: alternate — olive-first variation */

[data-color-scheme="alt"] {
  /* Alternate olive scheme — keeps the natural-food tone available. */
  --accent-primary: #636B2F;
  --accent-primary-hover: #748038;
  --accent-primary-light: rgba(99, 107, 47, 0.15);
  --accent-primary-border: rgba(99, 107, 47, 0.25);
  --accent-primary-shadow: rgba(99, 107, 47, 0.25);
  --accent-secondary: #FF5C00;
  --accent-secondary-light: rgba(255, 92, 0, 0.12);
  --accent-secondary-border: rgba(255, 92, 0, 0.25);
  --card-shadow-hover: rgba(99, 107, 47, 0.08);
  --glass-border: rgba(99, 107, 47, 0.15);
  --glass-hover-border: rgba(99, 107, 47, 0.2);
  --search-focus-border: rgba(99, 107, 47, 0.4);

  --scheme-hero-tagline: #636B2F;
  --scheme-scroll-thumb: rgba(99, 107, 47, 0.4);
  --scheme-focus-ring: #636B2F;
  --scheme-hero-logo-bg: rgba(99, 107, 47, 0.08);
  --scheme-hero-logo-bg-dark: rgba(99, 107, 47, 0.2);
  --scheme-hero-trust: #6E5A48;
  --scheme-hero-scroll-color: rgba(99, 107, 47, 0.6);
  --scheme-footer-accent: #A8B854;
  --scheme-footer-icon: rgba(168, 184, 84, 0.6);
  --scheme-footer-border: rgba(168, 184, 84, 0.1);
  --scheme-search-focus-ring: rgba(99, 107, 47, 0.08);
  --scheme-search-focus-ring-strong: rgba(99, 107, 47, 0.1);
  --scheme-trust-divider: rgba(168, 184, 84, 0.3);
  --scheme-trust-divider-dark: rgba(99, 107, 47, 0.12);
  --scheme-marketplace-badge-bg: rgba(168, 184, 84, 0.15);
  --scheme-marketplace-badge-border: rgba(168, 184, 84, 0.3);
  --footer-disclaimer: rgba(200, 190, 175, 0.8);
  --footer-bg: #1A2110;
  --selection-bg-dark: rgba(168, 184, 84, 0.35);
  --text-on-accent: #FFFFFF;
}

[data-color-scheme="alt"].dark {
  color-scheme: dark;
  --accent-primary: #A8B854;
  --accent-primary-hover: #B8C864;
  --accent-primary-light: rgba(168, 184, 84, 0.15);
  --accent-primary-border: rgba(168, 184, 84, 0.3);
  --accent-primary-shadow: rgba(168, 184, 84, 0.25);
  --card-shadow-hover: rgba(168, 184, 84, 0.08);
  --glass-border: rgba(168, 184, 84, 0.2);
  --glass-hover-border: rgba(168, 184, 84, 0.2);
  --search-focus-border: rgba(168, 184, 84, 0.4);

  --accent-secondary: #FF8C5A;
  --accent-secondary-light: rgba(255, 140, 90, 0.15);
  --accent-secondary-border: rgba(255, 140, 90, 0.3);
  --text-secondary: #C5D4B8;

  --scheme-hero-tagline: var(--scheme-footer-accent);
  --scheme-focus-ring: var(--accent-primary);
  --footer-bg: #111A08;
  --footer-disclaimer: rgba(200, 190, 175, 0.75);
  --text-on-accent: #2C3015;
}

/* Light mode explicit opt-in — forces native controls to light scheme */

.light {
  color-scheme: light;
}

/* Non-JS dark mode fallback (prefers-color-scheme: dark).
 * NOTE: This only applies the default HubRaiz dark tokens.
 * Users who selected an alternative color scheme via JavaScript
 * (stored in localStorage as "hubraiz-color-scheme") will see the
 * default scheme if JavaScript is unavailable, since
 * data-color-scheme is set by JS at runtime.
 */

@media (prefers-color-scheme: dark) {
  /* Mirror of .dark — keep in sync. When updating dark-mode values,
     update BOTH the .dark block (JS-toggled) and this @media block (no-JS fallback). */
  :root:not(.light):not(.dark) {
    color-scheme: dark;
    --bg-primary: #1A1816;
    --text-primary: #E5DFD4;
    --text-secondary: #D4C5B8;
    --text-muted: #B09A7E;
    --text-placeholder: rgba(200, 190, 175, 0.35);
    --glass-bg: rgba(35, 32, 28, 0.88);
    --glass-border: rgba(255, 140, 90, 0.2);
    --glass-hover-bg: rgba(45, 40, 34, 0.92);
    --glass-hover-border: rgba(255, 140, 90, 0.2);
    --filter-bar-bg: rgba(26, 24, 22, 0.92);
    --filter-bar-border: rgba(60, 55, 45, 0.5);
    --search-bg: rgba(35, 32, 28, 0.85);
    --search-border: rgba(60, 55, 45, 0.5);
    --search-focus-bg: rgba(40, 36, 30, 0.92);
    --search-focus-border: rgba(255, 140, 90, 0.4);
    --pill-inactive-bg: rgba(35, 32, 28, 0.75);
    --pill-inactive-border: rgba(60, 55, 45, 0.5);
    --pill-inactive-text: #E5DFD4;
    --drawer-panel-bg: rgba(30, 28, 24, 0.95);
    --drawer-border: rgba(60, 55, 45, 0.5);
    --drawer-overlay-bg: rgba(0, 0, 0, 0.5);
    --desc-fade: rgba(35, 32, 28, 0.85);
    --footer-bg: #131210;
    --footer-disclaimer: rgba(200, 190, 175, 0.75);
    --accent-primary: #FF8C5A;
    --accent-primary-hover: #FFA070;
    --accent-primary-light: rgba(255, 140, 90, 0.15);
    --accent-primary-border: rgba(255, 140, 90, 0.3);
    --accent-primary-shadow: rgba(255, 140, 90, 0.25);
    --card-shadow-hover: rgba(255, 140, 90, 0.08);
    --scheme-hero-tagline: var(--scheme-footer-accent);
    --scheme-focus-ring: var(--accent-primary);
    --text-on-accent: #551F00;
  }
}

/* 3. Reset & base */

/* ==========================================================================
   2. RESET & BASE
   Box-sizing reset, body defaults, focus states, scrollbar, selection,
   reduced-motion, skip link
   ========================================================================== */

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

body {
  background: var(--bg-primary);
  font-family: var(--font-body);
  color: var(--text-primary);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.65;
  overflow-x: hidden;
  display: flex;
  flex-direction: column;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-bold);
  line-height: 1.12;
  text-wrap: balance;
}

p { text-wrap: pretty; }

a { color: inherit; text-decoration: none; }

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

button, input, textarea, select { font-family: inherit; }

button { cursor: pointer; }

ul { list-style: none; }

/* --- Utility: Hidden by default, shown via JS --- */

.is-hidden { display: none !important; }

/* --- Skip Link --- */

.skip-link {
  position: absolute;
  top: -100%;
  left: 50%;
  transform: translateX(-50%);
  background: var(--accent-primary);
  color: var(--text-on-accent);
  padding: 0.75rem 1.5rem;
  border-radius: 0 0 0.75rem 0.75rem;
  z-index: 9999;
  font-weight: 600;
  font-size: 0.875rem;
  transition: top var(--duration-normal) ease;
  text-decoration: none;
  box-shadow: 0 0 12px var(--chrome-shadow-dark);
}

.skip-link:focus {
  top: 0;
  outline: 3px solid var(--scheme-focus-ring);
  outline-offset: 2px;
}

/* --- Focus States --- */

*:focus-visible {
  outline: 3px solid var(--scheme-focus-ring);
  outline-offset: 3px;
  border-radius: 6px;
}

/* --- Scrollbar --- */

::-webkit-scrollbar { width: 8px; }

::-webkit-scrollbar-track { background: transparent; }

::-webkit-scrollbar-thumb { background: var(--scheme-scroll-thumb); border-radius: 4px; }

::-webkit-scrollbar-thumb:hover { background: var(--scheme-focus-ring); }

/* --- Selection --- */

::selection { background: var(--accent-primary-light); color: var(--neutral-900); }

.dark ::selection { background: var(--selection-bg-dark); color: var(--surface-100); }

/* --- Reduced Motion --- */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .desc-scroll-inner.overflows { animation: none !important; }
  .desc-scroll-viewport {
    min-height: unset !important;
    max-height: unset !important;
    overflow: visible;
  }
  .desc-scroll-viewport::after { display: none; }
}

/* 4. Utilities (keyframes, animations, atomic helpers) */

/* ==========================================================================
   3. UTILITIES
   Keyframes, stagger delays, animation utilities,
   icon sizing, text truncation, screen-reader-only
   ========================================================================== */

/* --- Keyframes --- */

@keyframes fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slide-up {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@keyframes scroll-text {
  0%     { transform: translateY(0); }
  8%     { transform: translateY(0); }
  88%    { transform: translateY(var(--scroll-distance, -60px)); }
  96%    { transform: translateY(var(--scroll-distance, -60px)); }
  100%   { transform: translateY(0); }
}

@keyframes drawer-in {
  from { transform: translateX(-100%); }
  to { transform: translateX(0); }
}

@keyframes drawer-out {
  from { transform: translateX(0); }
  to { transform: translateX(-100%); }
}

@keyframes overlay-out {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* --- Stagger Delays --- */

.stagger-1 { animation-delay: 0.05s; }

.stagger-2 { animation-delay: 0.1s; }

.stagger-3 { animation-delay: 0.15s; }

.stagger-4 { animation-delay: 0.2s; }

/* --- Animation Utilities --- */

.animate-fade-in { animation: fade-in 0.6s ease-out both; }

.animate-slide-up { animation: slide-up 0.5s ease-out both; }

.animate-float { animation: float 6s ease-in-out infinite; }

/* --- Icon Sizing --- */

.btn-icon {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
}

/* --- Text Truncation --- */

.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* --- Screen Reader Only --- */

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* ==========================================================================
   3b. ATOMIC UTILITIES
   Tailwind-inspired atomic utility classes for HubRaiz.
   All values reference design tokens — no hardcoded colors, spacing,
   font sizes, or shadows. Fully theme-aware (light/dark, accent swaps).
   Naming: u-{category}-{value}, responsive: {bp}-u-{category}-{value}
   =================================================== */

/* ── Spacing: Margin ──────────────────────────────────────
   u-m{t,b,l,r,x,y}-{n} — directional margin utilities.
   Numbers map to --spacing-* tokens. */

.u-m-0  { margin: var(--spacing-0); }

.u-m-px { margin: var(--spacing-px); }

.u-m-0-5 { margin: var(--spacing-0-5); }

.u-m-1  { margin: var(--spacing-1); }

.u-m-1-5 { margin: var(--spacing-1-5); }

.u-m-2  { margin: var(--spacing-2); }

.u-m-2-5 { margin: var(--spacing-2-5); }

.u-m-3  { margin: var(--spacing-3); }

.u-m-3-5 { margin: var(--spacing-3-5); }

.u-m-4  { margin: var(--spacing-4); }

.u-m-5  { margin: var(--spacing-5); }

.u-m-6  { margin: var(--spacing-6); }

.u-m-7  { margin: var(--spacing-7); }

.u-m-8  { margin: var(--spacing-8); }

.u-m-9  { margin: var(--spacing-9); }

.u-m-10 { margin: var(--spacing-10); }

.u-m-11 { margin: var(--spacing-11); }

.u-m-12 { margin: var(--spacing-12); }

.u-m-14 { margin: var(--spacing-14); }

.u-m-16 { margin: var(--spacing-16); }

.u-m-20 { margin: var(--spacing-20); }

.u-m-24 { margin: var(--spacing-24); }

.u-mt-0  { margin-top: var(--spacing-0); }

.u-mt-1  { margin-top: var(--spacing-1); }

.u-mt-1-5 { margin-top: var(--spacing-1-5); }

.u-mt-2  { margin-top: var(--spacing-2); }

.u-mt-2-5 { margin-top: var(--spacing-2-5); }

.u-mt-3  { margin-top: var(--spacing-3); }

.u-mt-3-5 { margin-top: var(--spacing-3-5); }

.u-mt-4  { margin-top: var(--spacing-4); }

.u-mt-5  { margin-top: var(--spacing-5); }

.u-mt-6  { margin-top: var(--spacing-6); }

.u-mt-8  { margin-top: var(--spacing-8); }

.u-mt-10 { margin-top: var(--spacing-10); }

.u-mt-12 { margin-top: var(--spacing-12); }

.u-mt-16 { margin-top: var(--spacing-16); }

.u-mt-20 { margin-top: var(--spacing-20); }

.u-mb-0  { margin-bottom: var(--spacing-0); }

.u-mb-1  { margin-bottom: var(--spacing-1); }

.u-mb-1-5 { margin-bottom: var(--spacing-1-5); }

.u-mb-2  { margin-bottom: var(--spacing-2); }

.u-mb-2-5 { margin-bottom: var(--spacing-2-5); }

.u-mb-3  { margin-bottom: var(--spacing-3); }

.u-mb-3-5 { margin-bottom: var(--spacing-3-5); }

.u-mb-4  { margin-bottom: var(--spacing-4); }

.u-mb-5  { margin-bottom: var(--spacing-5); }

.u-mb-6  { margin-bottom: var(--spacing-6); }

.u-mb-8  { margin-bottom: var(--spacing-8); }

.u-mb-10 { margin-bottom: var(--spacing-10); }

.u-mb-12 { margin-bottom: var(--spacing-12); }

.u-mb-16 { margin-bottom: var(--spacing-16); }

.u-mb-20 { margin-bottom: var(--spacing-20); }

.u-ml-0  { margin-left: var(--spacing-0); }

.u-ml-1  { margin-left: var(--spacing-1); }

.u-ml-2  { margin-left: var(--spacing-2); }

.u-ml-3  { margin-left: var(--spacing-3); }

.u-ml-4  { margin-left: var(--spacing-4); }

.u-ml-6  { margin-left: var(--spacing-6); }

.u-ml-8  { margin-left: var(--spacing-8); }

.u-ml-auto { margin-left: auto; }

.u-mr-0  { margin-right: var(--spacing-0); }

.u-mr-1  { margin-right: var(--spacing-1); }

.u-mr-2  { margin-right: var(--spacing-2); }

.u-mr-3  { margin-right: var(--spacing-3); }

.u-mr-4  { margin-right: var(--spacing-4); }

.u-mr-6  { margin-right: var(--spacing-6); }

.u-mr-8  { margin-right: var(--spacing-8); }

.u-mr-auto { margin-right: auto; }

.u-mx-0  { margin-left: var(--spacing-0); margin-right: var(--spacing-0); }

.u-mx-1  { margin-left: var(--spacing-1); margin-right: var(--spacing-1); }

.u-mx-2  { margin-left: var(--spacing-2); margin-right: var(--spacing-2); }

.u-mx-3  { margin-left: var(--spacing-3); margin-right: var(--spacing-3); }

.u-mx-4  { margin-left: var(--spacing-4); margin-right: var(--spacing-4); }

.u-mx-6  { margin-left: var(--spacing-6); margin-right: var(--spacing-6); }

.u-mx-8  { margin-left: var(--spacing-8); margin-right: var(--spacing-8); }

.u-mx-auto { margin-left: auto; margin-right: auto; }

.u-my-0  { margin-top: var(--spacing-0); margin-bottom: var(--spacing-0); }

.u-my-1  { margin-top: var(--spacing-1); margin-bottom: var(--spacing-1); }

.u-my-2  { margin-top: var(--spacing-2); margin-bottom: var(--spacing-2); }

.u-my-3  { margin-top: var(--spacing-3); margin-bottom: var(--spacing-3); }

.u-my-4  { margin-top: var(--spacing-4); margin-bottom: var(--spacing-4); }

.u-my-6  { margin-top: var(--spacing-6); margin-bottom: var(--spacing-6); }

.u-my-8  { margin-top: var(--spacing-8); margin-bottom: var(--spacing-8); }

.u-my-10 { margin-top: var(--spacing-10); margin-bottom: var(--spacing-10); }

.u-my-12 { margin-top: var(--spacing-12); margin-bottom: var(--spacing-12); }

/* ── Spacing: Padding ─────────────────────────────────────
   u-p{t,b,l,r,x,y}-{n} — directional padding utilities. */

.u-p-0  { padding: var(--spacing-0); }

.u-p-px { padding: var(--spacing-px); }

.u-p-0-5 { padding: var(--spacing-0-5); }

.u-p-1  { padding: var(--spacing-1); }

.u-p-1-5 { padding: var(--spacing-1-5); }

.u-p-2  { padding: var(--spacing-2); }

.u-p-2-5 { padding: var(--spacing-2-5); }

.u-p-3  { padding: var(--spacing-3); }

.u-p-3-5 { padding: var(--spacing-3-5); }

.u-p-4  { padding: var(--spacing-4); }

.u-p-5  { padding: var(--spacing-5); }

.u-p-6  { padding: var(--spacing-6); }

.u-p-7  { padding: var(--spacing-7); }

.u-p-8  { padding: var(--spacing-8); }

.u-p-10 { padding: var(--spacing-10); }

.u-p-12 { padding: var(--spacing-12); }

.u-p-16 { padding: var(--spacing-16); }

.u-pt-0  { padding-top: var(--spacing-0); }

.u-pt-1  { padding-top: var(--spacing-1); }

.u-pt-2  { padding-top: var(--spacing-2); }

.u-pt-3  { padding-top: var(--spacing-3); }

.u-pt-4  { padding-top: var(--spacing-4); }

.u-pt-6  { padding-top: var(--spacing-6); }

.u-pt-8  { padding-top: var(--spacing-8); }

.u-pb-0  { padding-bottom: var(--spacing-0); }

.u-pb-1  { padding-bottom: var(--spacing-1); }

.u-pb-2  { padding-bottom: var(--spacing-2); }

.u-pb-3  { padding-bottom: var(--spacing-3); }

.u-pb-4  { padding-bottom: var(--spacing-4); }

.u-pb-6  { padding-bottom: var(--spacing-6); }

.u-pb-8  { padding-bottom: var(--spacing-8); }

.u-pl-0  { padding-left: var(--spacing-0); }

.u-pl-1  { padding-left: var(--spacing-1); }

.u-pl-2  { padding-left: var(--spacing-2); }

.u-pl-3  { padding-left: var(--spacing-3); }

.u-pl-4  { padding-left: var(--spacing-4); }

.u-pl-6  { padding-left: var(--spacing-6); }

.u-pl-8  { padding-left: var(--spacing-8); }

.u-pr-0  { padding-right: var(--spacing-0); }

.u-pr-1  { padding-right: var(--spacing-1); }

.u-pr-2  { padding-right: var(--spacing-2); }

.u-pr-3  { padding-right: var(--spacing-3); }

.u-pr-4  { padding-right: var(--spacing-4); }

.u-pr-6  { padding-right: var(--spacing-6); }

.u-pr-8  { padding-right: var(--spacing-8); }

.u-px-0  { padding-left: var(--spacing-0); padding-right: var(--spacing-0); }

.u-px-1  { padding-left: var(--spacing-1); padding-right: var(--spacing-1); }

.u-px-1-5 { padding-left: var(--spacing-1-5); padding-right: var(--spacing-1-5); }

.u-px-2  { padding-left: var(--spacing-2); padding-right: var(--spacing-2); }

.u-px-2-5 { padding-left: var(--spacing-2-5); padding-right: var(--spacing-2-5); }

.u-px-3  { padding-left: var(--spacing-3); padding-right: var(--spacing-3); }

.u-px-4  { padding-left: var(--spacing-4); padding-right: var(--spacing-4); }

.u-px-6  { padding-left: var(--spacing-6); padding-right: var(--spacing-6); }

.u-px-8  { padding-left: var(--spacing-8); padding-right: var(--spacing-8); }

.u-py-0  { padding-top: var(--spacing-0); padding-bottom: var(--spacing-0); }

.u-py-1  { padding-top: var(--spacing-1); padding-bottom: var(--spacing-1); }

.u-py-1-5 { padding-top: var(--spacing-1-5); padding-bottom: var(--spacing-1-5); }

.u-py-2  { padding-top: var(--spacing-2); padding-bottom: var(--spacing-2); }

.u-py-2-5 { padding-top: var(--spacing-2-5); padding-bottom: var(--spacing-2-5); }

.u-py-3  { padding-top: var(--spacing-3); padding-bottom: var(--spacing-3); }

.u-py-4  { padding-top: var(--spacing-4); padding-bottom: var(--spacing-4); }

.u-py-6  { padding-top: var(--spacing-6); padding-bottom: var(--spacing-6); }

.u-py-8  { padding-top: var(--spacing-8); padding-bottom: var(--spacing-8); }

/* ── Typography: Font Size ────────────────────────────────
   u-text-{size} — maps to --text-* tokens.
   u-text-{size}-bold — combines size + bold weight. */

.u-text-xs   { font-size: var(--text-xs); }

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

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

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

.u-text-xl   { font-size: var(--text-xl); }

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

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

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

.u-text-xs-bold   { font-size: var(--text-xs); font-weight: var(--font-weight-bold); }

.u-text-sm-bold   { font-size: var(--text-sm); font-weight: var(--font-weight-bold); }

.u-text-base-bold { font-size: var(--text-base); font-weight: var(--font-weight-bold); }

.u-text-lg-bold   { font-size: var(--text-lg); font-weight: var(--font-weight-bold); }

.u-text-xl-bold   { font-size: var(--text-xl); font-weight: var(--font-weight-bold); }

/* ── Typography: Font Weight ────────────────────────────── */

.u-font-normal   { font-weight: var(--font-weight-normal); }

.u-font-medium   { font-weight: var(--font-weight-medium); }

.u-font-semibold { font-weight: var(--font-weight-semibold); }

.u-font-bold     { font-weight: var(--font-weight-bold); }

/* ── Typography: Line Height ────────────────────────────── */

.u-leading-none    { line-height: var(--leading-none); }

.u-leading-tight   { line-height: var(--leading-tight); }

.u-leading-snug    { line-height: var(--leading-snug); }

.u-leading-normal  { line-height: var(--leading-normal); }

.u-leading-relaxed { line-height: var(--leading-relaxed); }

.u-leading-loose   { line-height: var(--leading-loose); }

/* ── Typography: Alignment ──────────────────────────────── */

.u-text-left    { text-align: left; }

.u-text-center  { text-align: center; }

.u-text-right   { text-align: right; }

/* ── Color: Text ──────────────────────────────────────────
   Semantic token-driven — swaps automatically with dark mode / accent. */

.u-text-primary    { color: var(--text-primary); }

.u-text-secondary  { color: var(--text-secondary); }

.u-text-muted      { color: var(--text-muted); }

.u-text-placeholder { color: var(--text-placeholder); }

.u-text-on-accent  { color: var(--text-on-accent); }

.u-text-accent     { color: var(--accent-primary); }

/* ── Color: Background ────────────────────────────────────
   Semantic token-driven — swaps automatically with dark mode / accent. */

.u-bg-primary     { background-color: var(--bg-primary); }

.u-bg-accent      { background-color: var(--accent-primary); }

.u-bg-accent-light { background-color: var(--accent-primary-light); }

.u-bg-glass       { background-color: var(--glass-bg); }

.u-bg-transparent { background-color: transparent; }

/* ── Flexbox Layout ─────────────────────────────────────── */

.u-flex          { display: flex; }

.u-inline-flex   { display: inline-flex; }

.u-flex-row      { flex-direction: row; }

.u-flex-col      { flex-direction: column; }

.u-flex-wrap     { flex-wrap: wrap; }

.u-flex-nowrap   { flex-wrap: nowrap; }

.u-justify-start    { justify-content: flex-start; }

.u-justify-center   { justify-content: center; }

.u-justify-between  { justify-content: space-between; }

.u-justify-end      { justify-content: flex-end; }

.u-items-start      { align-items: flex-start; }

.u-items-center     { align-items: center; }

.u-items-end        { align-items: flex-end; }

.u-items-stretch    { align-items: stretch; }

.u-items-baseline   { align-items: baseline; }

.u-self-start       { align-self: flex-start; }

.u-self-center      { align-self: center; }

.u-self-end         { align-self: flex-end; }

.u-flex-1        { flex: 1 1 0%; }

.u-flex-auto     { flex: 1 1 auto; }

.u-flex-none     { flex: none; }

.u-flex-shrink-0 { flex-shrink: 0; }

.u-flex-grow     { flex-grow: 1; }

.u-order-first   { order: -9999; }

.u-order-last    { order: 9999; }

.u-order-none    { order: 0; }

/* ── Grid Layout ────────────────────────────────────────── */

.u-grid          { display: grid; }

.u-grid-cols-1   { grid-template-columns: repeat(1, minmax(0, 1fr)); }

.u-grid-cols-2   { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.u-grid-cols-3   { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.u-grid-cols-4   { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* ── Gap ────────────────────────────────────────────────── */

.u-gap-0   { gap: var(--spacing-0); }

.u-gap-0-5 { gap: var(--spacing-0-5); }

.u-gap-1   { gap: var(--spacing-1); }

.u-gap-1-5 { gap: var(--spacing-1-5); }

.u-gap-2   { gap: var(--spacing-2); }

.u-gap-2-5 { gap: var(--spacing-2-5); }

.u-gap-3   { gap: var(--spacing-3); }

.u-gap-4   { gap: var(--spacing-4); }

.u-gap-5   { gap: var(--spacing-5); }

.u-gap-6   { gap: var(--spacing-6); }

.u-gap-8   { gap: var(--spacing-8); }

/* ── Shadows: Zero-Offset Glow ────────────────────────────
   All shadows use 0 0 Npx format (zero X/Y offset, pure glow).
   HubRaiz glass-morphism convention: no directional shadows. */

.u-shadow-sm { box-shadow: 0 0 8px var(--chrome-shadow-sm); }

.u-shadow-md { box-shadow: 0 0 16px var(--chrome-shadow-md); }

.u-shadow-lg { box-shadow: 0 0 24px var(--chrome-shadow-lg); }

.u-shadow-none { box-shadow: none; }

/* ── Border Radius ──────────────────────────────────────── */

.u-rounded-none { border-radius: var(--radius-none); }

.u-rounded-sm   { border-radius: var(--radius-sm); }

.u-rounded-md   { border-radius: var(--radius-md); }

.u-rounded-lg   { border-radius: var(--radius-lg); }

.u-rounded-xl   { border-radius: var(--radius-xl); }

.u-rounded-2xl  { border-radius: var(--radius-2xl); }

.u-rounded-full { border-radius: var(--radius-full); }

/* ── Display ────────────────────────────────────────────── */

.u-block        { display: block; }

.u-inline-block { display: inline-block; }

.u-inline       { display: inline; }

.u-hidden       { display: none; }

/* ── Position ───────────────────────────────────────────── */

.u-relative { position: relative; }

.u-absolute { position: absolute; }

.u-fixed    { position: fixed; }

.u-sticky   { position: sticky; }

/* ── Overflow ───────────────────────────────────────────── */

.u-overflow-auto    { overflow: auto; }

.u-overflow-hidden  { overflow: hidden; }

.u-overflow-visible { overflow: visible; }

.u-overflow-scroll  { overflow: scroll; }

/* ── Width & Height ─────────────────────────────────────── */

.u-w-full   { width: 100%; }

.u-w-auto   { width: auto; }

.u-w-screen { width: 100vw; }

.u-h-full   { height: 100%; }

.u-h-auto   { height: auto; }

.u-h-screen { height: 100vh; }

/* ── Responsive Utilities ─────────────────────────────────
   sm: ≥640px | md: ≥768px | lg: ≥1024px
   Prefix pattern: {bp}-u-{class} e.g. md-u-flex, lg-u-text-lg */

@media (min-width: 640px) {
  .sm-u-mt-0  { margin-top: var(--spacing-0); }
  .sm-u-mt-2  { margin-top: var(--spacing-2); }
  .sm-u-mt-4  { margin-top: var(--spacing-4); }
  .sm-u-mt-6  { margin-top: var(--spacing-6); }
  .sm-u-mt-8  { margin-top: var(--spacing-8); }
  .sm-u-mb-0  { margin-bottom: var(--spacing-0); }
  .sm-u-mb-2  { margin-bottom: var(--spacing-2); }
  .sm-u-mb-4  { margin-bottom: var(--spacing-4); }
  .sm-u-mb-6  { margin-bottom: var(--spacing-6); }
  .sm-u-mb-8  { margin-bottom: var(--spacing-8); }
  .sm-u-mx-2  { margin-left: var(--spacing-2); margin-right: var(--spacing-2); }
  .sm-u-mx-4  { margin-left: var(--spacing-4); margin-right: var(--spacing-4); }
  .sm-u-mx-auto { margin-left: auto; margin-right: auto; }
  .sm-u-my-4  { margin-top: var(--spacing-4); margin-bottom: var(--spacing-4); }
  .sm-u-my-8  { margin-top: var(--spacing-8); margin-bottom: var(--spacing-8); }
  .sm-u-p-2   { padding: var(--spacing-2); }
  .sm-u-p-4   { padding: var(--spacing-4); }
  .sm-u-p-6   { padding: var(--spacing-6); }
  .sm-u-p-8   { padding: var(--spacing-8); }
  .sm-u-px-2  { padding-left: var(--spacing-2); padding-right: var(--spacing-2); }
  .sm-u-px-4  { padding-left: var(--spacing-4); padding-right: var(--spacing-4); }
  .sm-u-px-6  { padding-left: var(--spacing-6); padding-right: var(--spacing-6); }
  .sm-u-py-2  { padding-top: var(--spacing-2); padding-bottom: var(--spacing-2); }
  .sm-u-py-4  { padding-top: var(--spacing-4); padding-bottom: var(--spacing-4); }
  .sm-u-py-6  { padding-top: var(--spacing-6); padding-bottom: var(--spacing-6); }
  .sm-u-text-sm   { font-size: var(--text-sm); }
  .sm-u-text-base { font-size: var(--text-base); }
  .sm-u-text-lg   { font-size: var(--text-lg); }
  .sm-u-text-xl   { font-size: var(--text-xl); }
  .sm-u-text-2xl  { font-size: var(--text-2xl); }
  .sm-u-text-3xl  { font-size: var(--text-3xl); }
  .sm-u-flex       { display: flex; }
  .sm-u-flex-row   { flex-direction: row; }
  .sm-u-flex-col   { flex-direction: column; }
  .sm-u-justify-center  { justify-content: center; }
  .sm-u-justify-between { justify-content: space-between; }
  .sm-u-items-center    { align-items: center; }
  .sm-u-gap-2  { gap: var(--spacing-2); }
  .sm-u-gap-4  { gap: var(--spacing-4); }
  .sm-u-gap-6  { gap: var(--spacing-6); }
  .sm-u-hidden { display: none; }
  .sm-u-block  { display: block; }
  .sm-u-flex-1 { flex: 1 1 0%; }
  .sm-u-w-full { width: 100%; }
  .sm-u-w-auto { width: auto; }
  .sm-u-grid        { display: grid; }
  .sm-u-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sm-u-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .sm-u-shadow-sm { box-shadow: 0 0 8px var(--chrome-shadow-sm); }
  .sm-u-shadow-md { box-shadow: 0 0 16px var(--chrome-shadow-md); }
  .sm-u-shadow-lg { box-shadow: 0 0 24px var(--chrome-shadow-lg); }
  .sm-u-shadow-none { box-shadow: none; }
  .sm-u-rounded-sm { border-radius: var(--radius-sm); }
  .sm-u-rounded-md { border-radius: var(--radius-md); }
  .sm-u-rounded-lg { border-radius: var(--radius-lg); }
  .sm-u-rounded-full { border-radius: var(--radius-full); }
  .sm-u-bg-primary     { background-color: var(--bg-primary); }
  .sm-u-bg-accent      { background-color: var(--accent-primary); }
  .sm-u-bg-accent-light { background-color: var(--accent-primary-light); }
  .sm-u-text-primary   { color: var(--text-primary); }
  .sm-u-text-secondary { color: var(--text-secondary); }
  .sm-u-text-muted     { color: var(--text-muted); }
  .sm-u-text-accent    { color: var(--accent-primary); }
}

@media (min-width: 768px) {
  .md-u-mt-0  { margin-top: var(--spacing-0); }
  .md-u-mt-2  { margin-top: var(--spacing-2); }
  .md-u-mt-4  { margin-top: var(--spacing-4); }
  .md-u-mt-6  { margin-top: var(--spacing-6); }
  .md-u-mt-8  { margin-top: var(--spacing-8); }
  .md-u-mb-0  { margin-bottom: var(--spacing-0); }
  .md-u-mb-2  { margin-bottom: var(--spacing-2); }
  .md-u-mb-4  { margin-bottom: var(--spacing-4); }
  .md-u-mb-6  { margin-bottom: var(--spacing-6); }
  .md-u-mb-8  { margin-bottom: var(--spacing-8); }
  .md-u-mx-2  { margin-left: var(--spacing-2); margin-right: var(--spacing-2); }
  .md-u-mx-4  { margin-left: var(--spacing-4); margin-right: var(--spacing-4); }
  .md-u-mx-auto { margin-left: auto; margin-right: auto; }
  .md-u-my-4  { margin-top: var(--spacing-4); margin-bottom: var(--spacing-4); }
  .md-u-my-8  { margin-top: var(--spacing-8); margin-bottom: var(--spacing-8); }
  .md-u-p-2   { padding: var(--spacing-2); }
  .md-u-p-4   { padding: var(--spacing-4); }
  .md-u-p-6   { padding: var(--spacing-6); }
  .md-u-p-8   { padding: var(--spacing-8); }
  .md-u-px-2  { padding-left: var(--spacing-2); padding-right: var(--spacing-2); }
  .md-u-px-4  { padding-left: var(--spacing-4); padding-right: var(--spacing-4); }
  .md-u-px-6  { padding-left: var(--spacing-6); padding-right: var(--spacing-6); }
  .md-u-py-2  { padding-top: var(--spacing-2); padding-bottom: var(--spacing-2); }
  .md-u-py-4  { padding-top: var(--spacing-4); padding-bottom: var(--spacing-4); }
  .md-u-py-6  { padding-top: var(--spacing-6); padding-bottom: var(--spacing-6); }
  .md-u-text-sm   { font-size: var(--text-sm); }
  .md-u-text-base { font-size: var(--text-base); }
  .md-u-text-lg   { font-size: var(--text-lg); }
  .md-u-text-xl   { font-size: var(--text-xl); }
  .md-u-text-2xl  { font-size: var(--text-2xl); }
  .md-u-text-3xl  { font-size: var(--text-3xl); }
  .md-u-flex       { display: flex; }
  .md-u-flex-row   { flex-direction: row; }
  .md-u-flex-col   { flex-direction: column; }
  .md-u-justify-center  { justify-content: center; }
  .md-u-justify-between { justify-content: space-between; }
  .md-u-items-center    { align-items: center; }
  .md-u-gap-2  { gap: var(--spacing-2); }
  .md-u-gap-4  { gap: var(--spacing-4); }
  .md-u-gap-6  { gap: var(--spacing-6); }
  .md-u-hidden { display: none; }
  .md-u-block  { display: block; }
  .md-u-flex-1 { flex: 1 1 0%; }
  .md-u-w-full { width: 100%; }
  .md-u-w-auto { width: auto; }
  .md-u-grid        { display: grid; }
  .md-u-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .md-u-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .md-u-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .md-u-shadow-sm { box-shadow: 0 0 8px var(--chrome-shadow-sm); }
  .md-u-shadow-md { box-shadow: 0 0 16px var(--chrome-shadow-md); }
  .md-u-shadow-lg { box-shadow: 0 0 24px var(--chrome-shadow-lg); }
  .md-u-shadow-none { box-shadow: none; }
  .md-u-rounded-sm { border-radius: var(--radius-sm); }
  .md-u-rounded-md { border-radius: var(--radius-md); }
  .md-u-rounded-lg { border-radius: var(--radius-lg); }
  .md-u-rounded-full { border-radius: var(--radius-full); }
  .md-u-bg-primary     { background-color: var(--bg-primary); }
  .md-u-bg-accent      { background-color: var(--accent-primary); }
  .md-u-bg-accent-light { background-color: var(--accent-primary-light); }
  .md-u-text-primary   { color: var(--text-primary); }
  .md-u-text-secondary { color: var(--text-secondary); }
  .md-u-text-muted     { color: var(--text-muted); }
  .md-u-text-accent    { color: var(--accent-primary); }
}

@media (min-width: 1024px) {
  .lg-u-mt-0  { margin-top: var(--spacing-0); }
  .lg-u-mt-2  { margin-top: var(--spacing-2); }
  .lg-u-mt-4  { margin-top: var(--spacing-4); }
  .lg-u-mt-6  { margin-top: var(--spacing-6); }
  .lg-u-mt-8  { margin-top: var(--spacing-8); }
  .lg-u-mb-0  { margin-bottom: var(--spacing-0); }
  .lg-u-mb-2  { margin-bottom: var(--spacing-2); }
  .lg-u-mb-4  { margin-bottom: var(--spacing-4); }
  .lg-u-mb-6  { margin-bottom: var(--spacing-6); }
  .lg-u-mb-8  { margin-bottom: var(--spacing-8); }
  .lg-u-mx-2  { margin-left: var(--spacing-2); margin-right: var(--spacing-2); }
  .lg-u-mx-4  { margin-left: var(--spacing-4); margin-right: var(--spacing-4); }
  .lg-u-mx-auto { margin-left: auto; margin-right: auto; }
  .lg-u-my-4  { margin-top: var(--spacing-4); margin-bottom: var(--spacing-4); }
  .lg-u-my-8  { margin-top: var(--spacing-8); margin-bottom: var(--spacing-8); }
  .lg-u-p-2   { padding: var(--spacing-2); }
  .lg-u-p-4   { padding: var(--spacing-4); }
  .lg-u-p-6   { padding: var(--spacing-6); }
  .lg-u-p-8   { padding: var(--spacing-8); }
  .lg-u-px-2  { padding-left: var(--spacing-2); padding-right: var(--spacing-2); }
  .lg-u-px-4  { padding-left: var(--spacing-4); padding-right: var(--spacing-4); }
  .lg-u-px-6  { padding-left: var(--spacing-6); padding-right: var(--spacing-6); }
  .lg-u-py-2  { padding-top: var(--spacing-2); padding-bottom: var(--spacing-2); }
  .lg-u-py-4  { padding-top: var(--spacing-4); padding-bottom: var(--spacing-4); }
  .lg-u-py-6  { padding-top: var(--spacing-6); padding-bottom: var(--spacing-6); }
  .lg-u-text-sm   { font-size: var(--text-sm); }
  .lg-u-text-base { font-size: var(--text-base); }
  .lg-u-text-lg   { font-size: var(--text-lg); }
  .lg-u-text-xl   { font-size: var(--text-xl); }
  .lg-u-text-2xl  { font-size: var(--text-2xl); }
  .lg-u-text-3xl  { font-size: var(--text-3xl); }
  .lg-u-flex       { display: flex; }
  .lg-u-flex-row   { flex-direction: row; }
  .lg-u-flex-col   { flex-direction: column; }
  .lg-u-justify-center  { justify-content: center; }
  .lg-u-justify-between { justify-content: space-between; }
  .lg-u-items-center    { align-items: center; }
  .lg-u-gap-2  { gap: var(--spacing-2); }
  .lg-u-gap-4  { gap: var(--spacing-4); }
  .lg-u-gap-6  { gap: var(--spacing-6); }
  .lg-u-hidden { display: none; }
  .lg-u-block  { display: block; }
  .lg-u-flex-1 { flex: 1 1 0%; }
  .lg-u-w-full { width: 100%; }
  .lg-u-w-auto { width: auto; }
  .lg-u-grid        { display: grid; }
  .lg-u-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lg-u-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lg-u-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .lg-u-shadow-sm { box-shadow: 0 0 8px var(--chrome-shadow-sm); }
  .lg-u-shadow-md { box-shadow: 0 0 16px var(--chrome-shadow-md); }
  .lg-u-shadow-lg { box-shadow: 0 0 24px var(--chrome-shadow-lg); }
  .lg-u-shadow-none { box-shadow: none; }
  .lg-u-rounded-sm { border-radius: var(--radius-sm); }
  .lg-u-rounded-md { border-radius: var(--radius-md); }
  .lg-u-rounded-lg { border-radius: var(--radius-lg); }
  .lg-u-rounded-full { border-radius: var(--radius-full); }
  .lg-u-bg-primary     { background-color: var(--bg-primary); }
  .lg-u-bg-accent      { background-color: var(--accent-primary); }
  .lg-u-bg-accent-light { background-color: var(--accent-primary-light); }
  .lg-u-text-primary   { color: var(--text-primary); }
  .lg-u-text-secondary { color: var(--text-secondary); }
  .lg-u-text-muted     { color: var(--text-muted); }
  .lg-u-text-accent    { color: var(--accent-primary); }
}

/* 5. Glass morphism */

/* ==========================================================================
   4. GLASS MORPHISM
   Glass cards, panels, marketplace buttons (btn-ml, btn-shopee)
   ========================================================================== */

/* --- Glass Card --- */

.glass-card {
  position: relative;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  border-radius: 1.25rem;
  box-shadow:
    0 0 8px var(--card-shadow), inset 0 0.5px 0 var(--glass-inset);
  transition: box-shadow var(--duration-slow) ease, background var(--duration-slow) ease, border-color var(--duration-slow) ease;
  contain: layout;
}

.glass-card:hover {
  background: var(--glass-hover-bg);
  box-shadow:
    0 0 16px var(--card-shadow-hover), inset 0 0.5px 0 var(--glass-inset-hover);
  border-color: var(--glass-hover-border);
}

/* --- Glass Panel --- */

.glass-panel {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  border-radius: 2rem;
  box-shadow:
    0 0 24px var(--card-shadow), inset 0 0.5px 0 var(--glass-inset);
  transition: box-shadow var(--duration-slow) ease, border-color var(--duration-slow) ease;
}

.glass-panel:hover {
  box-shadow:
    0 0 16px var(--card-shadow-hover), inset 0 0.5px 0 var(--glass-inset-hover);
  border-color: var(--glass-hover-border);
}

/* Dark mode: tone down the inset top-highlight for both color themes */

.dark .glass-card {
  box-shadow: 0 0 8px var(--card-shadow), inset 0 0.5px 0 var(--glass-inset-dark);
}

.dark .glass-card:hover {
  box-shadow: 0 0 16px var(--card-shadow-hover), inset 0 0.5px 0 var(--glass-inset-dark-hover);
}

.dark .glass-panel {
  box-shadow: 0 0 24px var(--card-shadow), inset 0 0.5px 0 var(--glass-inset-dark);
}

.dark .glass-panel:hover {
  box-shadow: 0 0 16px var(--card-shadow-hover), inset 0 0.5px 0 var(--glass-inset-dark-hover);
}

/* --- Shared Marketplace Button Styles --- */

.btn-ml,
.btn-shopee {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  padding: 0.875rem 1.25rem;
  border-radius: 0.875rem;
  font-family: var(--font-ui);
  font-weight: var(--font-weight-bold);
  font-size: 0.875rem;
  letter-spacing: -0.005em;
  text-decoration: none;
  min-height: 48px;
  transition: background var(--duration-normal) ease, box-shadow var(--duration-normal) ease, transform var(--duration-normal) ease;
  cursor: pointer;
  border: none;
}

.btn-ml:hover,
.btn-shopee:hover {
  transform: translateY(-2px);
}

.btn-ml:active,
.btn-shopee:active {
  transform: scale(0.98) translateY(0);
}

/* --- Mercado Livre Button --- */

.btn-ml {
  background: linear-gradient(135deg, var(--ml-yellow) 0%, var(--ml-yellow-hover) 100%);
  color: var(--ml-navy);
  box-shadow: 0 0 16px var(--ml-shadow), inset 0 1px 0 var(--ml-inset);
}

.btn-ml:hover {
  background: linear-gradient(135deg, var(--ml-yellow-hover) 0%, color-mix(in srgb, var(--ml-yellow-hover) 85%, black) 100%);
  box-shadow: 0 0 24px var(--ml-shadow-hover), inset 0 1px 0 var(--ml-inset-hover);
}

/* --- Shopee Button --- */

.btn-shopee {
  background: linear-gradient(135deg, var(--shopee-orange) 0%, var(--shopee-orange-hover) 100%);
  /* Shopee brand white text — not --text-on-accent (3rd-party brand color).
     White on #EE4D2D = 3.66:1 — passes large-text (3:1). Documented exception. */
  color: #FFFFFF;
  box-shadow: 0 0 16px var(--shopee-shadow), inset 0 1px 0 var(--btn-inset);
}

.btn-shopee:hover {
  background: linear-gradient(135deg, var(--shopee-orange-hover) 0%, color-mix(in srgb, var(--shopee-orange-hover) 85%, black) 100%);
  box-shadow: 0 0 24px var(--shopee-shadow-hover), inset 0 1px 0 var(--btn-inset-hover);
}

/* 6. Hero section */

/* ==========================================================================
   5. HERO
   Hero section layout, logo, title, tagline, CTAs, scroll indicator
   ========================================================================== */

.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.hero-dot-grid {
  position: absolute;
  inset: 0;
  opacity: 0.025;
  background-image: radial-gradient(circle at 1px 1px, var(--neutral-900) 1px, transparent 0);
  background-size: 28px 28px;
}

.dark .hero-dot-grid { opacity: 0.02; }

.hero-content {
  position: relative;
  z-index: 10;
  width: 100%;
  max-width: 52rem;
  margin: 0 auto;
  padding: 5rem 1.25rem;
}

@media (min-width: 640px) { .hero-content { padding: 7rem 2rem; } }

.hero-glass {
  padding: 2rem;
  text-align: center;
  max-width: 43rem;
  margin: 0 auto;
}

@media (min-width: 640px) { .hero-glass { padding: 3rem; } }

@media (min-width: 768px) { .hero-glass { padding: 4rem; } }

.hero-logo-wrapper {
  display: flex;
  justify-content: center;
  margin-bottom: 1.5rem;
}

.hero-logo-container {
  width: 4.75rem;
  height: 4.75rem;
  border-radius: 1.25rem;
  background: var(--scheme-hero-logo-bg);
  border: 1px solid var(--glass-border);
  box-shadow: 0 0 18px var(--chrome-shadow-sm), inset 0 0.5px 0 var(--glass-inset);
  display: flex;
  align-items: center;
  justify-content: center;
}

.dark .hero-logo-container {
  background: var(--scheme-hero-logo-bg-dark);
  border-color: var(--glass-border);
  box-shadow: 0 0 18px var(--chrome-shadow-dark), inset 0 0.5px 0 var(--glass-inset-dark);
}

@media (min-width: 640px) {
  .hero-logo-container { width: 5.75rem; height: 5.75rem; border-radius: 1.5rem; }
}

.hero-logo-img {
  width: 76%;
  height: 76%;
  object-fit: contain;
  filter: drop-shadow(0 0 8px var(--logo-drop-shadow));
}

@media (min-width: 640px) {
  .hero-logo-img { width: 82%; height: 82%; }
}

.hero-title {
  font-size: clamp(3rem, 8vw, 5.25rem);
  font-weight: var(--font-weight-display);
  letter-spacing: -0.035em;
  line-height: 0.95;
  margin-bottom: 0.875rem;
}

.hero-title-hub { color: var(--neutral-900); }

.dark .hero-title-hub { color: var(--surface-100); }

.hero-title-raiz { color: var(--accent-primary); }

.hero-tagline {
  font-family: var(--font-ui);
  font-size: clamp(1rem, 2.4vw, 1.25rem);
  color: var(--scheme-hero-tagline);
  font-style: italic;
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.005em;
  margin-bottom: 1.25rem;
}

.hero-description {
  max-width: 35rem;
  margin: 0 auto 2rem;
  line-height: 1.75;
  color: var(--neutral-600);
  font-size: 1rem;
}

.dark .hero-description { color: var(--surface-300); }

@media (min-width: 640px) { .hero-description { font-size: 1.125rem; } }

.hero-ctas {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  justify-content: center;
  align-items: center;
}

@media (min-width: 640px) {
  .hero-ctas { flex-direction: row; gap: 1rem; }
}

.hero-ctas .btn-ml,
.hero-ctas .btn-shopee {
  width: auto;
  padding: 1rem 1.75rem;
  font-size: 1rem;
  border-radius: 0.75rem;
}

.hero-trust-hint {
  margin-top: 1.75rem;
  color: var(--scheme-hero-trust);
  font-family: var(--font-ui);
  font-size: 0.75rem;
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.01em;
}

@media (min-width: 640px) { .hero-trust-hint { font-size: 0.875rem; } }

.dark .hero-trust-hint { color: var(--surface-400); }

.hero-scroll-indicator {
  position: absolute;
  bottom: 1.5rem;
  left: 50%;
  margin-left: -1.25rem;
  width: 2.5rem;
  z-index: 10;
}

@media (min-width: 640px) { .hero-scroll-indicator { bottom: 2rem; } }

.hero-scroll-btn {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 9999px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--ui-surface-bg);
  border: 1px solid var(--ui-surface-border);
  color: var(--scheme-hero-scroll-color);
  transition: background var(--duration-slow) ease, color var(--duration-slow) ease;
  cursor: pointer;
}

.dark .hero-scroll-btn {
  background: var(--ui-surface-bg-dark);
  border-color: var(--ui-surface-border-dark);
  color: var(--accent-primary);
}

.hero-scroll-btn:hover {
  color: var(--scheme-focus-ring);
  background: var(--ui-surface-hover-bg);
}

.dark .hero-scroll-btn:hover {
  color: var(--accent-primary-hover);
  background: var(--ui-surface-hover-bg-dark);
}

/* 7. Catalog (filter bar, pills, search, grid/list layout) */

/* ==========================================================================
   6. CATALOG
   Catalog section header, sticky bar, filter bar, search inputs,
   filter pills, view toggle, desktop filters, results bar, mobile summary
   ========================================================================== */

.catalog {
  padding: 3rem 1rem 4rem;
  max-width: 1600px;
  margin: 0 auto;
  position: relative;
  z-index: 10;
}

@media (min-width: 640px) {
  .catalog { padding: 5rem 1.5rem; }
}

@media (min-width: 1024px) {
  .catalog { padding-left: 2rem; padding-right: 2rem; }
}

.catalog-header {
  text-align: center;
  margin-bottom: 1.5rem;
}

@media (min-width: 640px) { .catalog-header { margin-bottom: 2.5rem; } }

.catalog-title {
  font-weight: var(--font-weight-bold);
  color: var(--neutral-900);
  letter-spacing: -0.02em;
  margin-bottom: 0.75rem;
  font-size: clamp(1.85rem, 4vw, 2.75rem);
}

.dark .catalog-title { color: var(--surface-100); }

@media (min-width: 640px) { .catalog-title { margin-bottom: 1rem; } }

.catalog-subtitle {
  color: var(--neutral-600);
  font-family: var(--font-ui);
  font-size: 1rem;
  line-height: 1.7;
  max-width: 42rem;
  margin: 0 auto;
}

.dark .catalog-subtitle { color: var(--surface-300); }

@media (min-width: 640px) { .catalog-subtitle { font-size: 1.125rem; } }

/* --- Sticky Bar --- */

.sticky-bar {
  position: sticky;
  top: 0;
  z-index: 30;
  margin-left: -1rem;
  margin-right: -1rem;
  padding: 0.625rem 1rem;
}

@media (min-width: 640px) {
  .sticky-bar { margin-left: -1.5rem; margin-right: -1.5rem; }
}

.sticky-bar-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-6px);
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease, visibility 0s linear var(--duration-slow);
}

.sticky-bar-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease, visibility 0s linear 0s;
}

.sticky-bar-hidden .filter-bar {
  opacity: 0;
  transition: opacity var(--duration-slow) ease;
}

.sticky-bar-visible .filter-bar {
  opacity: 1;
  transition: opacity var(--duration-slow) ease;
}

.sticky-bar-inner {
  max-width: 48rem;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.625rem 0.75rem;
  border-radius: 1rem;
}

@media (min-width: 640px) {
  .sticky-bar-inner { gap: 0.75rem; padding: 0.75rem; }
}

/* --- Filter Bar --- */

.filter-bar {
  background: var(--filter-bar-bg);
  border: 1px solid var(--filter-bar-border);
  box-shadow: 0 0 24px var(--chrome-shadow-sm);
}

.filter-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  border-radius: 9999px;
  background: var(--accent-primary);
  color: var(--text-on-accent);
  font-size: 0.625rem;
  font-weight: 700;
  padding: 0 5px;
}

/* --- Filter Button --- */

.filter-btn {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.75rem;
  background: var(--accent-primary-light);
  border: 1px solid var(--accent-primary-border);
  color: var(--accent-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  position: relative;
  cursor: pointer;
  transition: background var(--duration-normal) ease;
}

.filter-btn:hover { background: var(--accent-primary-border); }

@media (min-width: 640px) {
  .filter-btn { width: 2.75rem; height: 2.75rem; }
}

.filter-btn-badge {
  position: absolute;
  top: -0.375rem;
  right: -0.375rem;
  min-width: 18px;
  height: 18px;
  font-size: 0.5625rem;
}

/* --- Search Field (shared component) ---
   BEM-structured search input used by both sticky bar and desktop bar.
   Variant modifiers: .search-field--sticky (compact) / .search-field--desktop (full-size)
   Eliminates the previous .sticky-search-* / .desktop-search-* duplication. */

.search-field {
  position: relative;
  flex: 1;
  min-width: 0;
}

.search-field__icon {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  color: var(--neutral-400);
  pointer-events: none;
}

.dark .search-field__icon {
  color: var(--surface-400);
}

.search-field__input {
  width: 100%;
  border-radius: 0.75rem;
  background: var(--search-bg);
  border: 1.5px solid var(--search-border);
  color: var(--text-primary);
  transition: background var(--duration-normal) ease, border-color var(--duration-normal) ease, box-shadow var(--duration-normal) ease;
}

.search-field__input::placeholder { color: var(--text-placeholder); }

.search-field__input:focus {
  outline: none;
  border-color: var(--search-focus-border);
  background: var(--search-focus-bg);
  box-shadow: 0 0 0 2px var(--scheme-search-focus-ring-strong);
}

.search-field__clear {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--neutral-300);
  cursor: pointer;
  transition: color var(--duration-normal) ease;
}

/* ── Sticky variant (compact, mobile-first) ── */

.search-field--sticky .search-field__icon {
  left: 0.75rem;
  width: 1rem;
  height: 1rem;
}

.search-field--sticky .search-field__input {
  padding: 0.5rem 0.75rem 0.5rem 2.25rem;
  font-size: 0.875rem;
}

.search-field--sticky .search-field__input:focus {
  box-shadow: 0 0 0 2px var(--scheme-search-focus-ring-strong);
}

.dark .search-field--sticky .search-field__input:focus {
  box-shadow: 0 0 0 3px var(--scheme-search-focus-ring-strong);
}

@media (min-width: 640px) {
  .search-field--sticky .search-field__input { padding: 0.625rem 0.75rem 0.625rem 2.25rem; }
}

.search-field--sticky .search-field__clear {
  right: 0.625rem;
  padding: 0.125rem;
}

.search-field--sticky .search-field__clear:hover { color: var(--neutral-500); }

.dark .search-field--sticky .search-field__clear:hover { color: var(--surface-300); }

/* ── Desktop variant (full-size, larger icons & padding) ── */

.search-field--desktop .search-field__icon {
  left: 0.875rem;
  width: 1.25rem;
  height: 1.25rem;
}

.search-field--desktop .search-field__input {
  padding: 0.625rem 1rem 0.625rem 2.75rem;
  font-size: 0.9375rem;
  border-radius: 0.875rem;
}

.search-field--desktop .search-field__input:focus {
  box-shadow: 0 0 0 3px var(--scheme-search-focus-ring);
}

.search-field--desktop .search-field__clear {
  right: 0.75rem;
  padding: 0.25rem;
}

.search-field--desktop .search-field__clear:hover { color: var(--neutral-600); }

.dark .search-field--desktop .search-field__clear:hover { color: var(--surface-200); }

/* --- Mobile Filters Summary --- */

.mobile-filters-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 0.375rem;
  font-size: 0.75rem;
  color: var(--neutral-500);
}

.mobile-filters-summary-dot {
  color: var(--neutral-300);
}

.dark .mobile-filters-summary { color: var(--surface-400); }

.mobile-filters-summary button {
  color: var(--accent-primary);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: inherit;
}

@media (min-width: 640px) { .mobile-filters-summary { display: none; } }

/* --- Desktop Inline Filters --- */

.desktop-filters {
  display: none;
  margin-bottom: 2.5rem;
}

@media (min-width: 640px) { .desktop-filters { display: block; } }

.desktop-filters > * + * { margin-top: 1.25rem; }

.filter-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}

.filter-row-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--neutral-400);
  margin-right: 0.125rem;
}

.dark .filter-row-label { color: var(--surface-400); }

/* --- Desktop Search Bar (search field + controls) --- */

/* Matches the sticky bar's filter-bar glass morphism pattern */

.desktop-search-bar {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem;
  border-radius: 1rem;
}

.desktop-search-controls {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}

.pill-count {
  margin-left: 0.375rem;
  opacity: 0.55;
}

/* --- Desktop Results Bar --- */

.desktop-results-bar {
  display: none;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.5rem;
}

@media (min-width: 640px) { .desktop-results-bar { display: flex; } }

.desktop-results-count {
  font-family: var(--font-ui);
  font-size: 0.875rem;
  color: var(--neutral-500);
}

.dark .desktop-results-count { color: var(--surface-400); }

.desktop-clear-btn {
  font-family: var(--font-ui);
  font-size: 0.875rem;
  font-weight: var(--font-weight-medium);
  color: var(--accent-primary);
  text-decoration: underline;
  text-underline-offset: 2px;
  background: none;
  border: none;
  cursor: pointer;
  transition: color var(--duration-normal) ease;
}

.desktop-clear-btn:hover { color: var(--accent-primary-hover); }

/* --- Filter Pills --- */

.category-pill, .brand-pill, .tag-pill {
  padding: 0.5rem 1.125rem;
  border-radius: 9999px;
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  font-weight: 600;
  transition: background var(--duration-normal) ease, color var(--duration-normal) ease, border-color var(--duration-normal) ease, box-shadow var(--duration-normal) ease;
  border: none;
  cursor: pointer;
  min-height: 40px;
  display: inline-flex;
  align-items: center;
}

.category-pill--active, .brand-pill--active, .tag-pill--active {
  background: var(--accent-primary);
  color: var(--text-on-accent);
  box-shadow: 0 0 16px var(--accent-primary-shadow), inset 0 1px 0 var(--btn-inset);
}

.category-pill--inactive, .brand-pill--inactive, .tag-pill--inactive {
  background: var(--pill-inactive-bg);
  color: var(--pill-inactive-text);
  border: 1px solid var(--pill-inactive-border);
}

.category-pill--inactive:hover, .brand-pill--inactive:hover, .tag-pill--inactive:hover {
  background: var(--glass-hover-bg);
  border-color: var(--accent-primary-border);
}

/* Brand pills use --accent-primary-border on hover, same as category pills,
   so both follow the active theme consistently. */

/* --- View Toggle --- */

.view-toggle {
  display: flex;
  gap: 2px;
  background: var(--pill-inactive-bg);
  border-radius: 0.75rem;
  padding: 3px;
  border: 1px solid var(--pill-inactive-border);
}

.view-toggle-btn {
  padding: 0.5rem;
  border-radius: 0.625rem;
  transition: background var(--duration-normal) ease, color var(--duration-normal) ease, box-shadow var(--duration-normal) ease;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  min-height: 40px;
}

.view-toggle-btn--active {
  background: var(--accent-primary);
  color: var(--text-on-accent);
  box-shadow: 0 0 8px var(--accent-primary-shadow);
}

.view-toggle-btn--inactive {
  background: transparent;
  color: var(--text-secondary);
}

.view-toggle-btn--inactive:hover { background: var(--pill-inactive-bg); }

.dark .view-toggle-btn--inactive { color: var(--text-muted); }

/* Sticky bar view toggle — compact on mobile */

.sticky-bar .view-toggle { padding: 2px; flex-shrink: 0; }

.sticky-bar .view-toggle-btn { min-width: 34px; min-height: 34px; padding: 6px; }

.sticky-bar .view-toggle-btn svg { width: 14px; height: 14px; }

@media (min-width: 640px) {
  .sticky-bar .view-toggle-btn { min-width: 38px; min-height: 38px; padding: 8px; }
  .sticky-bar .view-toggle-btn svg { width: 16px; height: 16px; }
}

/* 8. Product card */

/* ==========================================================================
   7. PRODUCT CARD
   Product card layout, image wrap, hover overlay, content, tags, name,
   buttons, featured badge, scrolling description, fluid grids, empty state
   ========================================================================== */

/* --- Product Card --- */

.product-card {
  overflow: hidden;
  display: flex;
  flex-direction: column;
  height: 100%;
  contain: layout;
}

.product-card.list-view {
  flex-direction: row;
}

.product-card-image-wrap {
  position: relative;
  overflow: hidden;
  background: var(--scheme-image-wrap-bg);
  flex-shrink: 0;
  aspect-ratio: 1;
  width: 100%;
}

.dark .product-card-image-wrap { background: var(--scheme-image-wrap-bg-dark); }

.product-card.list-view .product-card-image-wrap {
  width: 7rem;
}

@media (min-width: 640px) {
  .product-card.list-view .product-card-image-wrap { width: 10rem; }
}

@media (min-width: 768px) {
  .product-card.list-view .product-card-image-wrap { width: 14rem; }
}

.product-card-image-wrap picture {
  display: contents;
}

.product-card-image-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease-out;
  will-change: transform;
}

.product-card:hover .product-card-image-wrap img {
  transform: scale(1.05);
}

/* Image error placeholder — absolutely positioned to overlay image area */

.product-card-image-error {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  color: var(--neutral-300);
  z-index: 1;
}

.dark .product-card-image-error { color: var(--surface-400); }

.product-card-image-error-text {
  font-size: 0.75rem;
}

.product-card-hover-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, var(--scheme-overlay-gradient), transparent, transparent);
  opacity: 0;
  transition: opacity var(--duration-slow) ease;
  pointer-events: none;
}

.dark .product-card-hover-overlay { background: linear-gradient(to top, var(--scheme-overlay-gradient-dark), transparent, transparent); }

.product-card:hover .product-card-hover-overlay { opacity: 1; }

/* --- Card Content --- */

.product-card-content {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
  padding: 1.25rem;
}

@media (min-width: 640px) { .product-card-content { padding: 1.5rem; } }

.product-card.list-view .product-card-content { padding: 0.75rem; }

@media (min-width: 640px) {
  .product-card.list-view .product-card-content { padding: 1.25rem; }
}

@media (min-width: 768px) {
  .product-card.list-view .product-card-content { padding: 1.5rem; }
}

/* --- Tags --- */

.product-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.375rem;
  margin-bottom: 0.5rem;
}

.tag-brand {
  font-weight: 700;
  border-radius: 9999px;
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  padding: 0.125rem 0.625rem;
  background: var(--accent-primary-light);
  color: var(--accent-primary);
  border: 1px solid var(--accent-primary-border);
}

.product-card.list-view .tag-brand { font-size: 0.625rem; padding: 0.125rem 0.5rem; }

.tag-category, .tag-attribute {
  border-radius: 9999px;
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  padding: 0.125rem 0.5rem;
  background: var(--accent-primary-light);
  color: color-mix(in srgb, var(--accent-primary) 55%, var(--text-muted));
  border: 1px solid color-mix(in srgb, var(--accent-primary-border) 50%, var(--glass-border));
}

.product-card.list-view .tag-category,
.product-card.list-view .tag-attribute { font-size: 0.625rem; }

.tag-attribute {
  background: color-mix(in srgb, var(--accent-primary-light) 55%, var(--glass-bg));
  color: color-mix(in srgb, var(--accent-primary) 48%, var(--text-muted));
}

@media (max-width: 639px) {
  .tag-category,
  .tag-attribute { display: none; }
}

/* --- Product Name --- */

.product-name {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-bold);
  color: var(--neutral-900);
  line-height: 1.18;
  letter-spacing: -0.012em;
  margin-bottom: 0.5rem;
  font-size: 1.125rem;
}

.dark .product-name { color: var(--surface-100); }

@media (min-width: 640px) { .product-name { font-size: 1.25rem; } }

.product-card.list-view .product-name { font-size: 0.875rem; margin-bottom: 0.25rem; }

@media (min-width: 640px) {
  .product-card.list-view .product-name { font-size: 1.125rem; margin-bottom: 0.5rem; }
}

/* --- Product Buttons --- */

.product-buttons {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  margin-top: auto;
}

@media (min-width: 640px) {
  .product-card.list-view .product-buttons { flex-direction: row; gap: 0.75rem; }
}

.product-card.list-view .product-buttons .btn-ml,
.product-card.list-view .product-buttons .btn-shopee {
  padding: 0.5rem 0.75rem;
  font-size: 0.75rem;
  min-height: 40px;
}

@media (min-width: 640px) {
  .product-card.list-view .product-buttons .btn-ml,
  .product-card.list-view .product-buttons .btn-shopee {
    padding: 0.75rem 1rem;
    font-size: 0.875rem;
    min-height: 48px;
  }
}

/* --- Featured Badge --- */

.featured-badge {
  position: absolute;
  top: 0.75rem;
  left: 0.75rem;
  background: var(--scheme-badge-bg);
  color: var(--text-on-accent);
  font-family: var(--font-ui);
  font-size: 0.6875rem;
  font-weight: 700;
  padding: 0.3125rem 0.75rem;
  border-radius: 9999px;
  box-shadow: 0 0 12px var(--accent-primary-shadow);
  letter-spacing: 0.025em;
  text-transform: uppercase;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.featured-badge svg {
  width: 0.625rem;
  height: 0.625rem;
  flex-shrink: 0;
}

/* List-view: compact badge */

.product-card.list-view .featured-badge {
  font-size: 0.6rem;
  padding: 0.25rem 0.5rem;
  top: 0.375rem;
  left: 0.375rem;
}

.featured-text-full { display: none; }

.featured-text-short { display: inline; }

@media (min-width: 640px) {
  .featured-text-full { display: inline; }
  .featured-text-short { display: none; }
}

/* --- Scrolling Description --- */

.desc-scroll-viewport {
  overflow: hidden;
  min-height: calc(var(--lines, 3) * 1.6em);
  max-height: calc(var(--lines, 3) * 1.6em);
  position: relative;
  flex-shrink: 0;
}

.desc-scroll-viewport::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 1.4em;
  background: linear-gradient(to bottom, transparent, var(--desc-fade));
  pointer-events: none;
  transition: opacity var(--duration-slow) ease;
  z-index: 1;
}

.desc-scroll-viewport.fits::after { opacity: 0; }

.desc-scroll-inner {
  display: block;
  color: var(--neutral-600);
  font-family: var(--font-ui);
  line-height: 1.65;
}

.dark .desc-scroll-inner {
  color: var(--surface-400);
}

.product-card:hover .desc-scroll-inner.overflows {
  animation: scroll-text var(--scroll-duration, 4s) ease-in-out 0.3s 1 both;
}

.product-card:hover .desc-scroll-viewport.overflows::after { opacity: 0; }

/* --- Fluid Grids --- */

.fluid-grid-products {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}

.product-list {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

@media (min-width: 640px) {
  .fluid-grid-products { gap: 1.5rem; }
  .product-list { gap: 1.5rem; }
}

.fluid-grid-trust {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.25rem;
}

.fluid-grid-trust > * {
  flex: 0 1 260px;
  min-width: 220px;
}

@media (min-width: 640px) {
  .fluid-grid-trust { gap: 1.5rem; }
}

/* --- Empty State --- */

.empty-state {
  text-align: center;
  padding: 4rem 2.5rem;
}

@media (min-width: 640px) { .empty-state { padding: 6rem 2.5rem; } }

.empty-state-icon { font-size: 3rem; margin-bottom: 1rem; }

.empty-state-title {
  font-size: 1.125rem;
  color: var(--neutral-600);
  margin-bottom: 0.5rem;
}

.dark .empty-state-title { color: var(--surface-200); }

.empty-state-text {
  font-size: 0.875rem;
  color: var(--neutral-400);
  margin-bottom: 1.5rem;
}

.dark .empty-state-text { color: var(--surface-400); }

.empty-state-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1.5rem;
  border-radius: 0.75rem;
  background: var(--accent-primary);
  color: var(--text-on-accent);
  font-family: var(--font-ui);
  font-weight: var(--font-weight-semibold);
  min-height: 48px;
  cursor: pointer;
  border: none;
  transition: background var(--duration-normal) ease;
}

.empty-state-btn:hover { background: var(--accent-primary-hover); }

/* 9. Mobile filter drawer */

/* ==========================================================================
   8. DRAWER
   Filter drawer overlay, panel, header, sections, footer, drawer-open body state
   ========================================================================== */

/* --- Drawer Overlay --- */

.drawer-overlay {
  position: fixed;
  inset: 0;
  background: var(--drawer-overlay-bg);
  z-index: 59;
  animation: fade-in 0.25s var(--ease-out) both;
}

.drawer-overlay--closing { animation: overlay-out 0.2s var(--ease-out) both; }

/* --- Drawer Panel --- */

.drawer-panel {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  width: 85%;
  max-width: 360px;
  background: var(--drawer-panel-bg);
  border-right: 1px solid var(--drawer-border);
  box-shadow: 0 0 40px var(--chrome-shadow-md);
  z-index: 60;
  overflow-y: auto;
  animation: drawer-in 0.3s var(--ease-out) both;
  display: flex;
  flex-direction: column;
  overscroll-behavior: contain;
}

.drawer-panel--closing { animation: drawer-out 0.2s var(--ease-out) both; }

/* --- Drawer Header --- */

.drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem;
  border-bottom: 1px solid var(--glass-border);
}

.drawer-header-left {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}

.drawer-header-icon-wrap {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 0.75rem;
  background: var(--accent-primary-light);
  border: 1px solid var(--accent-primary-border);
  color: var(--accent-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--duration-normal) ease;
}

.drawer-header-icon-wrap:hover { background: var(--accent-primary-border); }

.drawer-header-icon { width: 1.125rem; height: 1.125rem; }

.drawer-title {
  font-weight: bold;
  font-size: 1.125rem;
  color: var(--neutral-900);
}

.dark .drawer-title { color: var(--surface-100); }

.drawer-filter-badge {
  font-size: 0.6875rem;
  font-weight: 700;
  min-width: 1.25rem;
  height: 1.25rem;
  line-height: 1.25rem;
  text-align: center;
  border-radius: 0.625rem;
  padding: 0 0.375rem;
  background: var(--accent-primary);
  color: var(--text-on-accent);
}

.drawer-close-btn {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 0.5rem;
  background: var(--drawer-close-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  cursor: pointer;
  color: var(--neutral-400);
  transition: background var(--duration-normal) ease, color var(--duration-normal) ease;
}

.dark .drawer-close-btn,
[data-color-scheme="alt"].dark .drawer-close-btn { background: var(--drawer-close-bg-dark); color: var(--surface-300); }

.drawer-close-btn:hover { color: var(--neutral-700); background: var(--glass-hover-bg); }

.dark .drawer-close-btn:hover,
[data-color-scheme="alt"].dark .drawer-close-btn:hover { color: var(--surface-100); background: var(--drawer-close-bg-dark-hover); }

/* --- Drawer Sections --- */

.drawer-section { padding: 1rem 1rem 0.5rem; }

.drawer-section-title {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--neutral-400);
  margin-bottom: 0.75rem;
}

.dark .drawer-section-title { color: var(--surface-400); }

.drawer-pills { display: flex; flex-wrap: wrap; gap: 0.5rem; }

/* --- Drawer Footer --- */

.drawer-footer {
  padding: 1rem;
  margin-top: auto;
  border-top: 1px solid var(--glass-border);
}

.drawer-submit-btn {
  width: 100%;
  padding: 0.75rem 1rem;
  border-radius: 0.75rem;
  background: var(--accent-primary);
  color: var(--text-on-accent);
  font-family: var(--font-ui);
  font-weight: 600;
  font-size: 0.875rem;
  box-shadow: 0 0 16px var(--accent-primary-shadow);
  min-height: 48px;
  cursor: pointer;
  border: none;
  transition: background var(--duration-normal) ease;
}

.drawer-submit-btn:hover { background: var(--accent-primary-hover); }

/* --- Drawer Open: Prevent page shift on fixed elements --- */

body.drawer-open .dark-toggle {
  right: calc(1.25rem + var(--scrollbar-compensation, 0px));
}

/* 10. Trust section */

/* ==========================================================================
   9. TRUST
   Trust section, divider, header, cards, CTA
   ========================================================================== */

.trust-section {
  padding: 4rem 1rem;
  max-width: 1600px;
  margin: 0 auto;
  position: relative;
  z-index: 10;
}

@media (min-width: 640px) {
  .trust-section { padding: 5rem 1.5rem; }
}

@media (min-width: 1024px) {
  .trust-section { padding-left: 2rem; padding-right: 2rem; }
}

.trust-divider {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 2.5rem;
}

@media (min-width: 640px) { .trust-divider { margin-bottom: 3rem; } }

.trust-divider-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--scheme-trust-divider), transparent);
}

.dark .trust-divider-line { background: linear-gradient(to right, transparent, var(--scheme-trust-divider-dark), transparent); }

.trust-divider-circle {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 9999px;
  background: var(--ui-surface-bg);
  border: 1px solid var(--ui-surface-border);
  display: flex;
  align-items: center;
  justify-content: center;
}

.dark .trust-divider-circle { background: var(--ui-surface-bg-dark); border-color: var(--ui-surface-border-dark); }

.trust-header {
  text-align: center;
  margin-bottom: 2.5rem;
}

.trust-title {
  font-weight: var(--font-weight-bold);
  color: var(--neutral-900);
  letter-spacing: -0.015em;
  margin-bottom: 0.75rem;
  font-size: clamp(1.6rem, 3vw, 2.15rem);
}

.dark .trust-title { color: var(--surface-100); }

.trust-subtitle {
  color: var(--neutral-500);
  font-family: var(--font-ui);
  font-size: 0.875rem;
  line-height: 1.7;
  max-width: 28rem;
  margin: 0 auto;
}

.dark .trust-subtitle { color: var(--surface-400); }

@media (min-width: 640px) { .trust-subtitle { font-size: 1rem; } }

/* --- Trust Card --- */

.trust-card {
  padding: 1.5rem;
  text-align: center;
}

@media (min-width: 640px) { .trust-card { padding: 1.75rem; } }

.trust-card-icon-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 1rem;
  margin-bottom: 1rem;
  border: 1px solid transparent;
}

.trust-card-icon-wrap--primary {
  background: var(--accent-primary-light);
  color: var(--accent-primary);
  border-color: var(--accent-primary-border);
}

.trust-card-icon-wrap--secondary {
  background: var(--accent-secondary-light);
  color: var(--accent-secondary);
  border-color: var(--accent-secondary-border);
}

.trust-card-title {
  font-family: var(--font-heading);
  font-weight: var(--font-weight-bold);
  color: var(--neutral-900);
  font-size: 1rem;
  margin-bottom: 0.5rem;
}

.dark .trust-card-title { color: var(--surface-100); }

.trust-card-text {
  color: var(--neutral-500);
  font-family: var(--font-ui);
  font-size: 0.875rem;
  line-height: 1.65;
}

.dark .trust-card-text { color: var(--surface-400); }

/* --- Trust CTA --- */

.trust-cta {
  margin-top: 2.5rem;
  text-align: center;
}

.trust-cta-panel {
  display: inline-block;
  padding: 1rem 2rem;
}

.trust-cta-text {
  color: var(--neutral-500);
  font-size: 0.875rem;
}

.dark .trust-cta-text { color: var(--surface-400); }

.trust-cta-link {
  color: var(--accent-primary);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color var(--duration-normal) ease;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
}

.trust-cta-link:hover { color: var(--accent-primary-hover); }

/* 11. Footer */

/* ==========================================================================
   10. FOOTER
   Site footer grid, brand column, links, security text, bottom bar,
   dark mode toggle FAB
   ========================================================================== */

.site-footer {
  background: var(--footer-bg);
  color: var(--footer-text);
  padding: 3rem 1.25rem 2rem;
  position: relative;
  z-index: 10;
}

@media (min-width: 640px) {
  .site-footer { padding-top: 3.5rem; padding-left: 1.5rem; padding-right: 1.5rem; }
}

@media (min-width: 1024px) {
  .site-footer { padding-left: 2rem; padding-right: 2rem; }
}

.footer-inner { max-width: 1600px; margin: 0 auto; }

.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  margin-bottom: 2.5rem;
}

@media (min-width: 640px) { .footer-grid { grid-template-columns: 1fr 1fr; } }

@media (min-width: 1024px) { .footer-grid { grid-template-columns: 1fr 1fr 1fr; } }

.footer-brand-title {
  font-size: 1.25rem;
  font-weight: var(--font-weight-bold);
  font-family: var(--font-heading);
  letter-spacing: -0.02em;
  margin-bottom: 1rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.footer-logo-img {
  width: 1.75rem;
  height: 1.75rem;
  object-fit: contain;
}

.footer-brand-hub { color: var(--footer-text); }

.footer-brand-raiz { color: var(--scheme-footer-accent); }

.footer-brand-desc {
  color: var(--footer-muted);
  font-family: var(--font-ui);
  font-size: 0.875rem;
  line-height: 1.65;
}

.footer-heading {
  font-weight: var(--font-weight-bold);
  font-size: 1rem;
  margin-bottom: 0.75rem;
}

.footer-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
}

.footer-link {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--footer-muted);
  font-family: var(--font-ui);
  font-size: 0.875rem;
  min-height: 44px;
  transition: color var(--duration-normal) ease;
}

.footer-link:hover { color: var(--scheme-footer-accent); }

.footer-link-icon {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  color: var(--scheme-footer-icon);
}

.footer-security-text {
  color: var(--footer-muted);
  font-family: var(--font-ui);
  font-size: 0.875rem;
  line-height: 1.65;
  margin-bottom: 1rem;
}

.footer-marketplace-badges {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  color: var(--footer-muted);
}

.footer-marketplace-badge {
  font-size: 0.75rem;
  font-weight: 500;
  padding: 0.25rem 0.625rem;
  border-radius: 0.375rem;
  background: var(--scheme-marketplace-badge-bg);
  border: 1px solid var(--scheme-marketplace-badge-border);
  color: var(--scheme-footer-accent);
}

.footer-marketplace-plus {
  font-size: 0.75rem;
}

.footer-email {
  word-break: break-all;
}

.footer-bottom {
  border-top: 1px solid var(--scheme-footer-border);
  padding-top: 1.5rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  text-align: center;
}

.footer-copyright {
  color: var(--footer-muted);
  font-size: 0.75rem;
}

.footer-disclaimer {
  color: var(--footer-disclaimer);
  font-size: 0.75rem;
  max-width: 28rem;
}

/* 12. Dark mode toggle FAB */

/* ==========================================================================
   10. DARK MODE TOGGLE (FAB) & COLOR SCHEME PICKER
   ========================================================================== */

.dark-toggle {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  z-index: 50;
  width: 3rem;
  height: 3rem;
  border-radius: 9999px;
  background: var(--toggle-bg);
  border: 1px solid var(--toggle-border);
  box-shadow: 0 0 16px var(--chrome-shadow-md);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background var(--duration-slow) ease, border-color var(--duration-slow) ease, box-shadow var(--duration-slow) ease, transform var(--duration-slow) ease;
}

.dark-toggle:hover {
  transform: scale(1.1);
  box-shadow: 0 0 24px var(--chrome-shadow-lg);
}

.dark-toggle:active { transform: scale(0.95); }

.dark .dark-toggle,
[data-color-scheme="alt"].dark .dark-toggle {
  background: var(--toggle-bg-dark);
  border-color: var(--toggle-border-dark);
  box-shadow: 0 0 16px var(--chrome-shadow-dark);
}

.dark-toggle-icon {
  position: absolute;
  width: 1.25rem;
  height: 1.25rem;
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease;
}

/* Sun visible in dark mode, hidden in light */

.dark-toggle-icon--sun {
  color: var(--accent-primary);
  opacity: 0;
  transform: rotate(90deg) scale(0.5);
}

.dark .dark-toggle-icon--sun {
  opacity: 1;
  transform: rotate(0) scale(1);
}

/* Moon visible in light mode, hidden in dark */

.dark-toggle-icon--moon {
  color: var(--accent-primary);
  opacity: 1;
  transform: rotate(0) scale(1);
}

.dark .dark-toggle-icon--moon {
  opacity: 0;
  transform: rotate(-90deg) scale(0.5);
}

/* ── Long-press hint pulse on toggle ─────────────────────── */

.dark-toggle[data-scheme-picker-hint] {
  animation: scheme-hint-pulse 0.6s ease;
}

@keyframes scheme-hint-pulse {
  0%   { box-shadow: 0 0 0 0 var(--accent-primary-shadow); }
  70%  { box-shadow: 0 0 0 10px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* 13. Color scheme picker panel */

/* ==========================================================================
   12. COLOR SCHEME PICKER
   Popup panel for selecting color schemes, triggered by long-press
   on the dark/light mode toggle FAB
   ========================================================================== */

/* --- Dropdown Panel (shared base) ---
   Glass morphism popup with show/hide transition.
   Used by both .scheme-picker and .per-page-panel.
   Variant positioning is applied via the concrete component classes. */

.dropdown-panel {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  border-radius: 1.25rem;
  box-shadow: 0 0 32px var(--chrome-shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px) scale(0.97);
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease, visibility 0s linear var(--duration-slow);
}

.dropdown-panel.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
  transition: opacity var(--duration-slow) ease, transform var(--duration-slow) ease, visibility 0s linear 0s;
}

.dropdown-option {
  width: 100%;
  padding: 0.625rem 0.75rem;
  border-radius: 0.75rem;
  border: 1.5px solid transparent;
  background: transparent;
  cursor: pointer;
  font-family: inherit;
  color: var(--text-primary);
  transition: background var(--duration-normal) ease, border-color var(--duration-normal) ease;
}

.dropdown-option:hover {
  background: var(--glass-hover-bg);
}

.dropdown-option.is-active {
  border-color: var(--accent-primary);
  background: var(--glass-hover-bg);
}

.dropdown-title {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--text-muted);
}

.scheme-picker {
  position: fixed;
  bottom: 5rem;
  right: 1.25rem;
  z-index: 49;
  width: 260px;
  padding: 1rem;
  transform: translateY(8px) scale(0.95);
}

.scheme-picker-title {
  /* .dropdown-title is inherited — extends with spacing */
  margin-bottom: 0.75rem;
}

.scheme-picker-list {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.scheme-option {
  /* .dropdown-option inherited — extends with flex layout */
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.scheme-option-swatches {
  display: flex;
  gap: 3px;
  flex-shrink: 0;
}

.scheme-swatch {
  width: 14px;
  height: 14px;
  border-radius: 9999px;
  border: 1px solid var(--scheme-swatch-border);
  flex-shrink: 0;
}

.scheme-option-info {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.scheme-option-name {
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.2;
}

.scheme-option-desc {
  font-size: 0.6875rem;
  color: var(--text-muted);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.scheme-option-check {
  margin-left: auto;
  width: 1rem;
  height: 1rem;
  color: var(--accent-primary);
  opacity: 0;
  flex-shrink: 0;
}

.scheme-option.is-active .scheme-option-check {
  opacity: 1;
}

/* 14. Alternate color scheme component overrides */

/* ── Alternate olive scheme overrides ─────────────────────────────
   Only rules where the desired color differs from what
   var(--accent-primary) and var(--accent-secondary) resolve to
   in the alternate olive context. Most switching is handled by tokens.
   ─────────────────────────────────────────────────────── */

/* Card shadows */

[data-color-scheme="alt"] .filter-bar {
  box-shadow: 0 0 24px var(--card-shadow);
}

/* Selection */

[data-color-scheme="alt"] ::selection { background: var(--accent-primary-light); color: var(--text-primary); }

[data-color-scheme="alt"].dark ::selection { background: var(--selection-bg-dark); color: var(--surface-100); }

/* Circular glass elements — match the scheme-tinted glass border so they're
   consistent with glass-card / glass-panel in the olive theme */

[data-color-scheme="alt"] .hero-scroll-btn   { border-color: var(--glass-border); }

[data-color-scheme="alt"] .trust-divider-circle { border-color: var(--glass-border); }

/* dark-toggle: light-mode only — the alt.dark state already uses transparent white */

[data-color-scheme="alt"]:not(.dark) .dark-toggle { border-color: var(--glass-border); }

/* Alt dark mode: hero scroll button consistent with default dark */

[data-color-scheme="alt"].dark .hero-scroll-btn {
  background: var(--ui-surface-bg-dark);
  border-color: var(--ui-surface-border-dark);
  color: var(--accent-primary);
}

/* Alt dark mode: trust divider circle consistent with default dark */

[data-color-scheme="alt"].dark .trust-divider-circle {
  background: var(--ui-surface-bg-dark);
  border-color: var(--ui-surface-border-dark);
}

/* ── Alternate olive dark: Component overrides ──────────────────── */

/* Dark toggle FAB — already combined with default dark via selector grouping */

/* Long-press hint pulse — reuses scheme-hint-pulse keyframe (identical values;
   --accent-primary-shadow resolves correctly per-theme automatically) */

[data-color-scheme="alt"].dark .dark-toggle[data-scheme-picker-hint] {
  animation: scheme-hint-pulse 0.6s ease;
}

/* 15. 404 page */

/* ==========================================================================
   11. 404 PAGE
   Not found page styles
   ========================================================================== */

.not-found {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem 1.25rem;
}

.not-found-content {
  width: 100%;
  max-width: 32rem;
  margin: 0 auto;
}

.not-found-glass {
  padding: 3rem 2rem;
  text-align: center;
}

.not-found-icon {
  color: var(--accent-primary);
  margin-bottom: 1.5rem;
}

.not-found-title {
  font-family: var(--font-heading);
  font-size: clamp(4rem, 10vw, 6rem);
  font-weight: bold;
  color: var(--accent-primary);
  line-height: 1;
  margin-bottom: 0.5rem;
}

.not-found-text {
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--neutral-800);
  margin-bottom: 0.75rem;
}

.dark .not-found-text { color: var(--surface-100); }

.not-found-subtext {
  color: var(--neutral-500);
  font-size: 0.9375rem;
  margin-bottom: 2rem;
}

.dark .not-found-subtext { color: var(--surface-400); }

.not-found-btn {
  display: inline-flex;
  width: auto;
  padding: 0.875rem 1.75rem;
}

/* ── Pagination ───────────────────────────────────── */

.page-hidden { display: none !important; }

/* Trigger button — matches view-toggle container style */

.per-page-wrap {
  position: relative;
}

.per-page-trigger {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  min-height: 40px;
  padding: 0 0.625rem;
  background: var(--pill-inactive-bg);
  border: 1px solid var(--pill-inactive-border);
  border-radius: 0.75rem;
  color: var(--text-secondary);
  font-family: var(--font-ui);
  font-size: 0.8125rem;
  font-weight: 500;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color var(--duration-normal) ease, background var(--duration-normal) ease;
}

.per-page-trigger:hover { border-color: var(--accent-primary); }

.per-page-trigger[aria-expanded="true"] {
  border-color: var(--accent-primary);
  background: var(--glass-hover-bg);
}

.per-page-chevron {
  transition: transform 0.2s ease;
}

.per-page-trigger[aria-expanded="true"] .per-page-chevron {
  transform: rotate(180deg);
}

/* Panel — mirrors .scheme-picker */

.per-page-panel {
  /* .dropdown-panel inherited — extends with positioning */
  position: absolute;
  top: calc(100% + 0.5rem);
  right: 0;
  z-index: 55;
  width: 160px;
  padding: 0.75rem;
}

.per-page-panel-title {
  /* .dropdown-title inherited — extends with spacing */
  margin-bottom: 0.5rem;
  padding: 0 0.25rem;
}

.per-page-option {
  /* .dropdown-option inherited — extends with text sizing */
  display: block;
  padding: 0.5rem 0.75rem;
  text-align: left;
  font-size: 0.8125rem;
  font-weight: 500;
}

.pagination-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 2.5rem;
  padding-bottom: 1rem;
}

.pagination-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 1rem;
  border-radius: 0.625rem;
  border: 1px solid var(--neutral-200);
  background: var(--surface-50);
  color: var(--neutral-700);
  font-size: 0.875rem;
  font-family: inherit;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.pagination-btn:hover:not(:disabled) {
  background: var(--accent-primary-light);
  border-color: var(--accent-primary);
  color: var(--accent-primary);
}

.pagination-btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

.dark .pagination-btn {
  background: var(--neutral-800);
  color: var(--surface-300);
  border-color: var(--neutral-600);
}

.dark .pagination-btn:hover:not(:disabled) {
  background: var(--accent-primary-light);
  border-color: var(--accent-primary);
  color: var(--accent-primary);
}

.pagination-indicator {
  font-size: 0.875rem;
  color: var(--neutral-500);
  min-width: 5rem;
  text-align: center;
}

.dark .pagination-indicator { color: var(--surface-400); }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3BhcnRpYWxzL21haW4uY3NzIiwiLi4vcGFydGlhbHMvZm9udHMuY3NzIiwiLi4vcGFydGlhbHMvdG9rZW5zLmNzcyIsIi4uL3BhcnRpYWxzL3Jlc2V0LmNzcyIsIi4uL3BhcnRpYWxzL3V0aWxpdGllcy5jc3MiLCIuLi9wYXJ0aWFscy9nbGFzcy5jc3MiLCIuLi9wYXJ0aWFscy9oZXJvLmNzcyIsIi4uL3BhcnRpYWxzL2NhdGFsb2cuY3NzIiwiLi4vcGFydGlhbHMvY2F0YWxvZy1jYXJkLmNzcyIsIi4uL3BhcnRpYWxzL2RyYXdlci5jc3MiLCIuLi9wYXJ0aWFscy90cnVzdC5jc3MiLCIuLi9wYXJ0aWFscy9mb290ZXIuY3NzIiwiLi4vcGFydGlhbHMvZGFyay10b2dnbGUuY3NzIiwiLi4vcGFydGlhbHMvc2NoZW1lLXBpY2tlci5jc3MiLCIuLi9wYXJ0aWFscy9zY2hlbWUtb3ZlcnJpZGVzLmNzcyIsIi4uL3BhcnRpYWxzLzQwNC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0VBSStFOztBQUUvRSw4QkFBOEI7O0FDTjlCOzs7OytFQUkrRTs7QUFFL0U7RUFDRSw2QkFBNkI7RUFDN0IsOEZBQThGO0VBQzlGLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsNkJBQTZCO0VBQzdCLDhGQUE4RjtFQUM5RixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLDRCQUE0QjtFQUM1Qiw0RkFBNEY7RUFDNUYsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSw0QkFBNEI7RUFDNUIsNEZBQTRGO0VBQzVGLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsNEJBQTRCO0VBQzVCLDRGQUE0RjtFQUM1RixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtBQUNwQjs7QUFF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QVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUseUJBQXlCLEVBQUU7O0FBQ3JDLFVBQVUseUJBQXlCLEVBQUU7O0FBRXJDLFdBQVcsNEJBQTRCLEVBQUU7O0FBQ3pDLFdBQVcsNEJBQTRCLEVBQUU7O0FBQ3pDLFlBQVksOEJBQThCLEVBQUU7O0FBQzVDLFdBQVcsNEJBQTRCLEVBQUU7O0FBQ3pDLFlBQVksOEJBQThCLEVBQUU7O0FBQzVDLFdBQVcsNEJBQTRCLEVBQUU7O0FBQ3pDLFlBQVksOEJBQThCLEVBQUU7O0FBQzVDLFdBQVcsNEJBQTRCLEVBQUU7O0FBQ3pDLFdBQVcsNEJBQTRCLEVBQUU7O0FBQ3pDLFdBQVcsNEJBQTRCLEVBQUU7O0FBQ3pDLFdBQVcsNEJBQTRCLEVBQUU7O0FBQ3pDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBRTFDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFlBQVksaUNBQWlDLEVBQUU7O0FBQy9DLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFlBQVksaUNBQWlDLEVBQUU7O0FBQy9DLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFlBQVksaUNBQWlDLEVBQUU7O0FBQy9DLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsK0JBQStCLEVBQUU7O0FBQzVDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBQzdDLFdBQVcsZ0NBQWdDLEVBQUU7O0FBRTdDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLFdBQVcsNkJBQTZCLEVBQUU7O0FBQzFDLGFBQWEsaUJBQWlCLEVBQUU7O0FBRWhDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLFdBQVcsOEJBQThCLEVBQUU7O0FBQzNDLGFBQWEsa0JBQWtCLEVBQUU7O0FBRWpDLFdBQVcsNkJBQTZCLEVBQUUsOEJBQThCLEVBQUU7O0FBQzFFLFdBQVcsNkJBQTZCLEVBQUUsOEJBQThCLEVBQUU7O0FBQzFFLFdBQVcsNkJBQTZCLEVBQUUsOEJBQThCLEVBQUU7O0FBQzFFLFdBQVcsNkJBQTZCLEVBQUUsOEJBQThCLEVBQUU7O0FBQzFFLFdBQVcsNkJBQTZCLEVBQUUsOEJBQThCLEVBQUU7O0FBQzFFLFdBQVcsNkJBQTZCLEVBQUUsOEJBQThCLEVBQUU7O0FBQzFFLFdBQVcsNkJBQTZCLEVBQUUsOEJBQThCLEVBQUU7O0FBQzFFLGFBQWEsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUU7O0FBRXBELFdBQVcsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzFFLFdBQVcsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzFFLFdBQVcsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzFFLFdBQVcsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzFFLFdBQVcsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzFFLFdBQVcsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzFFLFdBQVcsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUU7O0FBQzFFLFdBQVcsNkJBQTZCLEVBQUUsZ0NBQWdDLEVBQUU7O0FBQzVFLFdBQVcsNkJBQTZCLEVBQUUsZ0NBQWdDLEVBQUU7O0FBRTVFOzBEQUMwRDs7QUFFMUQsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsVUFBVSwwQkFBMEIsRUFBRTs7QUFDdEMsV0FBVywyQkFBMkIsRUFBRTs7QUFDeEMsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsV0FBVywyQkFBMkIsRUFBRTs7QUFDeEMsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsV0FBVywyQkFBMkIsRUFBRTs7QUFDeEMsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsV0FBVywyQkFBMkIsRUFBRTs7QUFDeEMsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsVUFBVSx5QkFBeUIsRUFBRTs7QUFDckMsVUFBVSwwQkFBMEIsRUFBRTs7QUFDdEMsVUFBVSwwQkFBMEIsRUFBRTs7QUFDdEMsVUFBVSwwQkFBMEIsRUFBRTs7QUFFdEMsV0FBVyw2QkFBNkIsRUFBRTs7QUFDMUMsV0FBVyw2QkFBNkIsRUFBRTs7QUFDMUMsV0FBVyw2QkFBNkIsRUFBRTs7QUFDMUMsV0FBVyw2QkFBNkIsRUFBRTs7QUFDMUMsV0FBVyw2QkFBNkIsRUFBRTs7QUFDMUMsV0FBVyw2QkFBNkIsRUFBRTs7QUFDMUMsV0FBVyw2QkFBNkIsRUFBRTs7QUFFMUMsV0FBVyxnQ0FBZ0MsRUFBRTs7QUFDN0MsV0FBVyxnQ0FBZ0MsRUFBRTs7QUFDN0MsV0FBVyxnQ0FBZ0MsRUFBRTs7QUFDN0MsV0FBVyxnQ0FBZ0MsRUFBRTs7QUFDN0MsV0FBVyxnQ0FBZ0MsRUFBRTs7QUFDN0MsV0FBVyxnQ0FBZ0MsRUFBRTs7QUFDN0MsV0FBVyxnQ0FBZ0MsRUFBRTs7QUFFN0MsV0FBVyw4QkFBOEIsRUFBRTs7QUFDM0MsV0FBVyw4QkFBOEIsRUFBRTs7QUFDM0MsV0FBVyw4QkFBOEIsRUFBRTs7QUFDM0MsV0FBVyw4QkFBOEIsRUFBRTs7QUFDM0MsV0FBVyw4QkFBOEIsRUFBRTs7QUFDM0MsV0FBVyw4QkFBOEIsRUFBRTs7QUFDM0MsV0FBVyw4QkFBOEIsRUFBRTs7QUFFM0MsV0FBVywrQkFBK0IsRUFBRTs7QUFDNUMsV0FBVywrQkFBK0IsRUFBRTs7QUFDNUMsV0FBVywrQkFBK0IsRUFBRTs7QUFDNUMsV0FBVywrQkFBK0IsRUFBRTs7QUFDNUMsV0FBVywrQkFBK0IsRUFBRTs7QUFDNUMsV0FBVywrQkFBK0IsRUFBRTs7QUFDNUMsV0FBVywrQkFBK0IsRUFBRTs7QUFFNUMsV0FBVyw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRTs7QUFDNUUsV0FBVyw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRTs7QUFDNUUsWUFBWSxnQ0FBZ0MsRUFBRSxpQ0FBaUMsRUFBRTs7QUFDakYsV0FBVyw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRTs7QUFDNUUsWUFBWSxnQ0FBZ0MsRUFBRSxpQ0FBaUMsRUFBRTs7QUFDakYsV0FBVyw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRTs7QUFDNUUsV0FBVyw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRTs7QUFDNUUsV0FBVyw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRTs7QUFDNUUsV0FBVyw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRTs7QUFFNUUsV0FBVyw2QkFBNkIsRUFBRSxnQ0FBZ0MsRUFBRTs7QUFDNUUsV0FBVyw2QkFBNkIsRUFBRSxnQ0FBZ0MsRUFBRTs7QUFDNUUsWUFBWSwrQkFBK0IsRUFBRSxrQ0FBa0MsRUFBRTs7QUFDakYsV0FBVyw2QkFBNkIsRUFBRSxnQ0FBZ0MsRUFBRTs7QUFDNUUsWUFBWSwrQkFBK0IsRUFBRSxrQ0FBa0MsRUFBRTs7QUFDakYsV0FBVyw2QkFBNkIsRUFBRSxnQ0FBZ0MsRUFBRTs7QUFDNUUsV0FBVyw2QkFBNkIsRUFBRSxnQ0FBZ0MsRUFBRTs7QUFDNUUsV0FBVyw2QkFBNkIsRUFBRSxnQ0FBZ0MsRUFBRTs7QUFDNUUsV0FBVyw2QkFBNkIsRUFBRSxnQ0FBZ0MsRUFBRTs7QUFFNUU7O3NEQUVzRDs7QUFFdEQsZUFBZSx5QkFBeUIsRUFBRTs7QUFDMUMsZUFBZSx5QkFB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bUNBQW1DO0VBQ25DLDRCQUE0QjtBQUM5Qjs7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSw4QkFBOEI7RUFDOUIseUJBQXlCO0VBQ3pCLGdDQUFnQztBQUNsQzs7QUFFQTtFQUNFLHVDQUF1QztFQUN2QyxtQ0FBbUM7RUFDbkMsNEJBQTRCO0FBQzlCOztBQUVBO0VBQ0UsbUJBQW1CO0VBQ25CLHlCQUF5QjtFQUN6QixlQUFlO0VBQ2Ysa0JBQWtCO0FBQ3BCOztBQUVBLDhCQUE4Qix5QkFBeUIsRUFBRSIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSHViUmFpeiDigJQgTWFpbiBTdHlsZXNoZWV0IEVudHJ5IFBvaW50XG4gICBJbXBvcnRzIGFsbCBDU1MgcGFydGlhbHMgaW4gZG9jdW1lbnRlZCBhcmNoaXRlY3R1cmUgb3JkZXIuXG4gICBQb3N0Q1NTICsgcG9zdGNzcy1pbXBvcnQgYnVuZGxlcyB0aGlzIGludG8gZGlzdC9zdHlsZS5jc3MgYXQgYnVpbGQgdGltZS5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIDEuIFNlbGYtaG9zdGVkIGZvbnQgZmFjZXMgKi9cbkBpbXBvcnQgXCIuL2ZvbnRzLmNzc1wiO1xuXG4vKiAyLiBEZXNpZ24gdG9rZW5zIOKAlCBNVVNUIGZvbGxvdyBmb250czsgYWxsIGNvbXBvbmVudCBwYXJ0aWFscyBkZXBlbmQgb24gdGhlc2UgKi9cbkBpbXBvcnQgXCIuL3Rva2Vucy5jc3NcIjtcblxuLyogMy4gUmVzZXQgJiBiYXNlICovXG5AaW1wb3J0IFwiLi9yZXNldC5jc3NcIjtcblxuLyogNC4gVXRpbGl0aWVzIChrZXlmcmFtZXMsIGFuaW1hdGlvbnMsIGF0b21pYyBoZWxwZXJzKSAqL1xuQGltcG9ydCBcIi4vdXRpbGl0aWVzLmNzc1wiO1xuXG4vKiA1LiBHbGFzcyBtb3JwaGlzbSAqL1xuQGltcG9ydCBcIi4vZ2xhc3MuY3NzXCI7XG5cbi8qIDYuIEhlcm8gc2VjdGlvbiAqL1xuQGltcG9ydCBcIi4vaGVyby5jc3NcIjtcblxuLyogNy4gQ2F0YWxvZyAoZmlsdGVyIGJhciwgcGlsbHMsIHNlYXJjaCwgZ3JpZC9saXN0IGxheW91dCkgKi9cbkBpbXBvcnQgXCIuL2NhdGFsb2cuY3NzXCI7XG5cbi8qIDguIFByb2R1Y3QgY2FyZCAqL1xuQGltcG9ydCBcIi4vY2F0YWxvZy1jYXJkLmNzc1wiO1xuXG4vKiA5LiBNb2JpbGUgZmlsdGVyIGRyYXdlciAqL1xuQGltcG9ydCBcIi4vZHJhd2VyLmNzc1wiO1xuXG4vKiAxMC4gVHJ1c3Qgc2VjdGlvbiAqL1xuQGltcG9ydCBcIi4vdHJ1c3QuY3NzXCI7XG5cbi8qIDExLiBGb290ZXIgKi9cbkBpbXBvcnQgXCIuL2Zvb3Rlci5jc3NcIjtcblxuLyogMTIuIERhcmsgbW9kZSB0b2dnbGUgRkFCICovXG5AaW1wb3J0IFwiLi9kYXJrLXRvZ2dsZS5jc3NcIjtcblxuLyogMTMuIENvbG9yIHNjaGVtZSBwaWNrZXIgcGFuZWwgKi9cbkBpbXBvcnQgXCIuL3NjaGVtZS1waWNrZXIuY3NzXCI7XG5cbi8qIDE0LiBBbHRlcm5hdGUgY29sb3Igc2NoZW1lIGNvbXBvbmVudCBvdmVycmlkZXMgKi9cbkBpbXBvcnQgXCIuL3NjaGVtZS1vdmVycmlkZXMuY3NzXCI7XG5cbi8qIDE1LiA0MDQgcGFnZSAqL1xuQGltcG9ydCBcIi4vNDA0LmNzc1wiO1xuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNlbGYtaG9zdGVkIHR5cG9ncmFwaHlcbiAgIElCTSBQbGV4IGZpbGVzIGFyZSBpbnN0YWxsZWQgZnJvbSBAZm9udHNvdXJjZSBkdXJpbmcgbnBtIGluc3RhbGwgYW5kIGNvcGllZFxuICAgaW50byAvYXNzZXRzL2ZvbnRzIGJ5IEVsZXZlbnR5IGF0IGJ1aWxkIHRpbWUuIE5vIHJ1bnRpbWUgR29vZ2xlIEZvbnRzIGNhbGxzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIklCTSBQbGV4IFNlcmlmXCI7XG4gIHNyYzogdXJsKFwiL2Fzc2V0cy9mb250cy9pYm0tcGxleC1zZXJpZi9pYm0tcGxleC1zZXJpZi1sYXRpbi02MDAtbm9ybWFsLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIklCTSBQbGV4IFNlcmlmXCI7XG4gIHNyYzogdXJsKFwiL2Fzc2V0cy9mb250cy9pYm0tcGxleC1zZXJpZi9pYm0tcGxleC1zZXJpZi1sYXRpbi03MDAtbm9ybWFsLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIklCTSBQbGV4IFNhbnNcIjtcbiAgc3JjOiB1cmwoXCIvYXNzZXRzL2ZvbnRzL2libS1wbGV4LXNhbnMvaWJtLXBsZXgtc2Fucy1sYXRpbi00MDAtbm9ybWFsLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIklCTSBQbGV4IFNhbnNcIjtcbiAgc3JjOiB1cmwoXCIvYXNzZXRzL2ZvbnRzL2libS1wbGV4LXNhbnMvaWJtLXBsZXgtc2Fucy1sYXRpbi01MDAtbm9ybWFsLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIklCTSBQbGV4IFNhbnNcIjtcbiAgc3JjOiB1cmwoXCIvYXNzZXRzL2ZvbnRzL2libS1wbGV4LXNhbnMvaWJtLXBsZXgtc2Fucy1sYXRpbi01MDAtaXRhbGljLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIklCTSBQbGV4IFNhbnNcIjtcbiAgc3JjOiB1cmwoXCIvYXNzZXRzL2ZvbnRzL2libS1wbGV4LXNhbnMvaWJtLXBsZXgtc2Fucy1sYXRpbi02MDAtbm9ybWFsLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIklCTSBQbGV4IFNhbnNcIjtcbiAgc3JjOiB1cmwoXCIvYXNzZXRzL2ZvbnRzL2libS1wbGV4LXNhbnMvaWJtLXBsZXgtc2Fucy1sYXRpbi03MDAtbm9ybWFsLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAxLiBERVNJR04gVE9LRU5TXG4gICBDU1MgY3VzdG9tIHByb3BlcnRpZXMgb3JnYW5pemVkIGJ5IHJvbGU6XG4gICBcbiAgIOKUjOKUgCBQYWxldHRlIFByaW1pdGl2ZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgIFN1cmZhY2UsIE5ldXRyYWwg4oCUIGJhc2UgY29sb3Igc2NhbGVzICAgICAgICAgICAgICAgICAgICDilIJcbiAgIOKUgiAgRmVlZCBzZW1hbnRpYyB0b2tlbnM7IGFsc28gY29uc3VtZWQgZGlyZWN0bHkgYnkgc29tZSAgICDilIJcbiAgIOKUgiAgY29tcG9uZW50IG92ZXJyaWRlcyAoZXNwZWNpYWxseSAuZGFyayBzZWxlY3RvciBibG9ja3MpICDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuICAg4pSM4pSAIEFjY2VudCBTeXN0ZW0g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgIC0tYWNjZW50LXByaW1hcnkgLyAtLWFjY2VudC1zZWNvbmRhcnkgKyB2YXJpYW50cyAgICAgICAg4pSCXG4gICDilIIgIFNXQVAgYmV0d2VlbiBkZWZhdWx0IGFuZCBhbHQgdGhlbWVzICAgICAgICAgICAgICAgICAgICAg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgIOKUjOKUgCBTZW1hbnRpYyBUb2tlbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgIC0tYmctcHJpbWFyeSwgLS10ZXh0LSosIC0tZ2xhc3MtKiwgLS1waWxsLSosIGV0Yy4gICAgICDilIJcbiAgIOKUgiAgT3ZlcnJpZGUgaW4gLmRhcmsgLyBbYWx0XSAvIFthbHRdLmRhcmsgLyBAbWVkaWEgICAgICAgIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICDilIzilIAgU2NoZW1lIFRva2VucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiAgLS1zY2hlbWUtKiDigJQgY29udGV4dC1zcGVjaWZpYyBvdmVycmlkZXMgcGVyIHRoZW1lICAgICAgIOKUglxuICAg4pSCICBFYWNoIGRlZmluZWQgaW4gOnJvb3QgYW5kIG92ZXJyaWRkZW4gcGVyIHRoZW1lIGJsb2NrICAgIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICDilIzilIAgU3RydWN0dXJhbCBUb2tlbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgIC0tY2hyb21lLXNoYWRvdy0qLCAtLWdsYXNzLWluc2V0LSosIC0tdWktc3VyZmFjZS0qICAgICDilIJcbiAgIOKUgiAgLS10b2dnbGUtKiwgLS1kcmF3ZXItY2xvc2UtKiwgLS1idG4taW5zZXQtKiAgICAgICAgICAgIOKUglxuICAg4pSCICBTaGFkb3dzLCBoaWdobGlnaHRzLCB0cmFuc2x1Y2VudCBvdmVybGF5cyAgICAgICAgICAgICAgIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICBcbiAgIFRoZW1lIHN0cnVjdHVyZTpcbiAgICAgOnJvb3QgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIERlZmF1bHQgKE9yYW5nZSkgbGlnaHQgbW9kZVxuICAgICAuZGFyayAgICAgICAgICAgICAgICAgICAgICAgICDihpIgRGVmYXVsdCAoT3JhbmdlKSBkYXJrIG1vZGVcbiAgICAgW2RhdGEtY29sb3Itc2NoZW1lPVwiYWx0XCJdICAgICDihpIgQWx0IChPbGl2ZSkgbGlnaHQgbW9kZVxuICAgICBbZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0uZGFya+KGkiBBbHQgKE9saXZlKSBkYXJrIG1vZGVcbiAgICAgQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspIOKGkiBOb24tSlMgZGFyayBmYWxsYmFja1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuOnJvb3Qge1xuICBjb2xvci1zY2hlbWU6IGxpZ2h0O1xuXG4gIC8qIFN1cmZhY2UgcGFsZXR0ZSDigJQgYmFzZSBjYW52YXMgdG9uZXMgZm9yIGJhY2tncm91bmRzICYgbGlnaHQgdGV4dCBvbiBkYXJrICovXG4gIC0tc3VyZmFjZS01MDogI0ZBRjdGMjtcbiAgLS1zdXJmYWNlLTEwMDogI0Y1RjBFODtcbiAgLS1zdXJmYWNlLTIwMDogI0VCRTNENTtcbiAgLS1zdXJmYWNlLTMwMDogI0Q0QzhCNDtcbiAgLS1zdXJmYWNlLTQwMDogI0I4QTY4RTtcblxuICAvKiBOZXV0cmFsIHBhbGV0dGUg4oCUIHRleHQsIGJvcmRlcnMsIGFuZCBzdHJ1Y3R1cmFsIHRvbmVzICovXG4gIC0tbmV1dHJhbC0yMDA6ICNEMUJGQTg7XG4gIC0tbmV1dHJhbC0zMDA6ICNCMDlBN0U7XG4gIC0tbmV1dHJhbC00MDA6ICM4QTcyNjA7XG4gIC0tbmV1dHJhbC01MDA6ICM2RTVBNDg7XG4gIC0tbmV1dHJhbC02MDA6ICM1QzRBM0E7XG4gIC0tbmV1dHJhbC03MDA6ICM0QTNBMkU7XG4gIC0tbmV1dHJhbC04MDA6ICMzRDJFMjI7XG4gIC0tbmV1dHJhbC05MDA6ICMyQzE4MTA7XG5cbiAgLyogR2xhc3MgY2FyZC9wYW5lbCBzaGFkb3cgdG9rZW5zICovXG4gIC0tY2FyZC1zaGFkb3c6ICAgICAgIHJnYmEoNDQsIDI0LCAxNiwgMC4wNCk7XG4gIC0tY2FyZC1zaGFkb3ctaG92ZXI6IHJnYmEoMjU1LCA5MiwgMCwgMC4wOCk7XG5cbiAgLyogTWFya2V0cGxhY2UgY29sb3JzICovXG4gIC0tbWwteWVsbG93OiAjRkZFNjAwO1xuICAtLW1sLXllbGxvdy1ob3ZlcjogI0ZGRDcwMDtcbiAgLS1tbC1uYXZ5OiAjMkQzMjc3O1xuICAtLW1sLXNoYWRvdzogcmdiYSgyNTUsIDIzMCwgMCwgMC4yNSk7XG4gIC0tbWwtc2hhZG93LWhvdmVyOiByZ2JhKDI1NSwgMjMwLCAwLCAwLjM1KTtcbiAgLS1zaG9wZWUtb3JhbmdlOiAjRUU0RDJEO1xuICAtLXNob3BlZS1vcmFuZ2UtaG92ZXI6ICNENzMyMTE7XG4gIC0tc2hvcGVlLXNoYWRvdzogcmdiYSgyMzgsIDc3LCA0NSwgMC4yNSk7XG4gIC0tc2hvcGVlLXNoYWRvdy1ob3ZlcjogcmdiYSgyMzgsIDc3LCA0NSwgMC4zNSk7XG5cbiAgLyogRm9udHMgKi9cbiAgLS1mb250LWhlYWRpbmc6IFwiSUJNIFBsZXggU2VyaWZcIiwgR2VvcmdpYSwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgQ2FtYnJpYSwgXCJOb3RvIFNlcmlmXCIsIHNlcmlmO1xuICAtLWZvbnQtYm9keTogXCJJQk0gUGxleCBTYW5zXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIC0tZm9udC11aTogXCJJQk0gUGxleCBTYW5zXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cbiAgLyogVHJhbnNpdGlvbiBwcmVzZXRzICovXG4gIC0tZWFzZS1vdXQ6IGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKTtcbiAgLS1kdXJhdGlvbi1ub3JtYWw6IDAuMnM7XG4gIC0tZHVyYXRpb24tc2xvdzogMC4zcztcblxuICAvKiBBY2NlbnQgc3lzdGVtIOKAlCBwcmltYXJ5IGFjY2VudCB3aXRoIHNlY29uZGFyeSBhcyBmYWxsYmFjayAqL1xuICAtLWFjY2VudC1wcmltYXJ5OiAjRkY1QzAwO1xuICAtLWFjY2VudC1wcmltYXJ5LWhvdmVyOiAjRTk0RjAwO1xuICAtLWFjY2VudC1wcmltYXJ5LWxpZ2h0OiByZ2JhKDI1NSwgOTIsIDAsIDAuMTIpO1xuICAtLWFjY2VudC1wcmltYXJ5LWJvcmRlcjogcmdiYSgyNTUsIDkyLCAwLCAwLjI1KTtcbiAgLS1hY2NlbnQtcHJpbWFyeS1zaGFkb3c6IHJnYmEoMjU1LCA5MiwgMCwgMC4yNSk7XG5cbiAgLS1hY2NlbnQtc2Vjb25kYXJ5OiAjNjM2QjJGO1xuICAtLWFjY2VudC1zZWNvbmRhcnktbGlnaHQ6IHJnYmEoOTksIDEwNywgNDcsIDAuMTIpO1xuICAtLWFjY2VudC1zZWNvbmRhcnktYm9yZGVyOiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjI1KTtcblxuICAvKiBTZW1hbnRpYyBjb2xvcnMg4oCUIGxpZ2h0IG1vZGUgZGVmYXVsdHMgKi9cbiAgLS1iZy1wcmltYXJ5OiAjRjVGMEU4O1xuICAtLXRleHQtcHJpbWFyeTogIzJDMTgxMDtcbiAgLS10ZXh0LXNlY29uZGFyeTogIzVDNEEzQTtcbiAgLS10ZXh0LW11dGVkOiAjNzI1RTRDO1xuICAtLXRleHQtcGxhY2Vob2xkZXI6IHJnYmEoOTIsIDc0LCA1OCwgMC40KTtcbiAgLS1nbGFzcy1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KTtcbiAgLS1nbGFzcy1ib3JkZXI6IHJnYmEoMjU1LCA5MiwgMCwgMC4xNCk7XG4gIC0tZ2xhc3MtaG92ZXItYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Mik7XG4gIC0tZ2xhc3MtaG92ZXItYm9yZGVyOiByZ2JhKDI1NSwgOTIsIDAsIDAuMik7XG4gIC0tZmlsdGVyLWJhci1iZzogcmdiYSgyNTAsIDI0NywgMjQyLCAwLjg4KTtcbiAgLS1maWx0ZXItYmFyLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAtLXNlYXJjaC1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAtLXNlYXJjaC1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS1zZWFyY2gtZm9jdXMtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Mik7XG4gIC0tc2VhcmNoLWZvY3VzLWJvcmRlcjogcmdiYSgyNTUsIDkyLCAwLCAwLjQpO1xuICAtLXBpbGwtaW5hY3RpdmUtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgLS1waWxsLWluYWN0aXZlLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAtLXBpbGwtaW5hY3RpdmUtdGV4dDogIzVDNEEzQTtcbiAgLS1kcmF3ZXItcGFuZWwtYmc6IHJnYmEoMjUwLCAyNDcsIDI0MiwgMC45Mik7XG4gIC0tZHJhd2VyLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAtLWRyYXdlci1vdmVybGF5LWJnOiByZ2JhKDQ0LCAyNCwgMTYsIDAuNCk7XG4gIC0tZGVzYy1mYWRlOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpO1xuICAtLWZvb3Rlci1iZzogIzJDMTgxMDtcbiAgLS1mb290ZXItdGV4dDogI0U1REZENDtcbiAgLS1mb290ZXItbXV0ZWQ6IHJnYmEoMjAwLCAxOTAsIDE3NSwgMC43NSk7XG4gIC0tc2NoZW1lLWZvb3Rlci1hY2NlbnQ6ICNGRjhDNUE7XG4gIC0tc2NoZW1lLWZvb3Rlci1pY29uOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC42NSk7XG4gIC0tc2NoZW1lLWZvb3Rlci1ib3JkZXI6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjEyKTtcbiAgLS1mb290ZXItZGlzY2xhaW1lcjogcmdiYSgyMDAsIDE5MCwgMTc1LCAwLjgpO1xuXG4gIC8qIFNjaGVtZS1zcGVjaWZpYyBhY2NlbnQgdG9rZW5zIOKAlCBkZWZhdWx0IChvcmFuZ2UpIHRoZW1lICovXG4gIC0tc2NoZW1lLWhlcm8tdGFnbGluZTogI0ZGNUMwMDtcbiAgLyogVGFnLCBwaWxsLCBiYWRnZSB0b2tlbnMgdXNlIC0tYWNjZW50LXByaW1hcnkgZmFtaWx5IGRpcmVjdGx5XG4gICAgIHNvIHRoZXkgc3dhcCBhdXRvbWF0aWNhbGx5IHdpdGggdGhlIGFjdGl2ZSBjb2xvciBzY2hlbWUuICovXG4gIC0tc2NoZW1lLWJhZGdlLWJnOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1hY2NlbnQtcHJpbWFyeSkgMCUsIHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKSAxMDAlKTtcbiAgLS1zY2hlbWUtc2Nyb2xsLXRodW1iOiByZ2JhKDI1NSwgOTIsIDAsIDAuNCk7XG4gIC0tc2NoZW1lLWZvY3VzLXJpbmc6ICNGRjVDMDA7XG4gIC0tc2NoZW1lLWhlcm8tbG9nby1iZzogcmdiYSgyNTUsIDkyLCAwLCAwLjA2KTtcbiAgLS1zY2hlbWUtaGVyby1sb2dvLWJnLWRhcms6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjE2KTtcbiAgLS1zY2hlbWUtaGVyby10cnVzdDogIzZFNUE0ODtcbiAgLS1zY2hlbWUtaGVyby1zY3JvbGwtY29sb3I6IHJnYmEoMjU1LCA5MiwgMCwgMC42KTtcbiAgLS1zY2hlbWUtaW1hZ2Utd3JhcC1iZzogcmdiYSgyMzUsIDIyNywgMjEzLCAwLjMpO1xuICAtLXNjaGVtZS1pbWFnZS13cmFwLWJnLWRhcms6IHJnYmEoNDQsIDI0LCAxNiwgMC40KTtcbiAgLS1zY2hlbWUtb3ZlcmxheS1ncmFkaWVudDogcmdiYSg0NCwgMjQsIDE2LCAwLjIpO1xuICAtLXNjaGVtZS1vdmVybGF5LWdyYWRpZW50LWRhcms6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgLS1zY2hlbWUtc2VhcmNoLWZvY3VzLXJpbmc6IHJnYmEoMjU1LCA5MiwgMCwgMC4wOCk7XG4gIC0tc2NoZW1lLXNlYXJjaC1mb2N1cy1yaW5nLXN0cm9uZzogcmdiYSgyNTUsIDkyLCAwLCAwLjEpO1xuICAtLXNjaGVtZS10cnVzdC1kaXZpZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4zKTtcbiAgLS1zY2hlbWUtdHJ1c3QtZGl2aWRlci1kYXJrOiByZ2JhKDI1NSwgOTIsIDAsIDAuMTIpO1xuICAvKiBNYXJrZXRwbGFjZSBiYWRnZSDigJQgc3VidGxlIGFjY2VudCB0aW50IChmb290ZXIgaXMgYWx3YXlzIGRhcmspICovXG4gIC0tc2NoZW1lLW1hcmtldHBsYWNlLWJhZGdlLWJnOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4xNSk7XG4gIC0tc2NoZW1lLW1hcmtldHBsYWNlLWJhZGdlLWJvcmRlcjogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMyk7XG5cbiAgLyogVGFnIGhpZXJhcmNoeSDigJQgYm90aCB1c2UgYWNjZW50LXByaW1hcnktbGlnaHQgYmcgKGhlcm8gaWNvbiBzdHlsZSkuXG4gICAgIEJyYW5kIHRhZ3M6IGZ1bGwgYWNjZW50IHRleHQgKyBmdWxsIGFjY2VudCBib3JkZXIgKyBib2xkID0gcG9wcy5cbiAgICAgQ2F0ZWdvcnkgdGFnczogZmFkZWQgYWNjZW50IHRleHQgKyBmYWRlZCBhY2NlbnQgYm9yZGVyICsgbm9ybWFsID0gcmVjZWRlcy5cbiAgICAgTm8gc2VwYXJhdGUgLWRhcmsgdG9rZW5zIG5lZWRlZDsgYWNjZW50IHRva2VucyBhdXRvLXN3YXAuICovXG4gIC8qIOKUgOKUgCBUZXh0IG9uIGFjY2VudCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgVGV4dCBvbiBzb2xpZC9maWxsZWQgYWNjZW50IGJhY2tncm91bmRzIChza2lwIGxpbmssIENUQSBidXR0b25zKS4gKi9cbiAgLS10ZXh0LW9uLWFjY2VudDogIzJDMTgxMDtcblxuICAvKiDilIDilIAgU2VsZWN0aW9uIGhpZ2hsaWdodCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiAgLS1zZWxlY3Rpb24tYmctZGFyazogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMzUpO1xuXG4gIC8qIOKUgOKUgCBHbGFzcyBtb3JwaGlzbSBpbnNldCBoaWdobGlnaHRzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICBTdWJ0bGUgdG9wLWVkZ2UgaGlnaGxpZ2h0IHRoYXQgc2ltdWxhdGVzIGxpZ2h0IHJlZmxlY3Rpb25cbiAgICAgb24gZ2xhc3Mgc3VyZmFjZXMgaW4gbGlnaHQgYW5kIGRhcmsgbW9kZXMgKi9cbiAgLS1nbGFzcy1pbnNldDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAtLWdsYXNzLWluc2V0LWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gIC0tZ2xhc3MtaW5zZXQtZGFyazogcmdiYSgyMjksIDIyMywgMjEyLCAwLjA1KTtcbiAgLS1nbGFzcy1pbnNldC1kYXJrLWhvdmVyOiByZ2JhKDIyOSwgMjIzLCAyMTIsIDAuMDgpO1xuXG4gIC8qIOKUgOKUgCBTdHJ1Y3R1cmFsIHNoYWRvd3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgIFdhcm0tdGludGVkIGRyb3Agc2hhZG93cyBmb3IgVUkgY2hyb21lIChwYW5lbHMsIGRyYXdlcnMsIEZBQnMpLlxuICAgICBMaWdodCBtb2RlIHVzZXMgd2FybSBicm93biBiYXNlOyBkYXJrIG1vZGUgdXNlcyBwdXJlIGJsYWNrLiAqL1xuICAtLWNocm9tZS1zaGFkb3ctc206IHJnYmEoNDQsIDI0LCAxNiwgMC4wNSk7XG4gIC0tY2hyb21lLXNoYWRvdy1tZDogcmdiYSg0NCwgMjQsIDE2LCAwLjA4KTtcbiAgLS1jaHJvbWUtc2hhZG93LWxnOiByZ2JhKDQ0LCAyNCwgMTYsIDAuMTIpO1xuICAtLWNocm9tZS1zaGFkb3ctZGFyazogcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAtLWxvZ28tZHJvcC1zaGFkb3c6ICAgcmdiYSgwLCAwLCAwLCAwLjM1KTsgIC8qIGhlcm8gbG9nbyBnbG93IGRyb3Atc2hhZG93ICovXG5cbiAgLyog4pSA4pSAIFRyYW5zbHVjZW50IFVJIHN1cmZhY2VzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICBTZW1pLXRyYW5zcGFyZW50IHdoaXRlIG92ZXJsYXlzIGZvciBjaXJjdWxhciBnbGFzcyBlbGVtZW50c1xuICAgICAoaGVybyBzY3JvbGwgYnV0dG9uLCB0cnVzdCBkaXZpZGVyLCB0b2dnbGUgRkFCKS5cbiAgICAgRGFyayBtb2RlIHVzZXMgbXVjaCBsb3dlciBvcGFjaXR5IGZvciBzdWJ0bGUgdmlzaWJpbGl0eS4gKi9cbiAgLS11aS1zdXJmYWNlLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gIC0tdWktc3VyZmFjZS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgLS11aS1zdXJmYWNlLWhvdmVyLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gIC0tdWktc3VyZmFjZS1iZy1kYXJrOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAtLXVpLXN1cmZhY2UtYm9yZGVyLWRhcms6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgLS11aS1zdXJmYWNlLWhvdmVyLWJnLWRhcms6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG5cbiAgLyog4pSA4pSAIFRvZ2dsZSBGQUIgc3VyZmFjZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgIFRoZSBmbG9hdGluZyBhY3Rpb24gYnV0dG9uIGZvciBkYXJrL2xpZ2h0IG1vZGUgaGFzIGl0cyBvd25cbiAgICAgc3VyZmFjZSB0b2tlbnMgYmVjYXVzZSBpdCB1c2VzIGEgZGlzdGluY3Qgb3BhY2l0eSByYW5nZS4gKi9cbiAgLS10b2dnbGUtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS10b2dnbGUtYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gIC0tdG9nZ2xlLWJnLWRhcms6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgLS10b2dnbGUtYm9yZGVyLWRhcms6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG5cbiAgLyog4pSA4pSAIERyYXdlciBjbG9zZSBidXR0b24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG4gIC0tZHJhd2VyLWNsb3NlLWJnOiByZ2JhKDI1MCwgMjQ3LCAyNDIsIDAuNik7XG4gIC0tZHJhd2VyLWNsb3NlLWJnLWRhcms6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgLS1kcmF3ZXItY2xvc2UtYmctZGFyay1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcblxuICAvKiDilIDilIAgQnV0dG9uIGluc2V0IGhpZ2hsaWdodHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAgIFRvcC1lZGdlIGhpZ2hsaWdodCBmb3IgQ1RBLXN0eWxlIGJ1dHRvbnMgKi9cbiAgLS1idG4taW5zZXQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG4gIC0tYnRuLWluc2V0LWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIC0tbWwtaW5zZXQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgLS1tbC1pbnNldC1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xuXG4gIC8qIOKUgOKUgCBTY2hlbWUgc3dhdGNoIGJvcmRlciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiAgLS1zY2hlbWUtc3dhdGNoLWJvcmRlcjogcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjE1KTtcblxuICAvKiDilIDilIAgU3BhY2luZyBzY2FsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgTnVtZXJpYyBzY2FsZSB1c2VkIGJ5IHUtbSogLyB1LXAqIHV0aWxpdHkgY2xhc3Nlcy5cbiAgICAgRm9sbG93cyBhIDRweCBiYXNlIGdyaWQ6IDEgPSAwLjI1cmVtICg0cHgpLiAqL1xuICAtLXNwYWNpbmctMDogMDtcbiAgLS1zcGFjaW5nLXB4OiAxcHg7XG4gIC0tc3BhY2luZy0wLTU6IDAuMTI1cmVtO1xuICAtLXNwYWNpbmctMTogMC4yNXJlbTtcbiAgLS1zcGFjaW5nLTEtNTogMC4zNzVyZW07XG4gIC0tc3BhY2luZy0yOiAwLjVyZW07XG4gIC0tc3BhY2luZy0yLTU6IDAuNjI1cmVtO1xuICAtLXNwYWNpbmctMzogMC43NXJlbTtcbiAgLS1zcGFjaW5nLTMtNTogMC44NzVyZW07XG4gIC0tc3BhY2luZy00OiAxcmVtO1xuICAtLXNwYWNpbmctNTogMS4yNXJlbTtcbiAgLS1zcGFjaW5nLTY6IDEuNXJlbTtcbiAgLS1zcGFjaW5nLTc6IDEuNzVyZW07XG4gIC0tc3BhY2luZy04OiAycmVtO1xuICAtLXNwYWNpbmctOTogMi4yNXJlbTtcbiAgLS1zcGFjaW5nLTEwOiAyLjVyZW07XG4gIC0tc3BhY2luZy0xMTogMi43NXJlbTtcbiAgLS1zcGFjaW5nLTEyOiAzcmVtO1xuICAtLXNwYWNpbmctMTQ6IDMuNXJlbTtcbiAgLS1zcGFjaW5nLTE2OiA0cmVtO1xuICAtLXNwYWNpbmctMjA6IDVyZW07XG4gIC0tc3BhY2luZy0yNDogNnJlbTtcblxuICAvKiDilIDilIAgRm9udC1zaXplIHNjYWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICBVc2VkIGJ5IHUtdGV4dC0qIHV0aWxpdHkgY2xhc3Nlcy4gKi9cbiAgLS10ZXh0LXhzOiAwLjc1cmVtO1xuICAtLXRleHQtc206IDAuODc1cmVtO1xuICAtLXRleHQtYmFzZTogMXJlbTtcbiAgLS10ZXh0LWxnOiAxLjEyNXJlbTtcbiAgLS10ZXh0LXhsOiAxLjI1cmVtO1xuICAtLXRleHQtMnhsOiAxLjVyZW07XG4gIC0tdGV4dC0zeGw6IDEuODc1cmVtO1xuICAtLXRleHQtNHhsOiAyLjI1cmVtO1xuXG4gIC8qIOKUgOKUgCBGb250LXdlaWdodCBzY2FsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgVXNlZCBieSB1LXRleHQtKi1ib2xkIHV0aWxpdHkgY2xhc3NlcyBhbmQgc3RhbmRhbG9uZSB3ZWlnaHQgY2xhc3Nlcy4gKi9cbiAgLS1mb250LXdlaWdodC1ub3JtYWw6IDQwMDtcbiAgLS1mb250LXdlaWdodC1tZWRpdW06IDUwMDtcbiAgLS1mb250LXdlaWdodC1zZW1pYm9sZDogNjAwO1xuICAtLWZvbnQtd2VpZ2h0LWJvbGQ6IDcwMDtcbiAgLS1mb250LXdlaWdodC1kaXNwbGF5OiA3MDA7XG5cbiAgLyog4pSA4pSAIExpbmUtaGVpZ2h0IHNjYWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICBVc2VkIGJ5IHUtbGVhZGluZy0qIHV0aWxpdHkgY2xhc3Nlcy4gKi9cbiAgLS1sZWFkaW5nLW5vbmU6IDE7XG4gIC0tbGVhZGluZy10aWdodDogMS4yNTtcbiAgLS1sZWFkaW5nLXNudWc6IDEuMzc1O1xuICAtLWxlYWRpbmctbm9ybWFsOiAxLjU7XG4gIC0tbGVhZGluZy1yZWxheGVkOiAxLjYyNTtcbiAgLS1sZWFkaW5nLWxvb3NlOiAyO1xuXG4gIC8qIOKUgOKUgCBCb3JkZXItcmFkaXVzIHNjYWxlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICBVc2VkIGJ5IHUtcm91bmRlZC0qIHV0aWxpdHkgY2xhc3Nlcy4gKi9cbiAgLS1yYWRpdXMtbm9uZTogMDtcbiAgLS1yYWRpdXMtc206IDAuMjVyZW07XG4gIC0tcmFkaXVzLW1kOiAwLjVyZW07XG4gIC0tcmFkaXVzLWxnOiAwLjc1cmVtO1xuICAtLXJhZGl1cy14bDogMXJlbTtcbiAgLS1yYWRpdXMtMnhsOiAxLjVyZW07XG4gIC0tcmFkaXVzLWZ1bGw6IDk5OTlweDtcbn1cblxuLyog4pSA4pSAIERhcmsgbW9kZSB0b2tlbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICBUaGVzZSBzZW1hbnRpYyB0b2tlbiB2YWx1ZXMgYXBwZWFyIFRXSUNFIGludGVudGlvbmFsbHk6XG4gICAxLiAuZGFyayB7IH0gICAgICAgICAgIOKGkiBKUy1kcml2ZW4gdG9nZ2xlIChsb2NhbFN0b3JhZ2UgLyB1c2VyIGNsaWNrKVxuICAgMi4gQG1lZGlhIHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrIOKGkiBOb24tSlMgZmFsbGJhY2sgd2hlbiBub1xuICAgICAgLmxpZ2h0IG9yIC5kYXJrIGNsYXNzIGlzIHByZXNlbnQgb24gPGh0bWw+XG4gICBETyBOT1QgZGVkdXBsaWNhdGUg4oCUIHRoZXkgc2VydmUgZGlmZmVyZW50IGNvZGUgcGF0aHMuXG4gICBXaGVuIHVwZGF0aW5nIGRhcmstbW9kZSB2YWx1ZXMsIHVwZGF0ZSBCT1RIIGJsb2Nrcy5cbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4vKiBKUy1kcml2ZW4gZGFyayBtb2RlICovXG4uZGFyayB7XG4gIGNvbG9yLXNjaGVtZTogZGFyaztcbiAgLS1iZy1wcmltYXJ5OiAjMUExODE2O1xuICAtLXRleHQtcHJpbWFyeTogI0U1REZENDtcbiAgLS10ZXh0LXNlY29uZGFyeTogI0Q0QzVCODtcbiAgLS10ZXh0LW11dGVkOiAjQjA5QTdFO1xuICAtLXRleHQtcGxhY2Vob2xkZXI6IHJnYmEoMjAwLCAxOTAsIDE3NSwgMC4zNSk7XG4gIC0tZ2xhc3MtYmc6IHJnYmEoMzUsIDMyLCAyOCwgMC44OCk7XG4gIC0tZ2xhc3MtYm9yZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4yKTtcbiAgLS1nbGFzcy1ob3Zlci1iZzogcmdiYSg0NSwgNDAsIDM0LCAwLjkyKTtcbiAgLS1nbGFzcy1ob3Zlci1ib3JkZXI6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjIpO1xuICAtLWZpbHRlci1iYXItYmc6IHJnYmEoMjYsIDI0LCAyMiwgMC45Mik7XG4gIC0tZmlsdGVyLWJhci1ib3JkZXI6IHJnYmEoNjAsIDU1LCA0NSwgMC41KTtcbiAgLS1zZWFyY2gtYmc6IHJnYmEoMzUsIDMyLCAyOCwgMC44NSk7XG4gIC0tc2VhcmNoLWJvcmRlcjogcmdiYSg2MCwgNTUsIDQ1LCAwLjUpO1xuICAtLXNlYXJjaC1mb2N1cy1iZzogcmdiYSg0MCwgMzYsIDMwLCAwLjkyKTtcbiAgLS1zZWFyY2gtZm9jdXMtYm9yZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC40KTtcbiAgLS1waWxsLWluYWN0aXZlLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuNzUpO1xuICAtLXBpbGwtaW5hY3RpdmUtYm9yZGVyOiByZ2JhKDYwLCA1NSwgNDUsIDAuNSk7XG4gIC0tcGlsbC1pbmFjdGl2ZS10ZXh0OiAjRTVERkQ0O1xuICAtLWRyYXdlci1wYW5lbC1iZzogcmdiYSgzMCwgMjgsIDI0LCAwLjk1KTtcbiAgLS1kcmF3ZXItYm9yZGVyOiByZ2JhKDYwLCA1NSwgNDUsIDAuNSk7XG4gIC0tZHJhd2VyLW92ZXJsYXktYmc6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgLS1kZXNjLWZhZGU6IHJnYmEoMzUsIDMyLCAyOCwgMC44NSk7XG4gIC0tZm9vdGVyLWJnOiAjMTMxMjEwO1xuICAtLWZvb3Rlci1kaXNjbGFpbWVyOiByZ2JhKDIwMCwgMTkwLCAxNzUsIDAuNzUpO1xuXG4gIC8qIERhcmsgbW9kZSBzY2hlbWUgdG9rZW4gb3ZlcnJpZGVzICovXG4gIC0tc2NoZW1lLWhlcm8tdGFnbGluZTogdmFyKC0tc2NoZW1lLWZvb3Rlci1hY2NlbnQpO1xuXG4gIC8qIERhcmsgbW9kZSBhY2NlbnQg4oCUIGxpZ2h0ZXIgc2hhZGUgZm9yIGNvbnRyYXN0IG9uIGRhcmsgYmcgKi9cbiAgLS1hY2NlbnQtcHJpbWFyeTogI0ZGOEM1QTtcbiAgLS1hY2NlbnQtcHJpbWFyeS1ob3ZlcjogI0ZGQTA3MDtcbiAgLS1hY2NlbnQtcHJpbWFyeS1saWdodDogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMTUpO1xuICAtLWFjY2VudC1wcmltYXJ5LWJvcmRlcjogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMyk7XG4gIC0tYWNjZW50LXByaW1hcnktc2hhZG93OiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4yNSk7XG4gIC0tY2FyZC1zaGFkb3ctaG92ZXI6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjA4KTtcblxuICAvKiBGb2N1cyByaW5nIHVzZXMgbGlnaHRlbmVkIGFjY2VudCBmb3IgdmlzaWJpbGl0eSBvbiBkYXJrIGJnICovXG4gIC0tc2NoZW1lLWZvY3VzLXJpbmc6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcblxuICAvKiBUZXh0IG9uIHNvbGlkIGFjY2VudCBiYWNrZ3JvdW5kcyDigJQgZGFyayB0aW50IGZvciBjb250cmFzdCBvbiBicmlnaHQgYWNjZW50ICovXG4gIC0tdGV4dC1vbi1hY2NlbnQ6ICM1NTFGMDA7XG59XG5cbi8qIFNjaGVtZSBvdmVycmlkZTogYWx0ZXJuYXRlIOKAlCBvbGl2ZS1maXJzdCB2YXJpYXRpb24gKi9cbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXSB7XG4gIC8qIEFsdGVybmF0ZSBvbGl2ZSBzY2hlbWUg4oCUIGtlZXBzIHRoZSBuYXR1cmFsLWZvb2QgdG9uZSBhdmFpbGFibGUuICovXG4gIC0tYWNjZW50LXByaW1hcnk6ICM2MzZCMkY7XG4gIC0tYWNjZW50LXByaW1hcnktaG92ZXI6ICM3NDgwMzg7XG4gIC0tYWNjZW50LXByaW1hcnktbGlnaHQ6IHJnYmEoOTksIDEwNywgNDcsIDAuMTUpO1xuICAtLWFjY2VudC1wcmltYXJ5LWJvcmRlcjogcmdiYSg5OSwgMTA3LCA0NywgMC4yNSk7XG4gIC0tYWNjZW50LXByaW1hcnktc2hhZG93OiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjI1KTtcbiAgLS1hY2NlbnQtc2Vjb25kYXJ5OiAjRkY1QzAwO1xuICAtLWFjY2VudC1zZWNvbmRhcnktbGlnaHQ6IHJnYmEoMjU1LCA5MiwgMCwgMC4xMik7XG4gIC0tYWNjZW50LXNlY29uZGFyeS1ib3JkZXI6IHJnYmEoMjU1LCA5MiwgMCwgMC4yNSk7XG4gIC0tY2FyZC1zaGFkb3ctaG92ZXI6IHJnYmEoOTksIDEwNywgNDcsIDAuMDgpO1xuICAtLWdsYXNzLWJvcmRlcjogcmdiYSg5OSwgMTA3LCA0NywgMC4xNSk7XG4gIC0tZ2xhc3MtaG92ZXItYm9yZGVyOiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjIpO1xuICAtLXNlYXJjaC1mb2N1cy1ib3JkZXI6IHJnYmEoOTksIDEwNywgNDcsIDAuNCk7XG5cbiAgLS1zY2hlbWUtaGVyby10YWdsaW5lOiAjNjM2QjJGO1xuICAtLXNjaGVtZS1zY3JvbGwtdGh1bWI6IHJnYmEoOTksIDEwNywgNDcsIDAuNCk7XG4gIC0tc2NoZW1lLWZvY3VzLXJpbmc6ICM2MzZCMkY7XG4gIC0tc2NoZW1lLWhlcm8tbG9nby1iZzogcmdiYSg5OSwgMTA3LCA0NywgMC4wOCk7XG4gIC0tc2NoZW1lLWhlcm8tbG9nby1iZy1kYXJrOiByZ2JhKDk5LCAxMDcsIDQ3LCAwLjIpO1xuICAtLXNjaGVtZS1oZXJvLXRydXN0OiAjNkU1QTQ4O1xuICAtLXNjaGVtZS1oZXJvLXNjcm9sbC1jb2xvcjogcmdiYSg5OSwgMTA3LCA0NywgMC42KTtcbiAgLS1zY2hlbWUtZm9vdGVyLWFjY2VudDogI0E4Qjg1NDtcbiAgLS1zY2hlbWUtZm9vdGVyLWljb246IHJnYmEoMTY4LCAxODQsIDg0LCAwLjYpO1xuICAtLXNjaGVtZS1mb290ZXItYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4xKTtcbiAgLS1zY2hlbWUtc2VhcmNoLWZvY3VzLXJpbmc6IHJnYmEoOTksIDEwNywgNDcsIDAuMDgpO1xuICAtLXNjaGVtZS1zZWFyY2gtZm9jdXMtcmluZy1zdHJvbmc6IHJnYmEoOTksIDEwNywgNDcsIDAuMSk7XG4gIC0tc2NoZW1lLXRydXN0LWRpdmlkZXI6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjMpO1xuICAtLXNjaGVtZS10cnVzdC1kaXZpZGVyLWRhcms6IHJnYmEoOTksIDEwNywgNDcsIDAuMTIpO1xuICAtLXNjaGVtZS1tYXJrZXRwbGFjZS1iYWRnZS1iZzogcmdiYSgxNjgsIDE4NCwgODQsIDAuMTUpO1xuICAtLXNjaGVtZS1tYXJrZXRwbGFjZS1iYWRnZS1ib3JkZXI6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjMpO1xuICAtLWZvb3Rlci1kaXNjbGFpbWVyOiByZ2JhKDIwMCwgMTkwLCAxNzUsIDAuOCk7XG4gIC0tZm9vdGVyLWJnOiAjMUEyMTEwO1xuICAtLXNlbGVjdGlvbi1iZy1kYXJrOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4zNSk7XG4gIC0tdGV4dC1vbi1hY2NlbnQ6ICNGRkZGRkY7XG59XG5cbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXS5kYXJrIHtcbiAgY29sb3Itc2NoZW1lOiBkYXJrO1xuICAtLWFjY2VudC1wcmltYXJ5OiAjQThCODU0O1xuICAtLWFjY2VudC1wcmltYXJ5LWhvdmVyOiAjQjhDODY0O1xuICAtLWFjY2VudC1wcmltYXJ5LWxpZ2h0OiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4xNSk7XG4gIC0tYWNjZW50LXByaW1hcnktYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4zKTtcbiAgLS1hY2NlbnQtcHJpbWFyeS1zaGFkb3c6IHJnYmEoMTY4LCAxODQsIDg0LCAwLjI1KTtcbiAgLS1jYXJkLXNoYWRvdy1ob3ZlcjogcmdiYSgxNjgsIDE4NCwgODQsIDAuMDgpO1xuICAtLWdsYXNzLWJvcmRlcjogcmdiYSgxNjgsIDE4NCwgODQsIDAuMik7XG4gIC0tZ2xhc3MtaG92ZXItYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC4yKTtcbiAgLS1zZWFyY2gtZm9jdXMtYm9yZGVyOiByZ2JhKDE2OCwgMTg0LCA4NCwgMC40KTtcblxuICAtLWFjY2VudC1zZWNvbmRhcnk6ICNGRjhDNUE7XG4gIC0tYWNjZW50LXNlY29uZGFyeS1saWdodDogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMTUpO1xuICAtLWFjY2VudC1zZWNvbmRhcnktYm9yZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4zKTtcbiAgLS10ZXh0LXNlY29uZGFyeTogI0M1RDRCODtcblxuICAtLXNjaGVtZS1oZXJvLXRhZ2xpbmU6IHZhcigtLXNjaGVtZS1mb290ZXItYWNjZW50KTtcbiAgLS1zY2hlbWUtZm9jdXMtcmluZzogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICAtLWZvb3Rlci1iZzogIzExMUEwODtcbiAgLS1mb290ZXItZGlzY2xhaW1lcjogcmdiYSgyMDAsIDE5MCwgMTc1LCAwLjc1KTtcbiAgLS10ZXh0LW9uLWFjY2VudDogIzJDMzAxNTtcbn1cblxuLyogTGlnaHQgbW9kZSBleHBsaWNpdCBvcHQtaW4g4oCUIGZvcmNlcyBuYXRpdmUgY29udHJvbHMgdG8gbGlnaHQgc2NoZW1lICovXG4ubGlnaHQge1xuICBjb2xvci1zY2hlbWU6IGxpZ2h0O1xufVxuXG4vKiBOb24tSlMgZGFyayBtb2RlIGZhbGxiYWNrIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykuXG4gKiBOT1RFOiBUaGlzIG9ubHkgYXBwbGllcyB0aGUgZGVmYXVsdCBIdWJSYWl6IGRhcmsgdG9rZW5zLlxuICogVXNlcnMgd2hvIHNlbGVjdGVkIGFuIGFsdGVybmF0aXZlIGNvbG9yIHNjaGVtZSB2aWEgSmF2YVNjcmlwdFxuICogKHN0b3JlZCBpbiBsb2NhbFN0b3JhZ2UgYXMgXCJodWJyYWl6LWNvbG9yLXNjaGVtZVwiKSB3aWxsIHNlZSB0aGVcbiAqIGRlZmF1bHQgc2NoZW1lIGlmIEphdmFTY3JpcHQgaXMgdW5hdmFpbGFibGUsIHNpbmNlXG4gKiBkYXRhLWNvbG9yLXNjaGVtZSBpcyBzZXQgYnkgSlMgYXQgcnVudGltZS5cbiAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAvKiBNaXJyb3Igb2YgLmRhcmsg4oCUIGtlZXAgaW4gc3luYy4gV2hlbiB1cGRhdGluZyBkYXJrLW1vZGUgdmFsdWVzLFxuICAgICB1cGRhdGUgQk9USCB0aGUgLmRhcmsgYmxvY2sgKEpTLXRvZ2dsZWQpIGFuZCB0aGlzIEBtZWRpYSBibG9jayAobm8tSlMgZmFsbGJhY2spLiAqL1xuICA6cm9vdDpub3QoLmxpZ2h0KTpub3QoLmRhcmspIHtcbiAgICBjb2xvci1zY2hlbWU6IGRhcms7XG4gICAgLS1iZy1wcmltYXJ5OiAjMUExODE2O1xuICAgIC0tdGV4dC1wcmltYXJ5OiAjRTVERkQ0O1xuICAgIC0tdGV4dC1zZWNvbmRhcnk6ICNENEM1Qjg7XG4gICAgLS10ZXh0LW11dGVkOiAjQjA5QTdFO1xuICAgIC0tdGV4dC1wbGFjZWhvbGRlcjogcmdiYSgyMDAsIDE5MCwgMTc1LCAwLjM1KTtcbiAgICAtLWdsYXNzLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuODgpO1xuICAgIC0tZ2xhc3MtYm9yZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4yKTtcbiAgICAtLWdsYXNzLWhvdmVyLWJnOiByZ2JhKDQ1LCA0MCwgMzQsIDAuOTIpO1xuICAgIC0tZ2xhc3MtaG92ZXItYm9yZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4yKTtcbiAgICAtLWZpbHRlci1iYXItYmc6IHJnYmEoMjYsIDI0LCAyMiwgMC45Mik7XG4gICAgLS1maWx0ZXItYmFyLWJvcmRlcjogcmdiYSg2MCwgNTUsIDQ1LCAwLjUpO1xuICAgIC0tc2VhcmNoLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuODUpO1xuICAgIC0tc2VhcmNoLWJvcmRlcjogcmdiYSg2MCwgNTUsIDQ1LCAwLjUpO1xuICAgIC0tc2VhcmNoLWZvY3VzLWJnOiByZ2JhKDQwLCAzNiwgMzAsIDAuOTIpO1xuICAgIC0tc2VhcmNoLWZvY3VzLWJvcmRlcjogcmdiYSgyNTUsIDE0MCwgOTAsIDAuNCk7XG4gICAgLS1waWxsLWluYWN0aXZlLWJnOiByZ2JhKDM1LCAzMiwgMjgsIDAuNzUpO1xuICAgIC0tcGlsbC1pbmFjdGl2ZS1ib3JkZXI6IHJnYmEoNjAsIDU1LCA0NSwgMC41KTtcbiAgICAtLXBpbGwtaW5hY3RpdmUtdGV4dDogI0U1REZENDtcbiAgICAtLWRyYXdlci1wYW5lbC1iZzogcmdiYSgzMCwgMjgsIDI0LCAwLjk1KTtcbiAgICAtLWRyYXdlci1ib3JkZXI6IHJnYmEoNjAsIDU1LCA0NSwgMC41KTtcbiAgICAtLWRyYXdlci1vdmVybGF5LWJnOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgLS1kZXNjLWZhZGU6IHJnYmEoMzUsIDMyLCAyOCwgMC44NSk7XG4gICAgLS1mb290ZXItYmc6ICMxMzEyMTA7XG4gICAgLS1mb290ZXItZGlzY2xhaW1lcjogcmdiYSgyMDAsIDE5MCwgMTc1LCAwLjc1KTtcbiAgICAtLWFjY2VudC1wcmltYXJ5OiAjRkY4QzVBO1xuICAgIC0tYWNjZW50LXByaW1hcnktaG92ZXI6ICNGRkEwNzA7XG4gICAgLS1hY2NlbnQtcHJpbWFyeS1saWdodDogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMTUpO1xuICAgIC0tYWNjZW50LXByaW1hcnktYm9yZGVyOiByZ2JhKDI1NSwgMTQwLCA5MCwgMC4zKTtcbiAgICAtLWFjY2VudC1wcmltYXJ5LXNoYWRvdzogcmdiYSgyNTUsIDE0MCwgOTAsIDAuMjUpO1xuICAgIC0tY2FyZC1zaGFkb3ctaG92ZXI6IHJnYmEoMjU1LCAxNDAsIDkwLCAwLjA4KTtcbiAgICAtLXNjaGVtZS1oZXJvLXRhZ2xpbmU6IHZhcigtLXNjaGVtZS1mb290ZXItYWNjZW50KTtcbiAgICAtLXNjaGVtZS1mb2N1cy1yaW5nOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gICAgLS10ZXh0LW9uLWFjY2VudDogIzU1MUYwMDtcbiAgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDIuIFJFU0VUICYgQkFTRVxuICAgQm94LXNpemluZyByZXNldCwgYm9keSBkZWZhdWx0cywgZm9jdXMgc3RhdGVzLCBzY3JvbGxiYXIsIHNlbGVjdGlvbixcbiAgIHJlZHVjZWQtbW90aW9uLCBza2lwIGxpbmtcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmh0bWwge1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbiAgdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xufVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHkpO1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICBsaW5lLWhlaWdodDogMS42NTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaGVhZGluZyk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgbGluZS1oZWlnaHQ6IDEuMTI7XG4gIHRleHQtd3JhcDogYmFsYW5jZTtcbn1cblxucCB7IHRleHQtd3JhcDogcHJldHR5OyB9XG5cbmEgeyBjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5pbWcgeyBkaXNwbGF5OiBibG9jazsgbWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IH1cbmJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QgeyBmb250LWZhbWlseTogaW5oZXJpdDsgfVxuYnV0dG9uIHsgY3Vyc29yOiBwb2ludGVyOyB9XG51bCB7IGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLyogLS0tIFV0aWxpdHk6IEhpZGRlbiBieSBkZWZhdWx0LCBzaG93biB2aWEgSlMgLS0tICovXG4uaXMtaGlkZGVuIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi8qIC0tLSBTa2lwIExpbmsgLS0tICovXG4uc2tpcC1saW5rIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0xMDAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBjb2xvcjogdmFyKC0tdGV4dC1vbi1hY2NlbnQpO1xuICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDAuNzVyZW0gMC43NXJlbTtcbiAgei1pbmRleDogOTk5OTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgdHJhbnNpdGlvbjogdG9wIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgMTJweCB2YXIoLS1jaHJvbWUtc2hhZG93LWRhcmspO1xufVxuXG4uc2tpcC1saW5rOmZvY3VzIHtcbiAgdG9wOiAwO1xuICBvdXRsaW5lOiAzcHggc29saWQgdmFyKC0tc2NoZW1lLWZvY3VzLXJpbmcpO1xuICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vKiAtLS0gRm9jdXMgU3RhdGVzIC0tLSAqL1xuKjpmb2N1cy12aXNpYmxlIHtcbiAgb3V0bGluZTogM3B4IHNvbGlkIHZhcigtLXNjaGVtZS1mb2N1cy1yaW5nKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDNweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuXG4vKiAtLS0gU2Nyb2xsYmFyIC0tLSAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7IHdpZHRoOiA4cHg7IH1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7IGJhY2tncm91bmQ6IHZhcigtLXNjaGVtZS1zY3JvbGwtdGh1bWIpOyBib3JkZXItcmFkaXVzOiA0cHg7IH1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1zY2hlbWUtZm9jdXMtcmluZyk7IH1cblxuLyogLS0tIFNlbGVjdGlvbiAtLS0gKi9cbjo6c2VsZWN0aW9uIHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnktbGlnaHQpOyBjb2xvcjogdmFyKC0tbmV1dHJhbC05MDApOyB9XG4uZGFyayA6OnNlbGVjdGlvbiB7IGJhY2tncm91bmQ6IHZhcigtLXNlbGVjdGlvbi1iZy1kYXJrKTsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgfVxuXG4vKiAtLS0gUmVkdWNlZCBNb3Rpb24gLS0tICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50O1xuICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDtcbiAgICBzY3JvbGwtYmVoYXZpb3I6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxuICAuZGVzYy1zY3JvbGwtaW5uZXIub3ZlcmZsb3dzIHsgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7IH1cbiAgLmRlc2Mtc2Nyb2xsLXZpZXdwb3J0IHtcbiAgICBtaW4taGVpZ2h0OiB1bnNldCAhaW1wb3J0YW50O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cbiAgLmRlc2Mtc2Nyb2xsLXZpZXdwb3J0OjphZnRlciB7IGRpc3BsYXk6IG5vbmU7IH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAzLiBVVElMSVRJRVNcbiAgIEtleWZyYW1lcywgc3RhZ2dlciBkZWxheXMsIGFuaW1hdGlvbiB1dGlsaXRpZXMsXG4gICBpY29uIHNpemluZywgdGV4dCB0cnVuY2F0aW9uLCBzY3JlZW4tcmVhZGVyLW9ubHlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIC0tLSBLZXlmcmFtZXMgLS0tICovXG5cbkBrZXlmcmFtZXMgZmFkZS1pbiB7XG4gIGZyb20geyBvcGFjaXR5OiAwOyB9XG4gIHRvIHsgb3BhY2l0eTogMTsgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTsgfVxuICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIGZsb2F0IHtcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbiAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpOyB9XG59XG5cbkBrZXlmcmFtZXMgc2Nyb2xsLXRleHQge1xuICAwJSAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbiAgOCUgICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG4gIDg4JSAgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zY3JvbGwtZGlzdGFuY2UsIC02MHB4KSk7IH1cbiAgOTYlICAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKHZhcigtLXNjcm9sbC1kaXN0YW5jZSwgLTYwcHgpKTsgfVxuICAxMDAlICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbn1cblxuQGtleWZyYW1lcyBkcmF3ZXItaW4ge1xuICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgfVxuICB0byB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIGRyYXdlci1vdXQge1xuICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB9XG4gIHRvIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIG92ZXJsYXktb3V0IHtcbiAgZnJvbSB7IG9wYWNpdHk6IDE7IH1cbiAgdG8geyBvcGFjaXR5OiAwOyB9XG59XG5cbi8qIC0tLSBTdGFnZ2VyIERlbGF5cyAtLS0gKi9cbi5zdGFnZ2VyLTEgeyBhbmltYXRpb24tZGVsYXk6IDAuMDVzOyB9XG4uc3RhZ2dlci0yIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjFzOyB9XG4uc3RhZ2dlci0zIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjE1czsgfVxuLnN0YWdnZXItNCB7IGFuaW1hdGlvbi1kZWxheTogMC4yczsgfVxuXG4vKiAtLS0gQW5pbWF0aW9uIFV0aWxpdGllcyAtLS0gKi9cbi5hbmltYXRlLWZhZGUtaW4geyBhbmltYXRpb246IGZhZGUtaW4gMC42cyBlYXNlLW91dCBib3RoOyB9XG4uYW5pbWF0ZS1zbGlkZS11cCB7IGFuaW1hdGlvbjogc2xpZGUtdXAgMC41cyBlYXNlLW91dCBib3RoOyB9XG4uYW5pbWF0ZS1mbG9hdCB7IGFuaW1hdGlvbjogZmxvYXQgNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IH1cblxuLyogLS0tIEljb24gU2l6aW5nIC0tLSAqL1xuLmJ0bi1pY29uIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8qIC0tLSBUZXh0IFRydW5jYXRpb24gLS0tICovXG4udHJ1bmNhdGUge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogLS0tIFNjcmVlbiBSZWFkZXIgT25seSAtLS0gKi9cbi5zci1vbmx5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBib3JkZXItd2lkdGg6IDA7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDNiLiBBVE9NSUMgVVRJTElUSUVTXG4gICBUYWlsd2luZC1pbnNwaXJlZCBhdG9taWMgdXRpbGl0eSBjbGFzc2VzIGZvciBIdWJSYWl6LlxuICAgQWxsIHZhbHVlcyByZWZlcmVuY2UgZGVzaWduIHRva2VucyDigJQgbm8gaGFyZGNvZGVkIGNvbG9ycywgc3BhY2luZyxcbiAgIGZvbnQgc2l6ZXMsIG9yIHNoYWRvd3MuIEZ1bGx5IHRoZW1lLWF3YXJlIChsaWdodC9kYXJrLCBhY2NlbnQgc3dhcHMpLlxuICAgTmFtaW5nOiB1LXtjYXRlZ29yeX0te3ZhbHVlfSwgcmVzcG9uc2l2ZToge2JwfS11LXtjYXRlZ29yeX0te3ZhbHVlfVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIOKUgOKUgCBTcGFjaW5nOiBNYXJnaW4g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICB1LW17dCxiLGwscix4LHl9LXtufSDigJQgZGlyZWN0aW9uYWwgbWFyZ2luIHV0aWxpdGllcy5cbiAgIE51bWJlcnMgbWFwIHRvIC0tc3BhY2luZy0qIHRva2Vucy4gKi9cblxuLnUtbS0wICB7IG1hcmdpbjogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbS1weCB7IG1hcmdpbjogdmFyKC0tc3BhY2luZy1weCk7IH1cbi51LW0tMC01IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTAtNSk7IH1cbi51LW0tMSAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LW0tMS01IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTEtNSk7IH1cbi51LW0tMiAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMik7IH1cbi51LW0tMi01IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTItNSk7IH1cbi51LW0tMyAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW0tMy01IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTMtNSk7IH1cbi51LW0tNCAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LW0tNSAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctNSk7IH1cbi51LW0tNiAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctNik7IH1cbi51LW0tNyAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctNyk7IH1cbi51LW0tOCAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctOCk7IH1cbi51LW0tOSAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctOSk7IH1cbi51LW0tMTAgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMTApOyB9XG4udS1tLTExIHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTExKTsgfVxuLnUtbS0xMiB7IG1hcmdpbjogdmFyKC0tc3BhY2luZy0xMik7IH1cbi51LW0tMTQgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMTQpOyB9XG4udS1tLTE2IHsgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLTE2KTsgfVxuLnUtbS0yMCB7IG1hcmdpbjogdmFyKC0tc3BhY2luZy0yMCk7IH1cbi51LW0tMjQgeyBtYXJnaW46IHZhcigtLXNwYWNpbmctMjQpOyB9XG5cbi51LW10LTAgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbXQtMSAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1tdC0xLTUgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEtNSk7IH1cbi51LW10LTIgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtbXQtMi01IHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0yLTUpOyB9XG4udS1tdC0zICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW10LTMtNSB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMy01KTsgfVxuLnUtbXQtNCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1tdC01ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctNSk7IH1cbi51LW10LTYgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtbXQtOCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4udS1tdC0xMCB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMTApOyB9XG4udS1tdC0xMiB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMTIpOyB9XG4udS1tdC0xNiB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMTYpOyB9XG4udS1tdC0yMCB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMjApOyB9XG5cbi51LW1iLTAgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbWItMSAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1tYi0xLTUgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTEtNSk7IH1cbi51LW1iLTIgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtbWItMi01IHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yLTUpOyB9XG4udS1tYi0zICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW1iLTMtNSB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMy01KTsgfVxuLnUtbWItNCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1tYi01ICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNSk7IH1cbi51LW1iLTYgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtbWItOCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4udS1tYi0xMCB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMTApOyB9XG4udS1tYi0xMiB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMTIpOyB9XG4udS1tYi0xNiB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMTYpOyB9XG4udS1tYi0yMCB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMjApOyB9XG5cbi51LW1sLTAgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LW1sLTEgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LW1sLTIgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMik7IH1cbi51LW1sLTMgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW1sLTQgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LW1sLTYgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctNik7IH1cbi51LW1sLTggIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctOCk7IH1cbi51LW1sLWF1dG8geyBtYXJnaW4tbGVmdDogYXV0bzsgfVxuXG4udS1tci0wICB7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbXItMSAgeyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LW1yLTIgIHsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4udS1tci0zICB7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtbXItNCAgeyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LW1yLTYgIHsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4udS1tci04ICB7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy04KTsgfVxuLnUtbXItYXV0byB7IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuXG4udS1teC0wICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTApOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LW14LTEgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctMSk7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy0xKTsgfVxuLnUtbXgtMiAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy0yKTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4udS1teC0zICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTMpOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LW14LTQgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctNCk7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy00KTsgfVxuLnUtbXgtNiAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy02KTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4udS1teC04ICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTgpOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctOCk7IH1cbi51LW14LWF1dG8geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG5cbi51LW15LTAgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtbXktMSAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEpOyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1teS0yICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMik7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMik7IH1cbi51LW15LTMgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0zKTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtbXktNCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1teS02ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctNik7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNik7IH1cbi51LW15LTggIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy04KTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsgfVxuLnUtbXktMTAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEwKTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0xMCk7IH1cbi51LW15LTEyIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0xMik7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMTIpOyB9XG5cbi8qIOKUgOKUgCBTcGFjaW5nOiBQYWRkaW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgdS1we3QsYixsLHIseCx5fS17bn0g4oCUIGRpcmVjdGlvbmFsIHBhZGRpbmcgdXRpbGl0aWVzLiAqL1xuXG4udS1wLTAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtcC1weCB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctcHgpOyB9XG4udS1wLTAtNSB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMC01KTsgfVxuLnUtcC0xICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LXAtMS01IHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0xLTUpOyB9XG4udS1wLTIgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtcC0yLTUgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTItNSk7IH1cbi51LXAtMyAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTMpOyB9XG4udS1wLTMtNSB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMy01KTsgfVxuLnUtcC00ICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LXAtNSAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTUpOyB9XG4udS1wLTYgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtcC03ICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNyk7IH1cbi51LXAtOCAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4udS1wLTEwIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0xMCk7IH1cbi51LXAtMTIgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTEyKTsgfVxuLnUtcC0xNiB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMTYpOyB9XG5cbi51LXB0LTAgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LXB0LTEgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LXB0LTIgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMik7IH1cbi51LXB0LTMgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LXB0LTQgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LXB0LTYgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNik7IH1cbi51LXB0LTggIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctOCk7IH1cblxuLnUtcGItMCAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtcGItMSAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0xKTsgfVxuLnUtcGItMiAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtcGItMyAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtcGItNCAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsgfVxuLnUtcGItNiAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtcGItOCAgeyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsgfVxuXG4udS1wbC0wICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtcGwtMSAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctMSk7IH1cbi51LXBsLTIgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4udS1wbC0zICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtcGwtNCAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctNCk7IH1cbi51LXBsLTYgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4udS1wbC04ICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy04KTsgfVxuXG4udS1wci0wICB7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LXByLTEgIHsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy0xKTsgfVxuLnUtcHItMiAgeyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4udS1wci0zICB7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LXByLTQgIHsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy00KTsgfVxuLnUtcHItNiAgeyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4udS1wci04ICB7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctOCk7IH1cblxuLnUtcHgtMCAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctMCk7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LXB4LTEgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTEpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1weC0xLTUgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctMS01KTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy0xLTUpOyB9XG4udS1weC0yICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0yKTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtcHgtMi01IHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTItNSk7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMi01KTsgfVxuLnUtcHgtMyAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctMyk7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LXB4LTQgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTQpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1weC02ICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy02KTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtcHgtOCAgeyBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNpbmctOCk7IHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNpbmctOCk7IH1cblxuLnUtcHktMCAgeyBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctMCk7IH1cbi51LXB5LTEgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMSk7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1weS0xLTUgeyBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy0xLTUpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0xLTUpOyB9XG4udS1weS0yICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTIpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuLnUtcHktMi01IHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMi01KTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctMi01KTsgfVxuLnUtcHktMyAgeyBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy0zKTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctMyk7IH1cbi51LXB5LTQgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNCk7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4udS1weS02ICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTYpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtcHktOCAgeyBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2luZy04KTsgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNpbmctOCk7IH1cblxuLyog4pSA4pSAIFR5cG9ncmFwaHk6IEZvbnQgU2l6ZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIHUtdGV4dC17c2l6ZX0g4oCUIG1hcHMgdG8gLS10ZXh0LSogdG9rZW5zLlxuICAgdS10ZXh0LXtzaXplfS1ib2xkIOKAlCBjb21iaW5lcyBzaXplICsgYm9sZCB3ZWlnaHQuICovXG5cbi51LXRleHQteHMgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7IH1cbi51LXRleHQtc20gICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7IH1cbi51LXRleHQtYmFzZSB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1iYXNlKTsgfVxuLnUtdGV4dC1sZyAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWxnKTsgfVxuLnUtdGV4dC14bCAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhsKTsgfVxuLnUtdGV4dC0yeGwgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LTJ4bCk7IH1cbi51LXRleHQtM3hsICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC0zeGwpOyB9XG4udS10ZXh0LTR4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtNHhsKTsgfVxuXG4udS10ZXh0LXhzLWJvbGQgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7IGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTsgfVxuLnUtdGV4dC1zbS1ib2xkICAgeyBmb250LXNpemU6IHZhcigtLXRleHQtc20pOyBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7IH1cbi51LXRleHQtYmFzZS1ib2xkIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWJhc2UpOyBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7IH1cbi51LXRleHQtbGctYm9sZCAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWxnKTsgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpOyB9XG4udS10ZXh0LXhsLWJvbGQgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14bCk7IGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTsgfVxuXG4vKiDilIDilIAgVHlwb2dyYXBoeTogRm9udCBXZWlnaHQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi51LWZvbnQtbm9ybWFsICAgeyBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTsgfVxuLnUtZm9udC1tZWRpdW0gICB7IGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pOyB9XG4udS1mb250LXNlbWlib2xkIHsgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTsgfVxuLnUtZm9udC1ib2xkICAgICB7IGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTsgfVxuXG4vKiDilIDilIAgVHlwb2dyYXBoeTogTGluZSBIZWlnaHQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi51LWxlYWRpbmctbm9uZSAgICB7IGxpbmUtaGVpZ2h0OiB2YXIoLS1sZWFkaW5nLW5vbmUpOyB9XG4udS1sZWFkaW5nLXRpZ2h0ICAgeyBsaW5lLWhlaWdodDogdmFyKC0tbGVhZGluZy10aWdodCk7IH1cbi51LWxlYWRpbmctc251ZyAgICB7IGxpbmUtaGVpZ2h0OiB2YXIoLS1sZWFkaW5nLXNudWcpOyB9XG4udS1sZWFkaW5nLW5vcm1hbCAgeyBsaW5lLWhlaWdodDogdmFyKC0tbGVhZGluZy1ub3JtYWwpOyB9XG4udS1sZWFkaW5nLXJlbGF4ZWQgeyBsaW5lLWhlaWdodDogdmFyKC0tbGVhZGluZy1yZWxheGVkKTsgfVxuLnUtbGVhZGluZy1sb29zZSAgIHsgbGluZS1oZWlnaHQ6IHZhcigtLWxlYWRpbmctbG9vc2UpOyB9XG5cbi8qIOKUgOKUgCBUeXBvZ3JhcGh5OiBBbGlnbm1lbnQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi51LXRleHQtbGVmdCAgICB7IHRleHQtYWxpZ246IGxlZnQ7IH1cbi51LXRleHQtY2VudGVyICB7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuLnUtdGV4dC1yaWdodCAgIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH1cblxuLyog4pSA4pSAIENvbG9yOiBUZXh0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgU2VtYW50aWMgdG9rZW4tZHJpdmVuIOKAlCBzd2FwcyBhdXRvbWF0aWNhbGx5IHdpdGggZGFyayBtb2RlIC8gYWNjZW50LiAqL1xuXG4udS10ZXh0LXByaW1hcnkgICAgeyBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTsgfVxuLnUtdGV4dC1zZWNvbmRhcnkgIHsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfVxuLnUtdGV4dC1tdXRlZCAgICAgIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9XG4udS10ZXh0LXBsYWNlaG9sZGVyIHsgY29sb3I6IHZhcigtLXRleHQtcGxhY2Vob2xkZXIpOyB9XG4udS10ZXh0LW9uLWFjY2VudCAgeyBjb2xvcjogdmFyKC0tdGV4dC1vbi1hY2NlbnQpOyB9XG4udS10ZXh0LWFjY2VudCAgICAgeyBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpOyB9XG5cbi8qIOKUgOKUgCBDb2xvcjogQmFja2dyb3VuZCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIFNlbWFudGljIHRva2VuLWRyaXZlbiDigJQgc3dhcHMgYXV0b21hdGljYWxseSB3aXRoIGRhcmsgbW9kZSAvIGFjY2VudC4gKi9cblxuLnUtYmctcHJpbWFyeSAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iZy1wcmltYXJ5KTsgfVxuLnUtYmctYWNjZW50ICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cbi51LWJnLWFjY2VudC1saWdodCB7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTsgfVxuLnUtYmctZ2xhc3MgICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nbGFzcy1iZyk7IH1cbi51LWJnLXRyYW5zcGFyZW50IHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLyog4pSA4pSAIEZsZXhib3ggTGF5b3V0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4udS1mbGV4ICAgICAgICAgIHsgZGlzcGxheTogZmxleDsgfVxuLnUtaW5saW5lLWZsZXggICB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB9XG4udS1mbGV4LXJvdyAgICAgIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuLnUtZmxleC1jb2wgICAgICB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbi51LWZsZXgtd3JhcCAgICAgeyBmbGV4LXdyYXA6IHdyYXA7IH1cbi51LWZsZXgtbm93cmFwICAgeyBmbGV4LXdyYXA6IG5vd3JhcDsgfVxuLnUtanVzdGlmeS1zdGFydCAgICB7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfVxuLnUtanVzdGlmeS1jZW50ZXIgICB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4udS1qdXN0aWZ5LWJldHdlZW4gIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4udS1qdXN0aWZ5LWVuZCAgICAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfVxuLnUtaXRlbXMtc3RhcnQgICAgICB7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4udS1pdGVtcy1jZW50ZXIgICAgIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuLnUtaXRlbXMtZW5kICAgICAgICB7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfVxuLnUtaXRlbXMtc3RyZXRjaCAgICB7IGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9XG4udS1pdGVtcy1iYXNlbGluZSAgIHsgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyB9XG4udS1zZWxmLXN0YXJ0ICAgICAgIHsgYWxpZ24tc2VsZjogZmxleC1zdGFydDsgfVxuLnUtc2VsZi1jZW50ZXIgICAgICB7IGFsaWduLXNlbGY6IGNlbnRlcjsgfVxuLnUtc2VsZi1lbmQgICAgICAgICB7IGFsaWduLXNlbGY6IGZsZXgtZW5kOyB9XG4udS1mbGV4LTEgICAgICAgIHsgZmxleDogMSAxIDAlOyB9XG4udS1mbGV4LWF1dG8gICAgIHsgZmxleDogMSAxIGF1dG87IH1cbi51LWZsZXgtbm9uZSAgICAgeyBmbGV4OiBub25lOyB9XG4udS1mbGV4LXNocmluay0wIHsgZmxleC1zaHJpbms6IDA7IH1cbi51LWZsZXgtZ3JvdyAgICAgeyBmbGV4LWdyb3c6IDE7IH1cbi51LW9yZGVyLWZpcnN0ICAgeyBvcmRlcjogLTk5OTk7IH1cbi51LW9yZGVyLWxhc3QgICAgeyBvcmRlcjogOTk5OTsgfVxuLnUtb3JkZXItbm9uZSAgICB7IG9yZGVyOiAwOyB9XG5cbi8qIOKUgOKUgCBHcmlkIExheW91dCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnUtZ3JpZCAgICAgICAgICB7IGRpc3BsYXk6IGdyaWQ7IH1cbi51LWdyaWQtY29scy0xICAgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxLCBtaW5tYXgoMCwgMWZyKSk7IH1cbi51LWdyaWQtY29scy0yICAgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH1cbi51LWdyaWQtY29scy0zICAgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH1cbi51LWdyaWQtY29scy00ICAgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7IH1cblxuLyog4pSA4pSAIEdhcCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnUtZ2FwLTAgICB7IGdhcDogdmFyKC0tc3BhY2luZy0wKTsgfVxuLnUtZ2FwLTAtNSB7IGdhcDogdmFyKC0tc3BhY2luZy0wLTUpOyB9XG4udS1nYXAtMSAgIHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTEpOyB9XG4udS1nYXAtMS01IHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTEtNSk7IH1cbi51LWdhcC0yICAgeyBnYXA6IHZhcigtLXNwYWNpbmctMik7IH1cbi51LWdhcC0yLTUgeyBnYXA6IHZhcigtLXNwYWNpbmctMi01KTsgfVxuLnUtZ2FwLTMgICB7IGdhcDogdmFyKC0tc3BhY2luZy0zKTsgfVxuLnUtZ2FwLTQgICB7IGdhcDogdmFyKC0tc3BhY2luZy00KTsgfVxuLnUtZ2FwLTUgICB7IGdhcDogdmFyKC0tc3BhY2luZy01KTsgfVxuLnUtZ2FwLTYgICB7IGdhcDogdmFyKC0tc3BhY2luZy02KTsgfVxuLnUtZ2FwLTggICB7IGdhcDogdmFyKC0tc3BhY2luZy04KTsgfVxuXG4vKiDilIDilIAgU2hhZG93czogWmVyby1PZmZzZXQgR2xvdyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIEFsbCBzaGFkb3dzIHVzZSAwIDAgTnB4IGZvcm1hdCAoemVybyBYL1kgb2Zmc2V0LCBwdXJlIGdsb3cpLlxuICAgSHViUmFpeiBnbGFzcy1tb3JwaGlzbSBjb252ZW50aW9uOiBubyBkaXJlY3Rpb25hbCBzaGFkb3dzLiAqL1xuXG4udS1zaGFkb3ctc20geyBib3gtc2hhZG93OiAwIDAgOHB4IHZhcigtLWNocm9tZS1zaGFkb3ctc20pOyB9XG4udS1zaGFkb3ctbWQgeyBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jaHJvbWUtc2hhZG93LW1kKTsgfVxuLnUtc2hhZG93LWxnIHsgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2hyb21lLXNoYWRvdy1sZyk7IH1cbi51LXNoYWRvdy1ub25lIHsgYm94LXNoYWRvdzogbm9uZTsgfVxuXG4vKiDilIDilIAgQm9yZGVyIFJhZGl1cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnUtcm91bmRlZC1ub25lIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW5vbmUpOyB9XG4udS1yb3VuZGVkLXNtICAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyB9XG4udS1yb3VuZGVkLW1kICAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyB9XG4udS1yb3VuZGVkLWxnICAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOyB9XG4udS1yb3VuZGVkLXhsICAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpOyB9XG4udS1yb3VuZGVkLTJ4bCAgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtMnhsKTsgfVxuLnUtcm91bmRlZC1mdWxsIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpOyB9XG5cbi8qIOKUgOKUgCBEaXNwbGF5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4udS1ibG9jayAgICAgICAgeyBkaXNwbGF5OiBibG9jazsgfVxuLnUtaW5saW5lLWJsb2NrIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG4udS1pbmxpbmUgICAgICAgeyBkaXNwbGF5OiBpbmxpbmU7IH1cbi51LWhpZGRlbiAgICAgICB7IGRpc3BsYXk6IG5vbmU7IH1cblxuLyog4pSA4pSAIFBvc2l0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4udS1yZWxhdGl2ZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuLnUtYWJzb2x1dGUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbi51LWZpeGVkICAgIHsgcG9zaXRpb246IGZpeGVkOyB9XG4udS1zdGlja3kgICB7IHBvc2l0aW9uOiBzdGlja3k7IH1cblxuLyog4pSA4pSAIE92ZXJmbG93IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4udS1vdmVyZmxvdy1hdXRvICAgIHsgb3ZlcmZsb3c6IGF1dG87IH1cbi51LW92ZXJmbG93LWhpZGRlbiAgeyBvdmVyZmxvdzogaGlkZGVuOyB9XG4udS1vdmVyZmxvdy12aXNpYmxlIHsgb3ZlcmZsb3c6IHZpc2libGU7IH1cbi51LW92ZXJmbG93LXNjcm9sbCAgeyBvdmVyZmxvdzogc2Nyb2xsOyB9XG5cbi8qIOKUgOKUgCBXaWR0aCAmIEhlaWdodCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnUtdy1mdWxsICAgeyB3aWR0aDogMTAwJTsgfVxuLnUtdy1hdXRvICAgeyB3aWR0aDogYXV0bzsgfVxuLnUtdy1zY3JlZW4geyB3aWR0aDogMTAwdnc7IH1cbi51LWgtZnVsbCAgIHsgaGVpZ2h0OiAxMDAlOyB9XG4udS1oLWF1dG8gICB7IGhlaWdodDogYXV0bzsgfVxuLnUtaC1zY3JlZW4geyBoZWlnaHQ6IDEwMHZoOyB9XG5cbi8qIOKUgOKUgCBSZXNwb25zaXZlIFV0aWxpdGllcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIHNtOiDiiaU2NDBweCB8IG1kOiDiiaU3NjhweCB8IGxnOiDiiaUxMDI0cHhcbiAgIFByZWZpeCBwYXR0ZXJuOiB7YnB9LXUte2NsYXNzfSBlLmcuIG1kLXUtZmxleCwgbGctdS10ZXh0LWxnICovXG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc20tdS1tdC0wICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMCk7IH1cbiAgLnNtLXUtbXQtMiAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5zbS11LW10LTQgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1tdC02ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctNik7IH1cbiAgLnNtLXUtbXQtOCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4gIC5zbS11LW1iLTAgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0wKTsgfVxuICAuc20tdS1tYi0yICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLnNtLXUtbWItNCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5zbS11LW1iLTYgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuICAuc20tdS1tYi04ICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLnNtLXUtbXgtMiAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy0yKTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5zbS11LW14LTQgIHsgbWFyZ2luLWxlZnQ6IHZhcigtLXNwYWNpbmctNCk7IG1hcmdpbi1yaWdodDogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1teC1hdXRvIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuICAuc20tdS1teS00ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctNCk7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNCk7IH1cbiAgLnNtLXUtbXktOCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTgpOyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4gIC5zbS11LXAtMiAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAuc20tdS1wLTQgICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7IH1cbiAgLnNtLXUtcC02ICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5zbS11LXAtOCAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy04KTsgfVxuICAuc20tdS1weC0yICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0yKTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAuc20tdS1weC00ICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy00KTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1weC02ICB7IHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy02KTsgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAuc20tdS1weS0yICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTIpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAuc20tdS1weS00ICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1weS02ICB7IHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTYpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy02KTsgfVxuICAuc20tdS10ZXh0LXNtICAgeyBmb250LXNpemU6IHZhcigtLXRleHQtc20pOyB9XG4gIC5zbS11LXRleHQtYmFzZSB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1iYXNlKTsgfVxuICAuc20tdS10ZXh0LWxnICAgeyBmb250LXNpemU6IHZhcigtLXRleHQtbGcpOyB9XG4gIC5zbS11LXRleHQteGwgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14bCk7IH1cbiAgLnNtLXUtdGV4dC0yeGwgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LTJ4bCk7IH1cbiAgLnNtLXUtdGV4dC0zeGwgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LTN4bCk7IH1cbiAgLnNtLXUtZmxleCAgICAgICB7IGRpc3BsYXk6IGZsZXg7IH1cbiAgLnNtLXUtZmxleC1yb3cgICB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH1cbiAgLnNtLXUtZmxleC1jb2wgICB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cbiAgLnNtLXUtanVzdGlmeS1jZW50ZXIgIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgLnNtLXUtanVzdGlmeS1iZXR3ZWVuIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4gIC5zbS11LWl0ZW1zLWNlbnRlciAgICB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgLnNtLXUtZ2FwLTIgIHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5zbS11LWdhcC00ICB7IGdhcDogdmFyKC0tc3BhY2luZy00KTsgfVxuICAuc20tdS1nYXAtNiAgeyBnYXA6IHZhcigtLXNwYWNpbmctNik7IH1cbiAgLnNtLXUtaGlkZGVuIHsgZGlzcGxheTogbm9uZTsgfVxuICAuc20tdS1ibG9jayAgeyBkaXNwbGF5OiBibG9jazsgfVxuICAuc20tdS1mbGV4LTEgeyBmbGV4OiAxIDEgMCU7IH1cbiAgLnNtLXUtdy1mdWxsIHsgd2lkdGg6IDEwMCU7IH1cbiAgLnNtLXUtdy1hdXRvIHsgd2lkdGg6IGF1dG87IH1cbiAgLnNtLXUtZ3JpZCAgICAgICAgeyBkaXNwbGF5OiBncmlkOyB9XG4gIC5zbS11LWdyaWQtY29scy0yIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpOyB9XG4gIC5zbS11LWdyaWQtY29scy0zIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpOyB9XG4gIC5zbS11LXNoYWRvdy1zbSB7IGJveC1zaGFkb3c6IDAgMCA4cHggdmFyKC0tY2hyb21lLXNoYWRvdy1zbSk7IH1cbiAgLnNtLXUtc2hhZG93LW1kIHsgYm94LXNoYWRvdzogMCAwIDE2cHggdmFyKC0tY2hyb21lLXNoYWRvdy1tZCk7IH1cbiAgLnNtLXUtc2hhZG93LWxnIHsgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2hyb21lLXNoYWRvdy1sZyk7IH1cbiAgLnNtLXUtc2hhZG93LW5vbmUgeyBib3gtc2hhZG93OiBub25lOyB9XG4gIC5zbS11LXJvdW5kZWQtc20geyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyB9XG4gIC5zbS11LXJvdW5kZWQtbWQgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpOyB9XG4gIC5zbS11LXJvdW5kZWQtbGcgeyBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpOyB9XG4gIC5zbS11LXJvdW5kZWQtZnVsbCB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTsgfVxuICAuc20tdS1iZy1wcmltYXJ5ICAgICB7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXByaW1hcnkpOyB9XG4gIC5zbS11LWJnLWFjY2VudCAgICAgIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpOyB9XG4gIC5zbS11LWJnLWFjY2VudC1saWdodCB7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTsgfVxuICAuc20tdS10ZXh0LXByaW1hcnkgICB7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOyB9XG4gIC5zbS11LXRleHQtc2Vjb25kYXJ5IHsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfVxuICAuc20tdS10ZXh0LW11dGVkICAgICB7IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgfVxuICAuc20tdS10ZXh0LWFjY2VudCAgICB7IGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5tZC11LW10LTAgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgfVxuICAubWQtdS1tdC0yICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLm1kLXUtbXQtNCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LW10LTYgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAubWQtdS1tdC04ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLm1kLXUtbWItMCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTApOyB9XG4gIC5tZC11LW1iLTIgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAubWQtdS1tYi00ICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNCk7IH1cbiAgLm1kLXUtbWItNiAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5tZC11LW1iLTggIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsgfVxuICAubWQtdS1teC0yICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLm1kLXUtbXgtNCAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy00KTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LW14LWF1dG8geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG4gIC5tZC11LW15LTQgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy00KTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsgfVxuICAubWQtdS1teS04ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctOCk7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLm1kLXUtcC0yICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5tZC11LXAtNCAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsgfVxuICAubWQtdS1wLTYgICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNik7IH1cbiAgLm1kLXUtcC04ICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4gIC5tZC11LXB4LTIgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5tZC11LXB4LTQgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTQpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LXB4LTYgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTYpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5tZC11LXB5LTIgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMik7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5tZC11LXB5LTQgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNCk7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LXB5LTYgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNik7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5tZC11LXRleHQtc20gICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7IH1cbiAgLm1kLXUtdGV4dC1iYXNlIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWJhc2UpOyB9XG4gIC5tZC11LXRleHQtbGcgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1sZyk7IH1cbiAgLm1kLXUtdGV4dC14bCAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhsKTsgfVxuICAubWQtdS10ZXh0LTJ4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtMnhsKTsgfVxuICAubWQtdS10ZXh0LTN4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtM3hsKTsgfVxuICAubWQtdS1mbGV4ICAgICAgIHsgZGlzcGxheTogZmxleDsgfVxuICAubWQtdS1mbGV4LXJvdyAgIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAubWQtdS1mbGV4LWNvbCAgIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICAubWQtdS1qdXN0aWZ5LWNlbnRlciAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAubWQtdS1qdXN0aWZ5LWJldHdlZW4geyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgLm1kLXUtaXRlbXMtY2VudGVyICAgIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAubWQtdS1nYXAtMiAgeyBnYXA6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLm1kLXUtZ2FwLTQgIHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5tZC11LWdhcC02ICB7IGdhcDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAubWQtdS1oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4gIC5tZC11LWJsb2NrICB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5tZC11LWZsZXgtMSB7IGZsZXg6IDEgMSAwJTsgfVxuICAubWQtdS13LWZ1bGwgeyB3aWR0aDogMTAwJTsgfVxuICAubWQtdS13LWF1dG8geyB3aWR0aDogYXV0bzsgfVxuICAubWQtdS1ncmlkICAgICAgICB7IGRpc3BsYXk6IGdyaWQ7IH1cbiAgLm1kLXUtZ3JpZC1jb2xzLTIgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLm1kLXUtZ3JpZC1jb2xzLTMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLm1kLXUtZ3JpZC1jb2xzLTQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLm1kLXUtc2hhZG93LXNtIHsgYm94LXNoYWRvdzogMCAwIDhweCB2YXIoLS1jaHJvbWUtc2hhZG93LXNtKTsgfVxuICAubWQtdS1zaGFkb3ctbWQgeyBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jaHJvbWUtc2hhZG93LW1kKTsgfVxuICAubWQtdS1zaGFkb3ctbGcgeyBib3gtc2hhZG93OiAwIDAgMjRweCB2YXIoLS1jaHJvbWUtc2hhZG93LWxnKTsgfVxuICAubWQtdS1zaGFkb3ctbm9uZSB7IGJveC1zaGFkb3c6IG5vbmU7IH1cbiAgLm1kLXUtcm91bmRlZC1zbSB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IH1cbiAgLm1kLXUtcm91bmRlZC1tZCB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7IH1cbiAgLm1kLXUtcm91bmRlZC1sZyB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IH1cbiAgLm1kLXUtcm91bmRlZC1mdWxsIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpOyB9XG4gIC5tZC11LWJnLXByaW1hcnkgICAgIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7IH1cbiAgLm1kLXUtYmctYWNjZW50ICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cbiAgLm1kLXUtYmctYWNjZW50LWxpZ2h0IHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnktbGlnaHQpOyB9XG4gIC5tZC11LXRleHQtcHJpbWFyeSAgIHsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH1cbiAgLm1kLXUtdGV4dC1zZWNvbmRhcnkgeyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9XG4gIC5tZC11LXRleHQtbXV0ZWQgICAgIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9XG4gIC5tZC11LXRleHQtYWNjZW50ICAgIHsgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTsgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5sZy11LW10LTAgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0wKTsgfVxuICAubGctdS1tdC0yICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLmxnLXUtbXQtNCAgeyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LW10LTYgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAubGctdS1tdC04ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLmxnLXUtbWItMCAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTApOyB9XG4gIC5sZy11LW1iLTIgIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0yKTsgfVxuICAubGctdS1tYi00ICB7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNCk7IH1cbiAgLmxnLXUtbWItNiAgeyBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5sZy11LW1iLTggIHsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsgfVxuICAubGctdS1teC0yICB7IG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLmxnLXUtbXgtNCAgeyBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy00KTsgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LW14LWF1dG8geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG4gIC5sZy11LW15LTQgIHsgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy00KTsgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsgfVxuICAubGctdS1teS04ICB7IG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctOCk7IG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctOCk7IH1cbiAgLmxnLXUtcC0yICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5sZy11LXAtNCAgIHsgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsgfVxuICAubGctdS1wLTYgICB7IHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNik7IH1cbiAgLmxnLXUtcC04ICAgeyBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpOyB9XG4gIC5sZy11LXB4LTIgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTIpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5sZy11LXB4LTQgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTQpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LXB4LTYgIHsgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjaW5nLTYpOyBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5sZy11LXB5LTIgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctMik7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTIpOyB9XG4gIC5sZy11LXB5LTQgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNCk7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LXB5LTYgIHsgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctNik7IHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTYpOyB9XG4gIC5sZy11LXRleHQtc20gICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7IH1cbiAgLmxnLXUtdGV4dC1iYXNlIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWJhc2UpOyB9XG4gIC5sZy11LXRleHQtbGcgICB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1sZyk7IH1cbiAgLmxnLXUtdGV4dC14bCAgIHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LXhsKTsgfVxuICAubGctdS10ZXh0LTJ4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtMnhsKTsgfVxuICAubGctdS10ZXh0LTN4bCAgeyBmb250LXNpemU6IHZhcigtLXRleHQtM3hsKTsgfVxuICAubGctdS1mbGV4ICAgICAgIHsgZGlzcGxheTogZmxleDsgfVxuICAubGctdS1mbGV4LXJvdyAgIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAubGctdS1mbGV4LWNvbCAgIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICAubGctdS1qdXN0aWZ5LWNlbnRlciAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAubGctdS1qdXN0aWZ5LWJldHdlZW4geyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgLmxnLXUtaXRlbXMtY2VudGVyICAgIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAubGctdS1nYXAtMiAgeyBnYXA6IHZhcigtLXNwYWNpbmctMik7IH1cbiAgLmxnLXUtZ2FwLTQgIHsgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOyB9XG4gIC5sZy11LWdhcC02ICB7IGdhcDogdmFyKC0tc3BhY2luZy02KTsgfVxuICAubGctdS1oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4gIC5sZy11LWJsb2NrICB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5sZy11LWZsZXgtMSB7IGZsZXg6IDEgMSAwJTsgfVxuICAubGctdS13LWZ1bGwgeyB3aWR0aDogMTAwJTsgfVxuICAubGctdS13LWF1dG8geyB3aWR0aDogYXV0bzsgfVxuICAubGctdS1ncmlkICAgICAgICB7IGRpc3BsYXk6IGdyaWQ7IH1cbiAgLmxnLXUtZ3JpZC1jb2xzLTIgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLmxnLXUtZ3JpZC1jb2xzLTMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLmxnLXUtZ3JpZC1jb2xzLTQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7IH1cbiAgLmxnLXUtc2hhZG93LXNtIHsgYm94LXNoYWRvdzogMCAwIDhweCB2YXIoLS1jaHJvbWUtc2hhZG93LXNtKTsgfVxuICAubGctdS1zaGFkb3ctbWQgeyBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jaHJvbWUtc2hhZG93LW1kKTsgfVxuICAubGctdS1zaGFkb3ctbGcgeyBib3gtc2hhZG93OiAwIDAgMjRweCB2YXIoLS1jaHJvbWUtc2hhZG93LWxnKTsgfVxuICAubGctdS1zaGFkb3ctbm9uZSB7IGJveC1zaGFkb3c6IG5vbmU7IH1cbiAgLmxnLXUtcm91bmRlZC1zbSB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IH1cbiAgLmxnLXUtcm91bmRlZC1tZCB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7IH1cbiAgLmxnLXUtcm91bmRlZC1sZyB7IGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7IH1cbiAgLmxnLXUtcm91bmRlZC1mdWxsIHsgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpOyB9XG4gIC5sZy11LWJnLXByaW1hcnkgICAgIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7IH1cbiAgLmxnLXUtYmctYWNjZW50ICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cbiAgLmxnLXUtYmctYWNjZW50LWxpZ2h0IHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnktbGlnaHQpOyB9XG4gIC5sZy11LXRleHQtcHJpbWFyeSAgIHsgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7IH1cbiAgLmxnLXUtdGV4dC1zZWNvbmRhcnkgeyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9XG4gIC5sZy11LXRleHQtbXV0ZWQgICAgIHsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyB9XG4gIC5sZy11LXRleHQtYWNjZW50ICAgIHsgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTsgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDQuIEdMQVNTIE1PUlBISVNNXG4gICBHbGFzcyBjYXJkcywgcGFuZWxzLCBtYXJrZXRwbGFjZSBidXR0b25zIChidG4tbWwsIGJ0bi1zaG9wZWUpXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0gR2xhc3MgQ2FyZCAtLS0gKi9cbi5nbGFzcy1jYXJkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1nbGFzcy1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWdsYXNzLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gIGJveC1zaGFkb3c6XG4gICAgMCAwIDhweCB2YXIoLS1jYXJkLXNoYWRvdyksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldCk7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCBib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbiAgY29udGFpbjogbGF5b3V0O1xufVxuXG4uZ2xhc3MtY2FyZDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdsYXNzLWhvdmVyLWJnKTtcbiAgYm94LXNoYWRvdzpcbiAgICAwIDAgMTZweCB2YXIoLS1jYXJkLXNoYWRvdy1ob3ZlciksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldC1ob3Zlcik7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tZ2xhc3MtaG92ZXItYm9yZGVyKTtcbn1cblxuLyogLS0tIEdsYXNzIFBhbmVsIC0tLSAqL1xuLmdsYXNzLXBhbmVsIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nbGFzcy1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAycmVtO1xuICBib3gtc2hhZG93OlxuICAgIDAgMCAyNHB4IHZhcigtLWNhcmQtc2hhZG93KSwgaW5zZXQgMCAwLjVweCAwIHZhcigtLWdsYXNzLWluc2V0KTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCBib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbn1cblxuLmdsYXNzLXBhbmVsOmhvdmVyIHtcbiAgYm94LXNoYWRvdzpcbiAgICAwIDAgMTZweCB2YXIoLS1jYXJkLXNoYWRvdy1ob3ZlciksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldC1ob3Zlcik7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tZ2xhc3MtaG92ZXItYm9yZGVyKTtcbn1cblxuLyogRGFyayBtb2RlOiB0b25lIGRvd24gdGhlIGluc2V0IHRvcC1oaWdobGlnaHQgZm9yIGJvdGggY29sb3IgdGhlbWVzICovXG4uZGFyayAuZ2xhc3MtY2FyZCB7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggdmFyKC0tY2FyZC1zaGFkb3cpLCBpbnNldCAwIDAuNXB4IDAgdmFyKC0tZ2xhc3MtaW5zZXQtZGFyayk7XG59XG4uZGFyayAuZ2xhc3MtY2FyZDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IDAgMCAxNnB4IHZhcigtLWNhcmQtc2hhZG93LWhvdmVyKSwgaW5zZXQgMCAwLjVweCAwIHZhcigtLWdsYXNzLWluc2V0LWRhcmstaG92ZXIpO1xufVxuLmRhcmsgLmdsYXNzLXBhbmVsIHtcbiAgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tY2FyZC1zaGFkb3cpLCBpbnNldCAwIDAuNXB4IDAgdmFyKC0tZ2xhc3MtaW5zZXQtZGFyayk7XG59XG4uZGFyayAuZ2xhc3MtcGFuZWw6aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1jYXJkLXNoYWRvdy1ob3ZlciksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldC1kYXJrLWhvdmVyKTtcbn1cblxuLyogLS0tIFNoYXJlZCBNYXJrZXRwbGFjZSBCdXR0b24gU3R5bGVzIC0tLSAqL1xuLmJ0bi1tbCxcbi5idG4tc2hvcGVlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC44NzVyZW0gMS4yNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC44NzVyZW07XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDA1ZW07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgbWluLWhlaWdodDogNDhweDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UsIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLCB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLmJ0bi1tbDpob3Zlcixcbi5idG4tc2hvcGVlOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4uYnRuLW1sOmFjdGl2ZSxcbi5idG4tc2hvcGVlOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogLS0tIE1lcmNhZG8gTGl2cmUgQnV0dG9uIC0tLSAqL1xuLmJ0bi1tbCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW1sLXllbGxvdykgMCUsIHZhcigtLW1sLXllbGxvdy1ob3ZlcikgMTAwJSk7XG4gIGNvbG9yOiB2YXIoLS1tbC1uYXZ5KTtcbiAgYm94LXNoYWRvdzogMCAwIDE2cHggdmFyKC0tbWwtc2hhZG93KSwgaW5zZXQgMCAxcHggMCB2YXIoLS1tbC1pbnNldCk7XG59XG5cbi5idG4tbWw6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1tbC15ZWxsb3ctaG92ZXIpIDAlLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbWwteWVsbG93LWhvdmVyKSA4NSUsIGJsYWNrKSAxMDAlKTtcbiAgYm94LXNoYWRvdzogMCAwIDI0cHggdmFyKC0tbWwtc2hhZG93LWhvdmVyKSwgaW5zZXQgMCAxcHggMCB2YXIoLS1tbC1pbnNldC1ob3Zlcik7XG59XG5cbi8qIC0tLSBTaG9wZWUgQnV0dG9uIC0tLSAqL1xuLmJ0bi1zaG9wZWUge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zaG9wZWUtb3JhbmdlKSAwJSwgdmFyKC0tc2hvcGVlLW9yYW5nZS1ob3ZlcikgMTAwJSk7XG4gIC8qIFNob3BlZSBicmFuZCB3aGl0ZSB0ZXh0IOKAlCBub3QgLS10ZXh0LW9uLWFjY2VudCAoM3JkLXBhcnR5IGJyYW5kIGNvbG9yKS5cbiAgICAgV2hpdGUgb24gI0VFNEQyRCA9IDMuNjY6MSDigJQgcGFzc2VzIGxhcmdlLXRleHQgKDM6MSkuIERvY3VtZW50ZWQgZXhjZXB0aW9uLiAqL1xuICBjb2xvcjogI0ZGRkZGRjtcbiAgYm94LXNoYWRvdzogMCAwIDE2cHggdmFyKC0tc2hvcGVlLXNoYWRvdyksIGluc2V0IDAgMXB4IDAgdmFyKC0tYnRuLWluc2V0KTtcbn1cblxuLmJ0bi1zaG9wZWU6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zaG9wZWUtb3JhbmdlLWhvdmVyKSAwJSwgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXNob3BlZS1vcmFuZ2UtaG92ZXIpIDg1JSwgYmxhY2spIDEwMCUpO1xuICBib3gtc2hhZG93OiAwIDAgMjRweCB2YXIoLS1zaG9wZWUtc2hhZG93LWhvdmVyKSwgaW5zZXQgMCAxcHggMCB2YXIoLS1idG4taW5zZXQtaG92ZXIpO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDUuIEhFUk9cbiAgIEhlcm8gc2VjdGlvbiBsYXlvdXQsIGxvZ28sIHRpdGxlLCB0YWdsaW5lLCBDVEFzLCBzY3JvbGwgaW5kaWNhdG9yXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaGVybyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIG1pbi1oZWlnaHQ6IDEwMGR2aDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5oZXJvLWRvdC1ncmlkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgb3BhY2l0eTogMC4wMjU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMXB4IDFweCwgdmFyKC0tbmV1dHJhbC05MDApIDFweCwgdHJhbnNwYXJlbnQgMCk7XG4gIGJhY2tncm91bmQtc2l6ZTogMjhweCAyOHB4O1xufVxuXG4uZGFyayAuaGVyby1kb3QtZ3JpZCB7IG9wYWNpdHk6IDAuMDI7IH1cblxuLmhlcm8tY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDUycmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogNXJlbSAxLjI1cmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmhlcm8tY29udGVudCB7IHBhZGRpbmc6IDdyZW0gMnJlbTsgfSB9XG5cbi5oZXJvLWdsYXNzIHtcbiAgcGFkZGluZzogMnJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXgtd2lkdGg6IDQzcmVtO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5oZXJvLWdsYXNzIHsgcGFkZGluZzogM3JlbTsgfSB9XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLmhlcm8tZ2xhc3MgeyBwYWRkaW5nOiA0cmVtOyB9IH1cblxuLmhlcm8tbG9nby13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLmhlcm8tbG9nby1jb250YWluZXIge1xuICB3aWR0aDogNC43NXJlbTtcbiAgaGVpZ2h0OiA0Ljc1cmVtO1xuICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zY2hlbWUtaGVyby1sb2dvLWJnKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ2xhc3MtYm9yZGVyKTtcbiAgYm94LXNoYWRvdzogMCAwIDE4cHggdmFyKC0tY2hyb21lLXNoYWRvdy1zbSksIGluc2V0IDAgMC41cHggMCB2YXIoLS1nbGFzcy1pbnNldCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZGFyayAuaGVyby1sb2dvLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXNjaGVtZS1oZXJvLWxvZ28tYmctZGFyayk7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tZ2xhc3MtYm9yZGVyKTtcbiAgYm94LXNoYWRvdzogMCAwIDE4cHggdmFyKC0tY2hyb21lLXNoYWRvdy1kYXJrKSwgaW5zZXQgMCAwLjVweCAwIHZhcigtLWdsYXNzLWluc2V0LWRhcmspO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLmhlcm8tbG9nby1jb250YWluZXIgeyB3aWR0aDogNS43NXJlbTsgaGVpZ2h0OiA1Ljc1cmVtOyBib3JkZXItcmFkaXVzOiAxLjVyZW07IH1cbn1cblxuLmhlcm8tbG9nby1pbWcge1xuICB3aWR0aDogNzYlO1xuICBoZWlnaHQ6IDc2JTtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgOHB4IHZhcigtLWxvZ28tZHJvcC1zaGFkb3cpKTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5oZXJvLWxvZ28taW1nIHsgd2lkdGg6IDgyJTsgaGVpZ2h0OiA4MiU7IH1cbn1cblxuLmhlcm8tdGl0bGUge1xuICBmb250LXNpemU6IGNsYW1wKDNyZW0sIDh2dywgNS4yNXJlbSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1kaXNwbGF5KTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAzNWVtO1xuICBsaW5lLWhlaWdodDogMC45NTtcbiAgbWFyZ2luLWJvdHRvbTogMC44NzVyZW07XG59XG5cbi5oZXJvLXRpdGxlLWh1YiB7IGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7IH1cbi5kYXJrIC5oZXJvLXRpdGxlLWh1YiB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTEwMCk7IH1cbi5oZXJvLXRpdGxlLXJhaXogeyBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpOyB9XG5cbi5oZXJvLXRhZ2xpbmUge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC11aSk7XG4gIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgMi40dncsIDEuMjVyZW0pO1xuICBjb2xvcjogdmFyKC0tc2NoZW1lLWhlcm8tdGFnbGluZSk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjAwNWVtO1xuICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xufVxuXG4uaGVyby1kZXNjcmlwdGlvbiB7XG4gIG1heC13aWR0aDogMzVyZW07XG4gIG1hcmdpbjogMCBhdXRvIDJyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjc1O1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApO1xuICBmb250LXNpemU6IDFyZW07XG59XG5cbi5kYXJrIC5oZXJvLWRlc2NyaXB0aW9uIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMzAwKTsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmhlcm8tZGVzY3JpcHRpb24geyBmb250LXNpemU6IDEuMTI1cmVtOyB9IH1cblxuLmhlcm8tY3RhcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC43NXJlbTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuaGVyby1jdGFzIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgZ2FwOiAxcmVtOyB9XG59XG5cbi5oZXJvLWN0YXMgLmJ0bi1tbCxcbi5oZXJvLWN0YXMgLmJ0bi1zaG9wZWUge1xuICB3aWR0aDogYXV0bztcbiAgcGFkZGluZzogMXJlbSAxLjc1cmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG59XG5cbi5oZXJvLXRydXN0LWhpbnQge1xuICBtYXJnaW4tdG9wOiAxLjc1cmVtO1xuICBjb2xvcjogdmFyKC0tc2NoZW1lLWhlcm8tdHJ1c3QpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC11aSk7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgeyAuaGVyby10cnVzdC1oaW50IHsgZm9udC1zaXplOiAwLjg3NXJlbTsgfSB9XG4uZGFyayAuaGVyby10cnVzdC1oaW50IHsgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTsgfVxuXG4uaGVyby1zY3JvbGwtaW5kaWNhdG9yIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDEuNXJlbTtcbiAgbGVmdDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTEuMjVyZW07XG4gIHdpZHRoOiAyLjVyZW07XG4gIHotaW5kZXg6IDEwO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmhlcm8tc2Nyb2xsLWluZGljYXRvciB7IGJvdHRvbTogMnJlbTsgfSB9XG5cbi5oZXJvLXNjcm9sbC1idG4ge1xuICB3aWR0aDogMi41cmVtO1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogdmFyKC0tdWktc3VyZmFjZS1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXVpLXN1cmZhY2UtYm9yZGVyKTtcbiAgY29sb3I6IHZhcigtLXNjaGVtZS1oZXJvLXNjcm9sbC1jb2xvcik7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgY29sb3IgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGFyayAuaGVyby1zY3JvbGwtYnRuIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tdWktc3VyZmFjZS1iZy1kYXJrKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS11aS1zdXJmYWNlLWJvcmRlci1kYXJrKTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbn1cblxuLmhlcm8tc2Nyb2xsLWJ0bjpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1zY2hlbWUtZm9jdXMtcmluZyk7XG4gIGJhY2tncm91bmQ6IHZhcigtLXVpLXN1cmZhY2UtaG92ZXItYmcpO1xufVxuXG4uZGFyayAuaGVyby1zY3JvbGwtYnRuOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tdWktc3VyZmFjZS1ob3Zlci1iZy1kYXJrKTtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA2LiBDQVRBTE9HXG4gICBDYXRhbG9nIHNlY3Rpb24gaGVhZGVyLCBzdGlja3kgYmFyLCBmaWx0ZXIgYmFyLCBzZWFyY2ggaW5wdXRzLFxuICAgZmlsdGVyIHBpbGxzLCB2aWV3IHRvZ2dsZSwgZGVza3RvcCBmaWx0ZXJzLCByZXN1bHRzIGJhciwgbW9iaWxlIHN1bW1hcnlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jYXRhbG9nIHtcbiAgcGFkZGluZzogM3JlbSAxcmVtIDRyZW07XG4gIG1heC13aWR0aDogMTYwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxMDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5jYXRhbG9nIHsgcGFkZGluZzogNXJlbSAxLjVyZW07IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuY2F0YWxvZyB7IHBhZGRpbmctbGVmdDogMnJlbTsgcGFkZGluZy1yaWdodDogMnJlbTsgfVxufVxuXG4uY2F0YWxvZy1oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5jYXRhbG9nLWhlYWRlciB7IG1hcmdpbi1ib3R0b206IDIuNXJlbTsgfSB9XG5cbi5jYXRhbG9nLXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC05MDApO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgZm9udC1zaXplOiBjbGFtcCgxLjg1cmVtLCA0dncsIDIuNzVyZW0pO1xufVxuXG4uZGFyayAuY2F0YWxvZy10aXRsZSB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTEwMCk7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5jYXRhbG9nLXRpdGxlIHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfSB9XG5cbi5jYXRhbG9nLXN1YnRpdGxlIHtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdWkpO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjc7XG4gIG1heC13aWR0aDogNDJyZW07XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4uZGFyayAuY2F0YWxvZy1zdWJ0aXRsZSB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTMwMCk7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5jYXRhbG9nLXN1YnRpdGxlIHsgZm9udC1zaXplOiAxLjEyNXJlbTsgfSB9XG5cbi8qIC0tLSBTdGlja3kgQmFyIC0tLSAqL1xuLnN0aWNreS1iYXIge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHotaW5kZXg6IDMwO1xuICBtYXJnaW4tbGVmdDogLTFyZW07XG4gIG1hcmdpbi1yaWdodDogLTFyZW07XG4gIHBhZGRpbmc6IDAuNjI1cmVtIDFyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc3RpY2t5LWJhciB7IG1hcmdpbi1sZWZ0OiAtMS41cmVtOyBtYXJnaW4tcmlnaHQ6IC0xLjVyZW07IH1cbn1cblxuLnN0aWNreS1iYXItaGlkZGVuIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UsIHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCB2aXNpYmlsaXR5IDBzIGxpbmVhciB2YXIoLS1kdXJhdGlvbi1zbG93KTtcbn1cblxuLnN0aWNreS1iYXItdmlzaWJsZSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UsIHZpc2liaWxpdHkgMHMgbGluZWFyIDBzO1xufVxuXG4uc3RpY2t5LWJhci1oaWRkZW4gLmZpbHRlci1iYXIge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2U7XG59XG5cbi5zdGlja3ktYmFyLXZpc2libGUgLmZpbHRlci1iYXIge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2U7XG59XG5cbi5zdGlja3ktYmFyLWlubmVyIHtcbiAgbWF4LXdpZHRoOiA0OHJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICBwYWRkaW5nOiAwLjYyNXJlbSAwLjc1cmVtO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLnN0aWNreS1iYXItaW5uZXIgeyBnYXA6IDAuNzVyZW07IHBhZGRpbmc6IDAuNzVyZW07IH1cbn1cblxuLyogLS0tIEZpbHRlciBCYXIgLS0tICovXG4uZmlsdGVyLWJhciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWZpbHRlci1iYXItYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1maWx0ZXItYmFyLWJvcmRlcik7XG4gIGJveC1zaGFkb3c6IDAgMCAyNHB4IHZhcigtLWNocm9tZS1zaGFkb3ctc20pO1xufVxuXG4uZmlsdGVyLWJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtaW4td2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG4gIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHBhZGRpbmc6IDAgNXB4O1xufVxuXG4vKiAtLS0gRmlsdGVyIEJ1dHRvbiAtLS0gKi9cbi5maWx0ZXItYnRuIHtcbiAgd2lkdGg6IDIuNXJlbTtcbiAgaGVpZ2h0OiAyLjVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYWNjZW50LXByaW1hcnktYm9yZGVyKTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi5maWx0ZXItYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnktYm9yZGVyKTsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLmZpbHRlci1idG4geyB3aWR0aDogMi43NXJlbTsgaGVpZ2h0OiAyLjc1cmVtOyB9XG59XG5cbi5maWx0ZXItYnRuLWJhZGdlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0wLjM3NXJlbTtcbiAgcmlnaHQ6IC0wLjM3NXJlbTtcbiAgbWluLXdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGZvbnQtc2l6ZTogMC41NjI1cmVtO1xufVxuXG4vKiAtLS0gU2VhcmNoIEZpZWxkIChzaGFyZWQgY29tcG9uZW50KSAtLS1cbiAgIEJFTS1zdHJ1Y3R1cmVkIHNlYXJjaCBpbnB1dCB1c2VkIGJ5IGJvdGggc3RpY2t5IGJhciBhbmQgZGVza3RvcCBiYXIuXG4gICBWYXJpYW50IG1vZGlmaWVyczogLnNlYXJjaC1maWVsZC0tc3RpY2t5IChjb21wYWN0KSAvIC5zZWFyY2gtZmllbGQtLWRlc2t0b3AgKGZ1bGwtc2l6ZSlcbiAgIEVsaW1pbmF0ZXMgdGhlIHByZXZpb3VzIC5zdGlja3ktc2VhcmNoLSogLyAuZGVza3RvcC1zZWFyY2gtKiBkdXBsaWNhdGlvbi4gKi9cblxuLnNlYXJjaC1maWVsZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwO1xufVxuXG4uc2VhcmNoLWZpZWxkX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRhcmsgLnNlYXJjaC1maWVsZF9faWNvbiB7XG4gIGNvbG9yOiB2YXIoLS1zdXJmYWNlLTQwMCk7XG59XG5cbi5zZWFyY2gtZmllbGRfX2lucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLXNlYXJjaC1iZyk7XG4gIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tc2VhcmNoLWJvcmRlcik7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYm9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi5zZWFyY2gtZmllbGRfX2lucHV0OjpwbGFjZWhvbGRlciB7IGNvbG9yOiB2YXIoLS10ZXh0LXBsYWNlaG9sZGVyKTsgfVxuXG4uc2VhcmNoLWZpZWxkX19pbnB1dDpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tc2VhcmNoLWZvY3VzLWJvcmRlcik7XG4gIGJhY2tncm91bmQ6IHZhcigtLXNlYXJjaC1mb2N1cy1iZyk7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1zY2hlbWUtc2VhcmNoLWZvY3VzLXJpbmctc3Ryb25nKTtcbn1cblxuLnNlYXJjaC1maWVsZF9fY2xlYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi8qIOKUgOKUgCBTdGlja3kgdmFyaWFudCAoY29tcGFjdCwgbW9iaWxlLWZpcnN0KSDilIDilIAgKi9cbi5zZWFyY2gtZmllbGQtLXN0aWNreSAuc2VhcmNoLWZpZWxkX19pY29uIHtcbiAgbGVmdDogMC43NXJlbTtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbn1cblxuLnNlYXJjaC1maWVsZC0tc3RpY2t5IC5zZWFyY2gtZmllbGRfX2lucHV0IHtcbiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW0gMC41cmVtIDIuMjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5zZWFyY2gtZmllbGQtLXN0aWNreSAuc2VhcmNoLWZpZWxkX19pbnB1dDpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1zY2hlbWUtc2VhcmNoLWZvY3VzLXJpbmctc3Ryb25nKTtcbn1cblxuLmRhcmsgLnNlYXJjaC1maWVsZC0tc3RpY2t5IC5zZWFyY2gtZmllbGRfX2lucHV0OmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLXNjaGVtZS1zZWFyY2gtZm9jdXMtcmluZy1zdHJvbmcpO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLnNlYXJjaC1maWVsZC0tc3RpY2t5IC5zZWFyY2gtZmllbGRfX2lucHV0IHsgcGFkZGluZzogMC42MjVyZW0gMC43NXJlbSAwLjYyNXJlbSAyLjI1cmVtOyB9XG59XG5cbi5zZWFyY2gtZmllbGQtLXN0aWNreSAuc2VhcmNoLWZpZWxkX19jbGVhciB7XG4gIHJpZ2h0OiAwLjYyNXJlbTtcbiAgcGFkZGluZzogMC4xMjVyZW07XG59XG5cbi5zZWFyY2gtZmllbGQtLXN0aWNreSAuc2VhcmNoLWZpZWxkX19jbGVhcjpob3ZlciB7IGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7IH1cbi5kYXJrIC5zZWFyY2gtZmllbGQtLXN0aWNreSAuc2VhcmNoLWZpZWxkX19jbGVhcjpob3ZlciB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTMwMCk7IH1cblxuLyog4pSA4pSAIERlc2t0b3AgdmFyaWFudCAoZnVsbC1zaXplLCBsYXJnZXIgaWNvbnMgJiBwYWRkaW5nKSDilIDilIAgKi9cbi5zZWFyY2gtZmllbGQtLWRlc2t0b3AgLnNlYXJjaC1maWVsZF9faWNvbiB7XG4gIGxlZnQ6IDAuODc1cmVtO1xuICB3aWR0aDogMS4yNXJlbTtcbiAgaGVpZ2h0OiAxLjI1cmVtO1xufVxuXG4uc2VhcmNoLWZpZWxkLS1kZXNrdG9wIC5zZWFyY2gtZmllbGRfX2lucHV0IHtcbiAgcGFkZGluZzogMC42MjVyZW0gMXJlbSAwLjYyNXJlbSAyLjc1cmVtO1xuICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC44NzVyZW07XG59XG5cbi5zZWFyY2gtZmllbGQtLWRlc2t0b3AgLnNlYXJjaC1maWVsZF9faW5wdXQ6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAzcHggdmFyKC0tc2NoZW1lLXNlYXJjaC1mb2N1cy1yaW5nKTtcbn1cblxuLnNlYXJjaC1maWVsZC0tZGVza3RvcCAuc2VhcmNoLWZpZWxkX19jbGVhciB7XG4gIHJpZ2h0OiAwLjc1cmVtO1xuICBwYWRkaW5nOiAwLjI1cmVtO1xufVxuXG4uc2VhcmNoLWZpZWxkLS1kZXNrdG9wIC5zZWFyY2gtZmllbGRfX2NsZWFyOmhvdmVyIHsgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsgfVxuLmRhcmsgLnNlYXJjaC1maWVsZC0tZGVza3RvcCAuc2VhcmNoLWZpZWxkX19jbGVhcjpob3ZlciB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTIwMCk7IH1cblxuLyogLS0tIE1vYmlsZSBGaWx0ZXJzIFN1bW1hcnkgLS0tICovXG4ubW9iaWxlLWZpbHRlcnMtc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgbWFyZ2luLXRvcDogMC4zNzVyZW07XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNTAwKTtcbn1cblxuLm1vYmlsZS1maWx0ZXJzLXN1bW1hcnktZG90IHtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTtcbn1cblxuLmRhcmsgLm1vYmlsZS1maWx0ZXJzLXN1bW1hcnkgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbi5tb2JpbGUtZmlsdGVycy1zdW1tYXJ5IGJ1dHRvbiB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5tb2JpbGUtZmlsdGVycy1zdW1tYXJ5IHsgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qIC0tLSBEZXNrdG9wIElubGluZSBGaWx0ZXJzIC0tLSAqL1xuLmRlc2t0b3AtZmlsdGVycyB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5kZXNrdG9wLWZpbHRlcnMgeyBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi5kZXNrdG9wLWZpbHRlcnMgPiAqICsgKiB7IG1hcmdpbi10b3A6IDEuMjVyZW07IH1cblxuLmZpbHRlci1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xufVxuXG4uZmlsdGVyLXJvdy1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNDAwKTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjEyNXJlbTtcbn1cblxuLmRhcmsgLmZpbHRlci1yb3ctbGFiZWwgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbi8qIC0tLSBEZXNrdG9wIFNlYXJjaCBCYXIgKHNlYXJjaCBmaWVsZCArIGNvbnRyb2xzKSAtLS0gKi9cbi8qIE1hdGNoZXMgdGhlIHN0aWNreSBiYXIncyBmaWx0ZXItYmFyIGdsYXNzIG1vcnBoaXNtIHBhdHRlcm4gKi9cbi5kZXNrdG9wLXNlYXJjaC1iYXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDAuNzVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG59XG5cbi5kZXNrdG9wLXNlYXJjaC1jb250cm9scyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLnBpbGwtY291bnQge1xuICBtYXJnaW4tbGVmdDogMC4zNzVyZW07XG4gIG9wYWNpdHk6IDAuNTU7XG59XG5cbi8qIC0tLSBEZXNrdG9wIFJlc3VsdHMgQmFyIC0tLSAqL1xuLmRlc2t0b3AtcmVzdWx0cy1iYXIge1xuICBkaXNwbGF5OiBub25lO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5kZXNrdG9wLXJlc3VsdHMtYmFyIHsgZGlzcGxheTogZmxleDsgfSB9XG5cbi5kZXNrdG9wLXJlc3VsdHMtY291bnQge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC11aSk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7XG59XG5cbi5kYXJrIC5kZXNrdG9wLXJlc3VsdHMtY291bnQgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbi5kZXNrdG9wLWNsZWFyLWJ0biB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmRlc2t0b3AtY2xlYXItYnRuOmhvdmVyIHsgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTsgfVxuXG4vKiAtLS0gRmlsdGVyIFBpbGxzIC0tLSAqL1xuLmNhdGVnb3J5LXBpbGwsIC5icmFuZC1waWxsLCAudGFnLXBpbGwge1xuICBwYWRkaW5nOiAwLjVyZW0gMS4xMjVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdWkpO1xuICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UsIGNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYm9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtaW4taGVpZ2h0OiA0MHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmNhdGVnb3J5LXBpbGwtLWFjdGl2ZSwgLmJyYW5kLXBpbGwtLWFjdGl2ZSwgLnRhZy1waWxsLS1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG4gIGJveC1zaGFkb3c6IDAgMCAxNnB4IHZhcigtLWFjY2VudC1wcmltYXJ5LXNoYWRvdyksIGluc2V0IDAgMXB4IDAgdmFyKC0tYnRuLWluc2V0KTtcbn1cblxuLmNhdGVnb3J5LXBpbGwtLWluYWN0aXZlLCAuYnJhbmQtcGlsbC0taW5hY3RpdmUsIC50YWctcGlsbC0taW5hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1waWxsLWluYWN0aXZlLWJnKTtcbiAgY29sb3I6IHZhcigtLXBpbGwtaW5hY3RpdmUtdGV4dCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXBpbGwtaW5hY3RpdmUtYm9yZGVyKTtcbn1cblxuXG4uY2F0ZWdvcnktcGlsbC0taW5hY3RpdmU6aG92ZXIsIC5icmFuZC1waWxsLS1pbmFjdGl2ZTpob3ZlciwgLnRhZy1waWxsLS1pbmFjdGl2ZTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdsYXNzLWhvdmVyLWJnKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXIpO1xufVxuXG4vKiBCcmFuZCBwaWxscyB1c2UgLS1hY2NlbnQtcHJpbWFyeS1ib3JkZXIgb24gaG92ZXIsIHNhbWUgYXMgY2F0ZWdvcnkgcGlsbHMsXG4gICBzbyBib3RoIGZvbGxvdyB0aGUgYWN0aXZlIHRoZW1lIGNvbnNpc3RlbnRseS4gKi9cblxuXG4vKiAtLS0gVmlldyBUb2dnbGUgLS0tICovXG4udmlldy10b2dnbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDJweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tcGlsbC1pbmFjdGl2ZS1iZyk7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIHBhZGRpbmc6IDNweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcGlsbC1pbmFjdGl2ZS1ib3JkZXIpO1xufVxuXG4udmlldy10b2dnbGUtYnRuIHtcbiAgcGFkZGluZzogMC41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjYyNXJlbTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2UsIGNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWluLXdpZHRoOiA0MHB4O1xuICBtaW4taGVpZ2h0OiA0MHB4O1xufVxuXG4udmlldy10b2dnbGUtYnRuLS1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggdmFyKC0tYWNjZW50LXByaW1hcnktc2hhZG93KTtcbn1cblxuLnZpZXctdG9nZ2xlLWJ0bi0taW5hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnZpZXctdG9nZ2xlLWJ0bi0taW5hY3RpdmU6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1waWxsLWluYWN0aXZlLWJnKTsgfVxuLmRhcmsgLnZpZXctdG9nZ2xlLWJ0bi0taW5hY3RpdmUgeyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH1cblxuLyogU3RpY2t5IGJhciB2aWV3IHRvZ2dsZSDigJQgY29tcGFjdCBvbiBtb2JpbGUgKi9cbi5zdGlja3ktYmFyIC52aWV3LXRvZ2dsZSB7IHBhZGRpbmc6IDJweDsgZmxleC1zaHJpbms6IDA7IH1cbi5zdGlja3ktYmFyIC52aWV3LXRvZ2dsZS1idG4geyBtaW4td2lkdGg6IDM0cHg7IG1pbi1oZWlnaHQ6IDM0cHg7IHBhZGRpbmc6IDZweDsgfVxuLnN0aWNreS1iYXIgLnZpZXctdG9nZ2xlLWJ0biBzdmcgeyB3aWR0aDogMTRweDsgaGVpZ2h0OiAxNHB4OyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuc3RpY2t5LWJhciAudmlldy10b2dnbGUtYnRuIHsgbWluLXdpZHRoOiAzOHB4OyBtaW4taGVpZ2h0OiAzOHB4OyBwYWRkaW5nOiA4cHg7IH1cbiAgLnN0aWNreS1iYXIgLnZpZXctdG9nZ2xlLWJ0biBzdmcgeyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyB9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgNy4gUFJPRFVDVCBDQVJEXG4gICBQcm9kdWN0IGNhcmQgbGF5b3V0LCBpbWFnZSB3cmFwLCBob3ZlciBvdmVybGF5LCBjb250ZW50LCB0YWdzLCBuYW1lLFxuICAgYnV0dG9ucywgZmVhdHVyZWQgYmFkZ2UsIHNjcm9sbGluZyBkZXNjcmlwdGlvbiwgZmx1aWQgZ3JpZHMsIGVtcHR5IHN0YXRlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0gUHJvZHVjdCBDYXJkIC0tLSAqL1xuLnByb2R1Y3QtY2FyZCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgY29udGFpbjogbGF5b3V0O1xufVxuXG4ucHJvZHVjdC1jYXJkLmxpc3QtdmlldyB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbi5wcm9kdWN0LWNhcmQtaW1hZ2Utd3JhcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZDogdmFyKC0tc2NoZW1lLWltYWdlLXdyYXAtYmcpO1xuICBmbGV4LXNocmluazogMDtcbiAgYXNwZWN0LXJhdGlvOiAxO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmRhcmsgLnByb2R1Y3QtY2FyZC1pbWFnZS13cmFwIHsgYmFja2dyb3VuZDogdmFyKC0tc2NoZW1lLWltYWdlLXdyYXAtYmctZGFyayk7IH1cblxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnByb2R1Y3QtY2FyZC1pbWFnZS13cmFwIHtcbiAgd2lkdGg6IDdyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAucHJvZHVjdC1jYXJkLmxpc3QtdmlldyAucHJvZHVjdC1jYXJkLWltYWdlLXdyYXAgeyB3aWR0aDogMTByZW07IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWNhcmQtaW1hZ2Utd3JhcCB7IHdpZHRoOiAxNHJlbTsgfVxufVxuXG4ucHJvZHVjdC1jYXJkLWltYWdlLXdyYXAgcGljdHVyZSB7XG4gIGRpc3BsYXk6IGNvbnRlbnRzO1xufVxuXG4ucHJvZHVjdC1jYXJkLWltYWdlLXdyYXAgaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGVhc2Utb3V0O1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xufVxuXG4ucHJvZHVjdC1jYXJkOmhvdmVyIC5wcm9kdWN0LWNhcmQtaW1hZ2Utd3JhcCBpbWcge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4vKiBJbWFnZSBlcnJvciBwbGFjZWhvbGRlciDigJQgYWJzb2x1dGVseSBwb3NpdGlvbmVkIHRvIG92ZXJsYXkgaW1hZ2UgYXJlYSAqL1xuLnByb2R1Y3QtY2FyZC1pbWFnZS1lcnJvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuMjVyZW07XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTMwMCk7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5kYXJrIC5wcm9kdWN0LWNhcmQtaW1hZ2UtZXJyb3IgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG5cbi5wcm9kdWN0LWNhcmQtaW1hZ2UtZXJyb3ItdGV4dCB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLnByb2R1Y3QtY2FyZC1ob3Zlci1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgdmFyKC0tc2NoZW1lLW92ZXJsYXktZ3JhZGllbnQpLCB0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2U7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZGFyayAucHJvZHVjdC1jYXJkLWhvdmVyLW92ZXJsYXkgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCB2YXIoLS1zY2hlbWUtb3ZlcmxheS1ncmFkaWVudC1kYXJrKSwgdHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50KTsgfVxuXG4ucHJvZHVjdC1jYXJkOmhvdmVyIC5wcm9kdWN0LWNhcmQtaG92ZXItb3ZlcmxheSB7IG9wYWNpdHk6IDE7IH1cblxuLyogLS0tIENhcmQgQ29udGVudCAtLS0gKi9cbi5wcm9kdWN0LWNhcmQtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMDtcbiAgcGFkZGluZzogMS4yNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC5wcm9kdWN0LWNhcmQtY29udGVudCB7IHBhZGRpbmc6IDEuNXJlbTsgfSB9XG5cbi5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWNhcmQtY29udGVudCB7IHBhZGRpbmc6IDAuNzVyZW07IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWNhcmQtY29udGVudCB7IHBhZGRpbmc6IDEuMjVyZW07IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWNhcmQtY29udGVudCB7IHBhZGRpbmc6IDEuNXJlbTsgfVxufVxuXG4vKiAtLS0gVGFncyAtLS0gKi9cbi5wcm9kdWN0LXRhZ3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC4zNzVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLnRhZy1icmFuZCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdWkpO1xuICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC42MjVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYWNjZW50LXByaW1hcnktYm9yZGVyKTtcbn1cblxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnRhZy1icmFuZCB7IGZvbnQtc2l6ZTogMC42MjVyZW07IHBhZGRpbmc6IDAuMTI1cmVtIDAuNXJlbTsgfVxuXG4udGFnLWNhdGVnb3J5LCAudGFnLWF0dHJpYnV0ZSB7XG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdWkpO1xuICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC41cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeS1saWdodCk7XG4gIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYWNjZW50LXByaW1hcnkpIDU1JSwgdmFyKC0tdGV4dC1tdXRlZCkpO1xuICBib3JkZXI6IDFweCBzb2xpZCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYWNjZW50LXByaW1hcnktYm9yZGVyKSA1MCUsIHZhcigtLWdsYXNzLWJvcmRlcikpO1xufVxuXG4ucHJvZHVjdC1jYXJkLmxpc3QtdmlldyAudGFnLWNhdGVnb3J5LFxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnRhZy1hdHRyaWJ1dGUgeyBmb250LXNpemU6IDAuNjI1cmVtOyB9XG5cbi50YWctYXR0cmlidXRlIHtcbiAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KSA1NSUsIHZhcigtLWdsYXNzLWJnKSk7XG4gIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYWNjZW50LXByaW1hcnkpIDQ4JSwgdmFyKC0tdGV4dC1tdXRlZCkpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjM5cHgpIHtcbiAgLnRhZy1jYXRlZ29yeSxcbiAgLnRhZy1hdHRyaWJ1dGUgeyBkaXNwbGF5OiBub25lOyB9XG59XG5cbi8qIC0tLSBQcm9kdWN0IE5hbWUgLS0tICovXG4ucHJvZHVjdC1uYW1lIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaGVhZGluZyk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTtcbiAgbGluZS1oZWlnaHQ6IDEuMTg7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMTJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xufVxuXG4uZGFyayAucHJvZHVjdC1uYW1lIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLnByb2R1Y3QtbmFtZSB7IGZvbnQtc2l6ZTogMS4yNXJlbTsgfSB9XG5cbi5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LW5hbWUgeyBmb250LXNpemU6IDAuODc1cmVtOyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAucHJvZHVjdC1jYXJkLmxpc3QtdmlldyAucHJvZHVjdC1uYW1lIHsgZm9udC1zaXplOiAxLjEyNXJlbTsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9XG59XG5cbi8qIC0tLSBQcm9kdWN0IEJ1dHRvbnMgLS0tICovXG4ucHJvZHVjdC1idXR0b25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjYyNXJlbTtcbiAgbWFyZ2luLXRvcDogYXV0bztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWJ1dHRvbnMgeyBmbGV4LWRpcmVjdGlvbjogcm93OyBnYXA6IDAuNzVyZW07IH1cbn1cblxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnByb2R1Y3QtYnV0dG9ucyAuYnRuLW1sLFxuLnByb2R1Y3QtY2FyZC5saXN0LXZpZXcgLnByb2R1Y3QtYnV0dG9ucyAuYnRuLXNob3BlZSB7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIG1pbi1oZWlnaHQ6IDQwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAucHJvZHVjdC1jYXJkLmxpc3QtdmlldyAucHJvZHVjdC1idXR0b25zIC5idG4tbWwsXG4gIC5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5wcm9kdWN0LWJ1dHRvbnMgLmJ0bi1zaG9wZWUge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIH1cbn1cblxuLyogLS0tIEZlYXR1cmVkIEJhZGdlIC0tLSAqL1xuLmZlYXR1cmVkLWJhZGdlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAuNzVyZW07XG4gIGxlZnQ6IDAuNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLXNjaGVtZS1iYWRnZS1iZyk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHBhZGRpbmc6IDAuMzEyNXJlbSAwLjc1cmVtO1xuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4IHZhcigtLWFjY2VudC1wcmltYXJ5LXNoYWRvdyk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB6LWluZGV4OiAyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuMjVyZW07XG59XG5cbi5mZWF0dXJlZC1iYWRnZSBzdmcge1xuICB3aWR0aDogMC42MjVyZW07XG4gIGhlaWdodDogMC42MjVyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiBMaXN0LXZpZXc6IGNvbXBhY3QgYmFkZ2UgKi9cbi5wcm9kdWN0LWNhcmQubGlzdC12aWV3IC5mZWF0dXJlZC1iYWRnZSB7XG4gIGZvbnQtc2l6ZTogMC42cmVtO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgdG9wOiAwLjM3NXJlbTtcbiAgbGVmdDogMC4zNzVyZW07XG59XG5cbi5mZWF0dXJlZC10ZXh0LWZ1bGwgeyBkaXNwbGF5OiBub25lOyB9XG4uZmVhdHVyZWQtdGV4dC1zaG9ydCB7IGRpc3BsYXk6IGlubGluZTsgfVxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5mZWF0dXJlZC10ZXh0LWZ1bGwgeyBkaXNwbGF5OiBpbmxpbmU7IH1cbiAgLmZlYXR1cmVkLXRleHQtc2hvcnQgeyBkaXNwbGF5OiBub25lOyB9XG59XG5cbi8qIC0tLSBTY3JvbGxpbmcgRGVzY3JpcHRpb24gLS0tICovXG4uZGVzYy1zY3JvbGwtdmlld3BvcnQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLWxpbmVzLCAzKSAqIDEuNmVtKTtcbiAgbWF4LWhlaWdodDogY2FsYyh2YXIoLS1saW5lcywgMykgKiAxLjZlbSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5kZXNjLXNjcm9sbC12aWV3cG9ydDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDEuNGVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCwgdmFyKC0tZGVzYy1mYWRlKSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2U7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5kZXNjLXNjcm9sbC12aWV3cG9ydC5maXRzOjphZnRlciB7IG9wYWNpdHk6IDA7IH1cblxuLmRlc2Mtc2Nyb2xsLWlubmVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgbGluZS1oZWlnaHQ6IDEuNjU7XG59XG5cbi5kYXJrIC5kZXNjLXNjcm9sbC1pbm5lciB7XG4gIGNvbG9yOiB2YXIoLS1zdXJmYWNlLTQwMCk7XG59XG5cbi5wcm9kdWN0LWNhcmQ6aG92ZXIgLmRlc2Mtc2Nyb2xsLWlubmVyLm92ZXJmbG93cyB7XG4gIGFuaW1hdGlvbjogc2Nyb2xsLXRleHQgdmFyKC0tc2Nyb2xsLWR1cmF0aW9uLCA0cykgZWFzZS1pbi1vdXQgMC4zcyAxIGJvdGg7XG59XG5cbi5wcm9kdWN0LWNhcmQ6aG92ZXIgLmRlc2Mtc2Nyb2xsLXZpZXdwb3J0Lm92ZXJmbG93czo6YWZ0ZXIgeyBvcGFjaXR5OiAwOyB9XG5cbi8qIC0tLSBGbHVpZCBHcmlkcyAtLS0gKi9cbi5mbHVpZC1ncmlkLXByb2R1Y3RzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ2FwOiAxLjI1cmVtO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyNjBweCwgMWZyKSk7XG59XG5cbi5wcm9kdWN0LWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDEuMjVyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAuZmx1aWQtZ3JpZC1wcm9kdWN0cyB7IGdhcDogMS41cmVtOyB9XG4gIC5wcm9kdWN0LWxpc3QgeyBnYXA6IDEuNXJlbTsgfVxufVxuXG4uZmx1aWQtZ3JpZC10cnVzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMS4yNXJlbTtcbn1cblxuLmZsdWlkLWdyaWQtdHJ1c3QgPiAqIHtcbiAgZmxleDogMCAxIDI2MHB4O1xuICBtaW4td2lkdGg6IDIyMHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgLmZsdWlkLWdyaWQtdHJ1c3QgeyBnYXA6IDEuNXJlbTsgfVxufVxuXG4vKiAtLS0gRW1wdHkgU3RhdGUgLS0tICovXG4uZW1wdHktc3RhdGUge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDRyZW0gMi41cmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHsgLmVtcHR5LXN0YXRlIHsgcGFkZGluZzogNnJlbSAyLjVyZW07IH0gfVxuXG4uZW1wdHktc3RhdGUtaWNvbiB7IGZvbnQtc2l6ZTogM3JlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuXG4uZW1wdHktc3RhdGUtdGl0bGUge1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbi5kYXJrIC5lbXB0eS1zdGF0ZS10aXRsZSB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTIwMCk7IH1cblxuLmVtcHR5LXN0YXRlLXRleHQge1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5kYXJrIC5lbXB0eS1zdGF0ZS10ZXh0IHsgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTsgfVxuXG4uZW1wdHktc3RhdGUtYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xuICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBjb2xvcjogdmFyKC0tdGV4dC1vbi1hY2NlbnQpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC11aSk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmVtcHR5LXN0YXRlLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTsgfVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDguIERSQVdFUlxuICAgRmlsdGVyIGRyYXdlciBvdmVybGF5LCBwYW5lbCwgaGVhZGVyLCBzZWN0aW9ucywgZm9vdGVyLCBkcmF3ZXItb3BlbiBib2R5IHN0YXRlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0gRHJhd2VyIE92ZXJsYXkgLS0tICovXG4uZHJhd2VyLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1kcmF3ZXItb3ZlcmxheS1iZyk7XG4gIHotaW5kZXg6IDU5O1xuICBhbmltYXRpb246IGZhZGUtaW4gMC4yNXMgdmFyKC0tZWFzZS1vdXQpIGJvdGg7XG59XG5cbi5kcmF3ZXItb3ZlcmxheS0tY2xvc2luZyB7IGFuaW1hdGlvbjogb3ZlcmxheS1vdXQgMC4ycyB2YXIoLS1lYXNlLW91dCkgYm90aDsgfVxuXG4vKiAtLS0gRHJhd2VyIFBhbmVsIC0tLSAqL1xuLmRyYXdlci1wYW5lbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiA4NSU7XG4gIG1heC13aWR0aDogMzYwcHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWRyYXdlci1wYW5lbC1iZyk7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRyYXdlci1ib3JkZXIpO1xuICBib3gtc2hhZG93OiAwIDAgNDBweCB2YXIoLS1jaHJvbWUtc2hhZG93LW1kKTtcbiAgei1pbmRleDogNjA7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGFuaW1hdGlvbjogZHJhd2VyLWluIDAuM3MgdmFyKC0tZWFzZS1vdXQpIGJvdGg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG59XG5cbi5kcmF3ZXItcGFuZWwtLWNsb3NpbmcgeyBhbmltYXRpb246IGRyYXdlci1vdXQgMC4ycyB2YXIoLS1lYXNlLW91dCkgYm90aDsgfVxuXG4vKiAtLS0gRHJhd2VyIEhlYWRlciAtLS0gKi9cbi5kcmF3ZXItaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAxcmVtO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZ2xhc3MtYm9yZGVyKTtcbn1cblxuLmRyYXdlci1oZWFkZXItbGVmdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC42MjVyZW07XG59XG5cbi5kcmF3ZXItaGVhZGVyLWljb24td3JhcCB7XG4gIHdpZHRoOiAyLjVyZW07XG4gIGhlaWdodDogMi41cmVtO1xuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeS1saWdodCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWFjY2VudC1wcmltYXJ5LWJvcmRlcik7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmRyYXdlci1oZWFkZXItaWNvbi13cmFwOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXByaW1hcnktYm9yZGVyKTsgfVxuXG4uZHJhd2VyLWhlYWRlci1pY29uIHsgd2lkdGg6IDEuMTI1cmVtOyBoZWlnaHQ6IDEuMTI1cmVtOyB9XG5cbi5kcmF3ZXItdGl0bGUge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTtcbn1cblxuLmRhcmsgLmRyYXdlci10aXRsZSB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTEwMCk7IH1cblxuLmRyYXdlci1maWx0ZXItYmFkZ2Uge1xuICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWluLXdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDAuNjI1cmVtO1xuICBwYWRkaW5nOiAwIDAuMzc1cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW9uLWFjY2VudCk7XG59XG5cbi5kcmF3ZXItY2xvc2UtYnRuIHtcbiAgd2lkdGg6IDIuMjVyZW07XG4gIGhlaWdodDogMi4yNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1kcmF3ZXItY2xvc2UtYmcpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tbm9ybWFsKSBlYXNlLCBjb2xvciB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi5kYXJrIC5kcmF3ZXItY2xvc2UtYnRuLFxuW2RhdGEtY29sb3Itc2NoZW1lPVwiYWx0XCJdLmRhcmsgLmRyYXdlci1jbG9zZS1idG4geyBiYWNrZ3JvdW5kOiB2YXIoLS1kcmF3ZXItY2xvc2UtYmctZGFyayk7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTMwMCk7IH1cbi5kcmF3ZXItY2xvc2UtYnRuOmhvdmVyIHsgY29sb3I6IHZhcigtLW5ldXRyYWwtNzAwKTsgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtaG92ZXItYmcpOyB9XG4uZGFyayAuZHJhd2VyLWNsb3NlLWJ0bjpob3ZlcixcbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXS5kYXJrIC5kcmF3ZXItY2xvc2UtYnRuOmhvdmVyIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgYmFja2dyb3VuZDogdmFyKC0tZHJhd2VyLWNsb3NlLWJnLWRhcmstaG92ZXIpOyB9XG5cbi8qIC0tLSBEcmF3ZXIgU2VjdGlvbnMgLS0tICovXG4uZHJhd2VyLXNlY3Rpb24geyBwYWRkaW5nOiAxcmVtIDFyZW0gMC41cmVtOyB9XG5cbi5kcmF3ZXItc2VjdGlvbi10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNDAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLmRhcmsgLmRyYXdlci1zZWN0aW9uLXRpdGxlIHsgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTsgfVxuXG4uZHJhd2VyLXBpbGxzIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDAuNXJlbTsgfVxuXG4vKiAtLS0gRHJhd2VyIEZvb3RlciAtLS0gKi9cbi5kcmF3ZXItZm9vdGVyIHtcbiAgcGFkZGluZzogMXJlbTtcbiAgbWFyZ2luLXRvcDogYXV0bztcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWdsYXNzLWJvcmRlcik7XG59XG5cbi5kcmF3ZXItc3VibWl0LWJ0biB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXRleHQtb24tYWNjZW50KTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtdWkpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBib3gtc2hhZG93OiAwIDAgMTZweCB2YXIoLS1hY2NlbnQtcHJpbWFyeS1zaGFkb3cpO1xuICBtaW4taGVpZ2h0OiA0OHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi5kcmF3ZXItc3VibWl0LWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWhvdmVyKTsgfVxuXG4vKiAtLS0gRHJhd2VyIE9wZW46IFByZXZlbnQgcGFnZSBzaGlmdCBvbiBmaXhlZCBlbGVtZW50cyAtLS0gKi9cbmJvZHkuZHJhd2VyLW9wZW4gLmRhcmstdG9nZ2xlIHtcbiAgcmlnaHQ6IGNhbGMoMS4yNXJlbSArIHZhcigtLXNjcm9sbGJhci1jb21wZW5zYXRpb24sIDBweCkpO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDkuIFRSVVNUXG4gICBUcnVzdCBzZWN0aW9uLCBkaXZpZGVyLCBoZWFkZXIsIGNhcmRzLCBDVEFcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50cnVzdC1zZWN0aW9uIHtcbiAgcGFkZGluZzogNHJlbSAxcmVtO1xuICBtYXgtd2lkdGg6IDE2MDBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTA7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAudHJ1c3Qtc2VjdGlvbiB7IHBhZGRpbmc6IDVyZW0gMS41cmVtOyB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnRydXN0LXNlY3Rpb24geyBwYWRkaW5nLWxlZnQ6IDJyZW07IHBhZGRpbmctcmlnaHQ6IDJyZW07IH1cbn1cblxuLnRydXN0LWRpdmlkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC50cnVzdC1kaXZpZGVyIHsgbWFyZ2luLWJvdHRvbTogM3JlbTsgfSB9XG5cbi50cnVzdC1kaXZpZGVyLWxpbmUge1xuICBmbGV4OiAxO1xuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgdmFyKC0tc2NoZW1lLXRydXN0LWRpdmlkZXIpLCB0cmFuc3BhcmVudCk7XG59XG5cbi5kYXJrIC50cnVzdC1kaXZpZGVyLWxpbmUgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCB2YXIoLS1zY2hlbWUtdHJ1c3QtZGl2aWRlci1kYXJrKSwgdHJhbnNwYXJlbnQpOyB9XG5cbi50cnVzdC1kaXZpZGVyLWNpcmNsZSB7XG4gIHdpZHRoOiAyLjVyZW07XG4gIGhlaWdodDogMi41cmVtO1xuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLXVpLXN1cmZhY2UtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS11aS1zdXJmYWNlLWJvcmRlcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZGFyayAudHJ1c3QtZGl2aWRlci1jaXJjbGUgeyBiYWNrZ3JvdW5kOiB2YXIoLS11aS1zdXJmYWNlLWJnLWRhcmspOyBib3JkZXItY29sb3I6IHZhcigtLXVpLXN1cmZhY2UtYm9yZGVyLWRhcmspOyB9XG5cbi50cnVzdC1oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcbn1cblxuLnRydXN0LXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC05MDApO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDE1ZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogY2xhbXAoMS42cmVtLCAzdncsIDIuMTVyZW0pO1xufVxuXG4uZGFyayAudHJ1c3QtdGl0bGUgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS0xMDApOyB9XG5cbi50cnVzdC1zdWJ0aXRsZSB7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNztcbiAgbWF4LXdpZHRoOiAyOHJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5kYXJrIC50cnVzdC1zdWJ0aXRsZSB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTQwMCk7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC50cnVzdC1zdWJ0aXRsZSB7IGZvbnQtc2l6ZTogMXJlbTsgfSB9XG5cbi8qIC0tLSBUcnVzdCBDYXJkIC0tLSAqL1xuLnRydXN0LWNhcmQge1xuICBwYWRkaW5nOiAxLjVyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7IC50cnVzdC1jYXJkIHsgcGFkZGluZzogMS43NXJlbTsgfSB9XG5cbi50cnVzdC1jYXJkLWljb24td3JhcCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDMuNXJlbTtcbiAgaGVpZ2h0OiAzLjVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4udHJ1c3QtY2FyZC1pY29uLXdyYXAtLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeS1saWdodCk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnktYm9yZGVyKTtcbn1cblxuLnRydXN0LWNhcmQtaWNvbi13cmFwLS1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtc2Vjb25kYXJ5LWxpZ2h0KTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1zZWNvbmRhcnkpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWFjY2VudC1zZWNvbmRhcnktYm9yZGVyKTtcbn1cblxuLnRydXN0LWNhcmQtdGl0bGUge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC05MDApO1xuICBmb250LXNpemU6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLmRhcmsgLnRydXN0LWNhcmQtdGl0bGUgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS0xMDApOyB9XG5cbi50cnVzdC1jYXJkLXRleHQge1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC01MDApO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC11aSk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY1O1xufVxuXG4uZGFyayAudHJ1c3QtY2FyZC10ZXh0IHsgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTsgfVxuXG4vKiAtLS0gVHJ1c3QgQ1RBIC0tLSAqL1xuLnRydXN0LWN0YSB7XG4gIG1hcmdpbi10b3A6IDIuNXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udHJ1c3QtY3RhLXBhbmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAxcmVtIDJyZW07XG59XG5cbi50cnVzdC1jdGEtdGV4dCB7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi5kYXJrIC50cnVzdC1jdGEtdGV4dCB7IGNvbG9yOiB2YXIoLS1zdXJmYWNlLTQwMCk7IH1cblxuLnRydXN0LWN0YS1saW5rIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIHRleHQtdW5kZXJsaW5lLW9mZnNldDogMnB4O1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG4gIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udHJ1c3QtY3RhLWxpbms6aG92ZXIgeyBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnktaG92ZXIpOyB9XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTAuIEZPT1RFUlxuICAgU2l0ZSBmb290ZXIgZ3JpZCwgYnJhbmQgY29sdW1uLCBsaW5rcywgc2VjdXJpdHkgdGV4dCwgYm90dG9tIGJhcixcbiAgIGRhcmsgbW9kZSB0b2dnbGUgRkFCXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2l0ZS1mb290ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1mb290ZXItYmcpO1xuICBjb2xvcjogdmFyKC0tZm9vdGVyLXRleHQpO1xuICBwYWRkaW5nOiAzcmVtIDEuMjVyZW0gMnJlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxMDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5zaXRlLWZvb3RlciB7IHBhZGRpbmctdG9wOiAzLjVyZW07IHBhZGRpbmctbGVmdDogMS41cmVtOyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuc2l0ZS1mb290ZXIgeyBwYWRkaW5nLWxlZnQ6IDJyZW07IHBhZGRpbmctcmlnaHQ6IDJyZW07IH1cbn1cblxuLmZvb3Rlci1pbm5lciB7IG1heC13aWR0aDogMTYwMHB4OyBtYXJnaW46IDAgYXV0bzsgfVxuXG4uZm9vdGVyLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgZ2FwOiAycmVtO1xuICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkgeyAuZm9vdGVyLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IH0gfVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkgeyAuZm9vdGVyLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnIgMWZyOyB9IH1cblxuLmZvb3Rlci1icmFuZC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41cmVtO1xufVxuXG4uZm9vdGVyLWxvZ28taW1nIHtcbiAgd2lkdGg6IDEuNzVyZW07XG4gIGhlaWdodDogMS43NXJlbTtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbn1cblxuLmZvb3Rlci1icmFuZC1odWIgeyBjb2xvcjogdmFyKC0tZm9vdGVyLXRleHQpOyB9XG4uZm9vdGVyLWJyYW5kLXJhaXogeyBjb2xvcjogdmFyKC0tc2NoZW1lLWZvb3Rlci1hY2NlbnQpOyB9XG5cbi5mb290ZXItYnJhbmQtZGVzYyB7XG4gIGNvbG9yOiB2YXIoLS1mb290ZXItbXV0ZWQpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC11aSk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY1O1xufVxuXG4uZm9vdGVyLWhlYWRpbmcge1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLmZvb3Rlci1saW5rcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiAwLjVyZW0gMS4yNXJlbTtcbn1cblxuLmZvb3Rlci1saW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGNvbG9yOiB2YXIoLS1mb290ZXItbXV0ZWQpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC11aSk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmZvb3Rlci1saW5rOmhvdmVyIHsgY29sb3I6IHZhcigtLXNjaGVtZS1mb290ZXItYWNjZW50KTsgfVxuXG4uZm9vdGVyLWxpbmstaWNvbiB7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBjb2xvcjogdmFyKC0tc2NoZW1lLWZvb3Rlci1pY29uKTtcbn1cblxuLmZvb3Rlci1zZWN1cml0eS10ZXh0IHtcbiAgY29sb3I6IHZhcigtLWZvb3Rlci1tdXRlZCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjU7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5mb290ZXItbWFya2V0cGxhY2UtYmFkZ2VzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjc1cmVtO1xuICBjb2xvcjogdmFyKC0tZm9vdGVyLW11dGVkKTtcbn1cblxuLmZvb3Rlci1tYXJrZXRwbGFjZS1iYWRnZSB7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjYyNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLXNjaGVtZS1tYXJrZXRwbGFjZS1iYWRnZS1iZyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNjaGVtZS1tYXJrZXRwbGFjZS1iYWRnZS1ib3JkZXIpO1xuICBjb2xvcjogdmFyKC0tc2NoZW1lLWZvb3Rlci1hY2NlbnQpO1xufVxuXG4uZm9vdGVyLW1hcmtldHBsYWNlLXBsdXMge1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG5cbi5mb290ZXItZW1haWwge1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG59XG5cbi5mb290ZXItYm90dG9tIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXNjaGVtZS1mb290ZXItYm9yZGVyKTtcbiAgcGFkZGluZy10b3A6IDEuNXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjc1cmVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5mb290ZXItY29weXJpZ2h0IHtcbiAgY29sb3I6IHZhcigtLWZvb3Rlci1tdXRlZCk7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cblxuLmZvb3Rlci1kaXNjbGFpbWVyIHtcbiAgY29sb3I6IHZhcigtLWZvb3Rlci1kaXNjbGFpbWVyKTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBtYXgtd2lkdGg6IDI4cmVtO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEwLiBEQVJLIE1PREUgVE9HR0xFIChGQUIpICYgQ09MT1IgU0NIRU1FIFBJQ0tFUlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5kYXJrLXRvZ2dsZSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAxLjI1cmVtO1xuICByaWdodDogMS4yNXJlbTtcbiAgei1pbmRleDogNTA7XG4gIHdpZHRoOiAzcmVtO1xuICBoZWlnaHQ6IDNyZW07XG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tdG9nZ2xlLWJnKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdG9nZ2xlLWJvcmRlcik7XG4gIGJveC1zaGFkb3c6IDAgMCAxNnB4IHZhcigtLWNocm9tZS1zaGFkb3ctbWQpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UsIGJvcmRlci1jb2xvciB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCBib3gtc2hhZG93IHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UsIHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlO1xufVxuXG4uZGFyay10b2dnbGU6aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gIGJveC1zaGFkb3c6IDAgMCAyNHB4IHZhcigtLWNocm9tZS1zaGFkb3ctbGcpO1xufVxuXG4uZGFyay10b2dnbGU6YWN0aXZlIHsgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTsgfVxuXG4uZGFyayAuZGFyay10b2dnbGUsXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0uZGFyayAuZGFyay10b2dnbGUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS10b2dnbGUtYmctZGFyayk7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tdG9nZ2xlLWJvcmRlci1kYXJrKTtcbiAgYm94LXNoYWRvdzogMCAwIDE2cHggdmFyKC0tY2hyb21lLXNoYWRvdy1kYXJrKTtcbn1cblxuLmRhcmstdG9nZ2xlLWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxLjI1cmVtO1xuICBoZWlnaHQ6IDEuMjVyZW07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2U7XG59XG5cbi8qIFN1biB2aXNpYmxlIGluIGRhcmsgbW9kZSwgaGlkZGVuIGluIGxpZ2h0ICovXG4uZGFyay10b2dnbGUtaWNvbi0tc3VuIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpIHNjYWxlKDAuNSk7XG59XG5cbi5kYXJrIC5kYXJrLXRvZ2dsZS1pY29uLS1zdW4ge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgwKSBzY2FsZSgxKTtcbn1cblxuLyogTW9vbiB2aXNpYmxlIGluIGxpZ2h0IG1vZGUsIGhpZGRlbiBpbiBkYXJrICovXG4uZGFyay10b2dnbGUtaWNvbi0tbW9vbiB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogcm90YXRlKDApIHNjYWxlKDEpO1xufVxuXG4uZGFyayAuZGFyay10b2dnbGUtaWNvbi0tbW9vbiB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZykgc2NhbGUoMC41KTtcbn1cblxuLyog4pSA4pSAIExvbmctcHJlc3MgaGludCBwdWxzZSBvbiB0b2dnbGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG4uZGFyay10b2dnbGVbZGF0YS1zY2hlbWUtcGlja2VyLWhpbnRdIHtcbiAgYW5pbWF0aW9uOiBzY2hlbWUtaGludC1wdWxzZSAwLjZzIGVhc2U7XG59XG5Aa2V5ZnJhbWVzIHNjaGVtZS1oaW50LXB1bHNlIHtcbiAgMCUgICB7IGJveC1zaGFkb3c6IDAgMCAwIDAgdmFyKC0tYWNjZW50LXByaW1hcnktc2hhZG93KTsgfVxuICA3MCUgIHsgYm94LXNoYWRvdzogMCAwIDAgMTBweCB0cmFuc3BhcmVudDsgfVxuICAxMDAlIHsgYm94LXNoYWRvdzogMCAwIDAgMCB0cmFuc3BhcmVudDsgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEyLiBDT0xPUiBTQ0hFTUUgUElDS0VSXG4gICBQb3B1cCBwYW5lbCBmb3Igc2VsZWN0aW5nIGNvbG9yIHNjaGVtZXMsIHRyaWdnZXJlZCBieSBsb25nLXByZXNzXG4gICBvbiB0aGUgZGFyay9saWdodCBtb2RlIHRvZ2dsZSBGQUJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIC0tLSBEcm9wZG93biBQYW5lbCAoc2hhcmVkIGJhc2UpIC0tLVxuICAgR2xhc3MgbW9ycGhpc20gcG9wdXAgd2l0aCBzaG93L2hpZGUgdHJhbnNpdGlvbi5cbiAgIFVzZWQgYnkgYm90aCAuc2NoZW1lLXBpY2tlciBhbmQgLnBlci1wYWdlLXBhbmVsLlxuICAgVmFyaWFudCBwb3NpdGlvbmluZyBpcyBhcHBsaWVkIHZpYSB0aGUgY29uY3JldGUgY29tcG9uZW50IGNsYXNzZXMuICovXG5cbi5kcm9wZG93bi1wYW5lbCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdsYXNzLWJnKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ2xhc3MtYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgYm94LXNoYWRvdzogMCAwIDMycHggdmFyKC0tY2hyb21lLXNoYWRvdy1sZyk7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDZweCkgc2NhbGUoMC45Nyk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLXNsb3cpIGVhc2UsIHZpc2liaWxpdHkgMHMgbGluZWFyIHZhcigtLWR1cmF0aW9uLXNsb3cpO1xufVxuXG4uZHJvcGRvd24tcGFuZWwuaXMtb3BlbiB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1zbG93KSBlYXNlLCB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tc2xvdykgZWFzZSwgdmlzaWJpbGl0eSAwcyBsaW5lYXIgMHM7XG59XG5cbi5kcm9wZG93bi1vcHRpb24ge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC42MjVyZW0gMC43NXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYm9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZTtcbn1cblxuLmRyb3Bkb3duLW9wdGlvbjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWdsYXNzLWhvdmVyLWJnKTtcbn1cblxuLmRyb3Bkb3duLW9wdGlvbi5pcy1hY3RpdmUge1xuICBib3JkZXItY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtaG92ZXItYmcpO1xufVxuXG4uZHJvcGRvd24tdGl0bGUge1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbn1cblxuLnNjaGVtZS1waWNrZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogNXJlbTtcbiAgcmlnaHQ6IDEuMjVyZW07XG4gIHotaW5kZXg6IDQ5O1xuICB3aWR0aDogMjYwcHg7XG4gIHBhZGRpbmc6IDFyZW07XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpIHNjYWxlKDAuOTUpO1xufVxuXG4uc2NoZW1lLXBpY2tlci10aXRsZSB7XG4gIC8qIC5kcm9wZG93bi10aXRsZSBpcyBpbmhlcml0ZWQg4oCUIGV4dGVuZHMgd2l0aCBzcGFjaW5nICovXG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5cbi5zY2hlbWUtcGlja2VyLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuMzc1cmVtO1xufVxuXG4uc2NoZW1lLW9wdGlvbiB7XG4gIC8qIC5kcm9wZG93bi1vcHRpb24gaW5oZXJpdGVkIOKAlCBleHRlbmRzIHdpdGggZmxleCBsYXlvdXQgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjc1cmVtO1xufVxuXG4uc2NoZW1lLW9wdGlvbi1zd2F0Y2hlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogM3B4O1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLnNjaGVtZS1zd2F0Y2gge1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNjaGVtZS1zd2F0Y2gtYm9yZGVyKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5zY2hlbWUtb3B0aW9uLWluZm8ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtaW4td2lkdGg6IDA7XG59XG5cbi5zY2hlbWUtb3B0aW9uLW5hbWUge1xuICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnNjaGVtZS1vcHRpb24tZGVzYyB7XG4gIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uc2NoZW1lLW9wdGlvbi1jaGVjayB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxcmVtO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBvcGFjaXR5OiAwO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLnNjaGVtZS1vcHRpb24uaXMtYWN0aXZlIC5zY2hlbWUtb3B0aW9uLWNoZWNrIHtcbiAgb3BhY2l0eTogMTtcbn1cbiIsIi8qIOKUgOKUgCBBbHRlcm5hdGUgb2xpdmUgc2NoZW1lIG92ZXJyaWRlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIE9ubHkgcnVsZXMgd2hlcmUgdGhlIGRlc2lyZWQgY29sb3IgZGlmZmVycyBmcm9tIHdoYXRcbiAgIHZhcigtLWFjY2VudC1wcmltYXJ5KSBhbmQgdmFyKC0tYWNjZW50LXNlY29uZGFyeSkgcmVzb2x2ZSB0b1xuICAgaW4gdGhlIGFsdGVybmF0ZSBvbGl2ZSBjb250ZXh0LiBNb3N0IHN3aXRjaGluZyBpcyBoYW5kbGVkIGJ5IHRva2Vucy5cbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4vKiBDYXJkIHNoYWRvd3MgKi9cbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXSAuZmlsdGVyLWJhciB7XG4gIGJveC1zaGFkb3c6IDAgMCAyNHB4IHZhcigtLWNhcmQtc2hhZG93KTtcbn1cblxuLyogU2VsZWN0aW9uICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0gOjpzZWxlY3Rpb24geyBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtcHJpbWFyeS1saWdodCk7IGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpOyB9XG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0uZGFyayA6OnNlbGVjdGlvbiB7IGJhY2tncm91bmQ6IHZhcigtLXNlbGVjdGlvbi1iZy1kYXJrKTsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgfVxuXG4vKiBDaXJjdWxhciBnbGFzcyBlbGVtZW50cyDigJQgbWF0Y2ggdGhlIHNjaGVtZS10aW50ZWQgZ2xhc3MgYm9yZGVyIHNvIHRoZXkncmVcbiAgIGNvbnNpc3RlbnQgd2l0aCBnbGFzcy1jYXJkIC8gZ2xhc3MtcGFuZWwgaW4gdGhlIG9saXZlIHRoZW1lICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0gLmhlcm8tc2Nyb2xsLWJ0biAgIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1nbGFzcy1ib3JkZXIpOyB9XG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0gLnRydXN0LWRpdmlkZXItY2lyY2xlIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1nbGFzcy1ib3JkZXIpOyB9XG4vKiBkYXJrLXRvZ2dsZTogbGlnaHQtbW9kZSBvbmx5IOKAlCB0aGUgYWx0LmRhcmsgc3RhdGUgYWxyZWFkeSB1c2VzIHRyYW5zcGFyZW50IHdoaXRlICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl06bm90KC5kYXJrKSAuZGFyay10b2dnbGUgeyBib3JkZXItY29sb3I6IHZhcigtLWdsYXNzLWJvcmRlcik7IH1cblxuLyogQWx0IGRhcmsgbW9kZTogaGVybyBzY3JvbGwgYnV0dG9uIGNvbnNpc3RlbnQgd2l0aCBkZWZhdWx0IGRhcmsgKi9cbltkYXRhLWNvbG9yLXNjaGVtZT1cImFsdFwiXS5kYXJrIC5oZXJvLXNjcm9sbC1idG4ge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS11aS1zdXJmYWNlLWJnLWRhcmspO1xuICBib3JkZXItY29sb3I6IHZhcigtLXVpLXN1cmZhY2UtYm9yZGVyLWRhcmspO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xufVxuXG4vKiBBbHQgZGFyayBtb2RlOiB0cnVzdCBkaXZpZGVyIGNpcmNsZSBjb25zaXN0ZW50IHdpdGggZGVmYXVsdCBkYXJrICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0uZGFyayAudHJ1c3QtZGl2aWRlci1jaXJjbGUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS11aS1zdXJmYWNlLWJnLWRhcmspO1xuICBib3JkZXItY29sb3I6IHZhcigtLXVpLXN1cmZhY2UtYm9yZGVyLWRhcmspO1xufVxuXG4vKiDilIDilIAgQWx0ZXJuYXRlIG9saXZlIGRhcms6IENvbXBvbmVudCBvdmVycmlkZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi8qIERhcmsgdG9nZ2xlIEZBQiDigJQgYWxyZWFkeSBjb21iaW5lZCB3aXRoIGRlZmF1bHQgZGFyayB2aWEgc2VsZWN0b3IgZ3JvdXBpbmcgKi9cblxuLyogTG9uZy1wcmVzcyBoaW50IHB1bHNlIOKAlCByZXVzZXMgc2NoZW1lLWhpbnQtcHVsc2Uga2V5ZnJhbWUgKGlkZW50aWNhbCB2YWx1ZXM7XG4gICAtLWFjY2VudC1wcmltYXJ5LXNoYWRvdyByZXNvbHZlcyBjb3JyZWN0bHkgcGVyLXRoZW1lIGF1dG9tYXRpY2FsbHkpICovXG5bZGF0YS1jb2xvci1zY2hlbWU9XCJhbHRcIl0uZGFyayAuZGFyay10b2dnbGVbZGF0YS1zY2hlbWUtcGlja2VyLWhpbnRdIHtcbiAgYW5pbWF0aW9uOiBzY2hlbWUtaGludC1wdWxzZSAwLjZzIGVhc2U7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTEuIDQwNCBQQUdFXG4gICBOb3QgZm91bmQgcGFnZSBzdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5ub3QtZm91bmQge1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgbWluLWhlaWdodDogMTAwZHZoO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMnJlbSAxLjI1cmVtO1xufVxuXG4ubm90LWZvdW5kLWNvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzMnJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5ub3QtZm91bmQtZ2xhc3Mge1xuICBwYWRkaW5nOiAzcmVtIDJyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm5vdC1mb3VuZC1pY29uIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4ubm90LWZvdW5kLXRpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaGVhZGluZyk7XG4gIGZvbnQtc2l6ZTogY2xhbXAoNHJlbSwgMTB2dywgNnJlbSk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXByaW1hcnkpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG5cbi5ub3QtZm91bmQtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6IHZhcigtLW5ldXRyYWwtODAwKTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLmRhcmsgLm5vdC1mb3VuZC10ZXh0IHsgY29sb3I6IHZhcigtLXN1cmZhY2UtMTAwKTsgfVxuXG4ubm90LWZvdW5kLXN1YnRleHQge1xuICBjb2xvcjogdmFyKC0tbmV1dHJhbC01MDApO1xuICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLmRhcmsgLm5vdC1mb3VuZC1zdWJ0ZXh0IHsgY29sb3I6IHZhcigtLXN1cmZhY2UtNDAwKTsgfVxuXG4ubm90LWZvdW5kLWJ0biB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB3aWR0aDogYXV0bztcbiAgcGFkZGluZzogMC44NzVyZW0gMS43NXJlbTtcbn1cblxuLyog4pSA4pSAIFBhZ2luYXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5wYWdlLWhpZGRlbiB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4vKiBUcmlnZ2VyIGJ1dHRvbiDigJQgbWF0Y2hlcyB2aWV3LXRvZ2dsZSBjb250YWluZXIgc3R5bGUgKi9cbi5wZXItcGFnZS13cmFwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucGVyLXBhZ2UtdHJpZ2dlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC4zNzVyZW07XG4gIG1pbi1oZWlnaHQ6IDQwcHg7XG4gIHBhZGRpbmc6IDAgMC42MjVyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLXBpbGwtaW5hY3RpdmUtYmcpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1waWxsLWluYWN0aXZlLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXVpKTtcbiAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLW5vcm1hbCkgZWFzZSwgYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbi1ub3JtYWwpIGVhc2U7XG59XG5cbi5wZXItcGFnZS10cmlnZ2VyOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7IH1cblxuLnBlci1wYWdlLXRyaWdnZXJbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICBib3JkZXItY29sb3I6IHZhcigtLWFjY2VudC1wcmltYXJ5KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtaG92ZXItYmcpO1xufVxuXG4ucGVyLXBhZ2UtY2hldnJvbiB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG59XG5cbi5wZXItcGFnZS10cmlnZ2VyW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdIC5wZXItcGFnZS1jaGV2cm9uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLyogUGFuZWwg4oCUIG1pcnJvcnMgLnNjaGVtZS1waWNrZXIgKi9cbi5wZXItcGFnZS1wYW5lbCB7XG4gIC8qIC5kcm9wZG93bi1wYW5lbCBpbmhlcml0ZWQg4oCUIGV4dGVuZHMgd2l0aCBwb3NpdGlvbmluZyAqL1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYygxMDAlICsgMC41cmVtKTtcbiAgcmlnaHQ6IDA7XG4gIHotaW5kZXg6IDU1O1xuICB3aWR0aDogMTYwcHg7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG59XG5cbi5wZXItcGFnZS1wYW5lbC10aXRsZSB7XG4gIC8qIC5kcm9wZG93bi10aXRsZSBpbmhlcml0ZWQg4oCUIGV4dGVuZHMgd2l0aCBzcGFjaW5nICovXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgcGFkZGluZzogMCAwLjI1cmVtO1xufVxuXG4ucGVyLXBhZ2Utb3B0aW9uIHtcbiAgLyogLmRyb3Bkb3duLW9wdGlvbiBpbmhlcml0ZWQg4oCUIGV4dGVuZHMgd2l0aCB0ZXh0IHNpemluZyAqL1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG5cbi5wYWdpbmF0aW9uLWNvbnRyb2xzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMXJlbTtcbiAgbWFyZ2luLXRvcDogMi41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbn1cblxuLnBhZ2luYXRpb24tYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC40cmVtO1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC42MjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW5ldXRyYWwtMjAwKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZS01MCk7XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTcwMCk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMsIGJvcmRlci1jb2xvciAwLjE1cywgY29sb3IgMC4xNXM7XG59XG5cbi5wYWdpbmF0aW9uLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG59XG5cbi5wYWdpbmF0aW9uLWJ0bjpkaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuMzU7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5kYXJrIC5wYWdpbmF0aW9uLWJ0biB7XG4gIGJhY2tncm91bmQ6IHZhcigtLW5ldXRyYWwtODAwKTtcbiAgY29sb3I6IHZhcigtLXN1cmZhY2UtMzAwKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7XG59XG5cbi5kYXJrIC5wYWdpbmF0aW9uLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1wcmltYXJ5LWxpZ2h0KTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcHJpbWFyeSk7XG59XG5cbi5wYWdpbmF0aW9uLWluZGljYXRvciB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7XG4gIG1pbi13aWR0aDogNXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZGFyayAucGFnaW5hdGlvbi1pbmRpY2F0b3IgeyBjb2xvcjogdmFyKC0tc3VyZmFjZS00MDApOyB9XG4iXX0= */