/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/@solidworx/platform/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/scss/app.scss ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
/**
 * Augias Main Application Stylesheet
 *
 * This is the main entry point for all application styles.
 * It imports Bootstrap, the design system, components, and layouts.
 */
/**
 * Augias Design System - Main Index
 *
 * Imports all design system foundation files.
 * This file should be imported early in app.scss,
 * after Bootstrap functions/variables but before components.
 */
/**
 * Augias Design System - Design Tokens
 *
 * Core design tokens defining colors, spacing, shadows, border radius,
 * and transitions. All values are exposed as CSS custom properties
 * with the `--swp-` prefix for runtime theming support.
 */
:root {
  --swp-primary: #1e4976;
  --swp-primary-rgb: 30, 73, 118;
  --swp-primary-hover: #183a5e;
  --swp-primary-dark: #12293f;
  --swp-primary-light: #e4edf6;
  --swp-primary-lighter: #f3f8fc;
  --swp-secondary: #a94e28;
  --swp-secondary-rgb: 169, 78, 40;
  --swp-secondary-hover: #91421f;
  --swp-secondary-dark: #75351a;
  --swp-secondary-light: #fbeee7;
  --swp-secondary-lighter: #fdf8f5;
  --swp-gray-50: #f8fafc;
  --swp-gray-100: #f1f5f9;
  --swp-gray-200: #e2e8f0;
  --swp-gray-300: #cbd5e1;
  --swp-gray-400: #94a3b8;
  --swp-gray-500: #64748b;
  --swp-gray-600: #475569;
  --swp-gray-700: #334155;
  --swp-gray-800: #1e293b;
  --swp-gray-900: #0f172a;
  --swp-success: #10b981;
  --swp-success-rgb: 16, 185, 129;
  --swp-success-hover: #059669;
  --swp-success-dark: #047857;
  --swp-success-light: #d1fae5;
  --swp-success-lighter: #ecfdf5;
  --swp-danger: #ef4444;
  --swp-danger-rgb: 239, 68, 68;
  --swp-danger-hover: #dc2626;
  --swp-danger-dark: #b91c1c;
  --swp-danger-light: #fee2e2;
  --swp-danger-lighter: #fef2f2;
  --swp-warning: #f59e0b;
  --swp-warning-rgb: 245, 158, 11;
  --swp-warning-hover: #d97706;
  --swp-warning-light: #fef3c7;
  --swp-warning-lighter: #fffbeb;
  --swp-info: #3b82f6;
  --swp-info-rgb: 59, 130, 246;
  --swp-info-hover: #2563eb;
  --swp-info-light: #dbeafe;
  --swp-info-lighter: #eff6ff;
  --swp-body-bg: #f4f6f8;
  --swp-surface: #ffffff;
  --swp-surface-hover: #f8fafc;
  --swp-surface-elevated: #ffffff;
  --swp-surface-overlay: rgb(15 23 42 / 50%);
  --swp-body-color: var(--swp-text-primary);
  --swp-text-primary: #1e293b;
  --swp-text-secondary: #475569;
  --swp-text-muted: #64748b;
  --swp-text-light: #94a3b8;
  --swp-text-inverse: #ffffff;
  --swp-border: #e2e8f0;
  --swp-border-light: #f1f5f9;
  --swp-border-dark: #cbd5e1;
  --swp-link-color: var(--swp-primary);
  --swp-link-hover-color: var(--swp-primary-dark);
}

:root {
  --swp-space-0: 0;
  --swp-space-px: 1px;
  --swp-space-0-5: 0.125rem;
  --swp-space-1: 0.25rem;
  --swp-space-1-5: 0.375rem;
  --swp-space-2: 0.5rem;
  --swp-space-2-5: 0.625rem;
  --swp-space-3: 0.75rem;
  --swp-space-3-5: 0.875rem;
  --swp-space-4: 1rem;
  --swp-space-5: 1.25rem;
  --swp-space-6: 1.5rem;
  --swp-space-7: 1.75rem;
  --swp-space-8: 2rem;
  --swp-space-9: 2.25rem;
  --swp-space-10: 2.5rem;
  --swp-space-11: 2.75rem;
  --swp-space-12: 3rem;
  --swp-space-14: 3.5rem;
  --swp-space-16: 4rem;
  --swp-space-20: 5rem;
  --swp-space-24: 6rem;
}

:root {
  --swp-radius-none: 0;
  --swp-radius-sm: 0.375rem;
  --swp-radius-md: 0.5rem;
  --swp-radius-lg: 0.75rem;
  --swp-radius-xl: 1rem;
  --swp-radius-2xl: 1.5rem;
  --swp-radius-full: 9999px;
}

:root {
  --swp-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 5%);
  --swp-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 10%), 0 1px 2px -1px rgb(0 0 0 / 10%);
  --swp-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 10%);
  --swp-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%);
  --swp-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 10%), 0 8px 10px -6px rgb(0 0 0 / 10%);
  --swp-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 25%);
  --swp-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 5%);
  --swp-shadow-primary: 0 4px 14px 0 rgb(46 150 58 / 25%);
  --swp-shadow-primary-lg: 0 8px 20px 0 rgb(46 150 58 / 30%);
  --swp-shadow-danger: 0 4px 14px 0 rgb(239 68 68 / 25%);
  --swp-shadow-danger-lg: 0 8px 20px 0 rgb(239 68 68 / 30%);
  --swp-ring-primary: 0 0 0 3px rgb(46 150 58 / 15%);
  --swp-ring-danger: 0 0 0 3px rgb(239 68 68 / 15%);
  --swp-ring-offset: 0 0 0 2px var(--swp-surface);
}

:root {
  --swp-duration-fast: 150ms;
  --swp-duration-base: 200ms;
  --swp-duration-slow: 300ms;
  --swp-duration-slower: 400ms;
  --swp-ease-linear: linear;
  --swp-ease-in: cubic-bezier(0.4, 0, 1, 1);
  --swp-ease-out: cubic-bezier(0, 0, 0.2, 1);
  --swp-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --swp-transition-fast: var(--swp-duration-fast) var(--swp-ease-in-out);
  --swp-transition-base: var(--swp-duration-base) var(--swp-ease-in-out);
  --swp-transition-slow: var(--swp-duration-slow) var(--swp-ease-in-out);
  --swp-transition-colors: color var(--swp-transition-fast),
                           background-color var(--swp-transition-fast),
                           border-color var(--swp-transition-fast);
  --swp-transition-shadow: box-shadow var(--swp-transition-base);
  --swp-transition-transform: transform var(--swp-transition-base);
  --swp-transition-all: all var(--swp-transition-base);
}

:root {
  --swp-z-dropdown: 1000;
  --swp-z-sticky: 1020;
  --swp-z-fixed: 1030;
  --swp-z-modal-backdrop: 1040;
  --swp-z-modal: 1050;
  --swp-z-popover: 1060;
  --swp-z-tooltip: 1070;
  --swp-z-toast: 1080;
}

:root {
  --swp-card-bg: var(--swp-surface);
  --swp-card-border: var(--swp-border-light);
  --swp-card-radius: var(--swp-radius-lg);
  --swp-card-shadow: var(--swp-shadow-sm);
  --swp-card-padding: var(--swp-space-6);
  --swp-card-header-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-card-footer-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-input-bg: var(--swp-surface);
  --swp-input-border: var(--swp-border);
  --swp-input-radius: var(--swp-radius-md);
  --swp-input-padding-y: var(--swp-space-2-5);
  --swp-input-padding-x: var(--swp-space-4);
  --swp-input-focus-border: var(--swp-primary);
  --swp-input-focus-ring: var(--swp-ring-primary);
  --swp-btn-radius: var(--swp-radius-md);
  --swp-btn-padding-y: var(--swp-space-2-5);
  --swp-btn-padding-x: var(--swp-space-4);
  --swp-btn-font-weight: 500;
  --swp-modal-bg: var(--swp-surface);
  --swp-modal-radius: var(--swp-radius-xl);
  --swp-modal-shadow: var(--swp-shadow-xl);
  --swp-modal-padding: var(--swp-space-6);
  --swp-table-bg: var(--swp-surface);
  --swp-table-border: var(--swp-border-light);
  --swp-table-header-bg: var(--swp-gray-50);
  --swp-table-row-hover-bg: var(--swp-gray-50);
  --swp-table-cell-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-alert-radius: var(--swp-radius-md);
  --swp-alert-padding: var(--swp-space-4);
  --swp-money-currency: var(--swp-text-secondary);
  --swp-money-neutral: var(--swp-text-primary);
  --swp-money-paid: var(--swp-success-dark);
  --swp-money-overdue: var(--swp-danger-dark);
  --swp-money-total-scale: 1.125;
  --swp-money-currency-scale: 0.75em;
}

/**
 * Augias Design System - Typography
 *
 * Typography scale, font families, weights, and line heights.
 * Uses system fonts for optimal performance and native feel.
 */
:root {
  --swp-font-sans: -apple-system, blinkmacsystemfont, 'Segoe UI', roboto,
                   'Helvetica Neue', arial, 'Noto Sans', sans-serif,
                   'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
                   'Noto Color Emoji';
  --swp-font-mono: ui-monospace, sfmono-regular, 'SF Mono', menlo, monaco,
                   consolas, 'Liberation Mono', 'Courier New', monospace;
  --swp-font-family: var(--swp-font-sans);
}

:root {
  --swp-text-xs: 0.75rem;
  --swp-text-sm: 0.8125rem;
  --swp-text-base: 0.9375rem;
  --swp-text-md: 1rem;
  --swp-text-lg: 1.125rem;
  --swp-text-xl: 1.25rem;
  --swp-text-2xl: 1.5rem;
  --swp-text-3xl: 1.875rem;
  --swp-text-4xl: 2.25rem;
  --swp-text-5xl: 3rem;
}

:root {
  --swp-leading-none: 1;
  --swp-leading-tight: 1.25;
  --swp-leading-snug: 1.375;
  --swp-leading-normal: 1.5;
  --swp-leading-relaxed: 1.625;
  --swp-leading-loose: 2;
}

:root {
  --swp-font-thin: 100;
  --swp-font-extralight: 200;
  --swp-font-light: 300;
  --swp-font-normal: 400;
  --swp-font-medium: 500;
  --swp-font-semibold: 600;
  --swp-font-bold: 700;
  --swp-font-extrabold: 800;
  --swp-font-black: 900;
}

:root {
  --swp-tracking-tighter: -0.05em;
  --swp-tracking-tight: -0.025em;
  --swp-tracking-normal: 0;
  --swp-tracking-wide: 0.025em;
  --swp-tracking-wider: 0.05em;
  --swp-tracking-widest: 0.1em;
}

.text-page-title {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-tight);
  color: var(--swp-text-primary);
  letter-spacing: var(--swp-tracking-tight);
}

.text-page-subtitle {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-card-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-snug);
  color: var(--swp-text-primary);
}

.text-card-subtitle {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-snug);
  color: var(--swp-text-primary);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.text-section-title svg,
.text-section-title i {
  color: var(--swp-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.text-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-secondary);
}

.text-body {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-relaxed);
  color: var(--swp-body-color);
}

.text-help {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-mono {
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
}

.text-table-header {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
}

.text-emphasis {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

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

.text-link {
  color: var(--swp-link-color);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.text-link:hover {
  color: var(--swp-link-hover-color);
  text-decoration: underline;
}

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

.text-line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.text-line-clamp-3 {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/**
 * Augias — Status Badges
 *
 * Status chips render as Tabler's tinted `bg-<colour>-lt` variants rather than
 * solid fills. On a list, a solid saturated pill repeated down every row is the
 * loudest thing on screen, competing with the figures and names that people
 * actually read; a tint carries the same signal and lets the data lead.
 *
 * Tabler builds those variants by putting the colour at full strength as *text*
 * over the same colour at 10% as background. That is precisely the pattern
 * DESIGN.md records as non-conformant — measured here at 1.97:1 for Pending and
 * 2.48:1 for Paid, against a 4.5:1 requirement. The tint is worth keeping; the
 * text colour is not, so each chip is repointed at a `-dark` step that clears AA
 * over its own tint. `!important` is not decoration: Tabler's colour utilities
 * carry it, and a plain declaration loses to them at any specificity.
 *
 * Tabler also ships no `-lt` for `gray`, which the status enums use for their
 * quietest states (new, draft), so it is defined here outright.
 */
.bg-gray-lt {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.badge.bg-yellow-lt {
  color: #854d0e !important;
}
.badge.bg-green-lt {
  color: #166534 !important;
}
.badge.bg-red-lt {
  color: #b91c1c !important;
}
.badge.bg-purple-lt {
  color: #7e22ce !important;
}
.badge.bg-teal-lt {
  color: #0f766e !important;
}
.badge.bg-orange-lt {
  color: #c2410c !important;
}

/**
 * Augias Design System - Component Index
 *
 * Custom component styles that extend Bootstrap/Tabler.
 * Only add styles here that provide functionality beyond what Bootstrap/Tabler offer.
 *
 * Note: Most component styling comes from Bootstrap 5 and Tabler.
 * This file imports only custom extensions, not replacements.
 */
/**
 * Augias - Shared Form Page Styles
 *
 * Consolidated form-page layout pattern used across TaxBundle, ClientBundle,
 * UserBundle (Profile, Invite, ChangePassword) and similar form pages.
 *
 * Template structure:
 *   .form-page > .form-page-container[--narrow|--medium|--wide] >
 *     .form-page-header > .form-page-header-content >
 *       .form-page-icon[--security] + div(.form-page-title + .form-page-subtitle)
 *     .form-page-sections > .form-page-section >
 *       .section-header > .section-icon[--security] + .section-header-text
 *         (.section-title + .section-description)
 *       .section-content > .form-grid > .form-field[.form-field-wide]
 *     .form-page-actions > .form-page-actions-inner[--medium]
 */
.form-page {
  min-height: 100%;
}

.form-page-container {
  margin: 0 auto;
  padding-bottom: var(--swp-space-24);
}
.form-page-container--narrow {
  max-width: 800px;
}
.form-page-container--medium {
  max-width: 900px;
}
.form-page-container--wide {
  max-width: 1100px;
}

.form-page-header {
  margin-bottom: var(--swp-space-8);
  padding: var(--swp-space-6) 0;
}

.form-page-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.form-page-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.form-page-icon--security {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.2) 0%, rgba(var(--swp-success-rgb), 0.1) 100%);
  color: var(--swp-success);
}

.form-page-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.form-page-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.form-page-sections {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-6);
}

.form-page-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.form-page-section:hover {
  border-color: var(--swp-border-dark);
}
.form-page-section:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-5) var(--swp-space-6) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border);
}

.section-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.1) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.section-icon--security {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.15) 0%, rgba(var(--swp-success-rgb), 0.05) 100%);
  color: var(--swp-success);
}

.section-header-text {
  flex: 1;
  padding-top: var(--swp-space-1);
}

.section-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
  line-height: 1.4;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}

.section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.5;
}

.section-content {
  padding: var(--swp-space-6);
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .form-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-3);
  }
}

.form-field {
  display: flex;
  flex-direction: column;
}

.form-field-wide {
  grid-column: 1/-1;
}

.form-page-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.form-page-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 800px;
  margin: 0 auto;
  padding: 0 var(--swp-space-4);
}
.form-page-actions-inner--medium {
  max-width: 900px;
}

.btn-save,
.btn-save-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3) var(--swp-space-6);
  font-weight: var(--swp-font-semibold);
  box-shadow: var(--swp-shadow-primary);
}
.btn-save:hover,
.btn-save-primary:hover {
  box-shadow: var(--swp-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-save:active,
.btn-save-primary:active {
  transform: translateY(0);
}

@media (width <= 767.98px) {
  .form-page {
    padding: var(--swp-space-4);
  }
  .form-page-header {
    padding: var(--swp-space-4) 0;
    margin-bottom: var(--swp-space-6);
  }
  .form-page-header-content {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--swp-space-3);
  }
  .form-page-icon {
    width: 48px;
    height: 48px;
  }
  .form-page-title {
    font-size: 1.5rem;
  }
  .section-header {
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--swp-space-4) var(--swp-space-4) var(--swp-space-3);
  }
  .section-icon {
    width: 36px;
    height: 36px;
  }
  .section-content {
    padding: var(--swp-space-4);
  }
  .form-page-actions-inner {
    gap: var(--swp-space-3);
  }
  .form-page-actions-inner .btn {
    flex: 1;
  }
}
@media print {
  .form-page-actions {
    display: none !important;
  }
  .form-page {
    padding: 0;
  }
  .form-page-container {
    max-width: none;
  }
}
/**
 * Augias - Document View Shared Styles
 *
 * Shared layout and component styles for Invoice and Quote view pages.
 * Uses generic `doc-view-*` / `doc-*` class names to avoid duplication.
 * Both invoice-view.scss and quote-view.scss use these classes directly.
 */
.doc-view-page {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--swp-space-6);
}
@media (width <= 640px) {
  .doc-view-page {
    padding: 0;
  }
}

.doc-view-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}
@media (width <= 768px) {
  .doc-view-header {
    flex-direction: column;
    align-items: flex-start;
  }
}

.doc-view-header-left {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.doc-view-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, var(--swp-primary-lighter) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.doc-view-title-group {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.doc-view-title {
  font-size: var(--swp-text-xl, 1.25rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0;
  line-height: 1.3;
}

.doc-view-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-wrap: wrap;
}

.doc-view-meta-item {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
}
.doc-view-meta-item svg {
  opacity: 0.7;
}

.doc-view-header-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
}
@media (width <= 768px) {
  .doc-view-header-actions {
    width: 100%;
    justify-content: flex-end;
    flex-wrap: wrap;
  }
  .doc-view-header-actions .btn,
  .doc-view-header-actions .btn-group,
  .doc-view-header-actions .doc-view-utility-actions {
    flex-shrink: 0;
  }
}

.doc-view-utility-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
}

.doc-view-header .dropdown-menu {
  min-width: 200px;
  padding: var(--swp-space-2);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-lg);
  border-radius: var(--swp-radius-lg);
}
.doc-view-header .dropdown-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm, 0.875rem);
}
.doc-view-header .dropdown-menu .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.doc-view-header .dropdown-menu .dropdown-item.text-danger:hover {
  background: var(--swp-danger-lighter);
}
.doc-view-header .dropdown-menu .dropdown-item svg {
  opacity: 0.7;
}
.doc-view-header .dropdown-menu .dropdown-divider {
  margin: var(--swp-space-2) 0;
  border-color: var(--swp-border-light);
}

.btn-hero {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3) var(--swp-space-5);
  font-weight: var(--swp-font-semibold, 600);
  font-size: var(--swp-text-base, 1rem);
  box-shadow: var(--swp-shadow-primary);
  transition: all var(--swp-transition-base);
}
.btn-hero:hover {
  transform: translateY(-1px);
  box-shadow: var(--swp-shadow-primary-lg);
}
.btn-hero:active {
  transform: translateY(0);
}

.btn-group > .btn-hero {
  box-shadow: none;
}
.btn-group > .btn-hero:hover, .btn-group > .btn-hero:active {
  transform: none;
  box-shadow: none;
}

.btn-hero-urgent {
  background: linear-gradient(135deg, var(--swp-danger) 0%, var(--swp-danger-hover) 100%);
  border-color: var(--swp-danger);
  box-shadow: var(--swp-shadow-danger);
}
.btn-hero-urgent:hover {
  background: linear-gradient(135deg, var(--swp-danger-hover) 0%, var(--swp-danger) 100%);
  box-shadow: var(--swp-shadow-danger-lg);
}

.doc-view-content {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: var(--swp-space-6);
}
@media (width <= 1024px) {
  .doc-view-content {
    grid-template-columns: 1fr;
  }
}

.doc-view-document {
  min-width: 0;
}

.doc-card {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  overflow: hidden;
}

.doc-card .badge,
.doc-page-header .badge,
.doc-view-header .badge,
.doc-view-sidebar .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium, 500);
  letter-spacing: 0;
}
.doc-card .badge.bg-gray.text-gray-fg,
.doc-page-header .badge.bg-gray.text-gray-fg,
.doc-view-header .badge.bg-gray.text-gray-fg,
.doc-view-sidebar .badge.bg-gray.text-gray-fg {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.doc-header-from-to {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-8);
  padding: var(--swp-space-6);
  background: linear-gradient(180deg, var(--swp-gray-50) 0%, var(--swp-surface) 100%);
  border-bottom: 1px solid var(--swp-border-light);
}
@media (width <= 640px) {
  .doc-header-from-to {
    grid-template-columns: 1fr;
    gap: var(--swp-space-6);
  }
}

.doc-party {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.doc-party-label {
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
}

.doc-party-name {
  font-size: var(--swp-text-lg, 1.125rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-2) 0;
}

.doc-party-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  line-height: 1.5;
}
.doc-party-detail svg {
  flex-shrink: 0;
  margin-top: 2px;
  opacity: 0.6;
}
.doc-party-detail .detail-label {
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-muted);
}
.doc-party-detail .detail-label::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.doc-party-detail:has(.detail-label) {
  flex-wrap: wrap;
}
.doc-party-detail .detail-value {
  min-width: 0;
  color: var(--swp-text-secondary);
  overflow-wrap: anywhere;
}
.doc-party-detail a.detail-value {
  color: var(--swp-primary);
}
.doc-party-detail a.detail-value:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.doc-items {
  padding: var(--swp-space-6);
}
@media (width <= 640px) {
  .doc-items {
    padding: var(--swp-space-4);
  }
}

.doc-items-table {
  width: 100%;
  border-collapse: collapse;
}
.doc-items-table thead th {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border);
  text-align: left;
}
.doc-items-table thead th.column-price, .doc-items-table thead th.column-qty, .doc-items-table thead th.column-tax, .doc-items-table thead th.column-total {
  text-align: right;
}
@media (width <= 640px) {
  .doc-items-table thead {
    display: none;
  }
}
.doc-items-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.doc-items-table tbody tr:hover {
  background: var(--swp-gray-50);
}
@media (width <= 640px) {
  .doc-items-table tbody tr {
    display: block;
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border-radius: var(--swp-radius-md);
    border: 1px solid var(--swp-border-light);
  }
  .doc-items-table tbody tr:hover {
    background: var(--swp-gray-100);
  }
  .doc-items-table tbody tr:last-child {
    margin-bottom: 0;
  }
}
.doc-items-table tbody td {
  padding: var(--swp-space-4);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  border-bottom: 1px solid var(--swp-border-light);
  vertical-align: top;
}
.doc-items-table tbody td.column-description {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium, 500);
}
.doc-items-table tbody td.column-price, .doc-items-table tbody td.column-qty, .doc-items-table tbody td.column-tax, .doc-items-table tbody td.column-total {
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.doc-items-table tbody td.column-total {
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
@media (width <= 640px) {
  .doc-items-table tbody td {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--swp-space-2) 0;
    border-bottom: 1px solid var(--swp-border-light);
    text-align: right;
  }
  .doc-items-table tbody td::before {
    content: attr(data-label);
    font-size: var(--swp-text-xs, 0.75rem);
    font-weight: var(--swp-font-semibold, 600);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    text-align: left;
    flex-shrink: 0;
    margin-right: var(--swp-space-3);
  }
  .doc-items-table tbody td.column-description {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    padding-bottom: var(--swp-space-3);
    margin-bottom: var(--swp-space-2);
    border-bottom: 2px solid var(--swp-border);
  }
  .doc-items-table tbody td.column-description::before {
    margin-bottom: var(--swp-space-1);
  }
  .doc-items-table tbody td.column-total {
    border-bottom: none;
    padding-bottom: 0;
  }
}
@media (width >= 641px) {
  .doc-items-table .column-description {
    width: auto;
  }
  .doc-items-table .column-price {
    width: 120px;
  }
  .doc-items-table .column-qty {
    width: 80px;
  }
  .doc-items-table .column-tax {
    width: 100px;
  }
  .doc-items-table .column-total {
    width: 120px;
  }
}

.doc-totals {
  display: flex;
  justify-content: flex-end;
  padding: var(--swp-space-6);
  padding-top: 0;
}
@media (width <= 640px) {
  .doc-totals {
    padding: 0 var(--swp-space-4) var(--swp-space-4);
  }
}

.doc-totals-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  min-width: 280px;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
}
@media (width <= 640px) {
  .doc-totals-grid {
    flex: 1;
    min-width: 0;
  }
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-2) 0;
}
.totals-row .totals-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
}
.totals-row .totals-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.totals-row-payment .totals-value {
  color: var(--swp-success);
}

.totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.totals-row-final {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-dark);
}
.totals-row-final .totals-label {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
.totals-row-final .totals-value {
  font-size: var(--swp-text-lg, 1.125rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}

.doc-footer {
  padding: var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.doc-footer-section + .doc-footer-section {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border-light);
}

.doc-footer-title {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-2) 0;
}

.doc-footer-text {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  margin: 0;
  line-height: 1.6;
  white-space: pre-wrap;
}

.doc-view-sidebar {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}
@media (width <= 1024px) {
  .doc-view-sidebar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  }
}

.doc-sidebar-card {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  overflow: hidden;
}

.doc-sidebar-card-muted {
  background: var(--swp-gray-50);
}

.doc-sidebar-card-success {
  border-left: 4px solid var(--swp-success);
}

.doc-sidebar-card-highlight {
  border-left: 4px solid var(--swp-primary);
}

.doc-sidebar-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
}

.doc-sidebar-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-primary);
}

.doc-sidebar-card-success .doc-sidebar-card-icon {
  background: var(--swp-success-lighter);
  color: var(--swp-success);
}

.doc-sidebar-card-title {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0;
}

.doc-sidebar-card-body {
  padding: var(--swp-space-4);
}

.doc-summary-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.summary-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-3);
}
.summary-item .summary-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
}
.summary-item .summary-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}
.summary-item .summary-value-amount {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.summary-item .summary-value-balance {
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-warning);
}

.summary-item-overdue {
  padding: var(--swp-space-2);
  margin: calc(-1 * var(--swp-space-2));
  background: var(--swp-danger-lighter);
  border-radius: var(--swp-radius-sm);
}
.summary-item-overdue .summary-value {
  color: var(--swp-danger);
}

.summary-item-paid .summary-value {
  color: var(--swp-success);
}

.client-info {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.client-name {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-primary);
  text-decoration: none;
}
.client-name:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.client-contacts {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.client-contact {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.contact-name {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  margin-bottom: var(--swp-space-1);
}

.contact-email,
.contact-detail {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-muted);
}
.contact-email svg,
.contact-detail svg {
  opacity: 0.6;
}

.payments-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.payment-card {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border-left: 3px solid var(--swp-gray-300);
  transition: all var(--swp-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--swp-success);
  background: var(--swp-success-lighter);
}

.payment-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--swp-space-2);
}

.payment-amount {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.payment-method,
.payment-date {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-muted);
}
.payment-method svg,
.payment-date svg {
  opacity: 0.6;
}

.payment-message {
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-secondary);
  font-style: italic;
  margin-top: var(--swp-space-1);
}

.related-quote-link,
.related-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-primary);
  text-decoration: none;
}
.related-quote-link:hover,
.related-invoice-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.related-invoice-status {
  margin-top: var(--swp-space-2);
}

@media print {
  .doc-view-page {
    max-width: 100%;
    padding: 0;
    margin: 0;
  }
  .doc-view-content {
    display: block;
  }
  .doc-view-document {
    width: 100%;
  }
  .doc-card {
    box-shadow: none;
    border: none;
  }
  .doc-header-from-to {
    background: none;
    padding: 20px 0;
  }
  .doc-items-table thead th {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-totals-grid {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-footer {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .no-print {
    display: none !important;
  }
}
/**
 * External Document View - Shared Styles
 *
 * Shared styles for public-facing invoice and quote views.
 * Invoice-specific: external-invoice-view.scss
 * Quote-specific: external-quote-view.scss
 */
.ext-doc-page {
  min-height: 100vh;
  background: var(--tblr-gray-50, #f8fafc);
}

.app-branding-header {
  padding: 1.5rem 0;
  border-bottom: 2px solid var(--tblr-border-color-light, #e2e8f0);
}
.app-branding-header .app-logo img {
  max-height: 40px;
  width: auto;
  display: block;
}
.app-branding-header .app-brand-name {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--tblr-primary, #1e4976);
  line-height: 1.2;
}
.app-branding-header .app-brand-tagline {
  font-size: 0.875rem;
  color: var(--tblr-secondary, #64748b);
  opacity: 0.8;
  line-height: 1.3;
}

.ext-doc-action-bar {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-action-bar .card-body {
  padding: 0.75rem 1.5rem;
}
.ext-doc-action-bar .btn {
  font-weight: 500;
}

.ext-doc-company-name {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.3;
}

.ext-doc-number {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.2;
  letter-spacing: -0.02em;
}

.ext-doc-number-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-vat-number {
  font-size: 0.9375rem;
  opacity: 0.75;
}

.ext-doc-logo img {
  max-width: 100%;
  height: auto;
  display: block;
}

.ext-doc-metadata-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: box-shadow 0.2s ease;
}
.ext-doc-metadata-card:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.ext-doc-metadata-card .card-body {
  padding: 1.5rem;
}

.ext-doc-metadata-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  margin-bottom: 0.375rem;
  opacity: 0.6;
}

.ext-doc-metadata-value {
  font-size: 1rem;
  color: var(--tblr-body-color, #1e293b);
}

.ext-doc-metadata-total {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--tblr-primary, #1e4976);
  line-height: 1.2;
}

.ext-doc-parties-section {
  margin-bottom: 2rem;
}

.ext-doc-party-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-party-name {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.4;
}

.ext-doc-party-detail {
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.6;
  margin-bottom: 0.375rem;
  font-size: 0.9375rem;
}

.ext-doc-items-table {
  margin-bottom: 2rem;
}
.ext-doc-items-table thead th {
  border-bottom: 2px solid var(--tblr-border-color, #cbd5e1);
  padding: 0.875rem 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  font-size: 0.75rem;
  opacity: 0.6;
}
.ext-doc-items-table tbody tr {
  border-bottom: 1px solid var(--tblr-border-color-light, #e2e8f0);
  transition: background-color 0.15s ease;
}
.ext-doc-items-table tbody tr:last-child {
  border-bottom: none;
}
.ext-doc-items-table tbody tr:hover {
  background-color: var(--tblr-gray-50, #f8fafc);
}
.ext-doc-items-table tbody td {
  padding: 1rem 0.75rem;
  color: var(--tblr-body-color, #1e293b);
  vertical-align: top;
}
.ext-doc-items-table .item-description {
  font-weight: 500;
  line-height: 1.5;
  color: var(--tblr-body-color, #1e293b);
}
.ext-doc-items-table .item-amount {
  font-weight: 600;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-totals-card .card-body {
  padding: 1.5rem;
}

.ext-doc-totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.625rem 0;
}
.ext-doc-totals-row:not(:last-child) {
  margin-bottom: 0.375rem;
}

.ext-doc-totals-label {
  font-size: 0.9375rem;
  color: var(--tblr-body-color, #1e293b);
  font-weight: 500;
}

.ext-doc-totals-value {
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-final {
  border-top: 2px solid var(--tblr-border-color-dark, #94a3b8);
  padding-top: 1rem;
  margin-top: 0.75rem;
}
.ext-doc-totals-final .ext-doc-totals-row {
  padding: 0.5rem 0 0;
  margin-bottom: 0;
}
.ext-doc-totals-final .ext-doc-totals-label {
  font-size: 1.25rem;
  font-weight: 600;
}
.ext-doc-totals-final .ext-doc-totals-value {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-primary, #1e4976);
  line-height: 1;
}

.ext-doc-footer .card {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-footer .btn-sm {
  font-weight: 500;
  padding: 0.5rem 1rem;
}
.ext-doc-footer .app-logo img {
  max-height: 24px;
  width: auto;
  display: block;
}

.badge {
  font-weight: 600;
  letter-spacing: 0.025em;
}

hr {
  border-color: var(--tblr-border-color-light, #e2e8f0);
  opacity: 1;
}

.btn:focus-visible {
  outline: 2px solid var(--tblr-primary, #1e4976);
  outline-offset: 2px;
}

.card-lg {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
}
.card-lg .card-body {
  padding: 2.5rem;
}

@media (width <= 991px) {
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1.25rem;
  }
  .card-lg .card-body {
    padding: 2rem;
  }
}
@media (width <= 767px) {
  .ext-doc-number {
    font-size: 1.75rem;
  }
  .ext-doc-metadata-total {
    font-size: 1.5rem;
  }
  .ext-doc-totals-final .ext-doc-totals-value {
    font-size: 1.75rem;
  }
  .ext-doc-parties-section .col-sm-6:first-child {
    margin-bottom: 1.5rem;
  }
}
@media (width <= 576px) {
  .container-xl {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1rem;
  }
  .app-branding-header {
    padding: 1rem 0;
  }
  .app-branding-header .d-flex {
    flex-direction: column;
    text-align: center;
  }
  .app-branding-header .app-brand-name {
    font-size: 1.25rem;
  }
  .app-branding-header .app-brand-tagline {
    font-size: 0.8125rem;
  }
  .ext-doc-footer .btn-sm {
    width: 100%;
    margin-bottom: 0.5rem;
  }
  .ext-doc-footer .btn-sm:last-child {
    margin-bottom: 0;
  }
  .ext-doc-metadata-card .col-sm-4,
  .ext-doc-metadata-card .col-sm-6 {
    margin-bottom: 1rem;
  }
  .ext-doc-metadata-card .col-sm-4:last-child,
  .ext-doc-metadata-card .col-sm-6:last-child {
    margin-bottom: 0;
  }
  .ext-doc-action-bar .d-flex.justify-content-between {
    flex-direction: column;
    gap: 0.75rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 {
    flex-direction: column;
    width: 100%;
    gap: 0.5rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 .btn {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .btn-primary,
  .ext-doc-action-bar .d-flex.justify-content-between .btn-danger {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-items-table {
    font-size: 0.875rem;
  }
  .ext-doc-items-table thead th {
    padding: 0.75rem 0.5rem;
  }
  .ext-doc-items-table tbody td {
    padding: 0.875rem 0.5rem;
  }
}
@media print {
  .no-print,
  .d-print-none {
    display: none !important;
    visibility: hidden !important;
  }
  @page {
    margin: 1cm;
  }
  html,
  body {
    background: #ffffff !important;
    height: auto !important;
    overflow: visible !important;
  }
  .ext-doc-page,
  .page-wrapper,
  .page-body {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    overflow: visible !important;
    width: 100% !important;
    background: #ffffff !important;
  }
  .container-xl {
    max-width: 100% !important;
    padding: 0.5cm !important;
    margin: 0 !important;
  }
  .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .card,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    box-shadow: none !important;
    border: 1px solid #dee2e6;
    break-inside: avoid;
    display: block !important;
    visibility: visible !important;
  }
  .card-body {
    display: block !important;
    visibility: visible !important;
    break-inside: avoid;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  table {
    break-inside: auto;
  }
  tr {
    break-inside: avoid;
    break-after: auto;
  }
  thead {
    display: table-header-group;
  }
  .bg-light,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    background-color: #f8f9fa !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .bg-danger {
    background-color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-primary,
  .ext-doc-metadata-total,
  .ext-doc-totals-final .ext-doc-totals-value {
    color: #1e4976 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-danger {
    color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-success {
    color: #10b981 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .ext-doc-items-table tbody tr:hover {
    background-color: transparent !important;
  }
  .ext-doc-metadata-card:hover {
    box-shadow: none !important;
  }
  hr {
    border-color: #cbd5e1 !important;
    opacity: 1 !important;
  }
}
/**
 * Document Templates - Phone layout of the invoice and quote designs
 *
 * The designs under Templates/<slug>/preview.html.twig are drawn for a page:
 * a four-column line table and a display-size number do not fit a 390px
 * screen. Below the sm breakpoint each line becomes a small card - the
 * description on top, then one "label ... value" row per figure, the label
 * coming from the cell's data-label.
 */
@media (max-width: 575.98px) {
  .invoice-template,
  .quote-template {
    overflow-wrap: break-word;
  }
  .invoice-template[style*=padding],
  .quote-template[style*=padding] {
    padding: 1rem !important;
  }
  .invoice-template .card-body,
  .invoice-template .p-5,
  .quote-template .card-body,
  .quote-template .p-5 {
    padding: 1.25rem !important;
  }
  .invoice-template .doc-title,
  .quote-template .doc-title {
    font-size: 2.25rem !important;
  }
  .invoice-template .doc-header,
  .quote-template .doc-header {
    flex-direction: column;
    align-items: flex-start !important;
    gap: 0.75rem;
  }
  .invoice-template .doc-header > .text-end,
  .quote-template .doc-header > .text-end {
    text-align: left !important;
  }
  .invoice-template .display-3,
  .quote-template .display-3 {
    font-size: 2.25rem;
  }
  .invoice-template .display-5,
  .quote-template .display-5 {
    font-size: 2rem;
  }
  .invoice-template .display-6,
  .quote-template .display-6 {
    font-size: 1.5rem;
  }
}

@media (max-width: 575.98px) {
  table.doc-lines-stacked thead {
    display: none;
  }
  table.doc-lines-stacked tbody,
  table.doc-lines-stacked tr,
  table.doc-lines-stacked td {
    display: block;
    width: 100%;
  }
  table.doc-lines-stacked tr {
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--swp-border-color);
  }
  table.doc-lines-stacked td {
    padding: 0.125rem 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  table.doc-lines-stacked .doc-lines-index {
    display: none;
  }
  table.doc-lines-stacked .doc-lines-description {
    margin-bottom: 0.375rem;
    font-weight: var(--swp-font-weight-medium);
  }
  table.doc-lines-stacked td[data-label] {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    text-align: right;
  }
  table.doc-lines-stacked td[data-label]::before {
    content: attr(data-label);
    font-size: 0.75rem;
    font-weight: normal;
    font-family: var(--swp-body-font-family);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--swp-muted);
    text-align: left;
  }
}

/**
 * Augias - Shared Marketplace Styles
 *
 * Common styles shared between PaymentBundle and NotificationBundle marketplace pages.
 * Page-specific styles remain in payment-marketplace.scss and notification-marketplace.scss.
 */
.marketplace-panel {
  position: sticky;
  top: var(--swp-space-4);
  max-height: calc(100vh - var(--swp-space-16));
  overflow-y: auto;
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
}
.marketplace-panel::-webkit-scrollbar {
  width: 6px;
}
.marketplace-panel::-webkit-scrollbar-track {
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}
.marketplace-panel::-webkit-scrollbar-thumb {
  background: var(--swp-gray-300);
  border-radius: var(--swp-radius-full);
  transition: var(--swp-transition-colors);
}
.marketplace-panel::-webkit-scrollbar-thumb:hover {
  background: var(--swp-gray-400);
}

.marketplace-header h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.marketplace-header p {
  line-height: 1.5;
}
.marketplace-header .input-group {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.marketplace-header .input-group .input-group-text {
  border-right: 0;
  color: var(--swp-text-muted);
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control {
  border-left: 0;
  padding-left: 0;
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control:focus {
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.1);
  border-color: var(--swp-primary);
}
.marketplace-header .input-group .form-control::placeholder {
  color: var(--swp-text-muted);
  opacity: 0.6;
}
.marketplace-header .input-group:has(.form-control:focus) .input-group-text {
  border-color: var(--swp-primary);
}

.delete-confirmation-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 1060;
  animation: marketplace-fade-in 0.15s ease;
  backdrop-filter: blur(4px);
}

.delete-confirmation-modal {
  position: fixed;
  inset: 0;
  z-index: 1070;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.15s ease;
}

.delete-confirmation-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  width: 100%;
  max-width: 480px;
  animation: marketplace-scale-in 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.delete-confirmation-header {
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
}
.delete-confirmation-header h4 {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--swp-text-primary);
}
.delete-confirmation-header .delete-icon-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-danger-light);
  flex-shrink: 0;
}

.delete-confirmation-body {
  padding: var(--swp-space-6);
  color: var(--swp-text-secondary);
  line-height: 1.6;
}

.delete-confirmation-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-bottom-left-radius: var(--swp-radius-lg);
  border-bottom-right-radius: var(--swp-radius-lg);
}

@keyframes marketplace-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes marketplace-slide-up {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
@keyframes marketplace-scale-in {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
.badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.5rem;
  font-weight: 500;
  border-radius: var(--swp-radius-sm);
}

.marketplace-search-clear {
  z-index: 10;
  right: 8px !important;
}

/**
 * Global Search - Top navigation search bar with live results dropdown
 */
.global-search {
  position: relative;
  max-width: 600px;
}
.global-search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}
.global-search-icon {
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: #9aa0ac;
  pointer-events: none;
  display: flex;
  align-items: center;
  line-height: 1;
  z-index: 1;
}
.global-search-input {
  box-sizing: border-box;
  width: 100%;
  padding: 0 6.5rem 0 2.5rem;
  height: 38px;
  line-height: 38px;
  background-color: #ffffff;
  border: 1px solid #d0d3d8;
  border-radius: 6px;
  font-size: 0.875rem;
  color: #354052;
  appearance: none;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.global-search-input::-webkit-search-cancel-button, .global-search-input::-webkit-search-decoration {
  appearance: none;
}
.global-search-input:focus {
  border-color: #1e4976;
  box-shadow: 0 0 0 3px rgba(46, 150, 58, 0.12);
  background-color: #ffffff;
  outline: none;
}
.global-search-input::placeholder {
  color: #9aa0ac;
}
.global-search-actions {
  position: absolute;
  right: 0.625rem;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: 6px;
}
.global-search-shortcut {
  display: flex;
  gap: 3px;
  pointer-events: none;
}
.global-search-shortcut kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.1rem 0.35rem;
  font-size: 0.7rem;
  font-family: var(--tblr-font-monospace);
  color: #9aa0ac;
  background-color: #f5f7fb;
  border: 1px solid #e6e7e9;
  border-radius: 3px;
  line-height: 1.4;
}

.search-help-trigger {
  background: none;
  border: 1px solid #e0e3e8;
  padding: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #adb5bd;
  transition: color 0.15s ease, border-color 0.15s ease;
  flex-shrink: 0;
  line-height: 1;
}
.search-help-trigger:hover {
  color: #495057;
  border-color: #9aa0ac;
}

.search-help-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
  margin-bottom: 0.75rem;
}

.search-help-op {
  font-size: 0.8rem;
  font-family: var(--tblr-font-monospace);
  background: #f5f7fb;
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  color: #354052;
}

.search-help-example {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 12px;
  background: #f8fafc;
  border-radius: 6px;
  border-left: 3px solid #1e4976;
}
.search-help-example code {
  font-size: 0.8rem;
  color: #1a56db;
  background: none;
  padding: 0;
  word-break: break-all;
}
.search-help-example span {
  font-size: 0.775rem;
  color: #9aa0ac;
}

.search-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  min-width: 520px;
  margin-left: -60px;
  margin-right: -60px;
  background-color: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 8px;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08);
  isolation: isolate;
  z-index: 9999;
}
.search-dropdown.is-open {
  display: block;
  animation: search-dropdown-in 0.12s ease-out;
}

@keyframes search-dropdown-in {
  from {
    opacity: 0;
    transform: translateY(-4px) scale(0.99);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
.search-spinner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 1.25rem;
  color: #9aa0ac;
  font-size: 0.875rem;
}

.search-results {
  max-height: 440px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background-color: #ffffff;
  border-radius: 8px;
}
.search-results::-webkit-scrollbar {
  width: 4px;
}
.search-results::-webkit-scrollbar-track {
  background: transparent;
}
.search-results::-webkit-scrollbar-thumb {
  background-color: #e0e3e8;
  border-radius: 2px;
}

.search-group + .search-group {
  border-top: 1px solid #f0f2f5;
}
.search-group:last-child {
  padding-bottom: 0.25rem;
}
.search-group-label {
  padding: 0.625rem 0.875rem 0.25rem;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
}

.search-result-item.is-active .search-result-link {
  background-color: #f5f7fb;
}
.search-result-item:hover .search-result-link {
  background-color: #f5f7fb;
  text-decoration: none;
}

.search-result-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.875rem;
  color: #354052;
  text-decoration: none;
  transition: background-color 0.08s ease;
}

.search-result-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  padding: 6px;
  border-radius: 8px;
}
.search-result-icon svg {
  display: block;
}

.search-result-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.search-result-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: #354052;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-subtitle {
  font-size: 0.775rem;
  color: #9aa0ac;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 1px;
}

.search-result-aside {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.2rem;
  flex-shrink: 0;
  margin-left: auto;
  padding-left: 0.5rem;
}

.search-result-badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.15rem 0.45rem;
}

.search-result-meta {
  font-size: 0.8rem;
  font-weight: 600;
  color: #354052;
  white-space: nowrap;
}

.search-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2.5rem 1rem;
  color: #9aa0ac;
  background-color: #ffffff;
}
.search-empty-icon {
  margin-bottom: 0.625rem;
  opacity: 0.4;
  display: flex;
}
.search-empty-text {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 500;
}

.search-error {
  padding: 1.25rem;
  font-size: 0.875rem;
  color: var(--tblr-danger, #d63939);
  text-align: center;
  background-color: #ffffff;
}

.search-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.15rem 0.5rem;
  background-color: #e8f0fe;
  color: #1a56db;
  border-radius: 4px;
  font-size: 0.8rem;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}
.search-chip-remove {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  opacity: 0.6;
  font-size: 0.9rem;
  line-height: 1;
}
.search-chip-remove:hover {
  opacity: 1;
}

.search-chips-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 0.25rem 0.5rem;
  border-bottom: 1px solid #f0f2f5;
  min-height: 0;
}
.search-chips-bar:empty {
  display: none;
}

.search-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  background: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
  z-index: 10000;
  padding: 0.25rem 0;
  display: none;
}
.search-suggestions.is-open {
  display: block;
}
.search-suggestions-header {
  padding: 0.25rem 0.75rem 0.1rem;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
}
.search-suggestions-item {
  padding: 0.4rem 0.75rem;
  font-size: 0.85rem;
  cursor: pointer;
  color: #354052;
}
.search-suggestions-item:hover, .search-suggestions-item.is-active {
  background-color: #f5f7fb;
}
.search-suggestions-item code {
  font-size: 0.75rem;
  color: #6c757d;
  margin-left: 0.5rem;
}

/**
 * Augias DataGrid Component Styles
 *
 * Modern, clean data grid styling following the Augias design system.
 * Uses design tokens from _tokens.scss for consistency.
 */
.datagrid {
  position: relative;
  display: block;
}
.datagrid > .alert {
  margin-bottom: var(--swp-space-4);
}

.datagrid-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}

.datagrid-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.datagrid-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
}
@media (width <= 768px) {
  .datagrid-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
}

.datagrid-toolbar-start {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
  min-width: 0;
}

.datagrid-toolbar-end {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.datagrid-search {
  position: relative;
  flex: 1;
  max-width: 320px;
}
.datagrid-search .datagrid-search-icon {
  position: absolute;
  left: var(--swp-space-3);
  top: 50%;
  transform: translateY(-50%);
  color: var(--swp-text-muted);
  pointer-events: none;
  width: 18px;
  height: 18px;
}
.datagrid-search .datagrid-search-input {
  width: 100%;
  padding: var(--swp-space-2) var(--swp-space-4) var(--swp-space-2) var(--swp-space-10);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.datagrid-search .datagrid-search-input::placeholder {
  color: var(--swp-text-muted);
}
.datagrid-search .datagrid-search-input:hover {
  background: var(--swp-gray-100);
}
.datagrid-search .datagrid-search-input:focus {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  outline: none;
}

.datagrid-active-filters {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}

.datagrid-active-filter {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.datagrid-active-filter:hover {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
.datagrid-active-filter:hover .datagrid-active-filter-remove {
  color: var(--swp-danger);
}
.datagrid-active-filter .datagrid-active-filter-key {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
}
.datagrid-active-filter .datagrid-active-filter-key::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.datagrid-active-filter .datagrid-active-filter-value {
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.datagrid-active-filter .datagrid-active-filter-remove {
  width: 14px;
  height: 14px;
  margin-left: var(--swp-space-1);
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}

.datagrid-filter-dropdown {
  position: relative;
}

.datagrid-filter-panel {
  width: 320px;
  max-height: calc(100vh - 200px);
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-lg);
  overflow: hidden;
}
.datagrid-filter-panel .dropdown-menu,
.datagrid-filter-panel .select2-container--open {
  z-index: 1060 !important;
}

.datagrid-filter-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.datagrid-filter-panel-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.datagrid-filter-panel-title svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}

.datagrid-filter-panel-body {
  padding: var(--swp-space-4);
  max-height: calc(100vh - 350px);
  overflow-y: auto;
}

.datagrid-filter-form {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.datagrid-filter-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.datagrid-filter-field .form-select,
.datagrid-filter-field select {
  position: relative;
  z-index: 1;
}
.datagrid-filter-field .row {
  --bs-gutter-x: 0.5rem;
}

.datagrid-filter-label {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.datagrid-filter-widget > div:has(> div > input[type=date]) {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-2);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div input[type=date] {
  width: 100%;
}
.datagrid-filter-widget .form-check {
  display: flex !important;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-widget .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-widget .form-check.form-switch {
  padding-left: var(--swp-space-3);
}
.datagrid-filter-widget .form-check .form-check-input {
  width: 16px !important;
  height: 16px !important;
  min-width: 16px;
  margin: 0 !important;
  flex-shrink: 0;
  border-radius: 3px !important;
  border: 1px solid var(--swp-border-dark);
  background-color: var(--swp-surface);
  cursor: pointer;
}
.datagrid-filter-widget .form-check .form-check-input:checked {
  background-color: var(--swp-primary);
  border-color: var(--swp-primary);
}
.datagrid-filter-widget .form-check .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox] {
  border-radius: 3px !important;
  background-image: none;
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox]:checked {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10l3 3l6-6%27/%3e%3c/svg%3e");
}
.datagrid-filter-widget .form-check .form-check-label {
  display: inline-block !important;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-primary);
  cursor: pointer;
  margin-left: var(--swp-space-2);
  user-select: none;
}
.datagrid-filter-widget .form-check + .form-check {
  margin-top: var(--swp-space-1);
}

.datagrid-filter-panel-footer {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
}

.datagrid-filter-panel .form-control,
.datagrid-filter-panel .form-select {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  border-color: var(--swp-border);
}
.datagrid-filter-panel .form-control:focus,
.datagrid-filter-panel .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.datagrid-filter-panel .datagrid-filter-field > .form-label {
  display: none;
}
.datagrid-filter-panel .datagrid-filter-field .row .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div {
  padding-left: var(--swp-space-1);
  padding-right: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div:first-child {
  padding-left: 0;
}
.datagrid-filter-panel .datagrid-filter-field .row > div:last-child {
  padding-right: 0;
}
.datagrid-filter-panel .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-1-5) var(--swp-space-2);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-panel .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-panel .form-check .form-check-input {
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
}
.datagrid-filter-panel .form-check .form-check-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  cursor: pointer;
}
.datagrid-filter-panel .form-check + .form-check {
  margin-top: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] {
  min-height: 120px;
  padding: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] option {
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-sm);
}
.datagrid-filter-panel select[multiple] option:checked {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}

.datagrid-export-dropdown {
  position: relative;
}

.datagrid-export-menu {
  width: 280px;
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-lg);
  overflow: hidden;
}

.datagrid-export-menu-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.datagrid-export-menu-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.datagrid-export-menu-title svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}

.datagrid-export-menu-subtitle {
  margin: var(--swp-space-1) 0 0;
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.datagrid-export-menu-body {
  display: flex;
  flex-direction: column;
  padding: var(--swp-space-2);
  gap: var(--swp-space-1);
}

.datagrid-export-option {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-primary);
  text-decoration: none;
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
  cursor: pointer;
}
.datagrid-export-option:hover, .datagrid-export-option:focus-visible {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  outline: none;
}

.datagrid-export-option-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  color: var(--swp-text-secondary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
}
.datagrid-export-option:hover .datagrid-export-option-icon, .datagrid-export-option:focus-visible .datagrid-export-option-icon {
  color: var(--swp-primary);
  border-color: var(--swp-primary-light);
  background: var(--swp-primary-lighter);
}

.datagrid-export-option-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.datagrid-export-option-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: 0.02em;
}

.datagrid-export-option-hint {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.datagrid-column-picker .dropdown-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-column-picker .dropdown-toggle:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
}
.datagrid-column-picker .dropdown-toggle::after {
  display: none;
}
.datagrid-column-picker .dropdown-menu {
  min-width: 200px;
  max-height: 320px;
  overflow-y: auto;
  padding: var(--swp-space-2);
}
.datagrid-column-picker .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-column-picker .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-column-picker .dropdown-item input[type=checkbox] {
  width: 16px;
  height: 16px;
  accent-color: var(--swp-primary);
}

.datagrid-table-wrapper {
  position: relative;
  overflow-x: auto;
}

.datagrid-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--swp-text-sm);
}
.datagrid-table th,
.datagrid-table td {
  padding: var(--swp-space-3) var(--swp-space-4);
  text-align: left;
  vertical-align: middle;
  border-bottom: 1px solid var(--swp-border-light);
}
.datagrid-table th {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-secondary);
  background: transparent;
  border-bottom: 2px solid var(--swp-border);
  white-space: nowrap;
  user-select: none;
}
.datagrid-table tbody {
  font-variant-numeric: tabular-nums;
}
.datagrid-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.datagrid-table tbody tr:hover {
  background: var(--swp-surface-hover);
}
.datagrid-table tbody tr.selected {
  background: var(--swp-primary-lighter);
}
.datagrid-table tbody tr.selected:hover {
  background: var(--swp-primary-light);
}
.datagrid-table .col-checkbox {
  width: 40px;
  text-align: center;
}
.datagrid-table th.col-checkbox {
  text-align: center;
}
.datagrid-table .col-id {
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}
.datagrid-table .col-date {
  white-space: nowrap;
}
.datagrid-table .col-amount,
.datagrid-table .col-money {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: var(--swp-font-medium);
}
.datagrid-table th.col-amount,
.datagrid-table th.col-money {
  text-align: right;
}
.datagrid-table th.col-amount .datagrid-sort-link,
.datagrid-table th.col-money .datagrid-sort-link {
  justify-content: flex-end;
}
.datagrid-table .col-status {
  white-space: nowrap;
}
.datagrid-table .col-actions {
  width: 1%;
  white-space: nowrap;
  text-align: right;
}
.datagrid-table tbody .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium);
  letter-spacing: 0;
}

.datagrid-sort-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.datagrid-sort-link:hover {
  color: var(--swp-text-primary);
}
.datagrid-sort-link.sorted {
  color: var(--swp-primary);
}
.datagrid-sort-link .datagrid-sort-icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  opacity: 0.35;
  transition: opacity var(--swp-transition-fast);
}
.datagrid-sort-link .datagrid-sort-icon.is-active {
  opacity: 1;
}
.datagrid-sort-link:hover .datagrid-sort-icon {
  opacity: 1;
}

.datagrid-row-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--swp-space-1);
}

.datagrid-table tbody .datagrid-row-actions {
  opacity: 0;
  transition: opacity var(--swp-transition-fast);
}
.datagrid-table tbody tr:hover .datagrid-row-actions,
.datagrid-table tbody tr:focus-within .datagrid-row-actions {
  opacity: 1;
}

@media (hover: none) {
  .datagrid-table tbody .datagrid-row-actions {
    opacity: 1;
  }
}
.datagrid-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-action-btn svg {
  width: 18px;
  height: 18px;
}
.datagrid-action-btn:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.datagrid-action-btn.action-view:hover {
  color: var(--swp-info);
  background: var(--swp-info-lighter);
}
.datagrid-action-btn.action-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.datagrid-action-btn.action-delete:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}

.datagrid-more-btn {
  opacity: 0.6;
  transition: opacity var(--swp-transition-fast), color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-more-btn:hover, .datagrid-more-btn[aria-expanded=true] {
  opacity: 1;
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}

.datagrid-more-menu .dropdown-menu {
  min-width: 160px;
  padding: var(--swp-space-1);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-md);
}
.datagrid-more-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-more-menu .dropdown-item svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}
.datagrid-more-menu .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-more-menu .dropdown-item.text-danger {
  color: var(--swp-danger);
}
.datagrid-more-menu .dropdown-item.text-danger svg {
  color: var(--swp-danger);
}
.datagrid-more-menu .dropdown-item.text-danger:hover {
  background: var(--swp-danger-lighter);
}
.datagrid-more-menu .dropdown-divider {
  margin: var(--swp-space-1) 0;
}

tbody tr:not(:hover) .datagrid-more-btn {
  opacity: 0;
}

tbody tr:hover .datagrid-more-btn,
.datagrid-more-menu.show .datagrid-more-btn {
  opacity: 0.6;
}

.datagrid-checkbox {
  display: flex;
  align-items: center;
  justify-content: center;
}
.datagrid-checkbox input[type=checkbox] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--swp-primary);
  cursor: pointer;
}

.datagrid-empty {
  padding: var(--swp-space-16) var(--swp-space-6);
  text-align: center;
}

.datagrid-empty-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  margin: 0 auto var(--swp-space-6);
  color: var(--swp-gray-300);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-full);
}
.datagrid-empty-icon svg {
  width: 40px;
  height: 40px;
}

.datagrid-empty-title {
  margin: 0 0 var(--swp-space-2);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.datagrid-empty-message {
  margin: 0 0 var(--swp-space-6);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
}

.datagrid-empty-action {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.datagrid-bulk-bar {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(100px);
  z-index: 9999;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s 300ms;
}
.datagrid-bulk-bar.visible {
  transform: translateX(-50%) translateY(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s;
}

.datagrid-bulk-bar-inner {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-3) var(--swp-space-6);
  background: var(--swp-gray-900);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
}

.datagrid-bulk-count {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-inverse);
  white-space: nowrap;
}
.datagrid-bulk-count .count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--swp-space-2);
  margin-right: var(--swp-space-1);
  font-size: var(--swp-text-xs);
  color: var(--swp-gray-900);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}

.datagrid-bulk-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.datagrid-bulk-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: background-color var(--swp-transition-fast);
}
.datagrid-bulk-btn svg {
  width: 16px;
  height: 16px;
}
.datagrid-bulk-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}
.datagrid-bulk-btn.btn-danger {
  color: var(--swp-danger-light);
}
.datagrid-bulk-btn.btn-danger:hover {
  background: rgba(239, 68, 68, 0.2);
}

.datagrid-bulk-divider {
  width: 1px;
  height: 24px;
  background: rgba(255, 255, 255, 0.2);
}

.datagrid-bulk-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--swp-gray-400);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-bulk-close svg {
  width: 18px;
  height: 18px;
}
.datagrid-bulk-close:hover {
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
}

.datagrid-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}
@media (width <= 768px) {
  .datagrid-footer {
    flex-direction: column;
    gap: var(--swp-space-3);
  }
}

.datagrid-footer-info {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.datagrid-per-page {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.datagrid-per-page select {
  padding: var(--swp-space-1-5) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
}
.datagrid-per-page select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  outline: none;
}

.datagrid-pagination .pagination {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.datagrid-pagination .page-item .page-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-pagination .page-item .page-link:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border);
}
.datagrid-pagination .page-item.active .page-link {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary-light);
  font-weight: var(--swp-font-medium);
}
.datagrid-pagination .page-item.disabled .page-link {
  color: var(--swp-text-light);
  cursor: not-allowed;
  pointer-events: none;
}

.datagrid-status {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-0-5) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
  border-radius: var(--swp-radius-sm);
}
.datagrid-status.status-success {
  color: #065f46;
  background: var(--swp-success-lighter);
}
.datagrid-status.status-danger {
  color: #991b1b;
  background: var(--swp-danger-lighter);
}
.datagrid-status.status-warning {
  color: #92400e;
  background: var(--swp-warning-lighter);
}
.datagrid-status.status-info {
  color: #1e40af;
  background: var(--swp-info-lighter);
}
.datagrid-status.status-primary {
  color: var(--swp-primary-dark);
  background: var(--swp-primary-lighter);
}
.datagrid-status.status-secondary {
  color: var(--swp-gray-700);
  background: var(--swp-gray-100);
}

.datagrid-relative-date {
  cursor: help;
  text-decoration: underline dotted var(--swp-border-dark);
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.datagrid-loading {
  position: relative;
}
.datagrid-loading::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.7);
  z-index: 10;
}

.datagrid-loading-indicator {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 11;
}

@media (width <= 768px) {
  .datagrid-header {
    flex-direction: column;
    align-items: stretch;
  }
  .datagrid-search {
    max-width: none;
  }
  .datagrid-table th,
  .datagrid-table td {
    padding: var(--swp-space-2) var(--swp-space-3);
  }
  .datagrid-bulk-bar {
    right: var(--swp-space-3);
    left: var(--swp-space-3);
    transform: translateY(100px);
  }
  .datagrid-bulk-bar.visible {
    transform: translateY(0);
  }
  .datagrid-bulk-bar-inner {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
  }
  .datagrid-bulk-actions {
    flex-wrap: wrap;
    justify-content: center;
  }
  .datagrid-bulk-divider {
    display: none;
  }
}
.datagrid-table .col-expand {
  width: 40px;
  text-align: center;
  padding-right: var(--swp-space-2);
}

.datagrid-expand-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-expand-btn span {
  display: inline-flex;
  transition: transform 200ms ease;
}
.datagrid-expand-btn:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}

.datagrid-detail-row {
  display: none;
  background: var(--swp-gray-50);
}
.datagrid-detail-row.visible {
  display: table-row;
}
.datagrid-detail-row td {
  padding: 0;
  border-bottom: none;
}

.datagrid-detail-content {
  padding: var(--swp-space-4) var(--swp-space-6);
  animation: datagrid-slide-down 200ms ease;
}
.datagrid-detail-content .card {
  box-shadow: none;
  border: 1px solid var(--swp-border-light);
}

@keyframes datagrid-slide-down {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.api-token-history h4 {
  font-size: 1rem;
  font-weight: var(--swp-font-weight-semibold);
  color: var(--swp-text-primary);
}
.api-token-history .table {
  margin-bottom: 0;
  background: var(--swp-white);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.api-token-history .table thead th {
  font-size: 0.75rem;
  font-weight: var(--swp-font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border-light);
  padding: var(--swp-space-2) var(--swp-space-3);
}
.api-token-history .table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.api-token-history .table tbody tr:hover {
  background-color: var(--swp-surface-hover);
}
.api-token-history .table tbody tr td {
  padding: var(--swp-space-2) var(--swp-space-3);
  vertical-align: middle;
  font-size: 0.875rem;
  border-bottom: 1px solid var(--swp-border-light);
}
.api-token-history .table tbody tr:last-child td {
  border-bottom: none;
}
.api-token-history .badge {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  font-weight: var(--swp-font-weight-medium);
}

/**
 * Augias - Client Form Styles
 *
 * Client-specific styles for the client creation/edit form.
 * Outer form-page layout uses shared classes from _form-page.scss.
 */
.client-form-section-optional {
  background: var(--swp-gray-50);
  border-style: dashed;
}
.client-form-section-optional .section-header {
  background: transparent;
}

.section-icon-required {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
}

.section-header-toggle {
  cursor: pointer;
  user-select: none;
}
.section-header-toggle:hover {
  background: var(--swp-gray-100);
}
.section-header-toggle:focus-visible {
  outline: 2px solid var(--swp-primary);
  outline-offset: -2px;
}
.section-header-toggle .section-toggle-icon {
  display: flex;
  align-items: center;
  color: var(--swp-text-muted);
  margin-left: auto;
  align-self: center;
  transition: transform var(--swp-transition-fast);
  flex-shrink: 0;
}
.section-header-toggle[aria-expanded=true] .section-toggle-icon {
  transform: rotate(180deg);
}

.role-picker {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-3);
}

.role-picker .form-switch-field {
  flex: 1 1 200px;
  margin-top: 0 !important;
}
.role-picker .form-switch-field:has(.form-check-input:checked) {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.contact-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.contact-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.contact-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
}

.contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-full);
  color: var(--swp-primary);
}

.contact-card-title {
  flex: 1;
}

.contact-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.contact-card-actions {
  display: flex;
  gap: var(--swp-space-2);
}

.contact-card-body {
  padding: var(--swp-space-4);
}

.contact-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}
@media (width <= 576px) {
  .contact-form-grid {
    grid-template-columns: 1fr;
  }
}

.contact-field-email {
  grid-column: 1/-1;
}

.additional-details-section {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.additional-details-header {
  margin-bottom: var(--swp-space-3);
}

.additional-details-label {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
}

.additional-details-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.additional-detail-row {
  display: grid;
  grid-template-columns: 140px 1fr auto;
  gap: var(--swp-space-2);
  align-items: start;
}
@media (width <= 576px) {
  .additional-detail-row {
    grid-template-columns: 1fr;
    gap: var(--swp-space-2);
  }
  .additional-detail-row .additional-detail-action {
    justify-self: end;
  }
}

.additional-detail-action {
  display: flex;
  align-items: center;
  padding-top: var(--swp-space-1);
}

.additional-details-add {
  margin-top: var(--swp-space-3);
}

.add-detail-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm);
}

.addresses-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.address-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.address-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.address-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.address-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-info-light);
  border-radius: var(--swp-radius-full);
  color: var(--swp-info);
}

.address-card-title {
  flex: 1;
}

.address-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.address-card-actions {
  display: flex;
  gap: var(--swp-space-2);
}

.address-card-body {
  padding: var(--swp-space-4);
}

.address-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}
@media (width <= 576px) {
  .address-form-grid {
    grid-template-columns: 1fr;
  }
}

.add-item-action {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.add-item-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-4);
  font-weight: var(--swp-font-medium);
  border-style: dashed;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-primary-lighter);
  border-style: solid;
}
.add-item-btn::before {
  content: "+";
  font-size: 1.25em;
  font-weight: 300;
}

@keyframes client-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.contact-card,
.address-card {
  animation: client-slide-in 0.2s ease-out;
}

.contacts-list:empty::before,
.addresses-list:empty::before {
  content: "";
  display: none;
}

.empty-contacts-hint,
.empty-addresses-hint {
  padding: var(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.empty-contacts-hint p,
.empty-addresses-hint p {
  font-size: var(--swp-text-sm);
}

/**
 * Augias - Billing Form Styles
 *
 * Modern, clean invoice creation form with 2-column layout,
 * sticky totals sidebar, and collapsible sections.
 * Uses design system tokens for consistent styling.
 */
.billing-form-page {
  min-height: 100%;
}

.billing-form-container {
  max-width: 1100px;
  margin: 0 auto;
  padding-bottom: var(--swp-space-24);
}

.billing-form-header {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-6) 0;
}

.billing-form-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.billing-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.billing-form-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.billing-form-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.billing-details-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  padding: var(--swp-space-6);
  margin-bottom: var(--swp-space-6);
  transition: box-shadow var(--swp-transition-base);
}
.billing-details-section:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.billing-details-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-6);
}
@media (width <= 768px) {
  .billing-details-grid {
    grid-template-columns: 1fr;
  }
}
.billing-details-grid--no-dates .billing-details-right {
  justify-content: flex-start;
  padding-top: var(--swp-space-2);
}

.billing-details-left {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.billing-details-right {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.billing-id-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.billing-id-display .billing-id-label {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.billing-id-display .billing-id-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
}
.billing-id-display .billing-id-edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--swp-radius-sm);
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.billing-id-display .billing-id-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-light);
}

.billing-id-form {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.billing-id-form .form-control {
  max-width: 200px;
}
.billing-id-form .btn {
  padding: var(--swp-space-2);
}

.invoice-dates-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-4);
}
@media (width <= 576px) {
  .invoice-dates-row {
    grid-template-columns: 1fr;
  }
}

.client-selection {
  margin-bottom: var(--swp-space-4);
}

.selected-client-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  animation: billing-slide-in 0.2s ease-out;
}

.selected-client-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-3);
}

.selected-client-name {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.selected-client-change {
  font-size: var(--swp-text-sm);
  color: var(--swp-primary);
  text-decoration: none;
}
.selected-client-change:hover {
  text-decoration: underline;
}

.selected-client-contacts {
  border-top: 1px dashed var(--swp-border);
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
}

.contacts-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.contact-checkbox {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-sm);
  transition: background var(--swp-transition-fast);
}
.contact-checkbox:hover {
  background: var(--swp-gray-100);
}
.contact-checkbox .form-check-input {
  margin: 0;
}
.contact-checkbox .contact-name {
  font-weight: var(--swp-font-medium);
}
.contact-checkbox .contact-email {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.billing-form-main {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: var(--swp-space-6);
  align-items: start;
}
@media (width <= 1100px) {
  .billing-form-main {
    grid-template-columns: 1fr 280px;
  }
}
@media (width <= 900px) {
  .billing-form-main {
    grid-template-columns: 1fr;
  }
}

.billing-items-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.billing-items-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.billing-items-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
}

.billing-items-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-items-body {
  padding: var(--swp-space-4);
}

.billing-items-list {
  margin-bottom: var(--swp-space-4);
}

.billing-items-header-row {
  display: grid;
  grid-template-columns: minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border);
}
.billing-items-header-row > div {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  white-space: nowrap;
}
.billing-items-header-row .column-total {
  text-align: right;
}
.billing-items-header-row .column-actions {
  text-align: center;
}
@media (width <= 900px) {
  .billing-items-header-row {
    display: none;
  }
}

.billing-items-list:not(:has(.column-tax)) .billing-items-header-row {
  grid-template-columns: minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
.billing-items-list:not(:has(.column-tax)) .billing-item-row {
  grid-template-columns: minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:not(:has(.column-tax)) .billing-item-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-items-header-row,
.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
  grid-template-columns: minmax(0, 3.2fr) minmax(130px, 1.1fr) 56px minmax(80px, 0.5fr) minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.billing-item-row {
  display: grid;
  grid-template-columns: minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border-light);
  align-items: start;
  transition: background var(--swp-transition-fast);
}
.billing-item-row > div {
  min-width: 0;
}
.billing-item-row:hover {
  background: var(--swp-gray-50);
}
.billing-item-row:last-child {
  border-bottom: none;
}
.billing-item-row .column-description {
  min-width: 0;
  overflow: hidden;
}
.billing-item-row .column-description textarea {
  min-height: 60px;
  resize: vertical;
  width: 100%;
  max-width: 100%;
}
.billing-item-row .item-supply-type {
  margin-top: 0.5rem;
  max-width: 10rem;
}
.billing-item-row .item-disbursement-check {
  margin-top: 0.5rem;
}
.billing-item-row .item-disbursement-check .form-text {
  font-size: 0.75rem;
}
.billing-item-row .column-price input,
.billing-item-row .column-price select,
.billing-item-row .column-qty input,
.billing-item-row .column-qty select,
.billing-item-row .column-tax input,
.billing-item-row .column-tax select {
  width: 100%;
}
.billing-item-row .column-price .input-group-text {
  padding: 0.25rem 0.4rem;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-color: var(--swp-border-light);
}
.billing-item-row .column-price input {
  min-width: 0;
}
.billing-item-row .column-qty input {
  text-align: center;
}
.billing-item-row .column-total {
  text-align: right;
  padding-top: var(--swp-space-1);
}
.billing-item-row .column-total .item-total-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.billing-item-row .column-actions {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 0;
}
.billing-item-row .mobile-label {
  display: none;
}
@media (width <= 900px) {
  .billing-item-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-areas: "desc desc" "price qty" "tax tax" "actions total";
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border: 1px solid var(--swp-border);
    border-radius: var(--swp-radius-md);
  }
  .billing-item-row:hover {
    background: var(--swp-gray-50);
  }
  .billing-item-row:last-child {
    border-bottom: 1px solid var(--swp-border);
  }
  .billing-item-row .mobile-label {
    display: block;
    font-size: var(--swp-text-xs);
    font-weight: var(--swp-font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    margin-bottom: var(--swp-space-1);
  }
  .billing-item-row .column-description {
    grid-area: desc;
  }
  .billing-item-row .column-description textarea {
    width: 100%;
    min-height: 80px;
  }
  .billing-item-row .column-price {
    grid-area: price;
  }
  .billing-item-row .column-price input {
    width: 100%;
  }
  .billing-item-row .column-qty {
    grid-area: qty;
  }
  .billing-item-row .column-qty input {
    width: 100%;
  }
  .billing-item-row .column-tax {
    grid-area: tax;
  }
  .billing-item-row .column-tax select {
    width: 100%;
  }
  .billing-item-row .column-actions {
    grid-area: actions;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-total {
    grid-area: total;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--swp-space-2);
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-total .mobile-label {
    display: inline;
    margin-bottom: 0;
  }
  .billing-item-row .column-total .item-total-value {
    font-size: var(--swp-text-lg);
    font-weight: var(--swp-font-semibold);
    color: var(--swp-primary);
  }
}

.remove-item-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  border: 1px solid var(--swp-border);
  background: var(--swp-surface);
  color: var(--swp-text-muted);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.remove-item-btn svg {
  width: 12px;
  height: 12px;
}
.remove-item-btn:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger);
}
.remove-item-btn:focus {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

.add-item-action {
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.add-item-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: var(--swp-space-2);
  font-weight: var(--swp-font-medium);
  color: var(--swp-primary);
  background: transparent;
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  border-style: solid;
}

.line-tax-collection {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  min-width: 0;
}

.line-tax-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.line-tax-row {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.line-tax-field-tax {
  flex: 1 1 auto;
  min-width: 0;
}
.line-tax-field-tax select,
.line-tax-field-tax .form-select {
  width: 100%;
  min-width: 0;
  padding: 4px 22px 4px 8px;
  font-size: var(--swp-text-xs);
  line-height: 1.2;
  background-position: right 6px center;
  background-size: 12px;
}

.line-tax-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
}

.line-tax-remove-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  color: var(--swp-text-muted);
  background: transparent;
  border: 0;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background var(--swp-transition-fast);
}
.line-tax-remove-btn svg {
  width: 12px;
  height: 12px;
}
.line-tax-remove-btn:hover {
  color: var(--swp-danger);
  background: rgba(var(--swp-danger-rgb), 0.08);
}

.line-tax-add-btn {
  align-self: flex-start;
  padding: 2px 8px;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  line-height: 1.4;
  color: var(--swp-primary);
  background: transparent;
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.line-tax-add-btn:hover {
  color: var(--swp-primary-dark);
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}

.billing-invoice-taxes {
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6) var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.billing-invoice-taxes-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-3);
}

.billing-invoice-taxes-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-invoice-taxes-subtitle {
  flex-basis: 100%;
  margin: 0;
  font-size: var(--swp-text-sm);
}

.billing-invoice-taxes-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-3);
}

.billing-invoice-tax-row {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 3fr) auto;
  gap: var(--swp-space-3);
  align-items: start;
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
@media (width <= 768px) {
  .billing-invoice-tax-row {
    grid-template-columns: 1fr;
  }
}

.invoice-tax-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}
.invoice-tax-field .mobile-label {
  display: none;
  font-size: var(--swp-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--swp-text-muted);
}
@media (width <= 768px) {
  .invoice-tax-field .mobile-label {
    display: block;
  }
}

.invoice-tax-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.billing-totals-sidebar {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 992px) {
  .billing-totals-sidebar {
    position: static;
  }
}

.billing-totals-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.billing-totals-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.billing-totals-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-success-light) 0%, rgba(var(--swp-success-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-success);
}

.billing-totals-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-totals-body {
  padding: var(--swp-space-5);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-3) 0;
}
.totals-row:not(:last-child) {
  border-bottom: 1px solid var(--swp-border-light);
}

.totals-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
}

.totals-value {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.totals-row-total {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-dark);
}
.totals-row-total .totals-label {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.totals-row-total .totals-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.discount-field {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}
.discount-field .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
}

.billing-terms-section {
  margin-top: var(--swp-space-6);
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}
.billing-terms-section[open] {
  background: var(--swp-surface);
  border-style: solid;
}
.billing-terms-section[open] .terms-summary {
  border-bottom: 1px solid var(--swp-border-light);
}
.billing-terms-section[open] .terms-summary-icon {
  transform: rotate(90deg);
}

.terms-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  cursor: pointer;
  list-style: none;
  transition: background var(--swp-transition-fast);
}
.terms-summary::-webkit-details-marker {
  display: none;
}
.terms-summary:hover {
  background: var(--swp-gray-100);
}

.terms-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  color: var(--swp-text-muted);
  transition: transform var(--swp-transition-fast);
}

.terms-summary-text {
  flex: 1;
}

.terms-summary-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.terms-content {
  padding: var(--swp-space-6);
}

.terms-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .terms-grid {
    grid-template-columns: 1fr;
  }
}

.billing-form-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.billing-form-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 var(--swp-space-4);
}
@media (width <= 576px) {
  .billing-form-actions-inner {
    flex-direction: column-reverse;
    align-items: stretch;
  }
  .billing-form-actions-inner .btn,
  .billing-form-actions-inner .save-button-group {
    width: 100%;
  }
  .billing-form-actions-inner .save-button-group {
    display: flex;
  }
  .billing-form-actions-inner .save-button-group .btn-save-primary {
    flex: 1 1 auto;
  }
}

.save-button-group {
  box-shadow: var(--swp-shadow-primary);
  border-radius: var(--swp-radius-md);
}
.save-button-group .btn-save-primary {
  box-shadow: none;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.save-button-group .btn-save-primary:hover {
  box-shadow: none;
  transform: none;
}
.save-button-group .dropdown-toggle-split {
  padding: var(--swp-space-3) var(--swp-space-3);
  border-left: 1px solid rgba(255, 255, 255, 0.2);
}
.save-button-group .dropdown-toggle-split::after {
  vertical-align: middle;
}
.save-button-group .dropdown-menu {
  min-width: 180px;
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-lg);
  border: 1px solid var(--swp-border);
}
.save-button-group .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-fast);
}
.save-button-group .dropdown-item svg {
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}
.save-button-group .dropdown-item:hover {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
}
.save-button-group .dropdown-item:hover svg {
  color: var(--swp-primary);
}
.save-button-group:hover {
  box-shadow: var(--swp-shadow-primary-lg);
}

@media (width <= 768px) {
  .billing-items-table {
    display: none;
  }
  .billing-items-cards {
    display: flex;
    flex-direction: column;
    gap: var(--swp-space-4);
  }
}
@media (width >= 769px) {
  .billing-items-cards {
    display: none;
  }
}
.billing-item-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  animation: billing-slide-in 0.2s ease-out;
}
.billing-item-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.billing-item-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-3);
}

.billing-item-card-number {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
}

.billing-item-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.billing-item-card-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--swp-space-3);
}

.billing-item-card-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
  border-top: 1px dashed var(--swp-border);
}
.billing-item-card-total .item-total-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.billing-item-card-total .item-total-value {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
}

@keyframes billing-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (width <= 768px) {
  .billing-form-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-20);
  }
  .billing-form-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-space-4) 0;
  }
  .billing-form-icon {
    width: 48px;
    height: 48px;
  }
  .billing-form-title {
    font-size: 1.5rem;
  }
  .billing-details-section,
  .billing-items-section,
  .billing-totals-card {
    border-radius: var(--swp-radius-md);
  }
  .billing-form-actions-inner {
    gap: var(--swp-space-3);
  }
  .billing-form-actions-inner .btn {
    flex: 1;
  }
  .billing-id-display {
    flex-wrap: wrap;
  }
  .billing-id-display .billing-id-label,
  .billing-id-display .billing-id-value {
    font-size: var(--swp-text-xl);
  }
}
.recurring-schedule-section {
  margin-block: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
}
.recurring-schedule-section .section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  margin-block-end: var(--swp-space-5);
  padding-block-end: var(--swp-space-4);
  border-block-end: 1px solid var(--swp-border-light);
}
.recurring-schedule-section .section-header .section-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--swp-radius-md);
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-primary-dark) 100%);
  color: #ffffff;
  flex-shrink: 0;
}
.recurring-schedule-section .section-header .section-header-content {
  flex: 1;
}
.recurring-schedule-section .section-header .section-header-content .section-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1) 0;
}
.recurring-schedule-section .section-header .section-header-content .section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin: 0;
}
.recurring-schedule-section .recurring-schedule-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--swp-space-3);
  margin-block-start: var(--swp-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
    grid-template-columns: repeat(2, 1fr);
  }
}
.recurring-options-wrapper [id$=_type] .form-check-label.required::after, .recurring-options-wrapper [id$=_endType] .form-check-label.required::after {
  display: none;
}
.recurring-options-wrapper [id$=_type] > .form-check, .recurring-options-wrapper [id$=_endType] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio], .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check label, .recurring-options-wrapper [id$=_endType] > .form-check label {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-3);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  transition: all 0.2s ease;
  min-height: 70px;
  cursor: pointer;
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  text-align: center;
}
.recurring-options-wrapper [id$=_type] > .form-check:hover label, .recurring-options-wrapper [id$=_endType] > .form-check:hover label {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio]:checked + label, .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff;
}
.recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
}
.recurring-options-wrapper [id$=_days] {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
  gap: var(--swp-space-2);
  margin-block-start: var(--swp-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_days] {
    grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
  }
}
.recurring-options-wrapper [id$=_days] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check label {
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-3) var(--swp-space-2);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary) !important;
  transition: all 0.2s ease;
  min-height: 44px;
  text-align: center;
  cursor: pointer;
  margin: 0;
  opacity: 1 !important;
  visibility: visible !important;
}
.recurring-options-wrapper [id$=_days] > .form-check label::before, .recurring-options-wrapper [id$=_days] > .form-check label::after {
  content: none !important;
}
.recurring-options-wrapper [id$=_days] > .form-check:hover label {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff !important;
}

.recurring-frequency-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: linear-gradient(135deg, var(--swp-primary-lighter) 0%, rgba(var(--swp-primary-rgb), 0.05) 100%);
  border: 1px solid rgba(var(--swp-primary-rgb), 0.2);
  border-radius: var(--swp-radius-md);
}
.recurring-frequency-display .recurring-frequency-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.recurring-frequency-display .recurring-frequency-text {
  flex: 1;
  font-size: var(--swp-text-base);
  color: var(--swp-text-primary);
}
.recurring-frequency-display .recurring-frequency-text strong {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
}

.recurring-variables-help {
  margin-block-start: var(--swp-space-3);
  padding: var(--swp-space-3);
  border: 1px solid var(--swp-info-border-subtle);
  border-radius: var(--swp-radius-md);
  background: var(--swp-info-bg-subtle);
}
.recurring-variables-help .variables-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-info);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.recurring-variables-help .variables-summary::-webkit-details-marker {
  display: none;
}
.recurring-variables-help .variables-summary svg {
  flex-shrink: 0;
}
.recurring-variables-help .variables-summary:hover {
  color: var(--swp-info-emphasis);
}
.recurring-variables-help .variables-content {
  margin-block-start: var(--swp-space-3);
  padding-block-start: var(--swp-space-3);
  border-block-start: 1px solid var(--swp-info-border-subtle);
}
.recurring-variables-help .variables-content .variables-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-block-end: var(--swp-space-3);
}
.recurring-variables-help .variables-content .variables-list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--swp-space-3) 0;
}
.recurring-variables-help .variables-content .variables-list li {
  display: flex;
  align-items: baseline;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) 0;
  font-size: var(--swp-text-sm);
  line-height: 1.6;
}
.recurring-variables-help .variables-content .variables-list li code {
  padding: 2px 8px;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-primary);
  font-weight: var(--swp-font-medium);
  white-space: nowrap;
}
.recurring-variables-help .variables-content .variables-list li .variable-description {
  color: var(--swp-text-muted);
}
.recurring-variables-help .variables-content .variable-example {
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border-inline-start: 3px solid var(--swp-info);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm);
}
.recurring-variables-help .variables-content .variable-example strong {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-semibold);
}
.recurring-variables-help .variables-content .variable-example .example-text {
  display: block;
  margin-block-start: var(--swp-space-2);
  color: var(--swp-text-secondary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
}
.recurring-variables-help[open] .variables-summary {
  margin-block-end: 0;
}

.invoice-sidebar-card-highlight {
  border-left: 3px solid var(--swp-primary);
  background: linear-gradient(to right, rgba(var(--swp-primary-rgb), 0.03), transparent);
}

.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.recurring-schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: var(--swp-space-2) 0;
}
.recurring-schedule-item:not(:last-child) {
  border-bottom: 1px solid var(--swp-border-light);
}

.recurring-schedule-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-secondary);
}

.recurring-schedule-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  text-align: right;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.occurrence-item:hover {
  background: var(--swp-surface);
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  transform: translateX(2px);
}

.occurrence-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.occurrence-date {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.generated-invoice-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.generated-invoice-item:hover {
  background: var(--swp-surface);
  border-color: rgba(var(--swp-primary-rgb), 0.3);
}

.generated-invoice-link {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex: 1;
  min-width: 0;
  text-decoration: none;
  color: var(--swp-text-primary);
  transition: color var(--swp-transition-fast);
}
.generated-invoice-link:hover {
  color: var(--swp-primary);
}
.generated-invoice-link:hover .generated-invoice-number {
  color: var(--swp-primary);
}

.generated-invoice-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: var(--swp-success-lighter);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-success);
  flex-shrink: 0;
}

.generated-invoice-number {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  transition: color var(--swp-transition-fast);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.generated-invoice-total {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  white-space: nowrap;
}

.view-all-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  margin-top: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-primary);
  text-decoration: none;
  background: var(--swp-primary-lighter);
  border: 1px solid rgba(var(--swp-primary-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.view-all-link:hover {
  background: rgba(var(--swp-primary-rgb), 0.15);
  border-color: var(--swp-primary);
  transform: translateY(-1px);
}

/**
 * Augias - Payment Page Styles
 *
 * Modern, clean payment page with two-column layout,
 * card-based payment method selection, and invoice summary.
 * Uses design system tokens for consistent styling.
 */
.payment-page {
  min-height: 100%;
}

.payment-container {
  max-width: 1200px;
  margin: 0 auto;
  padding-bottom: var(--swp-space-12);
}

.payment-header {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-6) 0;
}

.payment-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.payment-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.payment-header-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.payment-header-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.payment-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-6);
  align-items: start;
}
@media (width <= 992px) {
  .payment-layout {
    grid-template-columns: 1fr;
  }
}

.payment-invoice-summary {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 992px) {
  .payment-invoice-summary {
    position: static;
    order: 2;
  }
}

.invoice-summary-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.invoice-summary-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.invoice-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-info-light) 0%, rgba(var(--swp-info-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-info);
}

.invoice-summary-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.invoice-summary-body {
  padding: var(--swp-space-5);
}

.summary-section {
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.summary-section:first-child {
  padding-top: 0;
}
.summary-section:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.summary-section-label {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

.summary-client-info {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}
.summary-client-info .client-name {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.client-credit-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1-5) var(--swp-space-3);
  margin-top: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-success);
  background: var(--swp-success-lighter);
  border-radius: var(--swp-radius-full);
}

.invoice-details-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.detail-label {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.detail-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.line-items-preview {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.line-item-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.line-item-desc {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 60%;
}

.line-item-amount {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.summary-totals {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border);
}

.summary-totals .totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-2) 0;
}

.summary-totals .totals-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
}

.summary-totals .totals-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.summary-totals .totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.summary-totals .totals-row-payment .totals-value {
  color: var(--swp-success);
}

.summary-totals .totals-row-balance {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-dark);
}
.summary-totals .totals-row-balance .totals-label {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.summary-totals .totals-row-balance .totals-value {
  font-size: var(--swp-text-xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

@media (width <= 992px) {
  .payment-form-section {
    order: 1;
  }
}

.payment-form-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.payment-form-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.payment-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-success-light) 0%, rgba(var(--swp-success-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-success);
}

.payment-form-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-form-body {
  padding: var(--swp-space-5);
}

.payment-form-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border-light);
}

.payment-form-body .form-label {
  display: block;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.payment-form-body .form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}
.payment-form-body .form-text {
  display: block;
  margin-top: var(--swp-space-2);
}
.payment-form-body .input-group {
  flex-wrap: nowrap;
}
.payment-form-body textarea.form-control {
  min-height: 80px;
  resize: vertical;
}
.payment-form-body .mb-4:last-child {
  margin-bottom: 0 !important;
}

.payment-methods-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--swp-space-3);
}

.payment-method-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.payment-method-card:hover {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.payment-method-card:has(.payment-method-input:checked) {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-ring-primary);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-check {
  opacity: 1;
  transform: scale(1);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-icon {
  background: var(--swp-primary);
  color: #ffffff;
}
.payment-method-card:has(.payment-method-input:focus-visible) {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

.payment-method-preferred {
  order: -1;
}

.payment-method-input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.payment-method-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  flex: 1;
}

.payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-secondary);
  transition: all var(--swp-transition-fast);
}

.payment-method-name {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.payment-method-badge {
  display: inline-flex;
  align-self: flex-start;
  padding: 2px 8px;
  font-size: 10px;
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-200);
  border-radius: var(--swp-radius-full);
}

.payment-method-badge-online {
  color: var(--swp-info);
  background: var(--swp-info-light);
}

.payment-method-badge-credit {
  color: var(--swp-success);
  background: var(--swp-success-light);
}

.payment-method-check {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: var(--swp-primary);
  color: #ffffff;
  border-radius: var(--swp-radius-full);
  opacity: 0;
  transform: scale(0.8);
  transition: all var(--swp-transition-fast);
}

.amount-field-wrapper {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  flex-wrap: wrap;
}
.amount-field-wrapper .form-label,
.amount-field-wrapper .form-section-label {
  margin-bottom: 0;
}

.amount-balance-hint {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  white-space: nowrap;
  padding: var(--swp-space-1) var(--swp-space-2);
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-sm);
}
.amount-balance-hint strong {
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.capture-online-field {
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.capture-online-field .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  padding-left: 0;
}
.capture-online-field .form-check-input {
  float: none;
  margin-left: 0;
  margin-top: 0;
  width: 2.5rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.capture-online-field .form-check-label {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.capture-online-field .form-help {
  margin-left: 0;
  padding-left: calc(2.5rem + var(--swp-space-2));
}

[data-payment-method-select-target=captureOnline].d-none {
  display: none !important;
}

.client-name-link,
.invoice-id-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-semibold);
  transition: color var(--swp-transition-fast);
}
.client-name-link svg,
.invoice-id-link svg {
  opacity: 0.5;
  transition: opacity var(--swp-transition-fast);
}
.client-name-link:hover,
.invoice-id-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}
.client-name-link:hover svg,
.invoice-id-link:hover svg {
  opacity: 1;
}

.client-name-link {
  font-size: var(--swp-text-lg);
}

.invoice-id-link {
  font-size: var(--swp-text-sm);
  font-family: var(--swp-font-mono, monospace);
}

.payment-history-card {
  margin-top: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.payment-history-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.payment-history-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: linear-gradient(135deg, var(--swp-warning-light, #fef3c7) 0%, rgba(245, 158, 11, 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-warning, #f59e0b);
}

.payment-history-title {
  flex: 1;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-history-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-muted);
  background: var(--swp-gray-200);
  border-radius: var(--swp-radius-full);
}

.payment-history-body {
  padding: var(--swp-space-4) var(--swp-space-5);
}

.payments-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.payment-card {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border-left: 3px solid var(--swp-gray-300);
  transition: all var(--swp-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--swp-success);
  background: var(--swp-success-lighter, rgba(16, 185, 129, 0.05));
}

.payment-card-failed {
  border-left-color: var(--swp-danger);
  background: var(--swp-danger-lighter, rgba(239, 68, 68, 0.05));
}

.payment-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-2);
}

.payment-amount {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.payment-detail {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}
.payment-detail svg {
  flex-shrink: 0;
  opacity: 0.7;
}

.payment-message {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
  font-size: var(--swp-text-xs);
  font-style: italic;
  color: var(--swp-text-secondary);
}

.btn-pay {
  padding: var(--swp-space-3) var(--swp-space-6);
  font-weight: var(--swp-font-semibold);
  box-shadow: var(--swp-shadow-primary);
}
.btn-pay:hover {
  box-shadow: var(--swp-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-pay:active {
  transform: translateY(0);
}

@media (width <= 768px) {
  .payment-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-16);
  }
  .payment-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-space-4) 0;
  }
  .payment-header-icon {
    width: 48px;
    height: 48px;
  }
  .payment-header-title {
    font-size: 1.5rem;
  }
  .payment-methods-grid {
    grid-template-columns: 1fr;
  }
  .invoice-details-grid {
    grid-template-columns: 1fr;
  }
  .payment-form-footer {
    flex-direction: column-reverse;
    gap: var(--swp-space-3);
  }
  .payment-form-footer .btn {
    width: 100%;
    justify-content: center;
  }
  .amount-field-wrapper {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-1);
  }
}
/**
 * Payments List Page Styles
 *
 * Minimal styling for the payments list page with KPI cards.
 * Most styles come from Tabler/Bootstrap - this file only adds specific customizations.
 */
.row-deck .card-sm {
  transition: all 0.2s ease-in-out;
}
.row-deck .card-sm:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

/**
 * Augias - Users Page Styles
 *
 * Modern users list page with KPI cards and tabbed interface.
 * Uses design system tokens for consistent styling.
 */
.users-page {
  min-height: 100%;
}

/**
 * Augias - Profile Page Styles
 *
 * Styles for the user profile view and sidebar navigation.
 * Form pages (edit, change-password) use shared classes from _form-page.scss.
 * Includes: sidebar navigation, profile view, security status.
 */
.profile-sidebar {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 991.98px) {
  .profile-sidebar {
    position: static;
    margin-bottom: var(--swp-space-4);
  }
}

.profile-nav-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  box-shadow: var(--swp-shadow-sm);
}

.profile-nav {
  display: flex;
  flex-direction: column;
}

.profile-nav-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  color: var(--swp-text-secondary);
  text-decoration: none;
  transition: all var(--swp-transition-base);
  border-left: 3px solid transparent;
  font-size: var(--swp-text-base);
}
.profile-nav-item:hover {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  text-decoration: none;
}
.profile-nav-item.active {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  border-left-color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.profile-nav-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: currentcolor;
}

.profile-nav-text {
  flex: 1;
}

.profile-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}
@media (width <= 767.98px) {
  .profile-header {
    flex-direction: column;
    text-align: center;
    padding: var(--swp-space-5);
  }
}

.profile-avatar {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  color: var(--swp-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  flex-shrink: 0;
  letter-spacing: -0.02em;
}

.profile-header-info {
  flex: 1;
}

.profile-name {
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.025em;
}

.profile-email {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0;
}

.profile-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.profile-section:hover {
  border-color: var(--swp-border-dark);
}

.profile-section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-5) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border);
}

.profile-section-title {
  flex: 1;
  padding-top: var(--swp-space-1);
}

.profile-section-body {
  padding: var(--swp-space-6);
}

.profile-section-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
}

.profile-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-5);
}
@media (width <= 767.98px) {
  .profile-detail-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-4);
  }
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.detail-item-wide {
  grid-column: 1/-1;
}

.detail-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
}

.detail-value {
  font-size: var(--swp-text-base);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
}

.security-status {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.security-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  transition: border-color var(--swp-transition-base);
}
.security-item:hover {
  border-color: var(--swp-border-dark);
}

.security-item-info {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
}

.security-item-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--swp-radius-md);
  flex-shrink: 0;
}

.security-item-icon-success {
  background: rgba(var(--swp-success-rgb), 0.1);
  color: var(--swp-success);
}

.security-item-icon-warning {
  background: rgba(var(--swp-warning-rgb), 0.1);
  color: var(--swp-warning);
}

.security-item-content {
  flex: 1;
}

.security-item-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-0-5);
}

.security-item-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
}

.security-item-action {
  flex-shrink: 0;
  margin-left: var(--swp-space-3);
}

.google-signin-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  background: var(--swp-surface);
  border-color: var(--swp-border);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-base);
}
.google-signin-btn:hover {
  background: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
  color: var(--swp-text-primary);
  box-shadow: var(--swp-shadow-sm);
}
.google-signin-btn:active {
  transform: translateY(1px);
}
.google-signin-btn svg {
  flex-shrink: 0;
}

.password-requirements {
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  margin-bottom: var(--swp-space-6);
}

.password-requirements-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-3);
}
.password-requirements-header .section-icon {
  width: 32px;
  height: 32px;
  background: rgba(var(--swp-info-rgb), 0.15);
  color: var(--swp-info);
}
.password-requirements-header h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.password-requirements-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.password-requirements-list li {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  padding: var(--swp-space-1) 0 var(--swp-space-1) var(--swp-space-6);
  position: relative;
}
.password-requirements-list li::before {
  content: "✓";
  position: absolute;
  left: var(--swp-space-2);
  color: var(--swp-info);
  font-weight: var(--swp-font-bold);
}

@media (width >= 768px) and (width <= 991.98px) {
  .profile-sidebar {
    margin-bottom: var(--swp-space-6);
  }
}
@media (width <= 767.98px) {
  .profile-section-footer {
    flex-direction: column;
  }
  .profile-section-footer .btn {
    width: 100%;
    justify-content: center;
  }
}
@media print {
  .profile-section-footer,
  .profile-sidebar {
    display: none !important;
  }
}
/**
 * Augias - Two-Factor Authentication Styles
 *
 * Modern 2FA configuration and login pages with elegant design.
 * Matches the profile page patterns and Tabler design system.
 */
.two-factor-settings .form-page-sections {
  gap: var(--swp-space-5);
}

.two-factor-section-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-5);
}
@media (width <= 767.98px) {
  .two-factor-section-content {
    flex-direction: column;
    align-items: flex-start;
    padding: var(--swp-space-4);
  }
}

.two-factor-section-info {
  flex: 1;
}

.two-factor-section-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-shrink: 0;
}
@media (width <= 767.98px) {
  .two-factor-section-actions {
    width: 100%;
    flex-direction: column;
  }
  .two-factor-section-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

.totp-setup-container {
  padding: var(--swp-space-4) 0;
}

.setup-steps {
  display: flex;
  justify-content: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-6);
}
@media (width <= 575.98px) {
  .setup-steps {
    flex-direction: column;
    gap: var(--swp-space-2);
  }
}

.setup-steps .step {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: all var(--swp-transition-base);
}
.setup-steps .step.active {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
  box-shadow: var(--swp-shadow-sm);
}
.setup-steps .step .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: currentcolor;
  color: #ffffff;
  border-radius: var(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  opacity: 0.8;
}
.setup-steps .step.active .step-number {
  opacity: 1;
}

.qr-code-container {
  padding: var(--swp-space-6);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-5);
}
@media (width <= 575.98px) {
  .qr-code-container {
    padding: var(--swp-space-4);
  }
}

.qr-code-image {
  max-width: 300px;
  width: 100%;
  height: auto;
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: #ffffff;
  padding: var(--swp-space-3);
  box-shadow: var(--swp-shadow-sm);
}

.manual-entry-details {
  text-align: center;
}
.manual-entry-details summary {
  cursor: pointer;
  color: var(--swp-primary);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  user-select: none;
  list-style: none;
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-base);
}
.manual-entry-details summary:hover {
  background: rgba(var(--swp-primary-rgb), 0.05);
}
.manual-entry-details summary::-webkit-details-marker {
  display: none;
}
.manual-entry-details .manual-entry-content {
  margin-top: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: #ffffff;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.manual-entry-details .manual-entry-code {
  display: block;
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-lg);
  font-family: var(--swp-font-mono);
  letter-spacing: 0.1em;
  word-break: break-all;
  color: var(--swp-text-primary);
}

.verification-form-container {
  padding: var(--swp-space-4) 0;
}

.verification-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em !important;
  text-align: center;
  font-size: 1.5rem !important;
  padding: var(--swp-space-4) !important;
}
.verification-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.5;
}
.verification-code-input:focus {
  letter-spacing: 0.5em !important;
}

.backup-codes-modal-content {
  padding: var(--swp-space-2) 0;
}

.backup-codes-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
}
@media (width <= 575.98px) {
  .backup-codes-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-2);
  }
}

.backup-code-item code {
  display: block;
  padding: var(--swp-space-3);
  background: #ffffff;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  text-align: center;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  font-family: var(--swp-font-mono);
  letter-spacing: 0.05em;
  transition: all var(--swp-transition-base);
  color: var(--swp-text-primary);
}
.backup-code-item code:hover {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  transform: translateY(-2px);
}

.two-factor-login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--swp-gray-50);
  padding: var(--swp-space-4);
}

.two-factor-login-card .card {
  border: none;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  overflow: hidden;
}
.two-factor-login-card .card-status-top {
  height: 4px;
  background: var(--swp-primary);
}
.two-factor-login-card .card-body {
  padding: var(--swp-space-8) var(--swp-space-6);
}
@media (width <= 575.98px) {
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
}

.two-factor-avatar {
  width: 72px;
  height: 72px;
  margin: 0 auto var(--swp-space-4);
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--swp-primary);
  box-shadow: 0 4px 12px rgba(var(--swp-primary-rgb), 0.2);
}
.two-factor-avatar.two-factor-avatar-success {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.2) 0%, rgba(var(--swp-success-rgb), 0.1) 100%);
  color: var(--swp-success);
  box-shadow: 0 4px 12px rgba(var(--swp-success-rgb), 0.2);
}

.two-factor-login-title {
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin-bottom: var(--swp-space-2);
  text-align: center;
}

.two-factor-login-description {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-6);
  text-align: center;
}

.two-factor-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em;
  text-align: center;
  font-size: 1.75rem !important;
  padding: var(--swp-space-4) var(--swp-space-3) !important;
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  transition: all var(--swp-transition-base);
}
.two-factor-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.4;
}
.two-factor-code-input:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 4px rgba(var(--swp-primary-rgb), 0.1);
  letter-spacing: 0.5em !important;
}
@media (width <= 575.98px) {
  .two-factor-code-input {
    font-size: 1.5rem !important;
    padding: var(--swp-space-3) !important;
  }
}

.two-factor-form-hint {
  text-align: center;
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin-top: var(--swp-space-2);
}
.two-factor-form-hint a {
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-medium);
}
.two-factor-form-hint a:hover {
  text-decoration: underline;
}

.trust-device-option {
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  margin: var(--swp-space-4) 0;
}
.trust-device-option .form-check {
  margin: 0;
}
.trust-device-option .form-check-input {
  margin-top: 0.15em;
}
.trust-device-option .form-check-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
  cursor: pointer;
}

.alternative-methods {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border);
  text-align: center;
}
.alternative-methods .alternative-methods-title {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}
.alternative-methods .alternative-methods-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.alternative-methods .btn {
  width: 100%;
  justify-content: center;
}

.two-factor-security-notice {
  text-align: center;
  margin-top: var(--swp-space-4);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}

.email-resend-section {
  text-align: center;
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border-radius: var(--swp-radius-md);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
}
.email-resend-section .resend-text {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.email-resend-section .resend-link {
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-medium);
}
.email-resend-section .resend-link:hover {
  text-decoration: underline;
}
.email-resend-section .expiry-warning {
  font-size: var(--swp-text-xs);
  color: var(--swp-warning);
  margin-top: var(--swp-space-2);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
}

@media (width <= 767.98px) {
  .totp-setup-container {
    padding: var(--swp-space-2) 0;
  }
  .setup-steps {
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-container {
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-image {
    max-width: 250px;
  }
  .verification-form-container {
    padding: var(--swp-space-3) 0;
  }
  .backup-codes-grid {
    padding: var(--swp-space-3);
  }
}
@media (width <= 575.98px) {
  .qr-code-image {
    max-width: 200px;
  }
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
  .two-factor-avatar {
    width: 64px;
    height: 64px;
  }
  .two-factor-login-title {
    font-size: 1.25rem;
  }
  .two-factor-login-description {
    font-size: var(--swp-text-sm);
  }
}
.backup-code-item code:focus-visible,
.manual-entry-details summary:focus-visible {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

@media (prefers-contrast: high) {
  .qr-code-image {
    border-width: 3px;
  }
  .backup-code-item code {
    border-width: 2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .backup-code-item code,
  .setup-steps .step,
  .manual-entry-details summary,
  .two-factor-code-input {
    transition: none;
  }
}
/**
 * Augias - Notifications Page Styles
 *
 * Notification preferences page with card-based layout and category grouping.
 * Page container/header/footer use shared form-page-* classes from _form-page.scss.
 * This file contains only notification-specific styles.
 */
.integration-management-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}

.integration-management-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-5);
}

.integration-management-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.15) 0%, rgba(var(--swp-primary-rgb), 0.05) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.integration-management-info {
  flex: 1;
}

.integration-management-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
  line-height: 1.4;
}

.integration-management-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.5;
}

.integration-management-list {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  padding: 0 var(--swp-space-5) var(--swp-space-5);
  border-top: 1px solid var(--swp-border);
  padding-top: var(--swp-space-4);
}

.integration-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  white-space: nowrap;
}
.integration-badge svg {
  flex-shrink: 0;
  color: var(--swp-primary);
}

.notification-groups {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--swp-space-6);
  margin-bottom: var(--swp-space-6);
}

.notification-group {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.group-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 var(--swp-space-2);
}
.group-title svg {
  color: var(--swp-primary);
  flex-shrink: 0;
}

.notification-cards {
  display: grid;
  gap: var(--swp-space-3);
}

.notification-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4) var(--swp-space-4);
  transition: all var(--swp-transition-base);
}
.notification-card:hover {
  border-color: var(--swp-border-dark);
  box-shadow: var(--swp-shadow-sm);
}
.notification-card:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.notification-card-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
  min-width: 0;
}

.notification-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.08) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.notification-card-info {
  flex: 1;
  min-width: 0;
}

.notification-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-0-5);
  line-height: 1.4;
}

.notification-description {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.4;
}

.notification-card-channels {
  flex-shrink: 0;
}

.notification-card-channels .form-check {
  margin: 0;
  padding: 0;
  min-height: auto;
  position: relative;
}
.notification-card-channels .form-check .form-check-input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
.notification-card-channels .form-check .form-check-input:focus + .form-check-label {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.notification-card-channels .form-check .form-check-label {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-1-5) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  cursor: pointer;
  transition: all var(--swp-transition-base);
  margin: 0;
  white-space: nowrap;
  user-select: none;
}
.notification-card-channels .form-check .form-check-label:hover {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  color: var(--swp-text-primary);
}
.notification-card-channels .form-check .form-check-input:checked + .form-check-label {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

@media (width <= 767.98px) {
  .integration-management-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
  }
  .integration-management-header .btn {
    width: 100%;
    justify-content: center;
  }
  .integration-management-list {
    padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-4);
  }
  .notification-groups {
    gap: var(--swp-space-5);
  }
  .group-title {
    font-size: var(--swp-text-xs);
  }
  .group-title svg {
    width: 16px;
    height: 16px;
  }
  .notification-card {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
    padding: var(--swp-space-3);
  }
  .notification-card-content {
    gap: var(--swp-space-2-5);
  }
  .notification-card-icon {
    width: 32px;
    height: 32px;
  }
  .notification-card-icon svg {
    width: 16px;
    height: 16px;
  }
  .notification-title {
    font-size: var(--swp-text-sm);
  }
  .notification-description {
    font-size: var(--swp-text-xs);
  }
  .notification-card-channels .notification-channels-list {
    flex-direction: column;
    gap: var(--swp-space-1-5);
  }
  .notification-card-channels .form-check .form-check-label {
    width: 100%;
    padding: var(--swp-space-2-5) var(--swp-space-3);
    font-size: var(--swp-text-sm);
    min-height: 44px;
  }
  .notifications-empty-state {
    padding: var(--swp-space-8) var(--swp-space-4);
  }
  .notifications-empty-state .empty-state-icon {
    width: 64px;
    height: 64px;
  }
  .notifications-empty-state .empty-state-icon svg {
    width: 48px;
    height: 48px;
  }
  .notifications-empty-state h3 {
    font-size: var(--swp-text-lg);
  }
  .notifications-empty-state p {
    font-size: var(--swp-text-sm);
  }
  .notifications-empty-state .btn {
    width: 100%;
  }
}
@media (width >= 768px) {
  .notification-groups {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media print {
  .notification-card {
    break-inside: avoid;
  }
}
/**
 * Augias - Subscription Pages Styles
 *
 * Billing, plan-picker, and subscription-state pages (pricing, overview,
 * change, cancelled, paused, pending, trial expired).
 *
 * All values are `--swp-*` design tokens. State is carried by a soft icon
 * medallion + heading, never by a decorative accent stripe, a colored glow, or
 * a looping animation. Colour stays on the brand: Trust Green is the only
 * accent; there is no Tabler blue and no amber-by-accident here.
 */
.subscription-page {
  min-height: calc(100vh - var(--swp-space-24));
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-12) var(--swp-space-4);
  background: linear-gradient(to bottom, var(--swp-gray-50), var(--swp-surface));
}

.subscription-container {
  max-width: 640px;
  width: 100%;
  text-align: center;
  padding: var(--swp-space-10);
  background: var(--swp-surface);
  border: none;
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
  animation: subscription-fade-in 0.3s ease-out;
}

@keyframes subscription-fade-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.subscription-page-header {
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-sm);
}
.subscription-page-header .h4 {
  font-weight: 600;
  color: var(--swp-text-primary);
}

.subscription-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: var(--swp-radius-xl);
  margin: 0 auto var(--swp-space-8);
}
.subscription-icon svg {
  width: 32px;
  height: 32px;
}

.subscription-icon-warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning);
}

.subscription-icon-danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}

.subscription-icon-info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.subscription-icon-paused {
  background: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.subscription-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-3);
  letter-spacing: -0.02em;
  line-height: 1.2;
}

.subscription-subtitle {
  font-size: var(--swp-text-lg);
  color: var(--swp-text-secondary);
  margin: 0 0 var(--swp-space-10);
  line-height: 1.7;
}

.subscription-benefits {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  padding: var(--swp-space-6);
  margin-bottom: var(--swp-space-8);
  text-align: left;
  box-shadow: var(--swp-shadow-xs);
}
.subscription-benefits h3 {
  font-size: var(--swp-text-md);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-4);
}
.subscription-benefits ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.subscription-benefits li {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2-5) 0;
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-base);
}
.subscription-benefits li svg {
  width: 20px;
  height: 20px;
  color: var(--swp-success);
  flex-shrink: 0;
}

.subscription-cancelled-page .subscription-benefits li svg {
  color: var(--swp-text-muted);
}

.subscription-actions {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-4);
}
.subscription-actions .btn-lg {
  padding: var(--swp-space-3-5) var(--swp-space-6);
  font-size: var(--swp-text-md);
  font-weight: 600;
  box-shadow: var(--swp-shadow-sm);
  transition: box-shadow var(--swp-transition-base);
}
.subscription-actions .btn-lg svg {
  width: 20px;
  height: 20px;
}
.subscription-actions .btn-lg:hover {
  box-shadow: var(--swp-shadow-md);
}
.subscription-actions .btn-lg:focus-visible {
  outline: none;
  box-shadow: var(--swp-shadow-md), var(--swp-ring-primary);
}
.subscription-actions .btn-ghost svg {
  width: 18px;
  height: 18px;
}
.subscription-actions .btn-ghost:hover {
  background: var(--swp-gray-50);
}
.subscription-actions .btn-ghost:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.subscription-paused-page .subscription-benefits li svg {
  color: var(--swp-text-secondary);
}

.alert-banner {
  border-radius: 0;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  margin-bottom: 0;
  padding: var(--swp-space-3) var(--swp-space-4);
}
.alert-banner .d-flex {
  align-items: center;
}
.alert-banner .alert-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.alert-banner .btn-sm {
  white-space: nowrap;
  flex-shrink: 0;
}
.alert-banner.alert-warning {
  background: var(--swp-warning-lighter);
  border-bottom-color: var(--swp-warning-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-warning .btn-warning {
  background: var(--swp-warning);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-warning .btn-warning:hover {
  background: var(--swp-warning-hover);
}
.alert-banner.alert-danger {
  background: var(--swp-danger-lighter);
  border-bottom-color: var(--swp-danger-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-danger .btn-danger {
  background: var(--swp-danger);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-danger .btn-danger:hover {
  background: var(--swp-danger-hover);
}

.subscription-pricing-page .subscription-container {
  max-width: 1100px;
  text-align: center;
}

.plan-card {
  position: relative;
  overflow: hidden;
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.plan-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.plan-card > .card-body {
  padding-top: var(--swp-space-9);
}

.plan-card-recommended {
  border-width: 2px;
  box-shadow: var(--swp-shadow-md);
}
.plan-card-recommended:hover {
  box-shadow: var(--swp-shadow-xl);
}

.plan-card-banner {
  position: absolute;
  top: 0;
  inset-inline: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-inverse);
  background: var(--swp-primary);
}
.plan-card-banner svg {
  flex-shrink: 0;
}

.plan-card-free {
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  box-shadow: none;
  transition: border-color var(--swp-transition-base), background var(--swp-transition-base);
}
.plan-card-free:hover {
  border-color: var(--swp-primary);
  background: var(--swp-surface);
}
.plan-card-free .card-body {
  padding: var(--swp-space-4) var(--swp-space-6);
}
.plan-card-free .plan-card-features {
  font-size: var(--swp-text-sm);
}
.plan-card-free .plan-card-features li {
  margin-bottom: var(--swp-space-1);
}

.plan-card-free-header {
  flex-shrink: 0;
  min-width: 0;
}

.plan-card-free-cta {
  flex-shrink: 0;
}

.plan-card-features-inline {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
}
.plan-card-features-inline li {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  white-space: nowrap;
}

.plan-card-price {
  font-size: var(--swp-text-4xl);
  line-height: 1.1;
}

.plan-card-interval {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
}

.plan-card-features {
  text-align: start;
}

.subscription-coupon {
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-primary-light);
  border-radius: var(--swp-radius-lg);
}
.subscription-coupon .badge {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
}

@media (width <= 767.98px) {
  .subscription-page {
    padding: var(--swp-space-6) var(--swp-space-3);
  }
  .subscription-page-header .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .subscription-page-header .btn-group {
    width: 100%;
  }
  .subscription-page-header .btn-group .btn {
    width: 100%;
  }
  .subscription-container {
    padding: var(--swp-space-6);
  }
  .subscription-icon {
    width: 48px;
    height: 48px;
  }
  .subscription-icon svg {
    width: 28px;
    height: 28px;
  }
  .subscription-title {
    font-size: 1.375rem;
  }
  .subscription-subtitle {
    font-size: var(--swp-text-md);
  }
  .subscription-benefits {
    padding: var(--swp-space-4);
  }
  .subscription-actions .btn {
    width: 100%;
  }
  .alert-banner .d-flex {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-3);
  }
  .alert-banner .btn-sm {
    width: 100%;
  }
}
@media (width >= 768px) and (width <= 991.98px) {
  .subscription-container {
    max-width: 600px;
    padding: var(--swp-space-8);
  }
}
@media (prefers-reduced-motion: reduce) {
  .subscription-container {
    animation: none;
  }
  .plan-card,
  .plan-card-free,
  .subscription-actions .btn-lg {
    transition: none;
  }
}
@media print {
  .subscription-page {
    padding: 0;
  }
  .subscription-container {
    box-shadow: none;
    border: 1px solid var(--swp-border);
  }
  .subscription-actions {
    display: none;
  }
  .alert-banner {
    display: none;
  }
}
/**
 * Onboarding Checklist - Dashboard widget
 *
 * The first component a new user meets. Priorities, in order:
 *   1. Convey state (todo / done / hovered / focused). Never decoration.
 *   2. Stay on the Augias design system - `--swp-*` tokens only.
 *   3. Read correctly whether a row is an <a> (actionable) or a <span> (done).
 *
 * Structure comes from Tabler (`card`, `card-stamp`, `card-link-pop`,
 * `offcanvas`, `visually-hidden`). This file only adds what Tabler does not
 * already provide - it does not restate or fight it.
 */
.card.card-active {
  border-color: var(--swp-success);
  background: var(--swp-success-lighter);
}

.card-stamp-icon {
  opacity: 0.15;
}

.checklist-items-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2-5);
}

.checklist-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  color: inherit;
  transition: color var(--swp-duration-fast) var(--swp-ease-out), background-color var(--swp-duration-fast) var(--swp-ease-out), border-color var(--swp-duration-fast) var(--swp-ease-out), box-shadow var(--swp-duration-fast) var(--swp-ease-out);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) .checklist-item-action {
  color: var(--swp-primary);
}
.checklist-item:not(.completed):focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.checklist-item.completed {
  background: var(--swp-success-lighter);
  border-color: var(--swp-success-light);
  cursor: default;
}
.checklist-item.completed .item-name {
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-normal);
  text-decoration: line-through;
}
.checklist-item.completed .item-icon {
  color: var(--swp-text-light);
}
.checklist-item.completed .checklist-item-action {
  display: none;
}

.checklist-item-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-success);
}

.checklist-item:not(.completed) .checklist-item-icon {
  color: var(--swp-gray-400);
}

.checklist-item-content {
  flex: 1;
  min-width: 0;
}

.checklist-item-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-1);
}

.checklist-item .item-icon {
  display: flex;
  align-items: center;
  color: var(--swp-primary);
}

.checklist-item .item-name {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.checklist-item-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: var(--swp-leading-normal);
}

.checklist-item-action {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-text-light);
}

.onboarding-offcanvas {
  width: 420px;
  max-width: 100%;
}

.onboarding-offcanvas .offcanvas-body .card {
  border: 1px solid var(--swp-border-light);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-shadow-sm);
}

.onboarding-progress-label {
  min-width: 3rem;
}

@media (prefers-reduced-motion: reduce) {
  .checklist-item {
    transition: none;
  }
}
/**
 * Onboarding Wizard - the first-run flow (/onboarding)
 *
 * This is the first screen every new user meets: post-install and post-signup,
 * a user with no company is redirected here to create their company, an
 * optional first client, and a first invoice.
 *
 * It used to be styled with inline <style> blocks that contradicted the design
 * system wholesale - Bootstrap blue (#066fd1) instead of Trust Green, gradients
 * on the canvas / step icon / badge, a 3px `border-left` side-stripe on the
 * benefits box (a hard ban), and a bounce/elastic celebration with an infinite
 * pulse and no reduced-motion fallback. This file replaces all of it with
 * `--swp-*` tokens, flat surfaces, and ease-out motion.
 *
 * Everything is scoped under `.onboarding-container` because the class names
 * (`step-icon`, `step-benefits`, `welcome-badge`, ...) are generic and used
 * nowhere else - scoping keeps them from leaking into the rest of the app.
 *
 * Structure (Bootstrap grid, `card`, `btn`, `form-control`, `progress`) comes
 * from Tabler; this file only styles the custom wizard chrome.
 */
.onboarding-container {
  background: var(--swp-body-bg);
}
.onboarding-container .onboarding-progress {
  box-shadow: var(--swp-shadow-xs);
}
.onboarding-container .step-indicator {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.onboarding-container .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-gray-100);
  color: var(--swp-text-muted);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out), color var(--swp-duration-slow) var(--swp-ease-out), box-shadow var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-number {
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-number {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
  box-shadow: var(--swp-ring-primary);
}
.onboarding-container .step-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-label,
.onboarding-container .step-indicator.current .step-label {
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-label {
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-connector {
  flex: 1;
  height: 2px;
  margin: 0 var(--swp-space-4);
  background: var(--swp-border);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-connector.completed {
  background: var(--swp-primary);
}
.onboarding-container .onboarding-step-card {
  padding: var(--swp-space-12);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-sm);
}
.onboarding-container .step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  margin: 0 auto var(--swp-space-6);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.onboarding-container .welcome-section {
  margin-bottom: var(--swp-space-8);
  text-align: center;
}
.onboarding-container .welcome-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
  padding: var(--swp-space-2) var(--swp-space-4);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-benefits {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
}
.onboarding-container .step-benefits ul {
  margin: 0;
  padding-left: var(--swp-space-5);
  color: var(--swp-text-secondary);
}
.onboarding-container .step-benefits li + li {
  margin-top: var(--swp-space-2);
}
.onboarding-container .celebration-icon {
  display: flex;
  justify-content: center;
}
.onboarding-container .success-checkmark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 6rem;
  height: 6rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
  animation: onboarding-celebrate var(--swp-duration-slow) var(--swp-ease-out) both;
}
.onboarding-container .onboarding-tip {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  text-align: left;
  color: var(--swp-text-secondary);
}
.onboarding-container .onboarding-tip svg {
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-secondary-dark);
}
@media (width <= 768px) {
  .onboarding-container .onboarding-step-card {
    padding: var(--swp-space-8) var(--swp-space-6);
  }
  .onboarding-container .step-connector {
    margin: 0 var(--swp-space-2);
  }
}

@keyframes onboarding-celebrate {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .onboarding-container .step-number,
  .onboarding-container .step-label,
  .onboarding-container .step-connector {
    transition: none;
  }
  .onboarding-container .success-checkmark {
    animation: none;
  }
}
/**
 * Augias Design System - Money Display
 *
 * The signature component (DESIGN.md section 5). Every currency value in the
 * application renders through `.money`; it is the single source of truth for
 * money display, and raw `{{ amount }}` rendering is prohibited.
 *
 * Contract:
 *   <span class="money">
 *     <span class="money-currency">USD</span>
 *     <strong class="money-amount">1,234.56</strong>
 *   </span>
 *
 * Modifiers (on the `.money` root, combinable):
 *   .money--paid      Amount in AA-safe success. ONLY valid alongside an
 *                     explicit "Paid" label (the Money-Color Rule).
 *   .money--overdue   Amount in AA-safe danger. Same labelling rule.
 *   .money--total     Weight 600, amount one size step up.
 *   (none)            Neutral - the default and the common case.
 *
 * The component never sets its own font-size. It inherits from context, so the
 * same markup is correct inline in a table cell, in a heading, and at
 * `.stat-value` scale in the dashboard hero tiles. Only `.money--total` steps
 * the amount, and it steps relatively so the result is right at every base.
 */
.money {
  display: inline-flex;
  align-items: baseline;
  gap: var(--swp-space-1);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.money-currency {
  color: var(--swp-money-currency);
}

.money-amount {
  color: var(--swp-money-neutral);
  font-weight: var(--swp-font-medium);
}

.money--paid .money-amount {
  color: var(--swp-money-paid);
}

.money--overdue .money-amount {
  color: var(--swp-money-overdue);
}

.money--total .money-amount {
  font-size: calc(1em * var(--swp-money-total-scale));
  font-weight: var(--swp-font-semibold);
}

.money--total .money-currency {
  font-size: var(--swp-money-currency-scale);
}

/**
 * Instance label — the "TEST" an instance clients do not use wears on every
 * page (AUGIAS_INSTANCE_LABEL): a coloured edge along the top of the window
 * with a tab hanging from its middle. It never takes a click.
 */
.instance-label {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 2000;
  display: flex;
  justify-content: center;
  height: 4px;
  background: #c2410c;
  pointer-events: none;
}
.instance-label > span {
  align-self: flex-start;
  height: fit-content;
  padding: 0.125rem 0.75rem;
  border-radius: 0 0 var(--swp-border-radius, 4px) var(--swp-border-radius, 4px);
  background: inherit;
  color: #ffffff;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/**
 * Augias Design System - Layout Index
 *
 * Layout pattern styles that extend Tabler/Bootstrap.
 * Only add layout files for patterns not covered by the frameworks.
 *
 * Note: Most layout styling comes from Tabler (page-wrapper, page-header, etc.)
 * This file imports only custom extensions when needed.
 */
/**
 * Augias — Vertical Navbar (Sidebar)
 *
 * Tabler ships `.navbar-vertical.navbar-dark` as a heavy slate panel (gray-800)
 * that PRODUCT.md names as the AdminLTE anti-reference the rewrite is escaping.
 * This file recolors the sidebar one shade lighter (gray-700) so it still
 * carries presence, but uses tinted neutrals and an ink-tinted active state
 * to differentiate it from generic Tabler admin output.
 *
 * Selector specificity targets `.navbar-vertical` so Tabler's mobile-collapse,
 * drawer, and dropdown rules continue to apply.
 */
@media (width >= 992px) {
  .navbar.navbar-vertical.navbar-expand-lg {
    width: 17rem;
  }
  .navbar.navbar-vertical.navbar-expand-lg ~ .page-wrapper,
  .navbar.navbar-vertical.navbar-expand-lg ~ header.navbar {
    margin-left: 17rem;
  }
}
.navbar.navbar-vertical,
.navbar.navbar-vertical.navbar-dark {
  background-color: var(--swp-gray-700);
  color: var(--swp-gray-300);
  border-right: 1px solid var(--swp-gray-800);
  box-shadow: none;
}
.navbar.navbar-vertical .navbar-brand,
.navbar.navbar-vertical.navbar-dark .navbar-brand {
  color: var(--swp-gray-50);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .navbar-brand-autodark,
.navbar.navbar-vertical.navbar-dark .navbar-brand-autodark {
  filter: none;
}
.navbar.navbar-vertical .nav-link,
.navbar.navbar-vertical.navbar-dark .nav-link {
  color: var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
  min-width: 0;
}
.navbar.navbar-vertical .nav-link .nav-link-icon,
.navbar.navbar-vertical .nav-link .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-title {
  color: inherit;
}
.navbar.navbar-vertical .nav-link .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-icon {
  flex-shrink: 0;
}
.navbar.navbar-vertical .nav-link .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.navbar.navbar-vertical .nav-link:hover,
.navbar.navbar-vertical.navbar-dark .nav-link:hover {
  background-color: var(--swp-gray-600);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link:focus-visible,
.navbar.navbar-vertical.navbar-dark .nav-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link.active,
.navbar.navbar-vertical.navbar-dark .nav-link.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .nav-link.active .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-title {
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .nav-link.active:hover {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-subtitle,
.navbar.navbar-vertical .nav-header,
.navbar.navbar-vertical.navbar-dark .nav-subtitle,
.navbar.navbar-vertical.navbar-dark .nav-header {
  color: var(--swp-gray-400);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  font-size: var(--swp-text-xs);
}
.navbar.navbar-vertical .nav-link-toggle,
.navbar.navbar-vertical .dropdown-toggle::after,
.navbar.navbar-vertical.navbar-dark .nav-link-toggle,
.navbar.navbar-vertical.navbar-dark .dropdown-toggle::after {
  color: var(--swp-gray-400);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu {
  background-color: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-md);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item {
  color: var(--swp-text-secondary);
  border-radius: var(--swp-radius-sm);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:hover, .navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:focus,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:hover,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:focus {
  background-color: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item.active,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item .dropdown-item-title,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item .dropdown-item-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item .badge,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item .badge {
  flex-shrink: 0;
}
.navbar.navbar-vertical .navbar-toggler,
.navbar.navbar-vertical.navbar-dark .navbar-toggler {
  color: var(--swp-gray-200);
  border-color: var(--swp-gray-600);
}
.navbar.navbar-vertical .navbar-toggler:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-toggler:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

@media (width < 992px) {
  .navbar.navbar-vertical.navbar-expand-lg .navbar-collapse {
    background-color: var(--swp-gray-700);
  }
}

/**
 * Augias — Page Header
 *
 * Tabler's page header puts the title in a `.col` and the action buttons in a
 * `.col-auto`, side by side at every width. That holds while titles are short,
 * but our document views title themselves with a party's full company name —
 * "Fournitures Industrielles du Nord" — next to two or three transition
 * buttons. On a phone the button column takes what it needs and leaves the
 * title a column barely wider than one word, whose text then spills sideways
 * across the buttons instead of wrapping inside its own box.
 *
 * Below the tablet breakpoint the buttons therefore take a full line of their
 * own under the title. Their `ms-auto` margin then has no free space left to
 * consume, so it resolves to zero and the row stays left-aligned. The title
 * also gets `overflow-wrap`, since a company name can carry a word longer than
 * the column and this row is not a scroll container — such a word would run
 * off the viewport rather than off the box.
 */
@media (width <= 768px) {
  .page-header .row > .col-auto {
    flex: 0 0 100%;
  }
  .page-title {
    overflow-wrap: anywhere;
  }
}
/**
 * Augias Design System - Form Styles
 *
 * Generic form component styles for the entire application.
 * Uses design system tokens for consistent styling.
 */
.form-control,
.form-select {
  border-radius: var(--swp-input-radius);
  border-color: var(--swp-input-border);
  padding: var(--swp-input-padding-y) var(--swp-input-padding-x);
  font-size: var(--swp-text-base);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-control:focus,
.form-select:focus {
  border-color: var(--swp-input-focus-border);
  box-shadow: var(--swp-input-focus-ring);
}
.form-control::placeholder,
.form-select::placeholder {
  color: var(--swp-text-light);
}

.form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}

.form-field .form-label {
  font-weight: var(--swp-font-medium);
  color: var(--swp-body-color);
  margin-bottom: var(--swp-space-2);
}
.form-field .form-control,
.form-field .form-select {
  border-color: var(--swp-border);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-field .form-control:focus,
.form-field .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.form-field .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-text-muted);
}

.form-help,
.form-text,
.form-help-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  line-height: var(--swp-leading-normal);
  margin-top: var(--swp-space-1);
}
.form-help small,
.form-text small,
.form-help-text small {
  font-size: inherit;
}

.form-switch-field {
  padding: var(--swp-space-3-5) var(--swp-space-4);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border: 1px solid var(--swp-border);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.form-switch-field:hover {
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  background-color: var(--swp-primary-lighter);
}

.form-switch-wrapper {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: 0;
}
.form-switch-wrapper .form-check-input {
  width: 2.5rem;
  height: 1.25rem;
  margin-top: 0;
  cursor: pointer;
  background-color: var(--swp-gray-300);
  border: none;
  transition: background-color var(--swp-transition-fast);
}
.form-switch-wrapper .form-check-input:checked {
  background-color: var(--swp-primary);
}
.form-switch-wrapper .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.form-switch-wrapper .form-check-label {
  font-weight: var(--swp-font-medium);
  cursor: pointer;
  margin-bottom: 0;
  margin-left: 0.5rem;
  flex: 1;
}

.input-icon-group .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-text-muted);
}
.input-icon-group .input-group-text svg {
  width: 18px;
  height: 18px;
}
.input-icon-group .form-control {
  border-left: none;
}
.input-icon-group .form-control:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.input-icon-group .form-control:focus ~ .input-group-text,
.input-icon-group .form-control:focus + .input-group-text {
  border-color: var(--swp-primary);
}
.input-icon-group .input-group-text:first-child {
  border-right: none;
}
.input-icon-group .input-group-text:first-child + .form-control {
  border-left: none;
}

.input-validate-group .btn-validate {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: var(--swp-text-sm);
}
.input-validate-group .btn-validate svg {
  width: 16px;
  height: 16px;
}

.form-group-card {
  padding: var(--swp-space-5);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border);
}
.form-group-card .form-group-header {
  margin-bottom: var(--swp-space-4);
}
.form-group-card .form-group-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  margin: 0;
}
.form-group-card .form-group-content .mb-3:last-child,
.form-group-card .form-group-content .mb-4:last-child {
  margin-bottom: 0 !important;
}

.address-widget .card-body {
  padding: var(--swp-space-4);
}
.address-widget .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
}
.address-widget .form-control,
.address-widget .form-select {
  font-size: var(--swp-text-base);
}

.form-control.is-invalid,
.form-select.is-invalid {
  border-color: var(--swp-danger);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ef4444%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23ef4444%27 stroke=%27none%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.form-control.is-invalid:focus,
.form-select.is-invalid:focus {
  border-color: var(--swp-danger);
  box-shadow: var(--swp-ring-danger);
}

.form-control.is-valid,
.form-select.is-valid {
  border-color: var(--swp-success);
}
.form-control.is-valid:focus,
.form-select.is-valid:focus {
  border-color: var(--swp-success);
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15);
}

.invalid-feedback {
  color: var(--swp-danger);
  font-size: var(--swp-text-sm);
  margin-top: var(--swp-space-1-5);
}

.valid-feedback {
  color: var(--swp-success);
  font-size: var(--swp-text-sm);
  margin-top: var(--swp-space-1-5);
}

.file-upload-area {
  border: 2px dashed var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
  cursor: pointer;
}
.file-upload-area:hover, .file-upload-area.dragover {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary-lighter);
}
.file-upload-area .upload-icon {
  color: var(--swp-text-light);
  margin-bottom: var(--swp-space-2);
}
.file-upload-area .upload-icon svg {
  width: 32px;
  height: 32px;
}
.file-upload-area .upload-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}
.file-upload-area .upload-hint {
  color: var(--swp-text-light);
  font-size: var(--swp-text-xs);
  margin-top: var(--swp-space-1);
}

.dropzone {
  border: 2px dashed var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  text-align: center;
  background: var(--swp-surface);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
  min-height: auto;
}
.dropzone:hover, .dropzone.dropzone-dragover {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary-lighter);
}

.form-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
}
.form-section-title svg,
.form-section-title i {
  color: var(--swp-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
}

/**
 * Standard Form Actions Pattern:
 *
 * ┌─────────────────────────────────────────────────────────────┐
 * │ [Cancel (ghost)]                      [Save (primary + icon)]│
 * └─────────────────────────────────────────────────────────────┘
 *
 * - Cancel: Left side OR ghost style
 * - Save: Right side, primary style, with save icon
 */
.form-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border-light);
}
.card-footer .form-actions {
  padding: 0;
  background: transparent;
  border-top: none;
}
.form-actions.form-actions-spread {
  justify-content: space-between;
}

.form-inline {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-wrap: wrap;
}
.form-inline .form-control,
.form-inline .form-select {
  width: auto;
}

.form-horizontal .form-group,
.form-horizontal .mb-3,
.form-horizontal .mb-4 {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: var(--swp-space-4);
  align-items: start;
}
@media (width <= 768px) {
  .form-horizontal .form-group,
  .form-horizontal .mb-3,
  .form-horizontal .mb-4 {
    grid-template-columns: 1fr;
  }
}
.form-horizontal .form-label {
  padding-top: var(--swp-space-2-5);
  margin-bottom: 0;
  text-align: right;
}
@media (width <= 768px) {
  .form-horizontal .form-label {
    text-align: left;
    padding-top: 0;
  }
}

.form-compact .mb-3,
.form-compact .mb-4 {
  margin-bottom: var(--swp-space-3) !important;
}
.form-compact .form-control,
.form-compact .form-select {
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
}
.form-compact .form-label {
  font-size: var(--swp-text-xs);
  margin-bottom: var(--swp-space-1);
}

.btn {
  gap: var(--swp-space-2);
}

.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: var(--swp-radius-md);
}
.btn-icon svg {
  width: 18px;
  height: 18px;
}

.btn-ghost-danger {
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
}
.btn-ghost-danger:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}
.btn-ghost-danger:focus {
  box-shadow: var(--swp-ring-danger);
}

.card-header-tabs .nav-link {
  font-size: 0.875rem;
}

.fw-medium {
  font-weight: 500 !important;
}

@media (width <= 576px) {
  .form-switch-field {
    padding: var(--swp-space-3);
  }
  .form-switch-wrapper .form-check-input {
    width: 2.25rem;
    height: 1.125rem;
  }
  .form-group-card {
    padding: var(--swp-space-4);
  }
  .form-actions {
    padding: var(--swp-space-3) var(--swp-space-4);
    flex-wrap: wrap;
  }
  .form-actions .btn {
    flex: 1;
    min-width: 100px;
  }
}
/**
 * Company Pages Styles
 *
 * Styles for company selection and creation pages
 * All styles are scoped to .company-select-page and .company-create-page
 * to avoid conflicts with other pages.
 */
.company-select-page,
.company-create-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.company-select-page .company-page-header,
.company-create-page .company-page-header {
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-xs);
}
.company-select-page .company-page-logo,
.company-create-page .company-page-logo {
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-page-logo img,
.company-create-page .company-page-logo img {
  height: 48px;
  width: auto;
}
.company-select-page .company-page-brand h1,
.company-create-page .company-page-brand h1 {
  font-weight: 700;
  color: var(--swp-text-primary);
}
.company-select-page .company-page-intro h2,
.company-create-page .company-page-intro h2 {
  font-weight: 600;
  color: var(--swp-text-primary);
  font-size: 1.75rem;
}
.company-select-page .company-page-intro p,
.company-create-page .company-page-intro p {
  font-size: 1.125rem;
}
.company-select-page .avatar-md,
.company-create-page .avatar-md {
  width: 2.5rem;
  height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-lg,
.company-create-page .avatar-lg {
  width: 3.5rem;
  height: 3.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-2xl,
.company-create-page .avatar-2xl {
  width: 4rem;
  height: 4rem;
  font-size: 1.25rem;
  font-weight: 600;
}
.company-select-page .avatar-xl,
.company-create-page .avatar-xl {
  width: 5rem;
  height: 5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-initials,
.company-create-page .avatar-initials {
  font-weight: 600;
  font-size: 1.25rem;
  letter-spacing: -0.02em;
}
.company-select-page .form-hint,
.company-create-page .form-hint {
  font-size: 0.875rem;
  color: var(--swp-text-secondary);
  display: flex;
  align-items: center;
}
@media (width <= 767.98px) {
  .company-select-page .avatar-lg,
  .company-create-page .avatar-lg {
    width: 3rem;
    height: 3rem;
  }
  .company-select-page .avatar-lg svg,
  .company-create-page .avatar-lg svg {
    width: 24px;
    height: 24px;
  }
  .company-select-page .avatar-2xl,
  .company-create-page .avatar-2xl {
    width: 3rem;
    height: 3rem;
    font-size: 1rem;
  }
  .company-select-page .h2, .company-select-page h2,
  .company-create-page .h2,
  .company-create-page h2 {
    font-size: 1.5rem;
  }
}

.company-select-page .card.shadow-sm {
  box-shadow: var(--swp-shadow-lg) !important;
  border: none;
  background: var(--swp-surface);
}
.company-select-page .card-company {
  transition: var(--swp-transition-all);
  border: 2px solid var(--swp-border);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-md);
  border-radius: var(--swp-radius-lg);
}
.company-select-page .card-company:hover {
  transform: translateY(-4px);
  box-shadow: var(--swp-shadow-xl);
  border-color: var(--swp-primary);
}
.company-select-page .card-company:hover .company-arrow {
  transform: translateX(4px);
}
.company-select-page .card-company:hover h3 {
  color: var(--swp-primary);
}
.company-select-page .card-company:active {
  transform: translateY(-2px);
}
.company-select-page .company-avatar {
  flex-shrink: 0;
}
.company-select-page .company-avatar .avatar {
  box-shadow: var(--swp-shadow-sm);
}
.company-select-page .company-avatar .avatar img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: var(--swp-space-2);
}
.company-select-page .company-avatar .avatar.bg-primary {
  background-color: var(--swp-primary) !important;
  background-image: none !important;
}
.company-select-page .company-avatar .avatar-initials,
.company-select-page .company-avatar .avatar.bg-primary span {
  color: var(--swp-text-inverse) !important;
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-arrow {
  flex-shrink: 0;
  transition: transform var(--swp-duration-base) var(--swp-ease-in-out);
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .min-w-0 {
  min-width: 0;
}
.company-select-page .card-create-company {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border: 2px dashed var(--swp-border);
  transition: var(--swp-transition-all);
}
.company-select-page .card-create-company:hover {
  border-color: var(--swp-success);
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-success-rgb), 0.04) 100%);
}
.company-select-page .w-md-auto {
  width: auto !important;
}
@media (width >= 768px) {
  .company-select-page .w-md-auto {
    width: auto !important;
  }
}

.company-create-page .form-smooth .form-control:focus,
.company-create-page .form-smooth .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--swp-primary-rgb), 0.1);
}
.company-create-page .card {
  box-shadow: var(--swp-shadow-lg);
  border: none;
}
.company-create-page .alert {
  border-radius: var(--swp-radius-lg);
  border: 1px solid transparent;
}
.company-create-page .alert.alert-info {
  background-color: rgba(var(--swp-info-rgb), 0.08);
  border-color: rgba(var(--swp-info-rgb), 0.2);
}
.company-create-page .alert.alert-warning {
  background-color: rgba(var(--swp-warning-rgb), 0.08);
  border-color: rgba(var(--swp-warning-rgb), 0.2);
}
.company-create-page .alert.alert-success {
  background-color: rgba(var(--swp-success-rgb), 0.08);
  border-color: rgba(var(--swp-success-rgb), 0.2);
}
.company-create-page .btn-primary {
  font-weight: 600;
  letter-spacing: 0.01em;
}

/**
 * Settings Page Styles
 * Only custom styles that can't be achieved with Bootstrap/Tabler utilities
 */
.settings-page {
  max-width: 900px;
  margin: 0 auto;
  padding-bottom: 2rem;
}

@media (max-width: 767.98px) {
  .settings-page > .nav-underline {
    margin-left: -1rem;
    margin-right: -1rem;
    padding-left: 1rem;
    padding-right: 1rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
  }
  .settings-page > .nav-underline::-webkit-scrollbar {
    display: none;
  }
  .settings-page > .nav-underline .nav-item {
    flex-shrink: 0;
  }
}
.settings-content-card {
  border-radius: var(--swp-radius-lg);
}
.settings-content-card:hover {
  transform: none;
}
.settings-content-card > .card-body {
  padding: var(--swp-space-6);
}
@media (min-width: 768px) {
  .settings-content-card > .card-body {
    padding: var(--swp-space-8) var(--swp-space-8) var(--swp-space-6);
  }
}
.settings-content-card > .card-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top-color: var(--swp-border-light);
}
@media (min-width: 768px) {
  .settings-content-card > .card-footer {
    padding: var(--swp-space-4) var(--swp-space-8);
  }
}
.settings-content-card .card-body > .border-bottom {
  border-bottom-color: var(--swp-border-light) !important;
}
.settings-content-card .card-body h3 {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.settings-content-card .card-body h3 > svg {
  color: var(--swp-text-muted);
}
.settings-content-card .card-body h3 + p.text-muted {
  max-width: 65ch;
}

.logo-upload-card .logo-preview-frame {
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
  border-radius: 0.5rem;
  border: 1px solid #e2e8f0;
  overflow: hidden;
}
.logo-upload-card .logo-preview-frame img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.logo-upload-card .dropzone {
  border: 2px dashed #cbd5e1;
  border-radius: 0.5rem;
  min-height: auto;
}
.logo-upload-card .dropzone:hover, .logo-upload-card .dropzone.dropzone-dragover {
  border-color: var(--swp-primary);
  background-color: rgba(var(--swp-primary-rgb), 0.02);
}

.settings-danger-zone .card {
  border-radius: var(--swp-radius-lg);
  border-color: var(--swp-danger-light);
}
.settings-danger-zone .card:hover {
  transform: none;
}
.settings-danger-zone .card .card-header {
  background: var(--swp-danger-lighter) !important;
  border-bottom-color: var(--swp-danger-light) !important;
  padding: var(--swp-space-3) var(--swp-space-6);
}
.settings-danger-zone .card .card-header .card-title {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-danger);
}
.settings-danger-zone .card .card-body {
  padding: var(--swp-space-5) var(--swp-space-6);
}
.settings-danger-zone .card .card-body h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

#deleteCompanyModal .modal-content {
  border-radius: 1rem;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
}
#deleteCompanyModal .font-monospace {
  background-color: #fef2f2;
  padding: 0.5rem 1rem;
  border-radius: 0.5rem;
}

.custom-field-list .custom-field-row {
  transition: background-color 120ms ease;
}
.custom-field-list .custom-field-row:hover .custom-field-handle {
  color: var(--tblr-body-color, #1e293b);
}
.custom-field-list .custom-field-row.sortable-ghost {
  opacity: 0.4;
  background-color: rgba(var(--swp-primary-rgb, 99 102 241), 0.06);
}
.custom-field-list .custom-field-row.sortable-chosen {
  background-color: rgba(var(--swp-primary-rgb, 99 102 241), 0.04);
}
.custom-field-list .custom-field-handle {
  cursor: grab;
  padding: 0.25rem;
  color: var(--tblr-muted, #94a3b8);
  line-height: 1;
  border-radius: 0.25rem;
}
.custom-field-list .custom-field-handle:active {
  cursor: grabbing;
}

@media print {
  .settings-page .nav-underline,
  .settings-page .settings-danger-zone,
  .settings-page .card-footer {
    display: none !important;
  }
}
.template-picker .template-picker-card {
  overflow: hidden;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.template-picker .template-picker-card:has(.template-picker-input:checked) {
  border-color: var(--tblr-primary, #206bc4);
  box-shadow: 0 0 0 2px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.25);
}
.template-picker .template-picker-card:has(.template-picker-input:focus-visible) {
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.5);
}
.template-picker .template-picker-option {
  display: block;
  position: relative;
  margin: 0;
  cursor: pointer;
}
.template-picker .template-picker-option > .form-check {
  position: absolute;
  min-height: 0;
  margin: 0;
  padding: 0;
}
.template-picker .template-picker-input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  border: 0;
  opacity: 0;
  pointer-events: none;
}
.template-picker .template-picker-thumb {
  display: block;
  position: relative;
  width: 100%;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--tblr-bg-surface-secondary, #f1f5f9);
}
.template-picker .template-picker-thumb iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 400%;
  height: 400%;
  border: 0;
  transform: scale(0.25);
  transform-origin: 0 0;
  pointer-events: none;
}
.template-picker .template-picker-check {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  display: none;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background: var(--tblr-primary, #206bc4);
  color: #ffffff;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.25);
}
.template-picker .template-picker-option:has(.template-picker-input:checked) .template-picker-check {
  display: flex;
}
.template-picker.template-picker-disabled .template-picker-option {
  cursor: not-allowed;
}
.template-picker.template-picker-disabled .template-picker-thumb {
  opacity: 0.6;
}

.einvoicing-panel {
  border-width: 2px;
}
.einvoicing-panel .einvoicing-panel-header {
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
}
.einvoicing-panel.einvoicing-panel-primary .einvoicing-panel-header {
  background: rgba(var(--swp-primary-rgb), 0.08);
}
.einvoicing-panel.einvoicing-panel-success .einvoicing-panel-header {
  background: rgba(var(--swp-success-rgb), 0.08);
}
.einvoicing-panel.einvoicing-panel-warning .einvoicing-panel-header {
  background: rgba(var(--swp-warning-rgb), 0.08);
}
.einvoicing-panel .einvoicing-panel-switch .form-check {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin: 0;
  padding-left: 0;
}
.einvoicing-panel .einvoicing-panel-switch .form-check-input {
  width: 3.25rem;
  height: 1.75rem;
  margin: 0;
  cursor: pointer;
}
.einvoicing-panel .einvoicing-panel-switch label {
  color: var(--swp-body-color);
  font-weight: var(--swp-font-weight-bold);
  cursor: pointer;
}

/**
 * Augias Dashboard Styles
 *
 * Styles for the redesigned dashboard including hero stats,
 * charts, attention required section, quick actions, and activity feed.
 */
.stat-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  padding: var(--swp-space-6);
}
.stat-card--danger {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
.stat-card--urgent .stat-value {
  font-size: var(--swp-text-3xl);
}

.stat-card-content {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-4);
}

.stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.stat-icon--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.stat-icon--success {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.stat-icon--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.stat-icon--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning);
}
.stat-icon--info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.stat-info {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  min-width: 0;
}

.stat-label {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
}

.stat-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  line-height: 1.2;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}
.stat-value--danger {
  color: var(--swp-danger-hover);
}
.stat-value .money--total .money-amount {
  font-size: 1em;
}

.stat-subvalue {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-variant-numeric: tabular-nums;
}

.dashboard-chart-container {
  min-height: 280px;
  position: relative;
}

.dashboard-revenue-chart {
  height: 280px !important;
}

.dashboard-donut-container {
  min-height: 280px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dashboard-donut-chart {
  height: 280px !important;
}

.dashboard-donut-center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, calc(-50% - var(--swp-space-1-5)));
  text-align: center;
  pointer-events: none;
  z-index: 1;
}

.dashboard-donut-total {
  display: block;
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  line-height: 1;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}

.dashboard-donut-label {
  display: block;
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  margin-top: var(--swp-space-1);
}

.dashboard-chart-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.dashboard-chart-empty-icon {
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

.dashboard-chart-empty-text {
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}

.dashboard-chart-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.dashboard-chart-error-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: var(--swp-danger-light);
  color: var(--swp-danger);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--swp-space-3);
}
.dashboard-chart-error-icon svg {
  width: 32px;
  height: 32px;
}

.dashboard-chart-error-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
}

.dashboard-chart-error-text {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0 0 var(--swp-space-4);
  max-width: 42ch;
}

.attention-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.attention-empty-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: var(--swp-success-lighter);
  color: var(--swp-success);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--swp-space-3);
}

.attention-empty-text {
  color: var(--swp-text-secondary);
  margin: 0;
}

.attention-sections {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.attention-section:not(:last-child) {
  padding-bottom: var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
}

.attention-section-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  margin-bottom: var(--swp-space-3);
}
.attention-section-header--danger {
  color: var(--swp-danger);
}
.attention-section-header--warning {
  color: var(--swp-warning-hover);
}
.attention-section-header--info {
  color: var(--swp-info);
}
.attention-section-header--primary {
  color: var(--swp-primary);
}

.attention-badge {
  font-size: var(--swp-text-xs);
  padding: 2px 6px;
  border-radius: var(--swp-radius-full);
  font-weight: var(--swp-font-semibold);
}
.attention-badge--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.attention-badge--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning-hover);
}
.attention-badge--info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}
.attention-badge--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}

.attention-items {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  container-type: inline-size;
}

.attention-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  color: inherit;
  transition: background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.attention-item:hover {
  background: var(--swp-surface-hover);
}
.attention-item:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.attention-item--danger {
  background: var(--swp-danger-lighter);
}
.attention-item--danger:hover {
  background: var(--swp-danger-light);
}
.attention-item--danger:focus-visible {
  box-shadow: var(--swp-ring-danger);
}

.attention-item-form {
  display: contents;
}

.attention-item--button {
  background: none;
  border: none;
  font: inherit;
  text-align: inherit;
  width: 100%;
  cursor: pointer;
}

.attention-item-main {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  min-width: 0;
  flex: 1;
}

.attention-item-id {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
}

.attention-item-client {
  color: var(--swp-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.attention-item-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-shrink: 0;
}

.attention-item-amount {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.attention-item-date {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-variant-numeric: tabular-nums;
}

@container (width < 480px) {
  .attention-item-main {
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
  }
  .attention-item-client {
    max-width: 100%;
  }
  .attention-item-meta {
    flex-direction: column;
    align-items: flex-end;
    gap: 0;
  }
}
.quick-actions-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}

.quick-action-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-4);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: transform var(--swp-transition-fast), background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.quick-action-btn:hover {
  transform: translateY(-2px);
  box-shadow: var(--swp-shadow-md);
}
.quick-action-btn:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.quick-action-btn--primary {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}
.quick-action-btn--primary:hover {
  background: var(--swp-primary-light);
}
.quick-action-btn--secondary {
  background: var(--swp-secondary-lighter);
  color: var(--swp-secondary-dark);
}
.quick-action-btn--secondary:hover {
  background: var(--swp-secondary-light);
}
.quick-action-btn--info {
  background: var(--swp-info-lighter);
  color: var(--swp-info-hover);
}
.quick-action-btn--info:hover {
  background: var(--swp-info-light);
}
.quick-action-btn--success {
  background: var(--swp-success-lighter);
  color: var(--swp-success-hover);
}
.quick-action-btn--success:hover {
  background: var(--swp-success-light);
}
@media (prefers-reduced-motion: reduce) {
  .quick-action-btn, .quick-action-btn:hover {
    transition: none;
    transform: none;
  }
}

.quick-action-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.quick-action-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-align: center;
}

.activity-timeline {
  display: flex;
  flex-direction: column;
}

.activity-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.activity-item:last-child {
  border-bottom: none;
}

.activity-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--swp-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}
.activity-icon--payment {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.activity-icon--invoice, .activity-icon--invoice_sent {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.activity-icon--quote_accepted {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.activity-icon--quote_declined {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.activity-icon--recurring_generated {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.activity-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.activity-description {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  line-height: 1.4;
}

.activity-text {
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-base);
}

.activity-doc-link {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
  text-decoration: none;
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
  border-radius: var(--swp-radius-sm);
}
.activity-doc-link:hover {
  text-decoration: underline;
  color: var(--swp-primary-dark);
}
.activity-doc-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.activity-details {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  font-size: var(--swp-text-sm);
}

.activity-client-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--swp-text-secondary);
  text-decoration: none;
  border-radius: var(--swp-radius-sm);
  transition: color var(--swp-transition-fast);
}
.activity-client-link:hover {
  color: var(--swp-primary);
}
.activity-client-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-primary);
}
.activity-client-link svg {
  opacity: 0.6;
}

.activity-separator {
  color: var(--swp-text-muted);
}

.activity-amount {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.activity-time {
  color: var(--swp-text-muted);
}

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

.dashboard-toolbar {
  align-items: center;
  display: flex;
  gap: var(--swp-space-2);
  justify-content: flex-end;
  margin-bottom: var(--swp-space-3);
}

.dashboard-toolbar-status {
  color: var(--swp-text-muted);
  font-size: 0.8125rem;
  min-height: 1.25rem;
}
.dashboard-toolbar-status--error {
  color: var(--swp-danger, #ef4444);
}

.dashboard-picker {
  background: var(--swp-surface);
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-lg, 0.75rem);
  margin-bottom: var(--swp-space-4);
  padding: var(--swp-space-4);
}

.dashboard-picker-title {
  font-size: 0.875rem;
  font-weight: 600;
  margin-bottom: var(--swp-space-3);
}

.dashboard-picker-items {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2);
}

.dashboard-picker-item {
  align-items: center;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md, 0.5rem);
  cursor: pointer;
  display: inline-flex;
  font-size: 0.8125rem;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
}
.dashboard-picker-item:hover {
  border-color: var(--swp-primary);
}

.dashboard-picker-empty {
  color: var(--swp-text-muted);
  font-size: 0.8125rem;
  margin: 0;
}

.dashboard-zone {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: 1fr;
  margin-bottom: var(--swp-space-4);
}
@media (width >= 768px) {
  .dashboard-zone {
    grid-template-columns: repeat(12, 1fr);
  }
}

.dashboard-widget {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  grid-column: 1/-1;
}
.dashboard-widget > :last-child {
  flex: 1 1 auto;
}
@media (width >= 768px) {
  .dashboard-widget[data-widget-width=quarter], .dashboard-widget[data-widget-width=third], .dashboard-widget[data-widget-width=half] {
    grid-column: span 6;
  }
}
@media (width >= 1200px) {
  .dashboard-widget[data-widget-width=quarter] {
    grid-column: span 3;
  }
  .dashboard-widget[data-widget-width=third] {
    grid-column: span 4;
  }
  .dashboard-widget[data-widget-width=half] {
    grid-column: span 6;
  }
  .dashboard-widget[data-widget-width=two_thirds] {
    grid-column: span 8;
  }
}

.dashboard-widget-controls {
  align-items: center;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md, 0.5rem);
  display: flex;
  gap: var(--swp-space-1);
  margin-bottom: var(--swp-space-2);
  padding: var(--swp-space-1) var(--swp-space-2);
}

.dashboard-widget-name {
  align-items: center;
  color: var(--swp-text-muted);
  display: inline-flex;
  flex: 1;
  font-size: 0.75rem;
  font-weight: 600;
  gap: var(--swp-space-2);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.dashboard-widget-handle {
  color: var(--swp-text-muted);
  cursor: grab;
  display: inline-flex;
}
.dashboard-widget-handle:active {
  cursor: grabbing;
}

.dashboard-widget-pinned {
  color: var(--swp-text-muted);
  display: inline-flex;
}

.dashboard-widget--ghost {
  opacity: 0.4;
}

.dashboard-page--editing .dashboard-widget {
  outline: 1px dashed var(--swp-border);
  outline-offset: var(--swp-space-2);
}

/**
 * Client Page Styles
 *
 * Custom styles for the Client view page.
 * Follows the design system tokens and modern SaaS aesthetic.
 */
.client-hero {
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}

.client-hero-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  line-height: 1.2;
}

.client-hero-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-4);
  color: var(--swp-text-muted);
  font-size: 0.875rem;
}
.client-hero-meta a {
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.client-hero-meta a:hover {
  color: var(--swp-primary);
}

.client-hero-meta-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1-5);
}

.client-stat-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-2);
}

.client-stat-value {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.client-stat-value--success {
  color: var(--swp-success);
}

.client-stat-value--warning,
.client-stat-value--danger {
  color: var(--swp-warning);
}

.client-stat-badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-2);
}

.client-credit-card {
  margin-bottom: var(--swp-space-6);
}
.client-credit-card .card-body {
  padding: var(--swp-space-5);
}

.client-credit-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-lg);
  background: var(--swp-info-lighter);
  color: var(--swp-info);
}

.client-credit-amount {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin-bottom: 0;
}

.client-credit-label {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.client-tabs-card .card-header {
  padding-bottom: 0;
  border-bottom: none;
}
.client-tabs-card {
  /* .nav-tabs {
      border-bottom: 1px solid var(--swp-border);
      margin: 0 calc(-1 * var(--swp-space-6));
      padding: 0 var(--swp-space-6);
  } */
}
.client-tabs-card .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  transition: color var(--swp-transition-fast), border-color var(--swp-transition-fast);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.client-tabs-card .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(46, 150, 58, 0.3);
}
.client-tabs-card .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
}
.client-tabs-card .nav-link .badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.2em 0.5em;
}
.client-tabs-card .tab-content {
  padding-top: var(--swp-space-4);
}

.client-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-4);
}

.client-section-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 1rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.client-section-title .badge {
  font-size: 0.7rem;
  font-weight: 600;
}

.client-contact-card,
.client-address-card {
  height: 100%;
  transition: box-shadow var(--swp-transition-base);
}
.client-contact-card:hover,
.client-address-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.client-contact-card .card-header,
.client-address-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.client-contact-card .card-body,
.client-address-card .card-body {
  padding: var(--swp-space-4);
}

.client-contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  font-size: 0.875rem;
}

.client-contact-name {
  font-weight: 500;
  color: var(--swp-text-primary);
}

.client-contact-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.client-contact-detail:last-child {
  margin-bottom: 0;
}

.client-contact-detail-icon {
  color: var(--swp-text-muted);
  flex-shrink: 0;
  margin-top: 2px;
}

.client-contact-detail-label {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.client-contact-detail-value {
  color: var(--swp-text-primary);
}
.client-contact-detail-value a {
  color: var(--swp-primary);
  text-decoration: none;
}
.client-contact-detail-value a:hover {
  text-decoration: underline;
}

.btn-icon-sm {
  width: 28px;
  height: 28px;
  padding: var(--swp-space-1);
}

.btn-ghost-secondary {
  color: var(--swp-text-secondary);
  background: transparent;
  border: none;
}
.btn-ghost-secondary:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}
.btn-ghost-secondary:focus {
  box-shadow: var(--swp-ring-primary);
}

.client-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border-light);
}

.client-address-text {
  white-space: pre-line;
  color: var(--swp-text-primary);
  line-height: 1.5;
  margin-bottom: var(--swp-space-3);
}

.client-address-map-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: 0.875rem;
}

.client-contact-extra {
  margin-top: var(--swp-space-3);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-light);
}

.client-contact-extra-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-bottom: var(--swp-space-2);
}

.client-contact-extra-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 0.875rem;
  margin-bottom: var(--swp-space-1);
}
.client-contact-extra-item:last-child {
  margin-bottom: 0;
}

.client-contact-extra-label {
  color: var(--swp-text-muted);
  min-width: 80px;
}

.client-contact-extra-value {
  color: var(--swp-text-primary);
}

.custom-fields-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.custom-fields-card .card-body {
  padding: var(--swp-space-2) var(--swp-space-4);
}

.custom-fields-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.custom-fields-item {
  display: grid;
  grid-template-columns: minmax(140px, 30%) 1fr;
  gap: var(--swp-space-3);
  align-items: baseline;
  padding: var(--swp-space-2) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.custom-fields-item:last-child {
  border-bottom: none;
}

.custom-fields-label {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--swp-text-muted);
  margin: 0;
  text-transform: none;
  letter-spacing: 0;
}

.custom-fields-value {
  font-size: 0.875rem;
  color: var(--swp-text-primary);
  word-break: break-all;
}
.custom-fields-value a {
  color: var(--swp-primary);
  text-decoration: none;
}
.custom-fields-value a:hover {
  text-decoration: underline;
}
.custom-fields-value .badge {
  margin-right: var(--swp-space-1);
  font-weight: 500;
}

@media (width <= 575.98px) {
  .custom-fields-item {
    grid-template-columns: 1fr;
    gap: var(--swp-space-1);
  }
}
@media (width <= 991.98px) {
  .client-hero {
    padding: var(--swp-space-4);
  }
  .client-hero-title {
    font-size: 1.5rem;
  }
  .client-stat-value {
    font-size: 1.5rem;
  }
}
@media (width <= 767.98px) {
  .client-hero {
    text-align: center;
  }
  .client-hero-meta {
    justify-content: center;
  }
  .client-tabs-card .nav-tabs {
    margin: 0 calc(-1 * var(--swp-space-4));
    padding: 0 var(--swp-space-4);
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
  }
  .client-tabs-card .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .client-tabs-card .nav-item {
    flex-shrink: 0;
  }
  .client-section-header {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-2);
  }
}
@media print {
  .client-hero .dropdown,
  .client-hero .btn,
  .client-section-header .btn,
  .btn-ghost-secondary,
  .btn-ghost-danger,
  .client-form-actions {
    display: none !important;
  }
  .client-hero {
    box-shadow: none;
    border: 1px solid #DDDDDD;
  }
}
/**
 * Invoice View Page
 *
 * All shared document view styles are in components/_document-view.scss.
 * Invoice-specific recurring invoice styles are also in that shared component.
 */
.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--swp-space-2);
}

.recurring-schedule-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
  flex-shrink: 0;
}

.schedule-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
}
.occurrence-item svg {
  opacity: 0.6;
  flex-shrink: 0;
}

.occurrence-date {
  color: var(--swp-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.generated-invoice-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.generated-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-primary);
  text-decoration: none;
}
.generated-invoice-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.generated-invoice-id {
  font-weight: var(--swp-font-semibold, 600);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.generated-invoice-amount {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

/**
 * External Invoice View
 *
 * Invoice-specific styles for the public-facing invoice page.
 * All shared external document styles are in components/_external-doc-view.scss.
 */
.btn-invoice-action {
  padding: 0.75rem 1.25rem;
  font-weight: 500;
  border-radius: 0.375rem;
  transition: all 0.2s ease;
}
.btn-invoice-action:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.btn-invoice-action:active {
  transform: translateY(0);
}

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

@media print {
  .btn-invoice-action:hover {
    box-shadow: none !important;
    transform: none !important;
  }
}
/**
 * External Quote View
 *
 * All shared external document styles (including quote styles) are in
 * components/_external-doc-view.scss.
 *
 * There are currently no quote-specific styles beyond what is shared.
 */
/**
 * Quote View Page - Quote-Specific Styles
 *
 * Shared document layout is in components/_document-view.scss.
 * This file is intentionally minimal - all shared doc view styles are in the component.
 */
/**
 * Payment Marketplace Styles
 * Only payment-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.payment-marketplace {
  padding-bottom: var(--swp-space-8);
}

.payment-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.payment-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.payment-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.payment-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}
.payment-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.gateway-grid {
  display: grid;
  gap: var(--swp-space-3);
}

.gateway-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
  position: relative;
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
}
.gateway-card:hover {
  border-color: var(--swp-primary);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px var(--swp-primary);
  transform: translateY(-2px);
}
.gateway-card:hover .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, var(--swp-primary) 100%);
  color: var(--swp-primary);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border-color: rgba(var(--swp-success-rgb), 0.3);
}
.gateway-card.is-configured .gateway-icon {
  background: linear-gradient(135deg, var(--swp-success-light) 0%, var(--swp-success) 100%);
  color: #ffffff;
}
.gateway-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-success-rgb), 0.04) 100%);
  border-color: var(--swp-success);
}
.gateway-card.is-custom-gateway {
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.04) 0%, rgba(var(--swp-primary-rgb), 0.01) 100%);
  border: 2px dashed rgba(var(--swp-primary-rgb), 0.3);
  position: relative;
  margin-bottom: var(--swp-space-6);
}
.gateway-card.is-custom-gateway::after {
  content: "";
  position: absolute;
  bottom: calc(-1 * var(--swp-space-6) / 2);
  left: var(--swp-space-4);
  right: var(--swp-space-4);
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, var(--swp-border) 15%, var(--swp-border) 85%, transparent 100%);
}
.gateway-card.is-custom-gateway::before {
  content: "";
  position: absolute;
  inset: -2px;
  background: linear-gradient(135deg, var(--swp-primary), var(--swp-primary-dark));
  border-radius: var(--swp-radius-lg);
  opacity: 0;
  z-index: -1;
  transition: opacity 0.2s ease;
}
.gateway-card.is-custom-gateway .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  color: var(--swp-primary);
  border: 2px solid rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card.is-custom-gateway:hover {
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.08) 0%, rgba(var(--swp-primary-rgb), 0.02) 100%);
  border-color: var(--swp-primary);
  border-style: solid;
}
.gateway-card.is-custom-gateway:hover::before {
  opacity: 0.08;
}
.gateway-card.is-custom-gateway:hover .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-primary-dark) 100%);
  color: #ffffff;
  border-color: var(--swp-primary);
}
.gateway-card .gateway-card-body {
  padding: var(--swp-space-4);
}
.gateway-card .gateway-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.gateway-card h6 {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.gateway-card .text-muted {
  font-size: var(--swp-text-sm);
  line-height: 1.5;
  color: var(--swp-text-muted);
}
.gateway-card .btn {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
}
.gateway-card .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card .badge-sm {
  font-size: 0.625rem;
  padding: 0.2rem 0.5rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
}

.active-methods-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.active-methods-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.active-methods-list {
  display: grid;
  gap: var(--swp-space-3);
}

.active-method-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.active-method-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.active-method-card:hover .payment-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.active-method-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.active-method-card .card-body {
  padding: var(--swp-space-5);
}
.active-method-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.active-method-card .payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.active-method-card .payment-method-icon svg {
  width: 28px;
  height: 28px;
}
.active-method-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.active-method-card .badge.bg-success {
  background: linear-gradient(135deg, var(--swp-success) 0%, var(--swp-success-hover) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(var(--swp-success-rgb), 0.2);
}
.active-method-card .badge.bg-secondary {
  background: linear-gradient(135deg, var(--swp-gray-400) 0%, var(--swp-gray-500) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.active-method-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.active-method-card .btn:hover {
  transform: translateY(-1px);
}
.active-method-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.active-method-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.payment-marketplace .card-header .d-flex {
  width: 100%;
}
.payment-marketplace .card-header .d-flex > div:first-child {
  flex: 1;
}
.payment-marketplace .card-header .d-flex .btn-icon {
  flex-shrink: 0;
}
.payment-marketplace form .form-switch-field + .form-switch-field {
  margin-top: var(--swp-space-4);
}
.payment-marketplace form .mb-3 + .mb-3 {
  margin-top: var(--swp-space-3);
}

.payment-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.payment-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.payment-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 920px;
  max-height: calc(100vh - var(--swp-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.payment-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

.payment-modal-title {
  font-size: var(--swp-text-xl);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-modal-close {
  flex-shrink: 0;
  margin-left: var(--swp-space-4);
}

.payment-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-space-6);
}
.payment-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.payment-modal-body > div > .card .card-header {
  display: none;
}
.payment-modal-body > div > .card .card-body {
  padding: 0;
}
.payment-modal-body > div > .card .card-footer {
  padding: var(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .payment-modal {
    padding: 0;
    align-items: flex-end;
  }
  .payment-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: marketplace-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes marketplace-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.payment-modal) {
  overflow: hidden;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .gateway-grid {
    grid-template-columns: 1fr;
  }
  .active-method-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .active-method-card .d-flex .btn-group,
  .active-method-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .active-method-card .d-flex .btn-group .btn,
  .active-method-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .payment-marketplace > .nav-tabs {
    margin-left: calc(var(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .payment-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .payment-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
}
@media print {
  .payment-marketplace .nav-tabs,
  .payment-marketplace .marketplace-panel,
  .payment-marketplace .btn {
    display: none !important;
  }
  .payment-marketplace .active-method-card {
    break-inside: avoid;
  }
}
.gateway-group {
  margin-bottom: var(--swp-space-4);
}
.gateway-group .gateway-group-header h6 {
  letter-spacing: 0.04em;
}
.gateway-group .is-custom-gateway {
  margin-bottom: var(--swp-space-3);
}
.gateway-group .is-custom-gateway::after {
  display: none;
}

.gateway-group--more {
  border-top: 1px solid var(--swp-border-light);
  padding-top: var(--swp-space-3);
}
.gateway-group--more > summary {
  cursor: pointer;
  list-style: none;
}
.gateway-group--more > summary::-webkit-details-marker {
  display: none;
}
.gateway-group--more > summary:hover h6 {
  color: var(--swp-primary);
}

.payment-gateway-about .alert-title {
  margin-bottom: var(--swp-space-1);
}
.payment-gateway-about .payment-gateway-compare summary {
  cursor: pointer;
  list-style: none;
}
.payment-gateway-about .payment-gateway-compare summary::-webkit-details-marker {
  display: none;
}

/**
 * Notification Marketplace Styles
 * Notification-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.notification-marketplace {
  padding-bottom: var(--swp-space-8);
}

.notification-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.notification-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.notification-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.notification-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}
.notification-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.marketplace-tabs {
  border-bottom: 2px solid var(--swp-border);
  margin-bottom: 0;
}
.marketplace-tabs .nav-item {
  flex: 1;
}
.marketplace-tabs .nav-link {
  border: none;
  border-bottom: 3px solid transparent;
  color: var(--swp-text-secondary);
  font-weight: 600;
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
}
.marketplace-tabs .nav-link .nav-link-icon {
  display: flex;
  align-items: center;
}
.marketplace-tabs .nav-link:hover:not(.active) {
  color: var(--swp-primary-hover);
  background: rgba(var(--swp-primary-rgb), 0.05);
}
.marketplace-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}

.integration-section-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: 600;
  color: var(--swp-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--swp-space-3);
  padding-bottom: var(--swp-space-2);
  border-bottom: 1px solid var(--swp-border-light);
}

.integration-section {
  margin-bottom: var(--swp-space-6);
}
.integration-section:last-child {
  margin-bottom: 0;
}

.integration-cards-grid {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 992px) {
  .integration-cards-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.integration-card {
  background: var(--swp-surface);
  border: 1.5px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  height: 100%;
  display: flex;
  flex-direction: column;
}
.integration-card:hover {
  border-color: var(--swp-primary);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  transform: translateY(-4px);
}
.integration-card:hover .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-primary-light), rgba(var(--swp-primary-rgb), 0.2));
  color: var(--swp-primary);
  transform: scale(1.05);
}
.integration-card:hover .btn {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.25);
}
.integration-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.03), rgba(var(--swp-success-rgb), 0.01));
  border-color: rgba(var(--swp-success-rgb), 0.25);
}
.integration-card.is-configured .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-success-light), var(--swp-success));
  color: #ffffff;
}
.integration-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05), rgba(var(--swp-success-rgb), 0.02));
  border-color: var(--swp-success);
}
.integration-card .integration-card-body {
  padding: var(--swp-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  height: 100%;
}
.integration-card .integration-card-icon {
  width: 64px;
  height: 64px;
  background: linear-gradient(135deg, var(--swp-gray-100), var(--swp-gray-200));
  border-radius: var(--swp-radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  transition: all 0.25s ease;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}
.integration-card .integration-card-icon svg {
  width: 32px;
  height: 32px;
}
.integration-card .integration-card-content {
  flex: 1;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-title {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.integration-card .integration-card-action {
  margin-top: auto;
}
.integration-card .integration-card-action .btn {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
  width: 100%;
}

.configured-integrations-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.configured-integrations-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.configured-integrations-list {
  display: grid;
  gap: var(--swp-space-3);
}

.configured-integration-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.configured-integration-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.configured-integration-card:hover .integration-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.configured-integration-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.configured-integration-card .card-body {
  padding: var(--swp-space-5);
}
.configured-integration-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.configured-integration-card .integration-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.configured-integration-card .integration-method-icon svg {
  width: 28px;
  height: 28px;
}
.configured-integration-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.configured-integration-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.configured-integration-card .btn:hover {
  transform: translateY(-1px);
}
.configured-integration-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.configured-integration-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.notification-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.notification-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.notification-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 800px;
  max-height: calc(100vh - var(--swp-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.notification-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

.notification-modal-title {
  font-size: var(--swp-text-xl);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0;
}

.notification-modal-close {
  flex-shrink: 0;
  margin-left: var(--swp-space-4);
}

.notification-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-space-6);
}
.notification-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.notification-modal-body > div > .card .card-header {
  display: none;
}
.notification-modal-body > div > .card .card-body {
  padding: 0;
}
.notification-modal-body > div > .card .card-footer {
  padding: var(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .configured-integration-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .configured-integration-card .d-flex .btn-group,
  .configured-integration-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .configured-integration-card .d-flex .btn-group .btn,
  .configured-integration-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .notification-marketplace > .nav-tabs {
    margin-left: calc(var(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .notification-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .notification-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
  .notification-modal {
    padding: 0;
    align-items: flex-end;
  }
  .notification-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: notification-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes notification-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.notification-modal) {
  overflow: hidden;
}

@media print {
  .notification-marketplace .nav-tabs,
  .notification-marketplace .marketplace-panel,
  .notification-marketplace .btn {
    display: none !important;
  }
  .notification-marketplace .configured-integration-card {
    break-inside: avoid;
  }
}
/* .nav-link.active {
    background-color: #eef2ff;
    color: #4f46e5;
    border-radius: 8px;
    font-weight: 600;
} */

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLjllMjVjNDUwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBZ0I7QUFBaEI7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUFZQTtFQVlJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBVUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBU0E7RUFDQTtFQUNBO0VBQ0E7RUFLQTtFQUNBO0VBTUE7RUFDQTtFQUNBO0VBTUE7RUFDQTtBRnZESjs7QUU4REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRjNESjs7QUVrRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRi9ESjs7QUVzRUE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0FGMUVKOztBRWlGQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFHQTs7a0VBQUE7RUFHQTtFQUNBO0VBQ0E7QUZyRko7O0FFNEZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRnpGSjs7QUVnR0E7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0VBQ0E7RUFJQTtFQUlBO0FGbEhKOztBRzNNQTs7Ozs7RUFBQTtBQVdBO0VBRUk7OztxQ0FBQTtFQU1BO3dFQUFBO0VBSUE7QUhvTUo7O0FHN0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUhnTUo7O0FHekxBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FINExKOztBR3JMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSHdMSjs7QUdqTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUhvTEo7O0FHM0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSDhLSjs7QUd6S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSDRLSjs7QUd2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSDBLSjs7QUdyS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSHdLSjs7QUduS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSHNLSjtBR3BLSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIc0tSOztBR2hLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIbUtKOztBRzlKQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIaUtKOztBRzVKQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIK0pKOztBRzFKQTtFQUNJO0VBQ0E7QUg2Sko7O0FHeEpBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIMkpKOztBR3RKQTtFQUNJO0VBQ0E7QUh5Sko7O0FHcEpBO0VBQ0k7QUh1Sko7O0FHbEpBO0VBQ0k7RUFDQTtFQUNBO0FIcUpKO0FHbkpJO0VBQ0k7RUFDQTtBSHFKUjs7QUcvSUE7RUFDSTtFQUNBO0VBQ0E7QUhrSko7O0FHN0lBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUhnSko7O0FHN0lBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUhnSko7O0FJL1hBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQW9CQTtFQUNJO0VBQ0E7QUppWUo7O0FJMVhJO0VBQ0k7QUo2WFI7QUkxWEk7RUFDSTtBSjRYUjtBSXpYSTtFQUNJO0FKMlhSO0FJeFhJO0VBQ0k7QUowWFI7QUl2WEk7RUFDSTtBSnlYUjtBSXRYSTtFQUNJO0FKd1hSOztBSzFhQTs7Ozs7Ozs7RUFBQTtBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQXFCQTtFQUNJO0FOaWJKOztBTTFhQTtFQUNJO0VBQ0E7QU42YUo7QU0zYUk7RUFBWTtBTjhhaEI7QU01YUk7RUFBWTtBTithaEI7QU03YUk7RUFBWTtBTmdiaEI7O0FNemFBO0VBQ0k7RUFDQTtBTjRhSjs7QU16YUE7RUFDSTtFQUNBO0VBQ0E7QU40YUo7O0FNemFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FONGFKO0FNMWFJO0VBQ0k7RUFDQTtBTjRhUjs7QU14YUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOMmFKOztBTXhhQTtFQUNJO0VBQ0E7RUFDQTtBTjJhSjs7QU1wYUE7RUFDSTtFQUNBO0VBQ0E7QU51YUo7O0FNaGFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTm1hSjtBTWhhSTtFQUNJO0FOa2FSO0FNL1pJO0VBQ0k7RUFDQTtBTmlhUjs7QU16WkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU40Wko7O0FNelpBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FONFpKO0FNMVpJO0VBQ0k7RUFDQTtBTjRaUjs7QU14WkE7RUFDSTtFQUNBO0FOMlpKOztBTXhaQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjJaSjs7QU14WkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTjJaSjs7QU1wWkE7RUFDSTtBTnVaSjs7QU1oWkE7RUFDSTtFQUNBO0VBQ0E7QU5tWko7QU1qWkk7RUFMSjtJQU1RO0lBQ0E7RU5vWk47QUFDRjs7QU1qWkE7RUFDSTtFQUNBO0FOb1pKOztBTWpaQTtFQUNJO0FOb1pKOztBTTdZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOZ1pKOztBTTdZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTmdaSjtBTTlZSTtFQUFZO0FOaVpoQjs7QU0xWUE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FONllKO0FNM1lJOztFQUNJO0VBQ0E7QU44WVI7QU0zWUk7O0VBQ0k7QU44WVI7O0FNdFlBO0VBRUk7SUFDSTtFTndZTjtFTXJZRTtJQUNJO0lBQ0E7RU51WU47RU1wWUU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFTnNZTjtFTW5ZRTtJQUNJO0lBQ0E7RU5xWU47RU1sWUU7SUFDSTtFTm9ZTjtFTWpZRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VObVlOO0VNaFlFO0lBQ0k7SUFDQTtFTmtZTjtFTS9YRTtJQUNJO0VOaVlOO0VNOVhFO0lBQ0k7RU5nWU47RU05WE07SUFDSTtFTmdZVjtBQUNGO0FNeFhBO0VBRUk7SUFDSTtFTnlYTjtFTXRYRTtJQUNJO0VOd1hOO0VNclhFO0lBQ0k7RU51WE47QUFDRjtBTzlyQkE7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0VBQ0E7QVAyckJKO0FPdnJCSTtFQVBKO0lBUVE7RVAwckJOO0FBQ0Y7O0FPbnJCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUHNyQko7QU9wckJJO0VBWEo7SUFZUTtJQUNBO0VQdXJCTjtBQUNGOztBT3ByQkE7RUFDSTtFQUNBO0VBQ0E7QVB1ckJKOztBT3ByQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQdXJCSjs7QU9wckJBO0VBQ0k7RUFDQTtFQUNBO0FQdXJCSjs7QU9wckJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUHVyQko7O0FPcHJCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQdXJCSjs7QU9wckJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUHVyQko7QU9yckJJO0VBQ0k7QVB1ckJSOztBT2pyQkE7RUFDSTtFQUNBO0VBQ0E7QVBvckJKO0FPbHJCSTtFQUxKO0lBTVE7SUFDQTtJQUtBO0VQaXJCTjtFTy9xQk07OztJQUdJO0VQaXJCVjtBQUNGOztBTzdxQkE7RUFDSTtFQUNBO0VBQ0E7QVBnckJKOztBTzNxQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQOHFCSjtBTzVxQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVA4cUJSO0FPNXFCUTtFQUNJO0FQOHFCWjtBTzNxQlE7RUFDSTtBUDZxQlo7QU8xcUJRO0VBQ0k7QVA0cUJaO0FPeHFCSTtFQUNJO0VBQ0E7QVAwcUJSOztBT2xxQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQcXFCSjtBT25xQkk7RUFDSTtFQUNBO0FQcXFCUjtBT2xxQkk7RUFDSTtBUG9xQlI7O0FPNXBCQTtFQUNJO0FQK3BCSjtBTzdwQkk7RUFFSTtFQUNBO0FQOHBCUjs7QU8xcEJBO0VBQ0k7RUFDQTtFQUNBO0FQNnBCSjtBTzNwQkk7RUFDSTtFQUNBO0FQNnBCUjs7QU9ycEJBO0VBQ0k7RUFDQTtFQUNBO0FQd3BCSjtBT3RwQkk7RUFMSjtJQU1RO0VQeXBCTjtBQUNGOztBT2xwQkE7RUFDSTtBUHFwQko7O0FPbHBCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQcXBCSjs7QU8vb0JBOzs7O0VBSUk7RUFDQTtFQUNBO0VBQ0E7QVBrcEJKO0FPNW9CSTs7OztFQUNJO0VBQ0E7QVBpcEJSOztBTzNvQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVA4b0JKO0FPNW9CSTtFQVJKO0lBU1E7SUFDQTtFUCtvQk47QUFDRjs7QU81b0JBO0VBQ0k7RUFDQTtFQUNBO0FQK29CSjs7QU81b0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUCtvQko7O0FPNW9CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQK29CSjs7QU81b0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQK29CSjtBTzdvQkk7RUFDSTtFQUNBO0VBQ0E7QVArb0JSO0FPNW9CSTtFQUNJO0VBQ0E7QVA4b0JSO0FPNW9CUTtFQUNJO0VBQ0E7QVA4b0JaO0FPMW9CSTtFQUtJO0FQd29CUjtBT3JvQkk7RUFDSTtFQUNBO0VBQ0E7QVB1b0JSO0FPcG9CSTtFQUNJO0FQc29CUjtBT3BvQlE7RUFDSTtFQUNBO0FQc29CWjs7QU8vbkJBO0VBQ0k7QVBrb0JKO0FPaG9CSTtFQUhKO0lBSVE7RVBtb0JOO0FBQ0Y7O0FPaG9CQTtFQUNJO0VBQ0E7QVBtb0JKO0FPL25CUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUGlvQlo7QU8vbkJZO0VBSUk7QVA4bkJoQjtBT3puQlE7RUF0Qko7SUF1QlE7RVA0bkJWO0FBQ0Y7QU92bkJRO0VBQ0k7QVB5bkJaO0FPdm5CWTtFQUNJO0FQeW5CaEI7QU9ybkJZO0VBUko7SUFTUTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVB3bkJkO0VPdG5CYztJQUNJO0VQd25CbEI7RU9ybkJjO0lBQ0k7RVB1bkJsQjtBQUNGO0FPbm5CUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVBxbkJaO0FPbm5CWTtFQUNJO0VBQ0E7QVBxbkJoQjtBT2xuQlk7RUFJSTtFQUNBO0VBQ0E7QVBpbkJoQjtBTzltQlk7RUFDSTtFQUNBO0FQZ25CaEI7QU81bUJZO0VBM0JKO0lBNEJRO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFUCttQmQ7RU83bUJjO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VQK21CbEI7RU81bUJjO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VQOG1CbEI7RU81bUJrQjtJQUNJO0VQOG1CdEI7RU8xbUJjO0lBQ0k7SUFDQTtFUDRtQmxCO0FBQ0Y7QU90bUJJO0VBRUk7SUFDSTtFUHVtQlY7RU9wbUJNO0lBQ0k7RVBzbUJWO0VPbm1CTTtJQUNJO0VQcW1CVjtFT2xtQk07SUFDSTtFUG9tQlY7RU9qbUJNO0lBQ0k7RVBtbUJWO0FBQ0Y7O0FPN2xCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQZ21CSjtBTzdsQkk7RUFQSjtJQVFRO0VQZ21CTjtBQUNGOztBTzdsQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUGdtQko7QU85bEJJO0VBVEo7SUFVUTtJQUNBO0VQaW1CTjtBQUNGOztBTzlsQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQaW1CSjtBTy9sQkk7RUFDSTtFQUNBO0FQaW1CUjtBTzlsQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQZ21CUjs7QU8xbEJBO0VBQ0k7QVA2bEJKOztBT3hsQkE7RUFDSTtBUDJsQko7O0FPeGxCQTtFQUNJO0VBQ0E7RUFDQTtBUDJsQko7QU96bEJJO0VBQ0k7RUFDQTtFQUNBO0FQMmxCUjtBT3JsQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUHVsQlI7O0FPamxCQTtFQUNJO0VBQ0E7RUFDQTtBUG9sQko7O0FPL2tCSTtFQUNJO0VBQ0E7RUFDQTtBUGtsQlI7O0FPOWtCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQaWxCSjs7QU85a0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUGlsQko7O0FPMWtCQTtFQUNJO0VBQ0E7RUFDQTtBUDZrQko7QU8za0JJO0VBTEo7SUFNUTtJQUNBO0VQOGtCTjtBQUNGOztBTzNrQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUDhrQko7O0FPM2tCQTtFQUNJO0FQOGtCSjs7QU8za0JBO0VBQ0k7QVA4a0JKOztBTzNrQkE7RUFDSTtBUDhrQko7O0FPM2tCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVA4a0JKOztBTzNrQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQOGtCSjs7QU8za0JBO0VBQ0k7RUFDQTtBUDhrQko7O0FPM2tCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQOGtCSjs7QU8za0JBO0VBQ0k7QVA4a0JKOztBT3prQkE7RUFDSTtFQUNBO0VBQ0E7QVA0a0JKOztBT3ZrQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUDBrQko7QU94a0JJO0VBQ0k7RUFDQTtBUDBrQlI7QU92a0JJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVB5a0JSO0FPbmtCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQcWtCUjtBT2hrQkk7RUFDSTtFQUNBO0FQa2tCUjs7QU85akJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBpa0JKO0FPL2pCSTtFQUNJO0FQaWtCUjs7QU8zakJJO0VBQ0k7QVA4akJSOztBT3hqQkE7RUFDSTtFQUNBO0VBQ0E7QVAyakJKOztBT3hqQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUDJqQko7QU96akJJO0VBQ0k7RUFDQTtBUDJqQlI7O0FPdmpCQTtFQUNJO0VBQ0E7RUFDQTtBUDBqQko7O0FPdmpCQTtFQUNJO0VBQ0E7RUFDQTtBUDBqQko7O0FPdmpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQMGpCSjs7QU92akJBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVAwakJKO0FPeGpCSTs7RUFDSTtBUDJqQlI7O0FPcmpCQTtFQUNJO0VBQ0E7RUFDQTtBUHdqQko7O0FPcmpCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVB3akJKOztBT3JqQkE7RUFDSTtFQUNBO0FQd2pCSjs7QU9yakJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVB3akJKOztBT3JqQkE7RUFDSTtFQUNBO0VBQ0E7QVB3akJKOztBT3JqQkE7RUFDSTtFQUNBO0VBQ0E7QVB3akJKOztBT3JqQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUHdqQko7QU90akJJOztFQUNJO0FQeWpCUjs7QU9yakJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVB3akJKOztBT25qQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVBzakJKO0FPcGpCSTs7RUFDSTtFQUNBO0FQdWpCUjs7QU9uakJBO0VBQ0k7QVBzakJKOztBTy9pQkE7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFUGlqQk47RU85aUJFO0lBQ0k7RVBnakJOO0VPN2lCRTtJQUNJO0VQK2lCTjtFTzVpQkU7SUFDSTtJQUNBO0VQOGlCTjtFTzNpQkU7SUFDSTtJQUNBO0VQNmlCTjtFT3hpQk07SUFDSTtJQUNBO0lBQ0E7RVAwaUJWO0VPdGlCRTtJQUNJO0lBQ0E7SUFDQTtFUHdpQk47RU9yaUJFO0lBQ0k7SUFDQTtJQUNBO0VQdWlCTjtFT3BpQkU7SUFDSTtFUHNpQk47QUFDRjtBUXQ5Q0E7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0FSbTlDSjs7QVE1OENBO0VBQ0k7RUFDQTtBUis4Q0o7QVEzOENRO0VBQ0k7RUFDQTtFQUNBO0FSNjhDWjtBUXo4Q0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUjI4Q1I7QVF4OENJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVIwOENSOztBUWw4Q0E7RUFDSTtFQUNBO0VBQ0E7QVJxOENKO0FRbjhDSTtFQUNJO0FScThDUjtBUWw4Q0k7RUFDSTtBUm84Q1I7O0FRMTdDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FSNjdDSjs7QVF4N0NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUjI3Q0o7O0FReDdDQTtFQUNJO0VBQ0E7RUFDQTtBUjI3Q0o7O0FRdDdDQTtFQUNJO0VBQ0E7QVJ5N0NKOztBUWw3Q0k7RUFDSTtFQUNBO0VBQ0E7QVJxN0NSOztBUTc2Q0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUmc3Q0o7QVE5NkNJO0VBQ0k7QVJnN0NSO0FRNzZDSTtFQUNJO0FSKzZDUjs7QVEzNkNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVI4NkNKOztBUTM2Q0E7RUFDSTtFQUNBO0FSODZDSjs7QVEzNkNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVI4NkNKOztBUXY2Q0E7RUFDSTtBUjA2Q0o7O0FRdjZDQTtFQUNJO0VBQ0E7RUFDQTtBUjA2Q0o7O0FRdjZDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FSMDZDSjs7QVF2NkNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVIwNkNKOztBUW42Q0E7RUFDSTtBUnM2Q0o7QVFsNkNRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSbzZDWjtBUTk1Q1E7RUFDSTtFQUNBO0FSZzZDWjtBUTk1Q1k7RUFDSTtBUmc2Q2hCO0FRNzVDWTtFQUNJO0FSKzVDaEI7QVEzNUNRO0VBQ0k7RUFDQTtFQUNBO0FSNjVDWjtBUXo1Q0k7RUFDSTtFQUNBO0VBQ0E7QVIyNUNSO0FReDVDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FSMDVDUjs7QVFsNUNBO0VBQ0k7RUFDQTtFQUNBO0FScTVDSjtBUW41Q0k7RUFDSTtBUnE1Q1I7O0FRajVDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FSbzVDSjtBUWw1Q0k7RUFDSTtBUm81Q1I7O0FRaDVDQTtFQUNJO0VBQ0E7RUFDQTtBUm01Q0o7O0FRaDVDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJtNUNKOztBUWg1Q0E7RUFDSTtFQUNBO0VBQ0E7QVJtNUNKO0FRajVDSTtFQUNJO0VBQ0E7QVJtNUNSO0FRaDVDSTtFQUNJO0VBQ0E7QVJrNUNSO0FRLzRDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FSaTVDUjs7QVF2NENJO0VBQ0k7RUFDQTtFQUNBO0FSMDRDUjtBUXY0Q0k7RUFDSTtFQUNBO0FSeTRDUjtBUXQ0Q0k7RUFDSTtFQUNBO0VBQ0E7QVJ3NENSOztBUTkzQ0E7RUFDSTtFQUNBO0FSaTRDSjs7QVE1M0NBO0VBQ0k7RUFDQTtBUiszQ0o7O0FRMTNDQTtFQUNJO0VBQ0E7QVI2M0NKOztBUTEzQ0E7RUFDSTtFQUNBO0FSNjNDSjtBUTMzQ0k7RUFDSTtBUjYzQ1I7O0FRcjNDQTtFQUVJOztJQUVJO0VSdTNDTjtFUXAzQ0U7SUFDSTtFUnMzQ047QUFDRjtBUW4zQ0E7RUFFSTtJQUNJO0VSbzNDTjtFUWozQ0U7SUFDSTtFUm0zQ047RVFoM0NFO0lBQ0k7RVJrM0NOO0VRNzJDTTtJQUNJO0VSKzJDVjtBQUNGO0FRMzJDQTtFQUVJO0lBQ0k7SUFDQTtFUjQyQ047RVF6MkNFO0lBQ0k7RVIyMkNOO0VReDJDRTs7SUFFSTtFUjAyQ047RVFyMkNFO0lBQ0k7RVJ1MkNOO0VRcjJDTTtJQUNJO0lBQ0E7RVJ1MkNWO0VRcDJDTTtJQUNJO0VSczJDVjtFUW4yQ007SUFDSTtFUnEyQ1Y7RVE3MUNNO0lBQ0k7SUFDQTtFUisxQ1Y7RVE3MUNVO0lBQ0k7RVIrMUNkO0VRdDFDTTs7SUFFSTtFUncxQ1Y7RVF0MUNVOztJQUNJO0VSeTFDZDtFUWgxQ007SUFDSTtJQUNBO0VSazFDVjtFUWgxQ1U7SUFDSTtJQUNBO0lBQ0E7RVJrMUNkO0VRaDFDYztJQUNJO0lBQ0E7RVJrMUNsQjtFUTkwQ1U7O0lBRUk7SUFDQTtFUmcxQ2Q7RVF6MENFO0lBQ0k7RVIyMENOO0VRejBDTTtJQUNJO0VSMjBDVjtFUXgwQ007SUFDSTtFUjAwQ1Y7QUFDRjtBUWwwQ0E7RUFFSTs7SUFFSTtJQUNBO0VSbTBDTjtFUWgwQ0U7SUFDSTtFUmswQ047RVEvekNFOztJQUVJO0lBQ0E7SUFDQTtFUmkwQ047RVE5ekNFOzs7SUFHSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFUmcwQ047RVE3ekNFO0lBQ0k7SUFDQTtJQUNBO0VSK3pDTjtFUTV6Q0U7SUFDSTtJQUNBO0VSOHpDTjtFUTN6Q0U7OztJQUdJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVI2ekNOO0VRMXpDRTtJQUNJO0lBQ0E7SUFDQTtFUjR6Q047RVF6ekNFO0lBQ0k7RVIyekNOO0VReHpDRTtJQUNJO0VSMHpDTjtFUXZ6Q0U7SUFDSTtJQUNBO0VSeXpDTjtFUXR6Q0U7SUFDSTtFUnd6Q047RVFyekNFOzs7SUFHSTtJQUNBO0lBQ0E7RVJ1ekNOO0VRcHpDRTtJQUNJO0lBQ0E7SUFDQTtFUnN6Q047RVFuekNFOzs7SUFHSTtJQUNBO0lBQ0E7RVJxekNOO0VRbHpDRTtJQUNJO0lBQ0E7SUFDQTtFUm96Q047RVFqekNFO0lBQ0k7SUFDQTtJQUNBO0VSbXpDTjtFUWh6Q0U7SUFDSTtFUmt6Q047RVEveUNFO0lBQ0k7RVJpekNOO0VROXlDRTtJQUNJO0lBQ0E7RVJnekNOO0FBQ0Y7QVM5NURBOzs7Ozs7OztFQUFBO0FDNEVJO0VEbEVKOztJQUdRO0VUKzVETjtFUzM1RE07O0lBQ0k7RVQ4NURWO0VTMzVETTs7OztJQUVJO0VUKzVEVjtFUzE1RE07O0lBQ0k7RVQ2NURWO0VTeDVETTs7SUFDSTtJQUNBO0lBQ0E7RVQyNURWO0VTejVEVTs7SUFDSTtFVDQ1RGQ7RVN4NURNOztJQUNJO0VUMjVEVjtFU3g1RE07O0lBQ0k7RVQyNURWO0VTeDVETTs7SUFDSTtFVDI1RFY7QUFDRjs7QVVyNERJO0VEWEk7SUFDSTtFVG81RFY7RVNqNURNOzs7SUFHSTtJQUNBO0VUbTVEVjtFU2g1RE07SUFDSTtJQUNBO0VUazVEVjtFUy80RE07SUFDSTtJQUNBO0lBQ0E7SUFDQTtFVGk1RFY7RVM5NERNO0lBQ0k7RVRnNURWO0VTNzRETTtJQUNJO0lBQ0E7RVQrNERWO0VTNTRETTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VUODREVjtFUzU0RFU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VUODREZDtBQUNGOztBVzkvREE7Ozs7O0VBQUE7QUFXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWDQvREo7QVcxL0RJO0VBQ0k7QVg0L0RSO0FXei9ESTtFQUNJO0VBQ0E7QVgyL0RSO0FXeC9ESTtFQUNJO0VBQ0E7RUFDQTtBWDAvRFI7QVd4L0RRO0VBQ0k7QVgwL0RaOztBV24vREk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWHMvRFI7QVduL0RJO0VBQ0k7QVhxL0RSO0FXbC9ESTtFQUNJO0VBQ0E7RUFDQTtBWG8vRFI7QVdsL0RRO0VBQ0k7RUFDQTtFQUNBO0FYby9EWjtBV2ovRFE7RUFDSTtFQUNBO0VBQ0E7QVhtL0RaO0FXai9EWTtFQUNJO0VBQ0E7QVhtL0RoQjtBV2gvRFk7RUFDSTtFQUNBO0FYay9EaEI7QVc1K0RZO0VBQ0k7QVg4K0RoQjs7QVdwK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYdStESjs7QVdwK0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHUrREo7O0FXcCtEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHUrREo7O0FXcCtEQTtFQUNJO0VBQ0E7QVh1K0RKO0FXcitESTtFQUNJO0VBQ0E7RUFDQTtBWHUrRFI7QVdwK0RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWHMrRFI7O0FXbCtEQTtFQUNJO0VBQ0E7RUFDQTtBWHErREo7O0FXbCtEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVhxK0RKOztBVzk5REE7RUFFSTtJQUFPO0VYaStEVDtFVy85REU7SUFBSztFWGsrRFA7QUFDRjtBV2grREE7RUFFSTtJQUNJO0lBQ0E7RVhpK0ROO0VXOTlERTtJQUNJO0lBQ0E7RVhnK0ROO0FBQ0Y7QVc3OURBO0VBRUk7SUFDSTtJQUNBO0VYODlETjtFVzM5REU7SUFDSTtJQUNBO0VYNjlETjtBQUNGO0FXdDlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FYdzlESjs7QVdyOURBO0VBQ0k7RUFDQTtBWHc5REo7O0FZN3FFQTs7RUFBQTtBQUlBO0VBQ0k7RUFDQTtBWitxRUo7QVk3cUVJO0VBQ0k7RUFDQTtFQUNBO0FaK3FFUjtBWTVxRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjhxRVI7QVkzcUVJO0VBQ0k7RUFDQTtFQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMHFFUjtBWXRxRVE7RUFFSTtBWnVxRVo7QVlwcUVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpzcUVaO0FZbnFFUTtFQUNJO0FacXFFWjtBWWpxRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm1xRVI7QVlocUVJO0VBQ0k7RUFDQTtFQUNBO0Faa3FFUjtBWWhxRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Faa3FFWjs7QVk3cEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmdxRUo7QVk5cEVJO0VBQ0k7RUFDQTtBWmdxRVI7O0FZNXBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWitwRUo7O0FZNXBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWitwRUo7O0FZNXBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaK3BFSjtBWTdwRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaK3BFUjtBWTVwRUk7RUFDSTtFQUNBO0FaOHBFUjs7QVkxcEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtBWnlwRUo7QVl2cEVJO0VBQ0k7RUFDQTtBWnlwRVI7O0FZcnBFQTtFQUVJO0lBQ0k7SUFDQTtFWnVwRU47RVlwcEVFO0lBQ0k7SUFDQTtFWnNwRU47QUFDRjtBWW5wRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnFwRUo7O0FZbHBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpxcEVKO0FZbnBFSTtFQUNJO0FacXBFUjtBWWxwRUk7RUFDSTtBWm9wRVI7QVlqcEVJO0VBQ0k7RUFDQTtBWm1wRVI7O0FZN29FSTtFQUNJO0FaZ3BFUjtBWTdvRUk7RUFDSTtBWitvRVI7QVk1b0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaOG9FUjs7QVl4b0VJO0VBQ0k7QVoyb0VSO0FZeG9FSTtFQUNJO0VBQ0E7QVowb0VSOztBWXRvRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnlvRUo7O0FZdG9FQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp5b0VKO0FZdm9FSTtFQUNJO0FaeW9FUjs7QVlyb0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVp3b0VKOztBWXJvRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3b0VKOztBWXJvRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3b0VKOztBWXJvRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWndvRUo7O0FZcm9FQTtFQUNJO0VBQ0E7RUFDQTtBWndvRUo7O0FZcm9FQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Fad29FSjs7QVlyb0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3b0VKO0FZdG9FSTtFQUNJO0VBQ0E7RUFDQTtBWndvRVI7QVlyb0VJO0VBQ0k7RUFDQTtFQUNBO0FadW9FUjs7QVlub0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnNvRUo7O0FZbm9FQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzb0VKO0FZcG9FSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzb0VSO0FZcG9FUTtFQUNJO0Fac29FWjs7QVlqb0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fab29FSjtBWWxvRUk7RUFDSTtBWm9vRVI7O0FZaG9FQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVptb0VKO0FZam9FSTtFQUNJO0FabW9FUjtBWWhvRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVprb0VSO0FZL25FSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaaW9FUjtBWS9uRVE7RUFFSTtBWmdvRVo7QVk3bkVRO0VBQ0k7RUFDQTtFQUNBO0FaK25FWjs7QWEzakZBOzs7OztFQUFBO0FBV0E7RUFHSTtFQUNBO0FidWpGSjtBYW5qRkk7RUFDSTtBYnFqRlI7O0FhampGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fib2pGSjs7QWFqakZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJvakZKOztBYTdpRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmdqRko7QWE5aUZJO0VBVEo7SUFVUTtJQUNBO0ViaWpGTjtBQUNGOztBYTlpRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiaWpGSjs7QWE5aUZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJpakZKOztBYTlpRkE7RUFDSTtFQUNBO0VBQ0E7QWJpakZKO0FhL2lGSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpakZSO0FhOWlGSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJnakZSO0FhNWlGUTtFQUNJO0FiOGlGWjtBYTNpRlE7RUFDSTtBYjZpRlo7QWExaUZRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI0aUZaOztBYW5pRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnNpRko7O0FhbmlGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJzaUZKO0FhcGlGSTtFQUNJO0VBQ0E7QWJzaUZSO0FhcGlGUTtFQUNJO0Fic2lGWjtBYWxpRkk7RUFDSTtFQUNBO0Fib2lGUjtBYWxpRlE7RUFDSTtFQUNBO0Fib2lGWjtBYWhpRkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYmtpRlI7QWEvaEZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmlpRlI7O0FhemhGQTtFQUNJO0FiNGhGSjs7QWF6aEZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI0aEZKO0FheGhGSTs7RUFFSTtBYjBoRlI7O0FhdGhGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnloRko7O0FhdGhGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FieWhGSjtBYXZoRkk7RUFDSTtFQUNBO0VBQ0E7QWJ5aEZSOztBYXJoRkE7RUFDSTtFQUNBO0VBQ0E7QWJ3aEZKOztBYXJoRkE7RUFDSTtFQUNBO0VBQ0E7QWJ3aEZKOztBYXJoRkE7RUFDSTtFQUNBO0VBQ0E7QWJ3aEZKO0FhcGhGSTs7RUFFSTtFQUNBO0Fic2hGUjtBYWpoRkk7RUFDSTtBYm1oRlI7O0FhL2dGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJraEZKOztBYXpnRkk7RUFDSTtFQUNBO0VBQ0E7QWI0Z0ZSO0FhdmdGWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJ5Z0ZoQjtBYXRnRlk7RUFDSTtBYndnRmhCO0FhamdGSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibWdGUjtBYWpnRlE7RUFDSTtBYm1nRlo7QWE5L0VRO0VBQ0k7QWJnZ0ZaO0FhNy9FUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYisvRVo7QWE3L0VZO0VBQ0k7RUFDQTtBYisvRWhCO0FhNS9FWTtFQUNJO0FiOC9FaEI7QWF6L0VZO0VBQ0k7RUFDQTtBYjIvRWhCO0Fhei9FZ0I7RUFDSTtBYjIvRXBCO0FhdC9FUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fidy9FWjtBYWwvRUk7RUFDSTtBYm8vRVI7O0FhaC9FQTtFQUNJO0VBQ0E7RUFDQTtBYm0vRUo7O0FhMytFSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBYjgrRVI7QWE1K0VROztFQUNJO0VBQ0E7QWIrK0VaO0FheitFSTtFQUNJO0FiMitFUjtBYXArRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FicytFWjtBYW4rRVE7RUFDSTtFQUNBO0FicStFWjtBYW4rRVk7RUFDSTtBYnErRWhCO0FhbCtFWTtFQUNJO0FibytFaEI7QWE3OUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIrOUVSO0FhNzlFUTtFQUNJO0FiKzlFWjtBYTU5RVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjg5RVo7QWEzOUVRO0VBQ0k7RUFDQTtFQUNBO0FiNjlFWjtBYXY5RUk7RUFDSTtBYnk5RVI7QWFwOUVJO0VBQ0k7RUFDQTtBYnM5RVI7QWFwOUVRO0VBQ0k7RUFDQTtBYnM5RVo7QWFwOUVZO0VBQ0k7RUFDQTtBYnM5RWhCOztBYTU4RUE7RUFDSTtBYis4RUo7O0FhNThFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYis4RUo7O0FhNThFQTtFQUNJO0VBQ0E7RUFDQTtBYis4RUo7O0FhNThFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiKzhFSjtBYTc4RUk7RUFDSTtFQUNBO0VBQ0E7QWIrOEVSOztBYTM4RUE7RUFDSTtFQUNBO0VBQ0E7QWI4OEVKOztBYTM4RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjg4RUo7O0FhMzhFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBYjY4RUo7QWEzOEVJO0VBRUk7RUFDQTtFQUNBO0FiNDhFUjs7QWF4OEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIyOEVKO0FhejhFSTtFQUVJO0VBQ0E7RUFDQTtBYjA4RVI7O0FhdDhFQTtFQUNJO0VBQ0E7RUFDQTtBYnk4RUo7O0FhdDhFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FieThFSjs7QWF0OEVBO0VBQ0k7RUFDQTtBYnk4RUo7O0FhaDhFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm04RVI7QWEvN0VRO0VBQ0k7RUFDQTtFQUNBO0FiaThFWjtBYTk3RVE7RUFDSTtBYmc4RVo7QWE1N0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI4N0VSO0FhMzdFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI2N0VSO0FhMzdFUTtFQUNJO0FiNjdFWjtBYTE3RVE7RUFDSTtFQUNBO0VBQ0E7QWI0N0VaOztBYW43RUE7RUFLSTtFQUNBO0FiazdFSjs7QWEvNkVBO0VBQ0k7RUFDQTtFQUNBO0FiazdFSjtBYWg3RUk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QWJrN0VSO0FhMTZFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiNDZFUjtBYXo2RUk7RUFFSTtBYjA2RVI7QWF2NkVJO0VBQ0k7QWJ5NkVSO0FhdjZFUTtFQUNJO0FieTZFWjtBYXQ2RVE7RUFDSTtBYnc2RVo7QWF0NkVZO0VBQ0k7QWJ3NkVoQjtBYWo2RUk7RUFDSTtFQUNBO0FibTZFUjtBYWg2RUk7RUFFSTtBYmk2RVI7QWE5NUVJO0VBQ0k7RUFDQTtFQUNBO0FiZzZFUjtBYTc1RUk7RUFDSTtBYis1RVI7QWF6NUVJOztFQUVJO0VBQ0E7RUFDQTtBYjI1RVI7QWF4NUVJOztFQUVJO0FiMDVFUjtBYXI1RUk7O0VBRUk7QWJ1NUVSO0FhcDVFSTtFQUNJO0FiczVFUjtBYW41RUk7RUFDSTtFQUNBO0VBQ0E7QWJxNUVSO0FhaDVFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiazVFUjs7QWE1NEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiKzRFSjtBYTc0RUk7RUFDSTtBYis0RVI7QWE1NEVJO0VBQ0k7QWI4NEVSO0FhMzRFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI2NEVSO0FhMzRFUTtFQUNJO0FiNjRFWjtBYXo0RUk7RUFDSTtBYjI0RVI7O0FhbjRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiczRFSjs7QWEzM0VJO0VBQ0k7RUFDQTtBYjgzRVI7QWEzM0VJOztFQUVJO0FiNjNFUjs7QWF4M0VBO0VBRUk7SUFDSTtFYjAzRU47QUFDRjtBYXYzRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnkzRUo7QWF0M0VJO0VBQ0k7RUFDQTtBYnczRVI7QWFyM0VJO0VBQ0k7RUFDQTtBYnUzRVI7QWFwM0VJO0VBQ0k7RUFDQTtBYnMzRVI7QWFuM0VJO0VBQ0k7RUFDQTtBYnEzRVI7QWFsM0VJO0VBQ0k7RUFDQTtBYm8zRVI7O0FhOTJFQTtFQUNJO0VBQ0E7QWJpM0VKO0FhNzJFSTtFQUVJO0VBQ0E7RUFDQTtBYjgyRVI7O0FhdDJFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FieTJFUjtBYXQyRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FidzJFUjtBYXQyRVE7RUFDSTtFQUNBO0VBQ0E7QWJ3MkVaO0FhcjJFUTtFQUNJO0FidTJFWjtBYXAyRVE7RUFDSTtBYnMyRVo7QWFwMkVZO0VBQ0k7QWJzMkVoQjtBYW4yRVk7RUFDSTtBYnEyRWhCO0FhaDJFSTtFQUNJO0FiazJFUjs7QWE1MUVBO0VBQ0k7QWIrMUVKOztBYTUxRUE7O0VBRUk7QWIrMUVKOztBYXgxRUE7RUFDSTtFQUNBO0VBQ0E7QWIyMUVKO0FhejFFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIyMUVSOztBYW4xRUE7RUFDSTtFQUNBO0FiczFFSjs7QWFuMUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiczFFSjtBYXAxRUk7RUFDSTtFQUNBO0FiczFFUjs7QWFsMUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJxMUVKOztBYWwxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJxMUVKOztBYWwxRUE7RUFDSTtFQUNBO0VBQ0E7QWJxMUVKOztBYTkwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpMUVKO0FhNzBFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIrMEVSOztBYXowRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjQwRUo7O0FhejBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiNDBFSjtBYTEwRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiNDBFUjs7QWF4MEVBO0VBQ0k7RUFDQTtFQUNBO0FiMjBFSjs7QWF4MEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMjBFSjtBYXowRUk7RUFDSTtFQUNBO0FiMjBFUjtBYXgwRUk7RUFDSTtBYjAwRVI7QWF2MEVJO0VBQ0k7QWJ5MEVSO0FhdjBFUTtFQUNJO0FieTBFWjs7QWFwMEVBO0VBQ0k7RUFDQTtFQUNBO0FidTBFSjs7QWFwMEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FidTBFSjtBYXAwRUk7RUFDSTtFQUNBO0FiczBFUjtBYW4wRUk7RUFDSTtFQUNBO0FicTBFUjs7QWE3ekVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJnMEVKO0FhOXpFSTtFQVRKO0lBVVE7SUFDQTtFYmkwRU47QUFDRjs7QWE5ekVBO0VBQ0k7RUFDQTtBYmkwRUo7O0FhOXpFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpMEVKO0FhL3pFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiaTBFUjtBYS96RVE7RUFDSTtFQUNBO0VBQ0E7QWJpMEVaOztBYTF6RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI2ekVSO0FheHpFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMHpFWjtBYXR6RVk7RUFDSTtFQUNBO0VBQ0E7QWJ3ekVoQjtBYXB6RVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnN6RVo7QWFuekVRO0VBQ0k7RUFDQTtFQUNBO0FicXpFWjs7QWE1eUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiK3lFSjtBYTd5RUk7RUFDSTtFQUNBO0FiK3lFUjtBYTV5RUk7RUFDSTtFQUNBO0FiOHlFUjtBYTN5RUk7RUFDSTtFQUNBO0FiNnlFUjtBYTF5RUk7RUFDSTtFQUNBO0FiNHlFUjtBYXp5RUk7RUFDSTtFQUNBO0FiMnlFUjtBYXh5RUk7RUFDSTtFQUNBO0FiMHlFUjs7QWFseUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJxeUVKOztBYTl4RUE7RUFDSTtBYml5RUo7QWEveEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYml5RVI7O0FhN3hFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJneUVKOztBYXp4RUE7RUFFSTtJQUNJO0lBQ0E7RWIyeEVOO0VheHhFRTtJQUNJO0ViMHhFTjtFYXJ4RU07O0lBRUk7RWJ1eEVWO0VhbnhFRTtJQUdJO0lBQ0E7SUFDQTtFYm14RU47RWFqeEVNO0lBQ0k7RWJteEVWO0VhL3dFRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0ViaXhFTjtFYTl3RUU7SUFDSTtJQUNBO0ViZ3hFTjtFYTd3RUU7SUFDSTtFYit3RU47QUFDRjtBYXJ3RUk7RUFDSTtFQUNBO0VBQ0E7QWJ1d0VSOztBYW53RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJzd0VKO0FhbndFSTtFQUNJO0VBQ0E7QWJxd0VSO0FhbHdFSTtFQUNJO0VBQ0E7QWJvd0VSOztBYTl2RUE7RUFDSTtFQUNBO0FiaXdFSjtBYS92RUk7RUFDSTtBYml3RVI7QWE5dkVJO0VBQ0k7RUFDQTtBYmd3RVI7O0FhNXZFQTtFQUNJO0VBQ0E7QWIrdkVKO0FhM3ZFSTtFQUNJO0VBQ0E7QWI2dkVSOztBYXp2RUE7RUFFSTtJQUNJO0lBQ0E7RWIydkVOO0VheHZFRTtJQUNJO0lBQ0E7RWIwdkVOO0FBQ0Y7QWFqdkVJO0VBQ0k7RUFDQTtFQUNBO0FibXZFUjtBYWh2RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fia3ZFUjtBYWh2RVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fia3ZFWjtBYTd1RVk7RUFDSTtBYit1RWhCO0FhN3VFZ0I7RUFDSTtBYit1RXBCO0FhNXVFZ0I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjh1RXBCO0FhMXVFWTtFQUNJO0FiNHVFaEI7QWF2dUVJO0VBQ0k7RUFDQTtFQUNBO0FieXVFUjs7QWNwdUhBOzs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0Fka3VISjtBY2h1SEk7RUFDSTtBZGt1SFI7O0FjMXRIQTtFQUNJO0FkNnRISjs7QWNqdEhBO0VBQ0k7RUFDQTtBZG90SEo7QWNsdEhJO0VBQ0k7QWRvdEhSO0FjanRISTtFQUNJO0VBQ0E7QWRtdEhSO0FjaHRISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fka3RIUjtBYy9zSEk7RUFDSTtBZGl0SFI7O0FjcnNIQTtFQUNJO0VBQ0E7RUFDQTtBZHdzSEo7O0FjcnNIQTtFQUNJO0VBQ0E7QWR3c0hKO0FjdHNISTtFQUNJO0VBQ0E7QWR3c0hSOztBYy9ySEE7RUFDSTtFQUNBO0VBQ0E7QWRrc0hKOztBYy9ySEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZGtzSEo7QWMvckhJO0VBQ0k7RUFDQTtBZGlzSFI7O0FjN3JIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZGdzSEo7O0FjN3JIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWRnc0hKOztBYzdySEE7RUFDSTtBZGdzSEo7O0FjN3JIQTtFQUNJO0VBQ0E7RUFDQTtBZGdzSEo7O0FjN3JIQTtFQUNJO0VBQ0E7QWRnc0hKOztBYzdySEE7RUFDSTtBZGdzSEo7O0FjN3JIQTtFQUNJO0VBQ0E7RUFDQTtBZGdzSEo7QWM5ckhJO0VBTEo7SUFNUTtFZGlzSE47QUFDRjs7QWM5ckhBO0VBQ0k7QWRpc0hKOztBYzFySEE7RUFDSTtFQUNBO0VBQ0E7QWQ2ckhKOztBYzFySEE7RUFDSTtBZDZySEo7O0FjMXJIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZDZySEo7O0FjMXJIQTtFQUNJO0VBQ0E7RUFDQTtBZDZySEo7O0FjMXJIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FkNnJISjtBYzNySEk7RUFOSjtJQU9RO0lBQ0E7RWQ4ckhOO0VjNXJITTtJQUNJO0VkOHJIVjtBQUNGOztBYzFySEE7RUFDSTtFQUNBO0VBQ0E7QWQ2ckhKOztBYzFySEE7RUFDSTtBZDZySEo7O0FjMXJIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FkNnJISjs7QWN0ckhBO0VBQ0k7RUFDQTtFQUNBO0FkeXJISjs7QWN0ckhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZHlySEo7QWN0ckhJO0VBQ0k7RUFDQTtBZHdySFI7O0FjcHJIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZHVySEo7O0FjcHJIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWR1ckhKOztBY3BySEE7RUFDSTtBZHVySEo7O0FjcHJIQTtFQUNJO0VBQ0E7RUFDQTtBZHVySEo7O0FjcHJIQTtFQUNJO0VBQ0E7QWR1ckhKOztBY3BySEE7RUFDSTtBZHVySEo7O0FjcHJIQTtFQUNJO0VBQ0E7RUFDQTtBZHVySEo7QWNyckhJO0VBTEo7SUFNUTtFZHdySE47QUFDRjs7QWNqckhBO0VBQ0k7RUFDQTtFQUNBO0Fkb3JISjs7QWNqckhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWRvckhKO0FjbHJISTtFQUNJO0VBQ0E7QWRvckhSO0FjanJISTtFQUNJO0VBQ0E7RUFDQTtBZG1ySFI7O0FjM3FIQTtFQUVJO0lBQ0k7SUFDQTtFZDZxSE47RWMxcUhFO0lBQ0k7SUFDQTtFZDRxSE47QUFDRjtBY3pxSEE7O0VBRUk7QWQycUhKOztBY3BxSEE7O0VBRUk7RUFDQTtBZHVxSEo7O0FjcHFIQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkdXFISjtBY3JxSEk7O0VBQ0k7QWR3cUhSOztBZTdoSUE7Ozs7OztFQUFBO0FBWUE7RUFDSTtBZjJoSUo7O0FleGhJQTtFQUNJO0VBQ0E7RUFDQTtBZjJoSUo7O0FlcGhJQTtFQUNJO0VBQ0E7QWZ1aElKOztBZXBoSUE7RUFDSTtFQUNBO0VBQ0E7QWZ1aElKOztBZXBoSUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmdWhJSjs7QWVwaElBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZnVoSUo7O0FlcGhJQTtFQUNJO0VBQ0E7RUFDQTtBZnVoSUo7O0FlaGhJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZm1oSUo7QWVqaElJO0VBQ0k7RUFDQTtBZm1oSVI7O0FlL2dJQTtFQUNJO0VBQ0E7RUFDQTtBZmtoSUo7QWVoaElJO0VBTEo7SUFNUTtFZm1oSU47QUFDRjtBZTdnSVE7RUFDSTtFQUNBO0FmK2dJWjs7QWUxZ0lBO0VBQ0k7RUFDQTtFQUNBO0FmNmdJSjs7QWUxZ0lBO0VBQ0k7RUFDQTtFQUNBO0FmNmdJSjs7QWV4Z0lBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWYyZ0lKO0FlemdJSTtFQUNJO0VBQ0E7RUFDQTtBZjJnSVI7QWV4Z0lJO0VBQ0k7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0Fmd2dJUjtBZXJnSUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmdWdJUjtBZXJnSVE7RUFDSTtFQUNBO0FmdWdJWjs7QWVsZ0lBO0VBQ0k7RUFDQTtFQUNBO0FmcWdJSjtBZW5nSUk7RUFDSTtBZnFnSVI7QWVsZ0lJO0VBQ0k7QWZvZ0lSOztBZTkvSEE7RUFDSTtFQUNBO0VBQ0E7QWZpZ0lKO0FlLy9ISTtFQUxKO0lBTVE7RWZrZ0lOO0FBQ0Y7O0FlMy9IQTtFQUNJO0FmOC9ISjs7QWUzL0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjgvSEo7O0FlMy9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FmOC9ISjs7QWUzL0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmOC9ISjs7QWUzL0hBO0VBQ0k7RUFDQTtFQUNBO0FmOC9ISjtBZTUvSEk7RUFDSTtBZjgvSFI7O0FlMS9IQTtFQUNJO0VBQ0E7RUFDQTtBZjYvSEo7O0FlMS9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmNi9ISjs7QWUxL0hBO0VBQ0k7RUFDQTtFQUNBO0FmNi9ISjs7QWUxL0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWY2L0hKO0FlMy9ISTtFQUNJO0FmNi9IUjtBZTEvSEk7RUFDSTtBZjQvSFI7QWV6L0hJO0VBQ0k7QWYyL0hSO0FleC9ISTtFQUNJO0VBQ0E7QWYwL0hSOztBZWwvSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZnEvSEo7QWVuL0hJO0VBTko7SUFPUTtFZnMvSE47QUFDRjtBZXAvSEk7RUFWSjtJQVdRO0VmdS9ITjtBQUNGOztBZWgvSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZm0vSEo7O0FlaC9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZm0vSEo7O0FlaC9IQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZtL0hKOztBZWgvSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZm0vSEo7O0FlaC9IQTtFQUNJO0FmbS9ISjs7QWU5K0hBO0VBQ0k7QWZpL0hKOztBZTkrSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmaS9ISjtBZS8rSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZpL0hSO0FlOStISTtFQUNJO0FmZy9IUjtBZTcrSEk7RUFDSTtBZisrSFI7QWU1K0hJO0VBeEJKO0lBeUJRO0VmKytITjtBQUNGOztBZXgrSEk7RUFDSTtBZjIrSFI7QWV4K0hJO0VBQ0k7QWYwK0hSO0FlcitIUTtFQU5KO0lBT1E7RWZ3K0hWO0FBQ0Y7O0FlOTlISTs7RUFFSTtBZmkrSFI7QWU3OUhRO0VBREo7SUFFUTtFZmcrSFY7QUFDRjs7QWU1OUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWYrOUhKO0FlNzlISTtFQUNJO0FmKzlIUjtBZTU5SEk7RUFDSTtBZjg5SFI7QWUzOUhJO0VBQ0k7QWY2OUhSO0FlMTlISTtFQUNJO0VBQ0E7QWY0OUhSO0FlMTlIUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FmNDlIWjtBZXg5SEk7RUFHSTtFQUNBO0FmdzlIUjtBZXI5SEk7RUFJSTtBZm85SFI7QWVsOUhRO0VBQ0k7QWZvOUhaO0FlNThIUTs7Ozs7O0VBRUk7QWZrOUhaO0FlMThIUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjQ4SFo7QWV6OEhRO0VBQ0k7QWYyOEhaO0FlcjhIUTtFQUNJO0FmdThIWjtBZW44SEk7RUFDSTtFQUNBO0FmcThIUjtBZW44SFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmcThIWjtBZWo4SEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZm04SFI7QWVoOEhJO0VBQ0k7QWZrOEhSO0FlOTdISTtFQS9HSjtJQWdIUTtJQUlBO0lBQ0Esc0VBQ0k7SUFJSjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWYwN0hOO0VleDdITTtJQUNJO0VmMDdIVjtFZXY3SE07SUFDSTtFZnk3SFY7RWV0N0hNO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWZ3N0hWO0VlcjdITTtJQUNJO0VmdTdIVjtFZXI3SFU7SUFDSTtJQUNBO0VmdTdIZDtFZW43SE07SUFDSTtFZnE3SFY7RWVuN0hVO0lBQ0k7RWZxN0hkO0VlajdITTtJQUNJO0VmbTdIVjtFZWo3SFU7SUFDSTtFZm03SGQ7RWUvNkhNO0lBQ0k7RWZpN0hWO0VlLzZIVTtJQUNJO0VmaTdIZDtFZTc2SE07SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWYrNkhWO0VlNTZITTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VmODZIVjtFZTU2SFU7SUFDSTtJQUNBO0VmODZIZDtFZTM2SFU7SUFDSTtJQUNBO0lBQ0E7RWY2NkhkO0FBQ0Y7O0FldDZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZ5NkhKO0FldjZISTtFQUNJO0VBQ0E7QWZ5NkhSO0FldDZISTtFQUNJO0VBQ0E7RUFDQTtBZnc2SFI7QWVyNkhJO0VBQ0k7RUFDQTtBZnU2SFI7O0FlajZIQTtFQUNJO0VBQ0E7QWZvNkhKOztBZWo2SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZvNkhKO0FlbDZISTtFQUNJO0VBQ0E7RUFDQTtBZm82SFI7O0FlcjVIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FmdzVISjs7QWVyNUhBO0VBQ0k7RUFDQTtFQUNBO0FmdzVISjs7QWVyNUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZ3NUhKOztBZXI1SEE7RUFDSTtFQUNBO0FmdzVISjtBZXQ1SEk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZ3NUhSOztBZXA1SEE7RUFDSTtFQUNBO0VBQ0E7QWZ1NUhKOztBZXA1SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmdTVISjtBZXI1SEk7RUFDSTtFQUNBO0FmdTVIUjtBZXA1SEk7RUFDSTtFQUNBO0FmczVIUjs7QWVsNUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZnE1SEo7QWVuNUhJO0VBQ0k7RUFDQTtFQUNBO0FmcTVIUjs7QWU3NEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWZnNUhKOztBZTc0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmZzVISjs7QWU3NEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWZnNUhKOztBZTc0SEE7RUFDSTtFQUNBO0VBQ0E7QWZnNUhKOztBZTc0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZmc1SEo7O0FlNzRIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZnNUhKO0FlOTRISTtFQVZKO0lBV1E7RWZpNUhOO0FBQ0Y7O0FlOTRIQTtFQUNJO0VBQ0E7RUFDQTtBZmk1SEo7QWUvNEhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZmk1SFI7QWUvNEhRO0VBUEo7SUFRUTtFZms1SFY7QUFDRjs7QWU5NEhBO0VBQ0k7RUFDQTtFQUNBO0FmaTVISjs7QWUxNEhBO0VBQ0k7RUFDQTtBZjY0SEo7QWUzNEhJO0VBSko7SUFLUTtFZjg0SE47QUFDRjs7QWUzNEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWY4NEhKOztBZTM0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWY4NEhKOztBZTM0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmODRISjs7QWUzNEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWY4NEhKOztBZTM0SEE7RUFDSTtBZjg0SEo7O0FlMzRIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FmODRISjtBZTU0SEk7RUFDSTtBZjg0SFI7O0FlMTRIQTtFQUNJO0VBQ0E7QWY2NEhKOztBZTE0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZjY0SEo7O0FldjRISTtFQUNJO0FmMDRIUjs7QWV0NEhBO0VBQ0k7RUFDQTtFQUNBO0FmeTRISjtBZXY0SEk7RUFDSTtFQUNBO0VBQ0E7QWZ5NEhSO0FlbjRISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZxNEhSOztBZS8zSEE7RUFDSTtFQUNBO0VBQ0E7QWZrNEhKO0FlaDRISTtFQUNJO0VBQ0E7RUFDQTtBZms0SFI7O0FlMTNIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWY2M0hKO0FlMzNISTtFQUNJO0VBQ0E7QWY2M0hSO0FlMzNIUTtFQUNJO0FmNjNIWjtBZTEzSFE7RUFDSTtBZjQzSFo7O0FldjNIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmMDNISjtBZXgzSEk7RUFDSTtBZjAzSFI7QWV2M0hJO0VBQ0k7QWZ5M0hSOztBZXIzSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZnczSEo7O0FlcjNIQTtFQUNJO0FmdzNISjs7QWVyM0hBO0VBQ0k7RUFDQTtFQUNBO0FmdzNISjs7QWVwM0hBO0VBQ0k7QWZ1M0hKOztBZXAzSEE7RUFDSTtFQUNBO0VBQ0E7QWZ1M0hKO0FlcjNISTtFQUxKO0lBTVE7RWZ3M0hOO0FBQ0Y7O0FlajNIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmbzNISjs7QWVqM0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZvM0hKO0FlLzJISTtFQVpKO0lBYVE7SUFDQTtFZmszSE47RWVoM0hNOztJQUVJO0VmazNIVjtFZS8ySE07SUFDSTtFZmkzSFY7RWUvMkhVO0lBQ0k7RWZpM0hkO0FBQ0Y7O0FlMTJIQTtFQUNJO0VBQ0E7QWY2MkhKO0FlMzJISTtFQUNJO0VBQ0E7RUFDQTtBZjYySFI7QWUzMkhRO0VBQ0k7RUFDQTtBZjYySFo7QWV6MkhJO0VBQ0k7RUFDQTtBZjIySFI7QWV6MkhRO0VBQ0k7QWYyMkhaO0FldjJISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZ5MkhSO0FldDJISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZ3MkhSO0FldDJIUTtFQUNJO0VBQ0E7QWZ3MkhaO0FlcjJIUTtFQUNJO0VBQ0E7QWZ1MkhaO0FlcjJIWTtFQUNJO0FmdTJIaEI7QWVsMkhJO0VBQ0k7QWZvMkhSOztBZTUxSEE7RUFFSTtJQUNJO0VmODFITjtFZTMxSEU7SUFDSTtJQUNBO0lBQ0E7RWY2MUhOO0FBQ0Y7QWUxMUhBO0VBRUk7SUFDSTtFZjIxSE47QUFDRjtBZXgxSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmMDFISjtBZXgxSEk7RUFDSTtFQUNBO0FmMDFIUjs7QWV0MUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWZ5MUhKOztBZXQxSEE7RUFDSTtFQUNBO0VBQ0E7QWZ5MUhKOztBZXQxSEE7RUFDSTtFQUNBO0VBQ0E7QWZ5MUhKOztBZXQxSEE7RUFDSTtFQUNBO0VBQ0E7QWZ5MUhKOztBZXQxSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZ5MUhKO0FldjFISTtFQUNJO0VBQ0E7QWZ5MUhSO0FldDFISTtFQUNJO0VBQ0E7RUFDQTtBZncxSFI7O0FlaDFIQTtFQUVJO0lBQ0k7SUFDQTtFZmsxSE47RWUvMEhFO0lBQ0k7SUFDQTtFZmkxSE47QUFDRjtBZTEwSEE7RUFFSTtJQUNJO0lBQ0E7RWYyMEhOO0VleDBIRTtJQUNJO0lBQ0E7RWYwMEhOO0VldjBIRTtJQUNJO0lBQ0E7RWZ5MEhOO0VldDBIRTtJQUNJO0VmdzBITjtFZXIwSEU7OztJQUdJO0VmdTBITjtFZXAwSEU7SUFDSTtFZnMwSE47RWVwMEhNO0lBQ0k7RWZzMEhWO0VlbDBIRTtJQUNJO0VmbzBITjtFZWwwSE07O0lBRUk7RWZvMEhWO0FBQ0Y7QWV6ekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjJ6SEo7QWV6ekhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmMnpIUjtBZXp6SFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWYyekhaO0FleHpIUTtFQUNJO0FmMHpIWjtBZXh6SFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZjB6SGhCO0FldnpIWTtFQUNJO0VBQ0E7RUFDQTtBZnl6SGhCO0FlcHpISTtFQUNJO0VBQ0E7RUFDQTtBZnN6SFI7O0FlN3lISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FmZ3pIUjtBZTl5SFE7RUFOSjtJQU9RO0VmaXpIVjtBQUNGO0FlL3lIUTtFQUNJO0FmaXpIWjtBZTl5SFE7RUFDSTtFQUNBO0VBQ0E7QWZnekhaO0FlOXlIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FmZ3pIaEI7QWU3eUhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZit5SGhCO0FlNXlIWTtFQUNJO0VBQ0E7QWY4eUhoQjtBZTN5SFk7RUFDSTtFQUNBO0VBQ0E7QWY2eUhoQjtBZXh5SEk7RUFDSTtFQUNBO0FmMHlIUjtBZXJ5SEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZnV5SFI7QWVyeUhRO0VBTko7SUFPUTtFZnd5SFY7QUFDRjtBZXR5SFE7RUFDSTtFQUNBO0VBQ0E7QWZ3eUhaO0FldHlIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Fmd3lIaEI7QWVyeUhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZnV5SGhCO0FlbnlIZ0I7RUFFSTtBZm95SHBCO0FlaHlIWTtFQUNJO0VBQ0E7QWZreUhoQjtBZS94SFk7RUFDSTtFQUNBO0VBQ0E7QWZpeUhoQjs7QWUzeEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWY4eEhKO0FlNXhISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjh4SFI7QWUzeEhJO0VBQ0k7RUFDQTtFQUNBO0FmNnhIUjtBZTN4SFE7RUFDSTtFQUNBO0FmNnhIWjs7QWV0eEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZnl4SEo7QWV2eEhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FmeXhIUjtBZXZ4SFE7RUFDSTtBZnl4SFo7QWV0eEhRO0VBQ0k7QWZ3eEhaO0FlcnhIUTtFQUNJO0FmdXhIWjtBZW54SEk7RUFDSTtFQUNBO0VBQ0E7QWZxeEhSO0FlbnhIUTtFQUNJO0VBQ0E7RUFDQTtBZnF4SFo7QWVseEhRO0VBQ0k7RUFDQTtFQUNBO0Fmb3hIWjtBZWx4SFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZveEhoQjtBZWx4SGdCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0Fmb3hIcEI7QWVqeEhnQjtFQUNJO0FmbXhIcEI7QWU5d0hRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZmd4SFo7QWU5d0hZO0VBQ0k7RUFDQTtBZmd4SGhCO0FlN3dIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWYrd0hoQjtBZTF3SEk7RUFDSTtBZjR3SFI7O0FlbHdIQTtFQUNJO0VBQ0E7QWZxd0hKOztBZWh3SEE7RUFDSTtFQUNBO0VBQ0E7QWZtd0hKOztBZWh3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZm13SEo7QWVqd0hJO0VBQ0k7QWZtd0hSOztBZS92SEE7RUFDSTtFQUNBO0VBQ0E7QWZrd0hKOztBZS92SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZmt3SEo7O0FlN3ZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZmd3SEo7O0FlN3ZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWZnd0hKO0FlOXZISTtFQUNJO0VBQ0E7RUFDQTtBZmd3SFI7O0FlNXZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZit2SEo7O0FlNXZIQTtFQUNJO0VBQ0E7RUFDQTtBZit2SEo7O0FlMXZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjZ2SEo7O0FlMXZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjZ2SEo7QWUzdkhJO0VBQ0k7RUFDQTtBZjZ2SFI7O0FlenZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWY0dkhKO0FlMXZISTtFQUNJO0FmNHZIUjtBZTF2SFE7RUFDSTtBZjR2SFo7O0FldnZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZjB2SEo7O0FldnZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FmMHZISjs7QWV2dkhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWYwdkhKOztBZXZ2SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZjB2SEo7O0FldnZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWYwdkhKO0FleHZISTtFQUNJO0VBQ0E7RUFDQTtBZjB2SFI7O0FnQmppTEE7Ozs7OztFQUFBO0FBWUE7RUFDSTtBaEIraExKOztBZ0I1aExBO0VBQ0k7RUFDQTtFQUNBO0FoQitoTEo7O0FnQnhoTEE7RUFDSTtFQUNBO0FoQjJoTEo7O0FnQnhoTEE7RUFDSTtFQUNBO0VBQ0E7QWhCMmhMSjs7QWdCeGhMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCMmhMSjs7QWdCeGhMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCMmhMSjs7QWdCeGhMQTtFQUNJO0VBQ0E7RUFDQTtBaEIyaExKOztBZ0JwaExBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCdWhMSjtBZ0JyaExJO0VBTko7SUFPUTtFaEJ3aExOO0FBQ0Y7O0FnQmpoTEE7RUFDSTtFQUNBO0FoQm9oTEo7QWdCbGhMSTtFQUpKO0lBS1E7SUFDQTtFaEJxaExOO0FBQ0Y7O0FnQmxoTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJxaExKOztBZ0JsaExBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQnFoTEo7O0FnQmxoTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQnFoTEo7O0FnQmxoTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJxaExKOztBZ0JsaExBO0VBQ0k7QWhCcWhMSjs7QWdCaGhMQTtFQUNJO0VBQ0E7QWhCbWhMSjtBZ0JqaExJO0VBQ0k7QWhCbWhMUjtBZ0JoaExJO0VBQ0k7RUFDQTtBaEJraExSOztBZ0I5Z0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQmloTEo7O0FnQjlnTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJpaExKO0FnQi9nTEk7RUFDSTtFQUNBO0VBQ0E7QWhCaWhMUjs7QWdCN2dMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJnaExKOztBZ0IzZ0xBO0VBQ0k7RUFDQTtFQUNBO0FoQjhnTEo7O0FnQjNnTEE7RUFDSTtFQUNBO0VBQ0E7QWhCOGdMSjs7QWdCM2dMQTtFQUNJO0VBQ0E7QWhCOGdMSjs7QWdCM2dMQTtFQUNJO0VBQ0E7RUFDQTtBaEI4Z0xKOztBZ0J6Z0xBO0VBQ0k7RUFDQTtFQUNBO0FoQjRnTEo7O0FnQnpnTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCNGdMSjs7QWdCemdMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI0Z0xKOztBZ0J6Z0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEI0Z0xKOztBZ0J2Z0xBO0VBQ0k7RUFDQTtFQUNBO0FoQjBnTEo7O0FnQnZnTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEIwZ0xKOztBZ0J2Z0xBO0VBQ0k7RUFDQTtBaEIwZ0xKOztBZ0J2Z0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCMGdMSjs7QWdCcmdMQTtFQUNJO0FoQndnTEo7O0FnQm5nTEE7RUFDSTtBaEJzZ0xKOztBZ0JuZ0xBO0VBQ0k7RUFDQTtFQUNBO0FoQnNnTEo7QWdCcGdMSTtFQUNJO0VBQ0E7RUFDQTtBaEJzZ0xSO0FnQi8vS0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQmlnTFI7O0FnQngvS0k7RUFESjtJQUVRO0VoQjQvS047QUFDRjs7QWdCei9LQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQjQvS0o7O0FnQnovS0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCNC9LSjs7QWdCei9LQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCNC9LSjs7QWdCei9LQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQjQvS0o7O0FnQnovS0E7RUFDSTtBaEI0L0tKOztBZ0J6L0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQjQvS0o7O0FnQmwvS0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQnEvS1I7QWdCbi9LUTtFQUNJO0VBQ0E7QWhCcS9LWjtBZ0IvK0tJO0VBQ0k7RUFDQTtBaEJpL0tSO0FnQjUrS0k7RUFDSTtBaEI4K0tSO0FnQnorS0k7RUFDSTtFQUNBO0FoQjIrS1I7QWdCdCtLSTtFQUNJO0FoQncrS1I7O0FnQmgrS0E7RUFDSTtFQUNBO0VBQ0E7QWhCbStLSjs7QWdCaCtLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQm0rS0o7QWdCaitLSTtFQUNJO0VBQ0E7QWhCbStLUjtBZ0JoK0tJO0VBQ0k7RUFDQTtFQUNBO0FoQmsrS1I7QWdCaCtLUTtFQUNJO0VBQ0E7QWhCaytLWjtBZ0IvOUtRO0VBQ0k7RUFDQTtBaEJpK0taO0FnQjc5S0k7RUFDSTtFQUNBO0FoQis5S1I7O0FnQjM5S0E7RUFDSTtBaEI4OUtKOztBZ0IzOUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCODlLSjs7QWdCMzlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQjg5S0o7O0FnQjM5S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCODlLSjs7QWdCMzlLQTtFQUNJO0VBQ0E7RUFDQTtBaEI4OUtKOztBZ0IzOUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCODlLSjs7QWdCMzlLQTtFQUNJO0VBQ0E7QWhCODlLSjs7QWdCMzlLQTtFQUNJO0VBQ0E7QWhCODlLSjs7QWdCMzlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCODlLSjs7QWdCdjlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEIwOUtKO0FnQng5S0k7O0VBRUk7QWhCMDlLUjs7QWdCdDlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJ5OUtKO0FnQnY5S0k7RUFDSTtFQUNBO0FoQnk5S1I7O0FnQmo5S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJvOUtKO0FnQmw5S0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQm85S1I7QWdCajlLSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJtOUtSO0FnQmg5S0k7RUFDSTtFQUNBO0VBQ0E7QWhCazlLUjtBZ0IvOEtJO0VBQ0k7RUFDQTtBaEJpOUtSOztBZ0IzOEtBO0VBQ0k7QWhCODhLSjs7QWdCdjhLQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEIwOEtKO0FnQng4S0k7O0VBQ0k7RUFDQTtBaEIyOEtSO0FnQng4S0k7O0VBQ0k7RUFDQTtBaEIyOEtSO0FnQno4S1E7O0VBQ0k7QWhCNDhLWjs7QWdCdjhLQTtFQUNJO0FoQjA4S0o7O0FnQnY4S0E7RUFDSTtFQUNBO0FoQjA4S0o7O0FnQm44S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQnM4S0o7O0FnQm44S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCczhLSjs7QWdCbjhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCczhLSjs7QWdCbjhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCczhLSjs7QWdCbjhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCczhLSjs7QWdCbjhLQTtFQUNJO0FoQnM4S0o7O0FnQi83S0E7RUFDSTtFQUNBO0VBQ0E7QWhCazhLSjs7QWdCLzdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCazhLSjs7QWdCLzdLQTtFQUNJO0VBQ0E7QWhCazhLSjs7QWdCLzdLQTtFQUNJO0VBQ0E7QWhCazhLSjs7QWdCLzdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQms4S0o7O0FnQi83S0E7RUFDSTtFQUNBO0VBQ0E7QWhCazhLSjs7QWdCLzdLQTtFQUNJO0VBQ0E7RUFDQTtBaEJrOEtKOztBZ0IvN0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJrOEtKO0FnQmg4S0k7RUFDSTtFQUNBO0FoQms4S1I7O0FnQjk3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCaThLSjs7QWdCMTdLQTtFQUNJO0VBQ0E7RUFDQTtBaEI2N0tKO0FnQjM3S0k7RUFDSTtFQUNBO0FoQjY3S1I7QWdCMTdLSTtFQUNJO0FoQjQ3S1I7O0FnQnA3S0E7RUFFSTtJQUNJO0lBQ0E7RWhCczdLTjtFZ0JuN0tFO0lBQ0k7SUFDQTtFaEJxN0tOO0VnQmw3S0U7SUFDSTtJQUNBO0VoQm83S047RWdCajdLRTtJQUNJO0VoQm03S047RWdCaDdLRTtJQUNJO0VoQms3S047RWdCLzZLRTtJQUNJO0VoQmk3S047RWdCOTZLRTtJQUNJO0lBQ0E7RWhCZzdLTjtFZ0I5NktNO0lBQ0k7SUFDQTtFaEJnN0tWO0VnQjU2S0U7SUFDSTtJQUNBO0lBQ0E7RWhCODZLTjtBQUNGO0FpQnB2TUE7Ozs7O0VBQUE7QUFTQTtFQUNJO0FqQm12TUo7QWlCanZNSTtFQUNJO0VBQ0E7QWpCbXZNUjs7QWtCandNQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7QWxCK3ZNSjs7QW1CM3dNQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0VBQ0E7QW5CeXdNSjtBbUJ2d01JO0VBSko7SUFLUTtJQUNBO0VuQjB3TU47QUFDRjs7QW1CdndNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CMHdNSjs7QW1CdndNQTtFQUNJO0VBQ0E7QW5CMHdNSjs7QW1CdndNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkIwd01KO0FtQnh3TUk7RUFDSTtFQUNBO0VBQ0E7QW5CMHdNUjtBbUJ2d01JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5CeXdNUjs7QW1CcndNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cd3dNSjs7QW1CcndNQTtFQUNJO0FuQnd3TUo7O0FtQmp3TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cb3dNSjtBbUJsd01JO0VBWEo7SUFZUTtJQUNBO0lBQ0E7RW5CcXdNTjtBQUNGOztBbUJsd01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQnF3TUo7O0FtQmx3TUE7RUFDSTtBbkJxd01KOztBbUJsd01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQnF3TUo7O0FtQmx3TUE7RUFDSTtFQUNBO0VBQ0E7QW5CcXdNSjs7QW1COXZNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQml3TUo7QW1COXZNSTtFQUNJO0FuQmd3TVI7O0FtQjV2TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CK3ZNSjs7QW1CNXZNQTtFQUNJO0VBQ0E7QW5CK3ZNSjs7QW1CNXZNQTtFQUNJO0FuQit2TUo7O0FtQjV2TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CK3ZNSjs7QW1CeHZNQTtFQUNJO0VBQ0E7RUFDQTtBbkIydk1KO0FtQnp2TUk7RUFMSjtJQU1RO0lBQ0E7RW5CNHZNTjtBQUNGOztBbUJ6dk1BO0VBQ0k7RUFDQTtFQUNBO0FuQjR2TUo7O0FtQnp2TUE7RUFDSTtBbkI0dk1KOztBbUJ6dk1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkI0dk1KOztBbUJ6dk1BO0VBQ0k7RUFDQTtFQUNBO0FuQjR2TUo7O0FtQnJ2TUE7RUFDSTtFQUNBO0VBQ0E7QW5Cd3ZNSjs7QW1CcnZNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cd3ZNSjtBbUJ0dk1JO0VBQ0k7QW5Cd3ZNUjs7QW1CcHZNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQnV2TUo7O0FtQnB2TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJ1dk1KOztBbUJwdk1BO0VBQ0k7RUFDQTtBbkJ1dk1KOztBbUJwdk1BO0VBQ0k7RUFDQTtBbkJ1dk1KOztBbUJwdk1BO0VBQ0k7QW5CdXZNSjs7QW1CcHZNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQnV2TUo7O0FtQnB2TUE7RUFDSTtFQUNBO0VBQ0E7QW5CdXZNSjs7QW1CcHZNQTtFQUNJO0VBQ0E7QW5CdXZNSjs7QW1CaHZNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQm12TUo7QW1CanZNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQm12TVI7QW1CaHZNSTtFQUNJO0FuQmt2TVI7QW1CL3VNSTtFQUNJO0FuQml2TVI7O0FtQnp1TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQjR1TUo7O0FtQnp1TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkI0dU1KO0FtQjF1TUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkI0dU1SO0FtQnp1TUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkIydU1SOztBbUJ2dU1BO0VBQ0k7RUFDQTtFQUNBO0FuQjB1TUo7QW1CeHVNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQjB1TVI7QW1CeHVNUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CMHVNWjs7QW1CaHVNQTtFQUVJO0lBQ0k7RW5Ca3VNTjtBQUNGO0FtQi90TUE7RUFHSTtJQUNJO0VuQit0TU47RW1CN3RNTTtJQUNJO0lBQ0E7RW5CK3RNVjtBQUNGO0FtQnZ0TUE7RUFFSTs7SUFFSTtFbkJ3dE1OO0FBQ0Y7QW9CNW1OQTs7Ozs7RUFBQTtBQWFJO0VBQ0k7QXBCdW1OUjs7QW9Cam1OQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCb21OSjtBb0JsbU5JO0VBUEo7SUFRUTtJQUNBO0lBQ0E7RXBCcW1OTjtBQUNGOztBb0JsbU5BO0VBQ0k7QXBCcW1OSjs7QW9CbG1OQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQnFtTko7QW9Cbm1OSTtFQU5KO0lBT1E7SUFDQTtFcEJzbU5OO0VvQnBtTk07SUFDSTtJQUNBO0VwQnNtTlY7QUFDRjs7QW9COWxOQTtFQUNJO0FwQmltTko7O0FvQjlsTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEJpbU5KO0FvQi9sTkk7RUFOSjtJQU9RO0lBQ0E7RXBCa21OTjtBQUNGOztBb0IvbE5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCa21OSjtBb0JobU5JO0VBQ0k7RUFDQTtFQUNBO0FwQmttTlI7QW9CL2xOSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCaW1OUjtBb0I5bE5JO0VBQ0k7QXBCZ21OUjs7QW9CNWxOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQitsTko7QW9CN2xOSTtFQU5KO0lBT1E7RXBCZ21OTjtBQUNGOztBb0I3bE5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEJnbU5KOztBb0I3bE5BO0VBQ0k7QXBCZ21OSjtBb0I5bE5JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQmdtTlI7QW9COWxOUTtFQUNJO0FwQmdtTlo7QW9CN2xOUTtFQUNJO0FwQitsTlo7QW9CM2xOSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCNmxOUjtBb0IxbE5JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCNGxOUjs7QW9CdGxOQTtFQUNJO0FwQnlsTko7O0FvQnRsTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQnlsTko7QW9CdmxOSTtFQUNJO0VBQ0E7QXBCeWxOUjtBb0J0bE5JO0VBQ0k7QXBCd2xOUjs7QW9CaGxOQTtFQUNJO0FwQm1sTko7O0FvQmhsTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCbWxOSjtBb0JqbE5JO0VBUko7SUFTUTtJQUNBO0VwQm9sTk47QUFDRjs7QW9CL2tOSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEJrbE5SO0FvQmhsTlE7RUFDSTtFQUNBO0VBQ0E7QXBCa2xOWjs7QW9CemtOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEI0a05KOztBb0J2a05JO0VBQ0k7RUFDQTtFQUNBO0FwQjBrTlI7QW9CdmtOSTtFQUNJO0VBQ0E7QXBCeWtOUjtBb0J0a05JO0VBQ0k7QXBCd2tOUjtBb0J0a05RO0VBSEo7SUFJUTtFcEJ5a05WO0FBQ0Y7O0FvQm5rTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEJza05KO0FvQnBrTkk7RUFDSTtFQUNBO0VBQ0E7QXBCc2tOUjs7QW9CaGtOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCbWtOSjs7QW9CaGtOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQm1rTko7O0FvQjlqTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQmlrTko7QW9CL2pOSTtFQUNJO0VBQ0E7QXBCaWtOUjtBb0I5ak5JO0VBQ0k7RUFDQTtFQUNBO0FwQmdrTlI7QW9CN2pOSTtFQXJCSjtJQXNCUTtJQUNBO0VwQmdrTk47QUFDRjs7QW9CM2pOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQjhqTko7QW9CNWpOSTtFQUNJO0VBQ0E7RUFDQTtBcEI4ak5SO0FvQjVqTlE7RUFDSTtBcEI4ak5aOztBb0J2ak5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEIwak5KO0FvQnhqTkk7RUFDSTtBcEIwak5SO0FvQnZqTkk7RUFDSTtBcEJ5ak5SO0FvQnRqTkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEJ3ak5SOztBb0Jsak5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBCcWpOSjtBb0Juak5JO0VBQ0k7RUFDQTtFQUNBO0FwQnFqTlI7QW9CbGpOSTtFQUNJO0VBQ0E7RUFDQTtBcEJvak5SO0FvQmpqTkk7RUFDSTtFQUNBO0FwQm1qTlI7O0FvQjdpTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQmdqTko7O0FvQjNpTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCOGlOSjtBb0I1aU5JO0VBQ0k7RUFDQTtFQUNBO0FwQjhpTlI7QW9CM2lOSTtFQUNJO0VBQ0E7RUFDQTtBcEI2aU5SO0FvQjNpTlE7RUFDSTtBcEI2aU5aO0FvQnppTkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEIyaU5SOztBb0JuaU5BO0VBRUk7SUFDSTtFcEJxaU5OO0VvQmxpTkU7SUFDSTtFcEJvaU5OO0VvQmppTkU7SUFDSTtJQUNBO0VwQm1pTk47RW9CaGlORTtJQUNJO0VwQmtpTk47RW9CL2hORTtJQUNJO0VwQmlpTk47RW9COWhORTtJQUNJO0VwQmdpTk47QUFDRjtBb0I3aE5BO0VBRUk7SUFDSTtFcEI4aE5OO0VvQjNoTkU7SUFDSTtFcEI2aE5OO0VvQjFoTkU7SUFDSTtJQUNBO0VwQjRoTk47RW9CemhORTtJQUNJO0VwQjJoTk47RW9CeGhORTtJQUNJO0VwQjBoTk47QUFDRjtBb0JqaE5BOztFQUVJO0VBQ0E7QXBCbWhOSjs7QW9CL2dOQTtFQUVJO0lBQ0k7RXBCaWhOTjtFb0I5Z05FO0lBQ0k7RXBCZ2hOTjtBQUNGO0FvQjVnTkE7RUFFSTs7OztJQUlJO0VwQjZnTk47QUFDRjtBcUIzak9BOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJ3ak9KOztBcUJyak9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXJCd2pPSjs7QXFCcmpPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJ3ak9KOztBcUJyak9BO0VBQ0k7QXJCd2pPSjs7QXFCcmpPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCd2pPSjs7QXFCcmpPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQndqT0o7O0FxQnJqT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJ3ak9KOztBcUJyak9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJ3ak9KO0FxQnRqT0k7RUFDSTtFQUNBO0FyQndqT1I7O0FxQmhqT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckJtak9KOztBcUJoak9BO0VBQ0k7RUFDQTtFQUNBO0FyQm1qT0o7O0FxQmhqT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCbWpPSjtBcUJqak9JO0VBQ0k7RUFDQTtBckJtak9SOztBcUIzaU9BO0VBQ0k7RUFDQTtBckI4aU9KOztBcUIzaU9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQjhpT0o7QXFCNWlPSTtFQUNJO0VBQ0E7QXJCOGlPUjtBcUIzaU9JO0VBQ0k7RUFDQTtBckI2aU9SOztBcUJ6aU9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckI0aU9KOztBcUJ6aU9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQjRpT0o7O0FxQnppT0E7RUFDSTtFQUNBO0FyQjRpT0o7O0FxQnppT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQjRpT0o7O0FxQnppT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckI0aU9KOztBcUJ6aU9BO0VBQ0k7QXJCNGlPSjs7QXFCaGlPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQm1pT1I7QXFCamlPUTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCa2lPWjtBcUI5aE9ZO0VBQ0k7RUFDQTtBckJnaU9oQjtBcUI1aE9RO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckI4aE9aO0FxQjVoT1k7RUFDSTtFQUNBO0VBQ0E7QXJCOGhPaEI7QXFCMWhPUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQjRoT1o7O0FxQmpoT0E7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFckJtaE9OO0VxQmpoT007SUFDSTtJQUNBO0VyQm1oT1Y7RXFCL2dPRTtJQUNJO0VyQmloT047RXFCOWdPRTtJQUNJO0VyQmdoT047RXFCN2dPRTtJQUNJO0VyQitnT047RXFCN2dPTTtJQUNJO0lBQ0E7RXJCK2dPVjtFcUIzZ09FO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RXJCNmdPTjtFcUIxZ09FO0lBQ0k7RXJCNGdPTjtFcUJ6Z09FO0lBQ0k7SUFDQTtFckIyZ09OO0VxQnpnT007SUFDSTtJQUNBO0VyQjJnT1Y7RXFCdmdPRTtJQUNJO0VyQnlnT047RXFCdGdPRTtJQUNJO0VyQndnT047RXFCbmdPTTtJQUNJO0lBQ0E7RXJCcWdPVjtFcUJsZ09NO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RXJCb2dPVjtFcUJoZ09FO0lBQ0k7RXJCa2dPTjtFcUJoZ09NO0lBQ0k7SUFDQTtFckJrZ09WO0VxQmhnT1U7SUFDSTtJQUNBO0VyQmtnT2Q7RXFCOS9OTTtJQUNJO0VyQmdnT1Y7RXFCNy9OTTtJQUNJO0VyQisvTlY7RXFCNS9OTTtJQUNJO0VyQjgvTlY7QUFDRjtBcUJ6L05BO0VBRUk7SUFDSTtFckIwL05OO0FBQ0Y7QXFCbi9OQTtFQUVJO0lBQ0k7RXJCby9OTjtBQUNGO0FzQmwzT0E7Ozs7Ozs7Ozs7RUFBQTtBQWdCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEIrMk9KOztBc0I1Mk9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0QisyT0o7O0FzQjUyT0E7RUFFSTtJQUNJO0lBQ0E7RXRCODJPTjtFc0IzMk9FO0lBQ0k7SUFDQTtFdEI2Mk9OO0FBQ0Y7QXNCcDJPQTtFQUNJO0VBQ0E7RUFDQTtBdEJzMk9KO0FzQnAyT0k7RUFDSTtFQUNBO0F0QnMyT1I7O0FzQi8xT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEJrMk9KO0FzQmgyT0k7RUFDSTtFQUNBO0F0QmsyT1I7O0FzQjkxT0E7RUFDSTtFQUNBO0F0QmkyT0o7O0FzQjkxT0E7RUFDSTtFQUNBO0F0QmkyT0o7O0FzQjkxT0E7RUFDSTtFQUNBO0F0QmkyT0o7O0FzQjkxT0E7RUFDSTtFQUNBO0F0QmkyT0o7O0FzQjkxT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRCaTJPSjs7QXNCOTFPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F0QmkyT0o7O0FzQjExT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEI2MU9KO0FzQjMxT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBdEI2MU9SO0FzQjExT0k7RUFDSTtFQUNBO0VBQ0E7QXRCNDFPUjtBc0J6MU9JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0QjIxT1I7QXNCejFPUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F0QjIxT1o7O0FzQm4xT0E7RUFDSTtBdEJzMU9KOztBc0IvME9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXRCazFPSjtBc0JoMU9JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEJrMU9SO0FzQmgxT1E7RUFDSTtFQUNBO0F0QmsxT1o7QXNCLzBPUTtFQUNJO0F0QmkxT1o7QXNCOTBPUTtFQUNJO0VBQ0E7QXRCZzFPWjtBc0IxME9RO0VBQ0k7RUFDQTtBdEI0ME9aO0FzQnowT1E7RUFDSTtBdEIyME9aO0FzQngwT1E7RUFDSTtFQUNBO0F0QjAwT1o7O0FzQnh6T0k7RUFDSTtBdEIyek9SOztBc0Juek9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0QnN6T0o7QXNCcHpPSTtFQUNJO0F0QnN6T1I7QXNCbnpPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F0QnF6T1I7QXNCbHpPSTtFQUNJO0VBQ0E7QXRCb3pPUjtBc0IveU9JO0VBQ0k7RUFDQTtFQUNBO0F0Qml6T1I7QXNCL3lPUTtFQUNJO0VBQ0E7RUFDQTtBdEJpek9aO0FzQi95T1k7RUFDSTtBdEJpek9oQjtBc0IxeU9JO0VBQ0k7RUFDQTtFQUNBO0F0QjR5T1I7QXNCMXlPUTtFQUNJO0VBQ0E7RUFDQTtBdEI0eU9aO0FzQjF5T1k7RUFDSTtBdEI0eU9oQjs7QXNCaHlPSTtFQUNJO0VBQ0E7QXRCbXlPUjs7QXNCL3hPQTtFQUNJO0VBQ0E7RUFDQSwwRkFDSTtBdEJpeU9SO0FzQjN4T0k7RUFDSTtBdEI2eE9SO0FzQnR4T0k7RUFDSTtBdEJ3eE9SOztBc0JweE9BO0VBQ0k7RUFDQTtBdEJ1eE9KO0FzQnJ4T0k7RUFDSTtBdEJ1eE9SOztBc0Ivd09BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0Qmt4T0o7QXNCaHhPSTtFQUNJO0F0Qmt4T1I7O0FzQjV3T0E7RUFDSTtFQUNBO0VBQ0E7RUFDQSwwRkFDSTtBdEI4d09SO0FzQjN3T0k7RUFDSTtFQUNBO0F0QjZ3T1I7QXNCMXdPSTtFQUNJO0F0QjR3T1I7QXNCendPSTtFQUNJO0F0QjJ3T1I7QXNCendPUTtFQUNJO0F0QjJ3T1o7O0FzQnR3T0E7RUFDSTtFQUNBO0F0Qnl3T0o7O0FzQnR3T0E7RUFDSTtBdEJ5d09KOztBc0Jwd09BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXRCdXdPSjtBc0Jyd09JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXRCdXdPUjs7QXNCaHdPQTtFQUNJO0VBQ0E7QXRCbXdPSjs7QXNCaHdPQTtFQUNJO0VBQ0E7QXRCbXdPSjs7QXNCaHdPQTtFQUNJO0F0Qm13T0o7O0FzQjd2T0E7RUFDSTtFQUNBO0VBQ0E7QXRCZ3dPSjtBc0Izdk9JO0VBQ0k7RUFDQTtBdEI2dk9SOztBc0Jydk9BO0VBRUk7SUFDSTtFdEJ1dk9OO0VzQmx2T007SUFDSTtJQUNBO0lBQ0E7RXRCb3ZPVjtFc0Jqdk9NO0lBQ0k7RXRCbXZPVjtFc0Jqdk9VO0lBQ0k7RXRCbXZPZDtFc0I5dU9FO0lBQ0k7RXRCZ3ZPTjtFc0I3dU9FO0lBQ0k7SUFDQTtFdEIrdU9OO0VzQjd1T007SUFDSTtJQUNBO0V0Qit1T1Y7RXNCM3VPRTtJQUNJO0V0QjZ1T047RXNCMXVPRTtJQUNJO0V0QjR1T047RXNCenVPRTtJQUNJO0V0QjJ1T047RXNCdHVPTTtJQUNJO0V0Qnd1T1Y7RXNCbHVPTTtJQUNJO0lBQ0E7SUFDQTtFdEJvdU9WO0VzQmp1T007SUFDSTtFdEJtdU9WO0FBQ0Y7QXNCOXRPQTtFQUVJO0lBQ0k7SUFDQTtFdEIrdE9OO0FBQ0Y7QXNCdHRPQTtFQUVJO0lBQ0k7RXRCdXRPTjtFc0JwdE9FOzs7SUFHSTtFdEJzdE9OO0FBQ0Y7QXNCL3NPQTtFQUVJO0lBQ0k7RXRCZ3RPTjtFc0I3c09FO0lBQ0k7SUFDQTtFdEIrc09OO0VzQjVzT0U7SUFDSTtFdEI4c09OO0VzQjNzT0U7SUFDSTtFdEI2c09OO0FBQ0Y7QXVCcnhQQTs7Ozs7Ozs7Ozs7RUFBQTtBQXNCQTtFQUNJO0VBQ0E7QXZCNndQSjs7QXVCeHdQQTtFQUNJO0F2QjJ3UEo7O0F1QnB3UEE7RUFDSTtFQUNBO0VBQ0E7QXZCdXdQSjs7QXVCandQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGlQQUNJO0F2Qm13UFI7QXVCM3ZQSTtFQUNJO0VBQ0E7QXZCNnZQUjtBdUIzdlBRO0VBQ0k7QXZCNnZQWjtBdUJydlBJO0VBQ0k7RUFDQTtBdkJ1dlBSO0F1Qmh2UEk7RUFDSTtFQUNBO0VBQ0E7QXZCa3ZQUjtBdUJodlBRO0VBQ0k7RUFDQTtFQUNBO0F2Qmt2UFo7QXVCL3VQUTtFQUNJO0F2Qml2UFo7QXVCNXVQUTtFQUNJO0F2Qjh1UFo7O0F1QnZ1UEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2QjB1UEo7O0F1QnZ1UEE7RUFDSTtBdkIwdVBKOztBdUJ2dVBBO0VBQ0k7RUFDQTtBdkIwdVBKOztBdUJ2dVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXZCMHVQSjs7QXVCcnVQQTtFQUNJO0VBQ0E7RUFDQTtBdkJ3dVBKOztBdUJydVBBO0VBQ0k7RUFDQTtFQUNBO0F2Qnd1UEo7O0F1QnJ1UEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBdkJ3dVBKOztBdUJsdVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkJxdVBKOztBdUI5dFBBO0VBQ0k7RUFDQTtBdkJpdVBKOztBdUIxdFBBO0VBQ0k7RUFDQTtFQUNBO0F2QjZ0UEo7O0F1QjF0UEE7RUFDSTtBdkI2dFBKOztBdUJudFBBO0VBRUk7SUFDSTtFdkJxdFBOO0FBQ0Y7QXdCcjZQQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQXNCQTtFQUdJO0F4Qm82UEo7QXdCOTVQSTtFQUNJO0F4Qmc2UFI7QXdCNzVQSTtFQUNJO0VBQ0E7RUFDQTtBeEIrNVBSO0F3QjE1UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0Esc0xBQ0k7QXhCMjVQWjtBd0JwNVBJO0VBQ0k7RUFDQTtBeEJzNVBSO0F3Qmg1UEk7RUFDSTtFQUNBO0VBQ0E7QXhCazVQUjtBd0IvNFBJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXhCaTVQUjtBd0IzNFBJOztFQUVJO0F4QjY0UFI7QXdCMTRQSTtFQUNJO0F4QjQ0UFI7QXdCejRQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhCMjRQUjtBd0J4NFBJO0VBQ0k7QXhCMDRQUjtBd0JoNFBJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEJrNFBSO0F3QnYzUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhCeTNQUjtBd0JsM1BJO0VBQ0k7RUFDQTtBeEJvM1BSO0F3QmozUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEJtM1BSO0F3QngyUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4QjAyUFI7QXdCeDJQUTtFQUNJO0VBQ0E7RUFDQTtBeEIwMlBaO0F3QnYyUFE7RUFDSTtBeEJ5MlBaO0F3QmoyUEk7RUFDSTtFQUNBO0F4Qm0yUFI7QXdCNzFQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEIrMVBSO0F3QnoxUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhCMjFQUjtBd0J6MVBRO0VBQ0k7RUFDQTtFQUNBO0F4QjIxUFo7QXdCbjFQSTtFQUVJO0lBQ0k7RXhCbzFQVjtFd0JqMVBNO0lBQ0k7RXhCbTFQVjtBQUNGOztBd0IvMFBBO0VBRUk7SUFDSTtJQUNBO0V4QmkxUE47RXdCOTBQRTtJQUNJO0lBQ0E7RXhCZzFQTjtBQUNGO0F3QnQwUEE7RUFJUTs7O0lBR0k7RXhCcTBQVjtFd0JsMFBNO0lBQ0k7RXhCbzBQVjtBQUNGO0F5QjdsUUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBMEJBO0VBT0k7RUFDQTtFQUNBO0VBR0E7RUFHQTtBekJvbFFKOztBeUI5a1FBO0VBQ0k7QXpCaWxRSjs7QXlCM2tRQTtFQUNJO0VBQ0E7QXpCOGtRSjs7QXlCcGtRQTtFQUNJO0F6QnVrUUo7O0F5QmxrUUE7RUFDSTtBekJxa1FKOztBeUI5alFBO0VBQ0k7RUFDQTtBekJpa1FKOztBeUJ2alFBO0VBQ0k7QXpCMGpRSjs7QTBCdnBRQTs7OztFQUFBO0FBTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUJ5cFFKO0EwQnZwUUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUJ5cFFSOztBMkJyclFBOzs7Ozs7OztFQUFBO0FDQUE7Ozs7Ozs7Ozs7O0VBQUE7QUFvQkE7RUFFSTtJQUNJLFlBTG9CO0U1QjZyUTFCO0U0Qi9xUUU7O0lBRUksa0JBaEJvQjtFNUJpc1ExQjtBQUNGO0E0QjlxUUE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QTVCZ3JRSjtBNEI1cVFJOztFQUNJO0VBQ0E7QTVCK3FRUjtBNEI1cVFJOztFQUNJO0E1QitxUVI7QTRCMXFRSTs7RUFDSTtFQUNBO0VBQ0E7RUFNQTtBNUJ3cVFSO0E0QnRxUVE7Ozs7RUFFSTtBNUIwcVFaO0E0QnZxUVE7O0VBRUk7QTVCeXFRWjtBNEJ0cVFROztFQUNJO0VBQ0E7RUFDQTtFQUNBO0E1QnlxUVo7QTRCcHFRUTs7RUFDSTtFQUNBO0E1QnVxUVo7QTRCbHFRUTs7RUFDSTtFQUNBO0VBQ0E7QTVCcXFRWjtBNEIvcFFROztFQUNJO0VBQ0E7RUFDQTtBNUJrcVFaO0E0QmhxUVk7Ozs7RUFFSTtBNUJvcVFoQjtBNEJqcVFZOztFQUNJO0VBQ0E7QTVCb3FRaEI7QTRCN3BRSTs7OztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTVCaXFRUjtBNEI1cFFJOzs7O0VBRUk7QTVCZ3FRUjtBNEIxcFFJOztFQUNJO0VBQ0E7RUFDQTtBNUI2cFFSO0E0QjNwUVE7O0VBQ0k7RUFDQTtBNUI4cFFaO0E0QjVwUVk7OztFQUVJO0VBQ0E7QTVCK3BRaEI7QTRCNXBRWTs7RUFDSTtFQUNBO0E1QitwUWhCO0E0QnJwUVk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTVCd3BRaEI7QTRCcnBRWTs7RUFDSTtBNUJ3cFFoQjtBNEJqcFFJOztFQUNJO0VBQ0E7QTVCb3BRUjtBNEJscFFROztFQUNJO0VBQ0E7QTVCcXBRWjs7QTRCN29RSTtFQURKO0lBRVE7RTVCaXBRTjtBQUNGOztBNkJ6MVFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBbUJBO0VBRUk7SUFDSTtFN0IwMVFOO0U2QnYxUUU7SUFDSTtFN0J5MVFOO0FBQ0Y7QThCcDNRQTs7Ozs7RUFBQTtBQVdBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCaTNRSjtBOEI5MlFJOztFQUNJO0VBQ0E7QTlCaTNRUjtBOEI5MlFJOztFQUNJO0E5QmkzUVI7O0E4QnoyUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUI0MlFKO0E4QngyUUk7RUFDSTtFQUNBO0E5QjAyUVI7O0E4QmgyUUk7RUFDSTtFQUNBO0VBQ0E7QTlCbTJRUjtBOEJoMlFJOztFQUVJO0VBQ0E7QTlCazJRUjtBOEIvMVFROztFQUNJO0VBQ0E7QTlCazJRWjtBOEI5MVFJO0VBQ0k7RUFDQTtFQUNBO0E5QmcyUVI7O0E4QngxUUE7OztFQUdJO0VBQ0E7RUFDQTtFQUNBO0E5QjIxUUo7QThCejFRSTs7O0VBQ0k7QTlCNjFRUjs7QThCcjFRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCdzFRSjtBOEJyMVFJO0VBQ0k7RUFDQTtBOUJ1MVFSOztBOEJuMVFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCczFRSjtBOEJwMVFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCczFRUjtBOEJwMVFRO0VBQ0k7QTlCczFRWjtBOEJuMVFRO0VBQ0k7QTlCcTFRWjtBOEJqMVFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJtMVFSOztBOEJ6MFFJO0VBQ0k7RUFDQTtFQUNBO0E5QjQwUVI7QThCMTBRUTtFQUNJO0VBQ0E7QTlCNDBRWjtBOEJ4MFFJO0VBQ0k7QTlCMDBRUjtBOEJ4MFFRO0VBQ0k7RUFDQTtBOUIwMFFaO0E4QngwUVk7O0VBRUk7QTlCMDBRaEI7QThCbjBRSTtFQUNJO0E5QnEwUVI7QThCbjBRUTtFQUNJO0E5QnEwUVo7O0E4QjF6UUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUI2elFSO0E4QjN6UVE7RUFDSTtFQUNBO0E5QjZ6UVo7O0E4QnB6UUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUJ1elFKO0E4QnJ6UUk7RUFDSTtBOUJ1elFSO0E4QnB6UUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUJzelFSO0E4Qmp6UVE7O0VBRUk7QTlCbXpRWjs7QThCeHlRSTtFQUNJO0E5QjJ5UVI7QThCeHlRSTtFQUNJO0VBQ0E7QTlCMHlRUjtBOEJ2eVFJOztFQUVJO0E5Qnl5UVI7O0E4Qmp5UUE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5Qm95UUo7QThCbHlRSTs7RUFDSTtFQUNBO0E5QnF5UVI7O0E4Qmp5UUE7O0VBRUk7QTlCb3lRSjtBOEJseVFJOztFQUNJO0VBQ0E7QTlCcXlRUjs7QThCanlRQTtFQUNJO0VBQ0E7RUFDQTtBOUJveVFKOztBOEJqeVFBO0VBQ0k7RUFDQTtFQUNBO0E5Qm95UUo7O0E4Qjd4UUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBOUIreFFKO0E4Qjd4UUk7RUFFSTtFQUNBO0E5Qjh4UVI7QThCM3hRSTtFQUNJO0VBQ0E7QTlCNnhRUjtBOEIzeFFRO0VBQ0k7RUFDQTtBOUI2eFFaO0E4Qnp4UUk7RUFDSTtFQUNBO0E5QjJ4UVI7QThCeHhRSTtFQUNJO0VBQ0E7RUFDQTtBOUIweFFSOztBOEJweFFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7QTlCc3hRSjtBOEJweFFJO0VBRUk7RUFDQTtBOUJxeFFSOztBOEI3d1FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCZ3hRSjtBOEI5d1FJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0E5Qmd4UVI7O0E4Qnh3UUE7Ozs7Ozs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUIwd1FKO0E4QnR3UUk7RUFDSTtFQUNBO0VBQ0E7QTlCd3dRUjtBOEJud1FJO0VBQ0k7QTlCcXdRUjs7QThCN3ZRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5Qmd3UUo7QThCOXZRSTs7RUFFSTtBOUJnd1FSOztBOEJ0dlFJOzs7RUFHSTtFQUNBO0VBQ0E7RUFDQTtBOUJ5dlFSO0E4QnZ2UVE7RUFSSjs7O0lBU1E7RTlCNHZRVjtBQUNGO0E4Qnp2UUk7RUFDSTtFQUNBO0VBQ0E7QTlCMnZRUjtBOEJ6dlFRO0VBTEo7SUFNUTtJQUNBO0U5QjR2UVY7QUFDRjs7QThCbHZRSTs7RUFFSTtBOUJxdlFSO0E4Qmx2UUk7O0VBRUk7RUFDQTtBOUJvdlFSO0E4Qmp2UUk7RUFDSTtFQUNBO0E5Qm12UVI7O0E4Qnh1UUE7RUFDSTtBOUIydVFKOztBOEJwdVFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCdXVRSjtBOEJydVFJO0VBQ0k7RUFDQTtBOUJ1dVFSOztBOEJudVFBO0VBQ0k7RUFDQTtFQUNBO0E5QnN1UUo7QThCcHVRSTtFQUNJO0VBQ0E7QTlCc3VRUjtBOEJudVFJO0VBQ0k7QTlCcXVRUjs7QThCM3RRQTtFQUNJO0E5Qjh0UUo7O0E4QnJ0UUE7RUFDSTtBOUJ3dFFKOztBOEJydFFBO0VBRUk7SUFDSTtFOUJ1dFFOO0U4Qmx0UU07SUFDSTtJQUNBO0U5Qm90UVY7RThCaHRRRTtJQUNJO0U5Qmt0UU47RThCL3NRRTtJQUNJO0lBQ0E7RTlCaXRRTjtFOEIvc1FNO0lBQ0k7SUFDQTtFOUJpdFFWO0FBQ0Y7QStCdnhSQTs7Ozs7O0VBQUE7QUFZQTs7RUFFSTtFQUNBO0VBQ0E7QS9Cb3hSSjtBK0JoeFJJOztFQUNJO0VBQ0E7RUFDQTtBL0JteFJSO0ErQmh4Ukk7O0VBQ0k7RUFDQTtFQUNBO0EvQm14UlI7QStCanhSUTs7RUFDSTtFQUNBO0EvQm94Ulo7QStCOXdSUTs7RUFDSTtFQUNBO0EvQml4Ulo7QStCendSUTs7RUFDSTtFQUNBO0VBQ0E7QS9CNHdSWjtBK0J6d1JROztFQUNJO0EvQjR3Ulo7QStCeHdSSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQjJ3UlI7QStCeHdSSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQjJ3UlI7QStCeHdSSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0Iyd1JSO0ErQnh3Ukk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0Iyd1JSO0ErQnh3Ukk7O0VBQ0k7RUFDQTtFQUNBO0EvQjJ3UlI7QStCeHdSSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0Iyd1JSO0ErQnZ3Ukk7RUFFSTs7SUFDSTtJQUNBO0UvQnl3UlY7RStCdndSVTs7SUFDSTtJQUNBO0UvQjB3UmQ7RStCdHdSTTs7SUFDSTtJQUNBO0lBQ0E7RS9CeXdSVjtFK0J0d1JNOzs7SUFDSTtFL0Iwd1JWO0FBQ0Y7O0ErQi92Ukk7RUFDSTtFQUNBO0VBQ0E7QS9Ca3dSUjtBK0I3dlJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0IrdlJSO0ErQjd2UlE7RUFDSTtFQUNBO0VBQ0E7QS9CK3ZSWjtBK0I3dlJZO0VBQ0k7QS9CK3ZSaEI7QStCNXZSWTtFQUNJO0EvQjh2UmhCO0ErQjF2UlE7RUFDSTtBL0I0dlJaO0ErQnh2Ukk7RUFDSTtBL0IwdlJSO0ErQnh2UlE7RUFDSTtBL0IwdlJaO0ErQnJ2UlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0J1dlJaO0ErQmx2UlE7RUFDSTtFQUNBO0EvQm92Ulo7QStCL3VSUTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBL0JpdlJaO0ErQjd1Ukk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQit1UlI7QStCNXVSSTtFQUNJO0EvQjh1UlI7QStCenVSSTtFQUNJO0VBQ0E7RUFDQTtBL0IydVJSO0ErQnp1UlE7RUFDSTtFQUNBO0EvQjJ1Ulo7QStCdnVSSTtFQUNJO0EvQnl1UlI7QStCdHVSSTtFQUVJO0lBQ0k7RS9CdXVSVjtBQUNGOztBK0IzdFJROztFQUVJO0VBQ0E7QS9COHRSWjtBK0IxdFJJO0VBQ0k7RUFDQTtBL0I0dFJSO0ErQnp0Ukk7RUFDSTtFQUNBO0EvQjJ0UlI7QStCenRSUTtFQUNJO0VBQ0E7QS9CMnRSWjtBK0J4dFJRO0VBQ0k7RUFDQTtBL0IwdFJaO0ErQnZ0UlE7RUFDSTtFQUNBO0EvQnl0Ulo7QStCcnRSSTtFQUNJO0VBQ0E7QS9CdXRSUjs7QWdDbC9SQTs7O0VBQUE7QUFhQTtFQUNJO0VBQ0E7RUFDQTtBaEM0K1JKOztBVWg3Ukk7RXNCdERBO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWhDMCtSTjtFZ0N4K1JNO0lBQ0k7RWhDMCtSVjtFZ0N2K1JNO0lBQ0k7RWhDeStSVjtBQUNGO0FnQ2orUkE7RUFDSTtBaENtK1JKO0FnQ2orUkk7RUFDSTtBaENtK1JSO0FnQ2grUkk7RUFDSTtBaENrK1JSO0FVeDlSSTtFc0JYQTtJQUlRO0VoQ20rUlY7QUFDRjtBZ0NoK1JJO0VBQ0k7RUFDQTtBaENrK1JSO0FVaitSSTtFc0JIQTtJQUtRO0VoQ20rUlY7QUFDRjtBZ0M3OVJJO0VBQ0k7QWhDKzlSUjtBZ0N6OVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhDMjlSUjtBZ0N6OVJRO0VBQ0k7QWhDMjlSWjtBZ0NyOVJJO0VBQ0k7QWhDdTlSUjs7QWdDNzhSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaENnOVJSO0FnQzk4UlE7RUFDSTtFQUNBO0VBQ0E7QWhDZzlSWjtBZ0M1OFJJO0VBQ0k7RUFDQTtFQUNBO0FoQzg4UlI7QWdDNThSUTtFQUVJO0VBQ0E7QWhDNjhSWjs7QWdDcDhSQTtFQUNJO0VBQ0E7QWhDdThSSjtBZ0NyOFJJO0VBQ0k7QWhDdThSUjtBZ0NwOFJJO0VBQ0k7RUFDQTtFQUNBO0FoQ3M4UlI7QWdDcDhSUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDczhSWjtBZ0NsOFJJO0VBQ0k7QWhDbzhSUjtBZ0NsOFJRO0VBQ0k7RUFDQTtFQUNBO0FoQ284Ulo7O0FnQ3o3Ukk7RUFDSTtFQUNBO0FoQzQ3UlI7QWdDejdSSTtFQUNJO0VBQ0E7RUFDQTtBaEMyN1JSOztBZ0NqN1JJO0VBQ0k7QWhDbzdSUjtBZ0NsN1JRO0VBQ0k7QWhDbzdSWjtBZ0NqN1JRO0VBQ0k7RUFDQTtBaENtN1JaO0FnQ2g3UlE7RUFDSTtBaENrN1JaO0FnQzk2Ukk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQ2c3UlI7QWdDOTZSUTtFQUNJO0FoQ2c3Ulo7O0FnQ3Y2UkE7RUFJUTs7O0lBR0k7RWhDdTZSVjtBQUNGO0FnQzE1Ukk7RUFDSTtFQUNBO0FoQzQ1UlI7QWdDMTVSUTtFQUNJO0VBQ0E7QWhDNDVSWjtBZ0N6NVJRO0VBQ0k7QWhDMjVSWjtBZ0N2NVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhDeTVSUjtBZ0NqNVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhDbTVSUjtBZ0NoNVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaENrNVJSO0FnQy80Ukk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDaTVSUjtBZ0MvNFJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0FoQys0Ulo7QWdDejRSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEMyNFJSO0FnQ3g0Ukk7RUFDSTtBaEMwNFJSO0FnQ3I0UlE7RUFDSTtBaEN1NFJaO0FnQ3A0UlE7RUFDSTtBaENzNFJaOztBZ0M3M1JBO0VBQ0k7QWhDZzRSSjtBZ0M5M1JJO0VBQ0k7RUFDQTtBaENnNFJSO0FnQzMzUlE7RUFDSTtBaEM2M1JaO0FnQzkzUlE7RUFDSTtBaENnNFJaO0FnQ2o0UlE7RUFDSTtBaENtNFJaO0FnQzczUlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQyszUlo7QWdDNTNSUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQzgzUlo7QWdDMzNSUTtFQUNJO0VBQ0E7RUFDQTtBaEM2M1JaOztBaUNsd1NBOzs7OztFQUFBO0FBaUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakMwdlNKO0FpQzl1U0k7RUFDSTtFQUNBO0FqQ2d2U1I7QWlDdHVTUTtFQUNJO0FqQ3d1U1o7O0FpQ251U0E7RUFDSTtFQUNBO0VBQ0E7QWpDc3VTSjs7QWlDbnVTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQ3N1U0o7QWlDcHVTSTtFQUNJO0VBQ0E7QWpDc3VTUjtBaUNudVNJO0VBQ0k7RUFDQTtBakNxdVNSO0FpQ2x1U0k7RUFDSTtFQUNBO0FqQ291U1I7QWlDanVTSTtFQUNJO0VBQ0E7QWpDbXVTUjtBaUNodVNJO0VBQ0k7RUFDQTtBakNrdVNSOztBaUM5dFNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpDaXVTSjs7QWlDOXRTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDaXVTSjs7QWlDOXRTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakNpdVNKO0FpQzV0U0k7RUFDSTtBakM4dFNSO0FpQ250U0k7RUFDSTtBakNxdFNSOztBaUNqdFNBO0VBQ0k7RUFDQTtFQUNBO0FqQ290U0o7O0FpQzdzU0E7RUFDSTtFQUNBO0FqQ2d0U0o7O0FpQzdzU0E7RUFDSTtBakNndFNKOztBaUM3c1NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakNndFNKOztBaUM3c1NBO0VBQ0k7QWpDZ3RTSjs7QWlDN3NTQTtFQUNJO0VBQ0E7RUFDQTtFQU9BO0VBQ0E7RUFDQTtFQUNBO0FqQzBzU0o7O0FpQ3ZzU0E7RUFDSTtFQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakN1c1NKOztBaUNwc1NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDdXNTSjs7QWlDcHNTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakN1c1NKOztBaUNwc1NBO0VBS0k7RUFDQTtBakNtc1NKOztBaUNoc1NBO0VBQ0k7RUFDQTtBakNtc1NKOztBaUMzclNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQzhyU0o7O0FpQzNyU0E7RUFJSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDMnJTSjtBaUN6clNJO0VBQ0k7RUFDQTtBakMyclNSOztBaUN2clNBO0VBR0k7RUFDQTtFQUNBO0VBQ0E7QWpDd3JTSjs7QWlDcnJTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQ3dyU0o7O0FpQ2pyU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDb3JTSjs7QWlDanJTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakNvclNKOztBaUNqclNBO0VBQ0k7RUFDQTtBakNvclNKOztBaUNqclNBO0VBQ0k7RUFDQTtFQUNBO0FqQ29yU0o7O0FpQy9xU0k7RUFDSTtFQUNBO0FqQ2tyU1I7O0FpQzlxU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQ2lyU0o7QWlDL3FTSTtFQUNJO0FqQ2lyU1I7QWlDOXFTSTtFQUNJO0FqQ2dyU1I7QWlDN3FTSTtFQUNJO0FqQytxU1I7QWlDNXFTSTtFQUNJO0FqQzhxU1I7O0FpQzFxU0E7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBakM0cVNKO0FpQzFxU0k7RUFDSTtFQUNBO0FqQzRxU1I7QWlDenFTSTtFQUNJO0VBQ0E7QWpDMnFTUjtBaUN4cVNJO0VBQ0k7RUFDQTtBakMwcVNSO0FpQ3ZxU0k7RUFDSTtFQUNBO0FqQ3lxU1I7O0FpQ3JxU0E7RUFDSTtFQUNBO0VBQ0E7RUFJQTtBakNxcVNKOztBaUNscVNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQ3FxU0o7QWlDbHFTSTtFQUNJO0FqQ29xU1I7QWlDanFTSTtFQUNJO0VBQ0E7QWpDbXFTUjtBaUNocVNJO0VBQ0k7QWpDa3FTUjtBaUNocVNRO0VBQ0k7QWpDa3FTWjtBaUMvcFNRO0VBQ0k7QWpDaXFTWjs7QWlDdnBTQTtFQUNJO0FqQzBwU0o7O0FpQ3ZwU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDMHBTSjs7QWlDdnBTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDMHBTSjs7QWlDdnBTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQzBwU0o7O0FpQ3ZwU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakMwcFNKOztBaUN2cFNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpDMHBTSjs7QWlDdnBTQTtFQUNJO0VBQ0E7RUFDQTtBakMwcFNKOztBaUN2cFNBO0VBQ0k7RUFDQTtFQUNBO0FqQzBwU0o7O0FpQ3BwU0E7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFakNzcFNOO0VpQ25wU0U7SUFDSTtFakNxcFNOO0VpQ2xwU0U7SUFDSTtJQUNBO0lBQ0E7RWpDb3BTTjtBQUNGO0FpQzdvU0E7RUFDSTtFQUNBO0VBQ0E7QWpDK29TSjs7QWlDNW9TQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakMrb1NKO0FpQzNvU0k7RUFDSTtFQUNBO0FqQzZvU1I7QWlDMW9TSTtFQUNJO0VBQ0E7QWpDNG9TUjtBaUN6b1NJO0VBQ0k7RUFDQTtBakMyb1NSO0FpQ3pvU1E7RUFDSTtBakMyb1NaO0FpQ3ZvU0k7RUFDSTtFQUNBO0FqQ3lvU1I7QWlDdm9TUTtFQUNJO0FqQ3lvU1o7QWlDcm9TSTtFQUNJO0VBQ0E7QWpDdW9TUjtBaUNyb1NRO0VBQ0k7QWpDdW9TWjtBaUNub1NJO0VBQ0k7RUFDQTtBakNxb1NSO0FpQ25vU1E7RUFDSTtBakNxb1NaO0FpQ2pvU0k7RUFFSTtJQUVJO0lBQ0E7RWpDaW9TVjtBQUNGOztBaUM3blNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakNnb1NKOztBaUM3blNBO0VBQ0k7RUFDQTtFQUNBO0FqQ2dvU0o7O0FpQ3huU0E7RUFDSTtFQUNBO0FqQzJuU0o7O0FpQ3huU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQzJuU0o7QWlDem5TSTtFQUNJO0FqQzJuU1I7O0FpQ3ZuU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQzBuU0o7QWlDeG5TSTtFQUNJO0VBQ0E7QWpDMG5TUjtBaUN2blNJO0VBRUk7RUFDQTtBakN3blNSO0FpQ3JuU0k7RUFDSTtFQUNBO0FqQ3VuU1I7QWlDcG5TSTtFQUNJO0VBQ0E7QWpDc25TUjtBaUNublNJO0VBQ0k7RUFDQTtBakNxblNSOztBaUNqblNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakNvblNKOztBaUNqblNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakNvblNKOztBaUNoblNBO0VBQ0k7RUFLQTtBakMrbVNKOztBaUM1bVNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQyttU0o7QWlDN21TSTtFQUNJO0VBQ0E7QWpDK21TUjtBaUM1bVNJO0VBQ0k7RUFDQTtBakM4bVNSOztBaUMxbVNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakM2bVNKOztBaUMxbVNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDNm1TSjtBaUMzbVNJO0VBQ0k7QWpDNm1TUjtBaUMxbVNJO0VBQ0k7RUFDQTtFQUNBO0FqQzRtU1I7QWlDem1TSTtFQUNJO0FqQzJtU1I7O0FpQ3ZtU0E7RUFHSTtBakN3bVNKOztBaUNybVNBO0VBQ0k7RUFDQTtFQUNBO0FqQ3dtU0o7O0FpQ3JtU0E7RUFDSTtBakN3bVNKOztBaUNobFNBO0VBQ0k7QWpDbWxTSjs7QWlDaGxTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDbWxTSjs7QWlDaGxTQTtFQUNJO0VBQ0E7RUFJQTtBakNnbFNKO0FpQzlrU0k7RUFDSTtBakNnbFNSOztBaUM1a1NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakMra1NKOztBaUM1a1NBO0VBQ0k7RUFDQTtFQUNBO0FqQytrU0o7O0FpQzVrU0E7RUFDSTtFQUNBO0VBQ0E7QWpDK2tTSjs7QWlDNWtTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakMra1NKO0FpQzdrU0k7RUFDSTtBakMra1NSOztBaUMza1NBO0VBQ0k7RUFDQTtFQUNBO0FqQzhrU0o7O0FpQ3JrU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakN3a1NKO0FpQ3RrU0k7RUFOSjtJQU9RO0VqQ3lrU047QUFDRjs7QWlDdGtTQTtFQUNJO0VBS0E7RUFDQTtFQUlBO0VBS0E7QWpDOGpTSjtBaUM1alNJO0VBQ0k7QWpDOGpTUjtBaUMzalNJO0VBRUk7SUFHSTtFakMwalNWO0FBQ0Y7QWlDdmpTSTtFQUVJO0lBQ0k7RWpDd2pTVjtFaUNyalNNO0lBQ0k7RWpDdWpTVjtFaUNwalNNO0lBQ0k7RWpDc2pTVjtFaUNualNNO0lBQ0k7RWpDcWpTVjtBQUNGOztBaUNqalNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakNvalNKOztBaUNqalNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQ29qU0o7O0FpQ2pqU0E7RUFDSTtFQUNBO0VBQ0E7QWpDb2pTSjtBaUNsalNJO0VBQ0k7QWpDb2pTUjs7QWlDaGpTQTtFQUNJO0VBQ0E7QWpDbWpTSjs7QWlDNWlTQTtFQUNJO0FqQytpU0o7O0FpQzFpU0k7RUFDSTtFQUNBO0FqQzZpU1I7O0FrQ3YrVEE7Ozs7O0VBQUE7QUFXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbENxK1RKOztBa0NsK1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbENxK1RKOztBa0NsK1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ3ErVEo7QWtDbitUSTtFQUNJO0VBQ0E7RUFDQTtBbENxK1RSO0FrQ24rVFE7RUFDSTtBbENxK1RaOztBa0NoK1RBO0VBQ0k7RUFDQTtFQUNBO0FsQ20rVEo7O0FrQzU5VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxDKzlUSjs7QWtDNTlUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEMrOVRKOztBa0MxOVRBO0VBQ0k7QWxDNjlUSjs7QWtDdjlUQTs7RUFFSTtBbEMwOVRKOztBa0N2OVRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxDMDlUSjs7QWtDbjlUQTtFQUNJO0FsQ3M5VEo7QWtDcDlUSTtFQUNJO0FsQ3M5VFI7O0FrQ2w5VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ3E5VEo7O0FrQ2w5VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbENxOVRKOztBa0NsOVRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxDcTlUSjs7QWtDNThUSTtFQUNJO0VBQ0E7QWxDKzhUUjtBa0NuOVRBO0VBT0k7Ozs7S0FBQTtBbENtOVRKO0FrQzc4VEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxDKzhUUjtBa0M3OFRRO0VBQ0k7RUFDQTtBbEMrOFRaO0FrQzU4VFE7RUFDSTtFQUNBO0FsQzg4VFo7QWtDMzhUUTtFQUNJO0VBQ0E7RUFDQTtBbEM2OFRaO0FrQ3o4VEk7RUFDSTtBbEMyOFRSOztBa0NuOFRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxDczhUSjs7QWtDbjhUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ3M4VEo7QWtDcDhUSTtFQUNJO0VBQ0E7QWxDczhUUjs7QWtDOTdUQTs7RUFFSTtFQUNBO0FsQ2k4VEo7QWtDLzdUSTs7RUFDSTtBbENrOFRSO0FrQy83VEk7O0VBQ0k7RUFDQTtFQUNBO0FsQ2s4VFI7QWtDLzdUSTs7RUFDSTtBbENrOFRSOztBa0M5N1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ2k4VEo7O0FrQzk3VEE7RUFDSTtFQUNBO0FsQ2k4VEo7O0FrQzk3VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbENpOFRKO0FrQy83VEk7RUFDSTtBbENpOFRSOztBa0M3N1RBO0VBQ0k7RUFDQTtFQUNBO0FsQ2c4VEo7O0FrQzc3VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbENnOFRKOztBa0M3N1RBO0VBQ0k7QWxDZzhUSjtBa0M5N1RJO0VBQ0k7RUFDQTtBbENnOFRSO0FrQzk3VFE7RUFDSTtBbENnOFRaOztBa0N2N1RBO0VBQ0k7RUFDQTtFQUNBO0FsQzA3VEo7O0FrQ3Y3VEE7RUFDSTtFQUNBO0VBQ0E7QWxDMDdUSjtBa0N4N1RJO0VBQ0k7RUFDQTtBbEMwN1RSO0FrQ3Y3VEk7RUFDSTtBbEN5N1RSOztBa0NqN1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ283VEo7O0FrQzc2VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbENnN1RKOztBa0M3NlRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxDZzdUSjs7QWtDejZUQTtFQUNJO0VBQ0E7RUFDQTtBbEM0NlRKOztBa0N6NlRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQzQ2VEo7O0FrQ3o2VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQzQ2VEo7QWtDMTZUSTtFQUNJO0FsQzQ2VFI7O0FrQ3g2VEE7RUFDSTtFQUNBO0FsQzI2VEo7O0FrQ3g2VEE7RUFDSTtBbEMyNlRKOztBa0NsNlRJO0VBQ0k7RUFDQTtFQUNBO0FsQ3E2VFI7QWtDbDZUSTtFQUNJO0FsQ282VFI7O0FrQ2g2VEE7RUFDSTtFQUNBO0VBQ0E7QWxDbTZUSjs7QWtDaDZUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbENtNlRKO0FrQ2o2VEk7RUFDSTtBbENtNlRSOztBa0MvNVRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ2s2VEo7O0FrQy81VEE7RUFDSTtFQUNBO0VBQ0E7QWxDazZUSjtBa0NoNlRJO0VBQ0k7RUFDQTtBbENrNlRSO0FrQ2g2VFE7RUFDSTtBbENrNlRaO0FrQzk1VEk7RUFDSTtFQUNBO0FsQ2c2VFI7O0FrQzU1VEE7RUFFSTtJQUNJO0lBQ0E7RWxDODVUTjtBQUNGO0FrQ3Y1VEE7RUFFSTtJQUNJO0VsQ3c1VE47RWtDcjVURTtJQUNJO0VsQ3U1VE47RWtDcDVURTtJQUNJO0VsQ3M1VE47QUFDRjtBa0NuNVRBO0VBRUk7SUFDSTtFbENvNVROO0VrQ2o1VEU7SUFDSTtFbENtNVROO0VrQ2g1VEU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VsQ2s1VE47RWtDaDVUTTtJQUNJO0VsQ2s1VFY7RWtDOTRURTtJQUNJO0VsQ2c1VE47RWtDNzRURTtJQUNJO0lBQ0E7SUFDQTtFbEMrNFROO0FBQ0Y7QWtDeDRUQTtFQUVJOzs7Ozs7SUFNSTtFbEN5NFROO0VrQ3Q0VEU7SUFDSTtJQUNBO0VsQ3c0VE47QUFDRjtBbUM1NVVBOzs7OztFQUFBO0FBU0E7RUFDSTtFQUNBO0VBQ0E7QW5DMjVVSjs7QW1DeDVVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQzI1VUo7O0FtQ3g1VUE7RUFDSTtFQUNBO0VBQ0E7QW5DMjVVSjs7QW1DeDVVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBR0E7QW5DeTVVSjs7QW1DdDVVQTtFQUNJO0VBQ0E7RUFDQTtBbkN5NVVKOztBbUN0NVVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkN5NVVKO0FtQ3Y1VUk7RUFDSTtFQUNBO0FuQ3k1VVI7O0FtQ3I1VUE7RUFDSTtBbkN3NVVKOztBbUNyNVVBO0VBQ0k7RUFDQTtFQUNBO0FuQ3c1VUo7O0FtQ3I1VUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkN3NVVKOztBbUNyNVVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DdzVVSjtBbUN0NVVJO0VBQ0k7RUFDQTtBbkN3NVVSOztBbUNwNVVBO0VBQ0k7QW5DdTVVSjs7QW1DcDVVQTtFQUNJO0VBQ0E7RUFDQTtBbkN1NVVKOztBbUNwNVVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5DdTVVSjs7QW9DamdWQTs7Ozs7RUFBQTtBQVNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDaWdWSjtBb0MvL1VJO0VBQ0k7RUFDQTtBcENpZ1ZSO0FvQzkvVUk7RUFDSTtBcENnZ1ZSOztBb0MxL1VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzYvVUo7O0FvQzEvVUE7RUFFSTtJQUNJO0lBQ0E7RXBDNC9VTjtBQUNGO0FxQ3hpVkE7Ozs7Ozs7RUFBQTtBQ0FBOzs7OztFQUFBO0FDQUE7OztFQUFBO0FBYUE7RUFDSTtBdkMraVZKOztBdUN4aVZBO0VBQ0k7QXZDMmlWSjtBdUN6aVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2QzJpVlI7QXVDemlWUTtFQUNJO0VBQ0E7QXZDMmlWWjtBdUN4aVZRO0VBQ0k7RUFDQTtFQUNBO0F2QzBpVlo7QXVDdmlWUTtFQUNJO0VBQ0E7RUFDQTtBdkN5aVZaOztBdUNoaVZBO0VBQ0k7RUFDQTtBdkNtaVZKOztBdUNoaVZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZDbWlWSjtBdUNqaVZJO0VBQ0k7RUFDQTtFQUNBO0F2Q21pVlI7QXVDamlWUTtFQUNJO0VBQ0E7RUFDQTtBdkNtaVZaO0F1Qy9oVkk7RUFDSTtFQUNBO0F2Q2lpVlI7QXVDL2hWUTtFQUNJO0VBQ0E7QXZDaWlWWjtBdUM5aFZRO0VBQ0k7RUFDQTtBdkNnaVZaO0F1QzVoVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBdkM4aFZSO0F1QzFoVlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkM0aFZaO0F1Q3JoVlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2Q3VoVlo7QXVDcGhWUTtFQUNJO0VBQ0E7RUFDQTtBdkNzaFZaO0F1Q25oVlE7RUFDSTtFQUNBO0VBQ0E7QXZDcWhWWjtBdUNuaFZZO0VBQ0k7QXZDcWhWaEI7QXVDbGhWWTtFQUNJO0VBQ0E7RUFDQTtBdkNvaFZoQjtBdUMvZ1ZJO0VBQ0k7QXZDaWhWUjtBdUM5Z1ZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkNnaFZSO0F1QzdnVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2QytnVlI7QXVDNWdWSTtFQUNJO0VBQ0E7RUFDQTtBdkM4Z1ZSO0F1QzNnVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkM2Z1ZSO0F1QzNnVlE7RUFDSTtFQUNBO0F2QzZnVlo7QXVDemdWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZDMmdWUjs7QXVDamdWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F2Q29nVlI7QXVDamdWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZDbWdWUjs7QXVDLy9VQTtFQUNJO0VBQ0E7QXZDa2dWSjs7QXVDLy9VQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZDa2dWSjtBdUNoZ1ZJO0VBQ0k7RUFDQTtFQUNBO0F2Q2tnVlI7QXVDaGdWUTtFQUNJO0VBQ0E7RUFDQTtBdkNrZ1ZaO0F1Qy8vVVE7RUFDSTtFQUNBO0VBQ0E7QXZDaWdWWjtBdUM3L1VJO0VBQ0k7QXZDKy9VUjtBdUM1L1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkM4L1VSO0F1QzMvVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2QzYvVVI7QXVDMy9VUTtFQUNJO0VBQ0E7QXZDNi9VWjtBdUN6L1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2QzIvVVI7QXVDei9VUTtFQUNJO0VBQ0E7RUFDQTtBdkMyL1VaO0F1Q3gvVVE7RUFDSTtFQUNBO0VBQ0E7QXZDMC9VWjtBdUN0L1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkN3L1VSO0F1Q3QvVVE7RUFDSTtBdkN3L1VaO0F1Q3IvVVE7RUFDSTtFQUNBO0F2Q3UvVVo7QXVDci9VWTtFQUNJO0VBQ0E7QXZDdS9VaEI7O0F1Q3grVVE7RUFDSTtBdkMyK1VaO0F1Q3orVVk7RUFDSTtBdkMyK1VoQjtBdUN4K1VZO0VBQ0k7QXZDMCtVaEI7QXVDaitVUTtFQUNJO0F2Q20rVVo7QXVDOTlVUTtFQUNJO0F2Q2crVVo7O0F1Q3Y5VUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZDMDlVSjs7QXVDdjlVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkMwOVVKOztBdUN2OVVBO0VBQ0k7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F2Q3k5VUo7O0F1Q3Q5VUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXZDeTlVSjs7QXVDdDlVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F2Q3k5VUo7O0F1Q3Q5VUE7RUFDSTtFQUNBO0F2Q3k5VUo7O0F1Q3Q5VUE7RUFDSTtFQUNBO0VBQ0E7QXZDeTlVSjtBdUNyOVVJO0VBQ0k7RUFDQTtFQUNBO0F2Q3U5VVI7QXVDcjlVUTtFQUNJO0F2Q3U5VVo7QXVDcDlVUTtFQUNJO0F2Q3M5VVo7QXVDbjlVUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F2Q3E5VVo7O0FVaDJWSTtFNkJtWkE7SUFDSTtJQUNBO0V2Q2k5VU47RXVDOThVRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RXZDZzlVTjtFdUM3OFVFO0lBRUk7TUFDSTtJdkM4OFVSO0l1QzM4VUk7TUFDSTtJdkM2OFVSO0VBQ0Y7QUFDRjtBdUN4OFVBO0VBQ0k7QXZDMDhVSjs7QVV6M1ZJO0U2QndiQTtJQUNJO0lBQ0E7SUFDQTtFdkNxOFVOO0V1Q2w4VUU7SUFDSTtFdkNvOFVOO0V1Qy83VU07SUFDSTtJQUNBO0lBQ0E7RXZDaThVVjtFdUMvN1VVOztJQUVJO0V2Q2k4VWQ7RXVDLzdVYzs7SUFDSTtFdkNrOFVsQjtFdUMxN1VFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFdkM0N1VOO0V1QzE3VU07SUFDSTtFdkM0N1VWO0V1Q3o3VU07SUFDSTtFdkMyN1VWO0FBQ0Y7QXVDbjdVQTtFQUlROzs7SUFHSTtFdkNrN1VWO0V1Qy82VU07SUFDSTtFdkNpN1VWO0FBQ0Y7QXVDejZVQTtFQUNJO0F2QzI2VUo7QXVDdjZVUTtFQUNJO0F2Q3k2VVo7QXVDbDZVSTtFQUNJO0F2Q282VVI7QXVDbDZVUTtFQUNJO0F2Q282VVo7O0F1Qzc1VUE7RUFDSTtFQUNBO0F2Q2c2VUo7QXVDOTVVSTtFQUNJO0VBQ0E7QXZDZzZVUjtBdUM5NVVRO0VBQ0k7QXZDZzZVWjtBdUM3NVVRO0VBQ0k7QXZDKzVVWjs7QXVDcDVVSTtFQUNJO0F2Q3U1VVI7QXVDbDVVUTtFQUNJO0VBQ0E7QXZDbzVVWjtBdUNsNVVZO0VBQ0k7QXZDbzVVaEI7O0F3QzdoV0E7OztFQUFBO0FBYUE7RUFDSTtBeEN1aFdKOztBd0NoaFdBO0VBQ0k7QXhDbWhXSjtBd0NqaFdJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4Q21oV1I7QXdDamhXUTtFQUNJO0VBQ0E7QXhDbWhXWjtBd0NoaFdRO0VBQ0k7RUFDQTtFQUNBO0F4Q2toV1o7QXdDL2dXUTtFQUNJO0VBQ0E7RUFDQTtBeENpaFdaOztBd0N4Z1dBO0VBQ0k7RUFDQTtBeEMyZ1dKO0F3Q3pnV0k7RUFDSTtBeEMyZ1dSO0F3Q3hnV0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEMwZ1dSO0F3Q3hnV1E7RUFDSTtFQUNBO0F4QzBnV1o7QXdDdmdXUTtFQUNJO0VBQ0E7QXhDeWdXWjtBd0N0Z1dRO0VBQ0k7RUFDQTtFQUNBO0F4Q3dnV1o7O0F3Qy8vVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4Q2tnV0o7O0F3Q3YvVkE7RUFDSTtBeEMwL1ZKO0F3Q3gvVkk7RUFDSTtBeEMwL1ZSOztBd0N0L1ZBO0VBQ0k7RUFDQTtFQUNBO0F4Q3kvVko7QVVya1dJO0U4QnlFSjtJQU1RO0V4QzAvVk47QUFDRjs7QXdDci9WQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhDdy9WSjtBd0N0L1ZJO0VBQ0k7RUFDQTtFQUNBO0F4Q3cvVlI7QXdDdC9WUTtFQUNJO0VBQ0E7RUFDQTtBeEN3L1ZaO0F3Q3IvVlE7RUFDSTtFQUNBO0F4Q3UvVlo7QXdDbi9WSTtFQUNJO0VBQ0E7QXhDcS9WUjtBd0NuL1ZRO0VBQ0k7RUFDQTtBeENxL1ZaO0F3Q2wvVlE7RUFDSTtFQUNBO0F4Q28vVlo7QXdDaC9WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhDay9WUjtBd0MvK1ZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhDaS9WUjtBd0MvK1ZRO0VBQ0k7RUFDQTtBeENpL1ZaO0F3QzcrVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4QysrVlI7QXdDNStWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEM4K1ZSO0F3QzMrVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEM2K1ZSO0F3QzErVkk7RUFDSTtBeEM0K1ZSO0F3QzErVlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhDNCtWWjs7QXdDaCtWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F4Q20rVlI7QXdDaCtWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhDaytWUjs7QXdDOTlWQTtFQUNJO0VBQ0E7QXhDaStWSjs7QXdDOTlWQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhDaStWSjtBd0MvOVZJO0VBQ0k7RUFDQTtFQUNBO0F4Q2krVlI7QXdDLzlWUTtFQUNJO0VBQ0E7RUFDQTtBeENpK1ZaO0F3Qzk5VlE7RUFDSTtFQUNBO0VBQ0E7QXhDZytWWjtBd0M1OVZJO0VBQ0k7QXhDODlWUjtBd0MzOVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEM2OVZSO0F3QzE5Vkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4QzQ5VlI7QXdDMTlWUTtFQUNJO0VBQ0E7QXhDNDlWWjtBd0N4OVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4QzA5VlI7QXdDdjlWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhDeTlWUjtBd0N2OVZRO0VBQ0k7QXhDeTlWWjtBd0N0OVZRO0VBQ0k7RUFDQTtBeEN3OVZaO0F3Q3Q5Vlk7RUFDSTtFQUNBO0F4Q3c5VmhCOztBd0M5OFZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4Q2k5Vko7O0F3Qzk4VkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXhDaTlWSjs7QXdDOThWQTtFQUNJO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeENnOVZKOztBd0M3OFZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F4Q2c5Vko7O0F3Qzc4VkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBeENnOVZKOztBd0M3OFZBO0VBQ0k7RUFDQTtBeENnOVZKOztBd0M3OFZBO0VBQ0k7RUFDQTtFQUNBO0F4Q2c5Vko7QXdDNThWSTtFQUNJO0VBQ0E7RUFDQTtBeEM4OFZSO0F3QzU4VlE7RUFDSTtBeEM4OFZaO0F3QzM4VlE7RUFDSTtBeEM2OFZaO0F3QzE4VlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBeEM0OFZaOztBVXYxV0k7RThCc1pBO0lBQ0k7SUFDQTtJQUNBO0V4Q3E4Vk47RXdDaDhWTTtJQUNJO0lBQ0E7SUFDQTtFeENrOFZWO0V3Q2g4VlU7O0lBRUk7RXhDazhWZDtFd0NoOFZjOztJQUNJO0V4Q204VmxCO0V3QzM3VkU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0V4QzY3Vk47RXdDMzdWTTtJQUNJO0V4QzY3VlY7RXdDMTdWTTtJQUNJO0V4QzQ3VlY7RXdDeDdWRTtJQUNJO0lBQ0E7RXhDMDdWTjtFd0N2N1ZFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFeEN5N1ZOO0V3Q3Q3VkU7SUFFSTtNQUNJO0l4Q3U3VlI7SXdDcDdWSTtNQUNJO0l4Q3M3VlI7RUFDRjtBQUNGO0F3Q2o3VkE7RUFDSTtBeENtN1ZKOztBd0M1NlZBO0VBSVE7OztJQUdJO0V4QzQ2VlY7RXdDejZWTTtJQUNJO0V4QzI2VlY7QUFDRjtBQXAyV0E7Ozs7O0dBQUEsQyIsInNvdXJjZXMiOlsid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2FwcC5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2Rlc2lnbi1zeXN0ZW0vX2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvZGVzaWduLXN5c3RlbS9fdG9rZW5zLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvZGVzaWduLXN5c3RlbS9fdHlwb2dyYXBoeS5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2Rlc2lnbi1zeXN0ZW0vX2JhZGdlcy5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZm9ybS1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZG9jdW1lbnQtdmlldy5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2V4dGVybmFsLWRvYy12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZG9jdW1lbnQtdGVtcGxhdGVzLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19tYXJrZXRwbGFjZS5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2dsb2JhbC1zZWFyY2guc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19kYXRhZ3JpZC5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2NsaWVudC1mb3JtLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fYmlsbGluZy1mb3JtLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fcGF5bWVudC1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fcGF5bWVudHMtbGlzdC5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3VzZXJzLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19wcm9maWxlLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL190d28tZmFjdG9yLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fbm90aWZpY2F0aW9ucy1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fc3Vic2NyaXB0aW9uLXBhZ2VzLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fb25ib2FyZGluZy1jaGVja2xpc3Quc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19vbmJvYXJkaW5nLXdpemFyZC5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX21vbmV5LnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9faW5zdGFuY2UtbGFiZWwuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9sYXlvdXRzL19pbmRleC5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2xheW91dHMvX25hdmJhci12ZXJ0aWNhbC5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL2xheW91dHMvX3BhZ2UtaGVhZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvX2Zvcm1zLnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvX2NvbXBhbnkuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9zZXR0aW5ncy5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL19kYXNoYm9hcmQuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9jbGllbnQuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9pbnZvaWNlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9leHRlcm5hbC1pbnZvaWNlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9leHRlcm5hbC1xdW90ZS12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vYXVnaWFzLy4vYXNzZXRzL3Njc3MvcXVvdGUtdmlldy5zY3NzIiwid2VicGFjazovL2F1Z2lhcy8uL2Fzc2V0cy9zY3NzL3BheW1lbnQtbWFya2V0cGxhY2Uuc2NzcyIsIndlYnBhY2s6Ly9hdWdpYXMvLi9hc3NldHMvc2Nzcy9ub3RpZmljYXRpb24tbWFya2V0cGxhY2Uuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1Z2lhcyBNYWluIEFwcGxpY2F0aW9uIFN0eWxlc2hlZXRcbiAqXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBhbGwgYXBwbGljYXRpb24gc3R5bGVzLlxuICogSXQgaW1wb3J0cyBCb290c3RyYXAsIHRoZSBkZXNpZ24gc3lzdGVtLCBjb21wb25lbnRzLCBhbmQgbGF5b3V0cy5cbiAqL1xuXG5AdXNlICdzYXNzOmNvbG9yJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gMS4gQk9PVFNUUkFQIENPUkUgSU1QT1JUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgQm9vdHN0cmFwIGZ1bmN0aW9ucyBmaXJzdCAobmVlZGVkIGZvciBjb2xvciBtYW5pcHVsYXRpb24sIGV0Yy4pXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDIuIEFVR0lBUyBCUkFORCBWQVJJQUJMRVMgKE92ZXJyaWRlIEJvb3RzdHJhcCBkZWZhdWx0cylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUHJpbWFyeSBjb2xvcnMg4oCUIHNlZSBkZXNpZ24tc3lzdGVtL190b2tlbnMuc2NzcyBmb3IgdGhlIGNvbnRyYXN0IHJhdGlvbmFsZS5cbiRpbmstYmFzZTogIzFlNDk3NjtcbiRpbmstZGFyazogIzEyMjkzZjtcbiRpbmstbGlnaHQ6ICNlNGVkZjY7XG4kdGVycmFjb3R0YS1iYXNlOiAjYTk0ZTI4O1xuJHRlcnJhY290dGEtZGFyazogIzc1MzUxYTtcbiR0ZXJyYWNvdHRhLWxpZ2h0OiAjZmJlZWU3O1xuXG4vLyBPdmVycmlkZSBCb290c3RyYXAgdmFyaWFibGVzXG4kcHJpbWFyeTogJGluay1iYXNlO1xuJHNlY29uZGFyeTogJHRlcnJhY290dGEtYmFzZTtcblxuLy8gQm9keSBhbmQgTGluayBDb2xvcnNcbiRib2R5LWNvbG9yOiAjMzMzMzMzO1xuJGJvZHktYmc6ICNmNGY2Zjg7XG4kbGluay1jb2xvcjogJHByaW1hcnk7XG4kbGluay1ob3Zlci1jb2xvcjogJGluay1kYXJrO1xuXG4vLyBCdXR0b24gc3RhdGVzXG4kYnRuLXByaW1hcnktYmc6ICRwcmltYXJ5O1xuJGJ0bi1wcmltYXJ5LWJvcmRlci1jb2xvcjogJHByaW1hcnk7XG4kYnRuLXByaW1hcnktaG92ZXItYmc6ICRpbmstZGFyaztcbiRidG4tcHJpbWFyeS1ob3Zlci1ib3JkZXItY29sb3I6ICRpbmstZGFyaztcbiRidG4tcHJpbWFyeS1hY3RpdmUtYmc6ICRpbmstZGFyaztcbiRidG4tcHJpbWFyeS1hY3RpdmUtYm9yZGVyLWNvbG9yOiAkaW5rLWRhcms7XG4kYnRuLXNlY29uZGFyeS1iZzogJHNlY29uZGFyeTtcbiRidG4tc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogJHNlY29uZGFyeTtcbiRidG4tc2Vjb25kYXJ5LWhvdmVyLWJnOiAkdGVycmFjb3R0YS1kYXJrO1xuJGJ0bi1zZWNvbmRhcnktaG92ZXItYm9yZGVyLWNvbG9yOiAkdGVycmFjb3R0YS1kYXJrO1xuJGJ0bi1zZWNvbmRhcnktYWN0aXZlLWJnOiAkdGVycmFjb3R0YS1kYXJrO1xuJGJ0bi1zZWNvbmRhcnktYWN0aXZlLWJvcmRlci1jb2xvcjogJHRlcnJhY290dGEtZGFyaztcblxuLy8gQWxlcnQgQ29sb3JzXG4kYWxlcnQtcHJpbWFyeS1iZzogJGluay1saWdodDtcbiRhbGVydC1wcmltYXJ5LWJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRpbmstbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4kYWxlcnQtcHJpbWFyeS10ZXh0OiAkaW5rLWRhcms7XG4kYWxlcnQtc2Vjb25kYXJ5LWJnOiAkdGVycmFjb3R0YS1saWdodDtcbiRhbGVydC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJHRlcnJhY290dGEtbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4kYWxlcnQtc2Vjb25kYXJ5LXRleHQ6ICR0ZXJyYWNvdHRhLWRhcms7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDMuIERFU0lHTiBTWVNURU0gRk9VTkRBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgZGVzaWduIHRva2VucyAoY29sb3JzLCBzcGFjaW5nLCBzaGFkb3dzLCB0eXBvZ3JhcGh5LCBldGMuKVxuQGltcG9ydCAnLi9kZXNpZ24tc3lzdGVtL2luZGV4JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNC4gQ09NUE9ORU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgYWxsIGNvbXBvbmVudCBzdHlsZXNcbkBpbXBvcnQgJy4vY29tcG9uZW50cy9pbmRleCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDUuIExBWU9VVCBQQVRURVJOU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgYWxsIGxheW91dCBzdHlsZXNcbkBpbXBvcnQgJy4vbGF5b3V0cy9pbmRleCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDYuIEZPUk0gU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdlbmVyaWMgZm9ybSBjb21wb25lbnRzIChyZXVzYWJsZSBhY3Jvc3MgdGhlIGFwcClcbkBpbXBvcnQgJy4vZm9ybXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA3LiBQQUdFLVNQRUNJRklDIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb21wYW55IHBhZ2UgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9jb21wYW55JztcblxuLy8gU2V0dGluZ3MgcGFnZSBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL3NldHRpbmdzJztcblxuLy8gRGFzaGJvYXJkIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vZGFzaGJvYXJkJztcblxuLy8gQ2xpZW50IHBhZ2UgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9jbGllbnQnO1xuXG4vLyBJbnZvaWNlIHZpZXcgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vaW52b2ljZS12aWV3JztcblxuLy8gRXh0ZXJuYWwgaW52b2ljZSB2aWV3IHBhZ2Ugc3R5bGVzIChwdWJsaWMtZmFjaW5nKVxuQGltcG9ydCAnLi9leHRlcm5hbC1pbnZvaWNlLXZpZXcnO1xuXG4vLyBFeHRlcm5hbCBxdW90ZSB2aWV3IHBhZ2Ugc3R5bGVzIChwdWJsaWMtZmFjaW5nKVxuQGltcG9ydCAnLi9leHRlcm5hbC1xdW90ZS12aWV3JztcblxuLy8gUXVvdGUgdmlldyBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9xdW90ZS12aWV3JztcblxuLy8gUGF5bWVudCBtYXJrZXRwbGFjZSBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9wYXltZW50LW1hcmtldHBsYWNlJztcblxuLy8gTm90aWZpY2F0aW9uIG1hcmtldHBsYWNlIHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL25vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZSc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDguIExFR0FDWSBCT09UU1RSQVAgT1ZFUlJJREVTIChUbyBiZSBjbGVhbmVkIHVwKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBUaGVzZSBhcmUgdGVtcG9yYXJ5IG92ZXJyaWRlcyB0aGF0IHNob3VsZCBldmVudHVhbGx5IGJlIG1vdmVkXG4vLyB0byB0aGUgYXBwcm9wcmlhdGUgY29tcG9uZW50IGZpbGVzIGluIHRoZSBkZXNpZ24gc3lzdGVtLlxuXG4vLyBLZWVwIGxlZ2FjeSBhY3RpdmUgbmF2IHN0eWxpbmcgZm9yIG5vd1xuXG4vKiAubmF2LWxpbmsuYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmMmZmO1xuICAgIGNvbG9yOiAjNGY0NmU1O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xufSAqL1xuIiwiLyoqXG4gKiBBdWdpYXMgRGVzaWduIFN5c3RlbSAtIE1haW4gSW5kZXhcbiAqXG4gKiBJbXBvcnRzIGFsbCBkZXNpZ24gc3lzdGVtIGZvdW5kYXRpb24gZmlsZXMuXG4gKiBUaGlzIGZpbGUgc2hvdWxkIGJlIGltcG9ydGVkIGVhcmx5IGluIGFwcC5zY3NzLFxuICogYWZ0ZXIgQm9vdHN0cmFwIGZ1bmN0aW9ucy92YXJpYWJsZXMgYnV0IGJlZm9yZSBjb21wb25lbnRzLlxuICovXG5cbi8vIENvcmUgZGVzaWduIHRva2VucyAoY29sb3JzLCBzcGFjaW5nLCBzaGFkb3dzLCBldGMuKVxuQGltcG9ydCAndG9rZW5zJztcblxuLy8gVHlwb2dyYXBoeSBzeXN0ZW1cbkBpbXBvcnQgJ3R5cG9ncmFwaHknO1xuXG4vLyBTdGF0dXMgY2hpcHMg4oCUIHRpbnRlZCB2YXJpYW50cywgcGx1cyB0aGUgYGdyYXlgIHRpbnQgVGFibGVyIGRvZXMgbm90IHNoaXAuXG5AaW1wb3J0ICdiYWRnZXMnO1xuIiwiLyoqXG4gKiBBdWdpYXMgRGVzaWduIFN5c3RlbSAtIERlc2lnbiBUb2tlbnNcbiAqXG4gKiBDb3JlIGRlc2lnbiB0b2tlbnMgZGVmaW5pbmcgY29sb3JzLCBzcGFjaW5nLCBzaGFkb3dzLCBib3JkZXIgcmFkaXVzLFxuICogYW5kIHRyYW5zaXRpb25zLiBBbGwgdmFsdWVzIGFyZSBleHBvc2VkIGFzIENTUyBjdXN0b20gcHJvcGVydGllc1xuICogd2l0aCB0aGUgYC0tc3dwLWAgcHJlZml4IGZvciBydW50aW1lIHRoZW1pbmcgc3VwcG9ydC5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT0xPUiBQQUxFVFRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQnJhbmQgQ29sb3JzIChQcmltYXJ5ICYgU2Vjb25kYXJ5KVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vIFByaW1hcnk6IEluayBCbHVlIC0gTWFpbiBDVEFzLCBsaW5rcywgYWN0aXZlIHN0YXRlcy5cbiAgICAvLyBUaGUgYnJhbmQgd2FzIGdyZWVuLCB3aGljaCBwdXQgaXQgb24gdGhlIHNhbWUgaHVlIGFzIGBzdWNjZXNzYCBpbiBhXG4gICAgLy8gcHJvZHVjdCB3aGVyZSBncmVlbiAqbWVhbnMqIG1vbmV5IHJlY2VpdmVkOiBhIHByaW1hcnkgYnV0dG9uIGFuZCBhIFwiUGFpZFwiXG4gICAgLy8gY2hpcCByZWFkIGFzIHRoZSBzYW1lIHNpZ25hbC4gVGhlIG9sZCBncmVlbiBhbHNvIG1lYXN1cmVkIDMuNzk6MSBvbiB3aGl0ZVxuICAgIC8vIHdoaWxlIHNlcnZpbmcgYXMgYCRsaW5rLWNvbG9yYCwgc28gZXZlcnkgbGluayBpbiB0aGUgYXBwbGljYXRpb24gZmFpbGVkXG4gICAgLy8gV0NBRyBBQS4gSW5rIGJsdWUgY2xlYXJzIGJvdGggcHJvYmxlbXMg4oCUIDkuMjU6MSBvbiBzdXJmYWNlLCA4LjU0OjEgb24gdGhlXG4gICAgLy8gY2FudmFzLCBhbmQgbm8gaHVlIHNoYXJlZCB3aXRoIGFueSBzdGF0dXMgY29sb3VyLlxuICAgIC0tc3dwLXByaW1hcnk6ICMxZTQ5NzY7XG4gICAgLS1zd3AtcHJpbWFyeS1yZ2I6IDMwLCA3MywgMTE4O1xuICAgIC0tc3dwLXByaW1hcnktaG92ZXI6ICMxODNhNWU7XG4gICAgLS1zd3AtcHJpbWFyeS1kYXJrOiAjMTIyOTNmO1xuICAgIC0tc3dwLXByaW1hcnktbGlnaHQ6ICNlNGVkZjY7XG4gICAgLS1zd3AtcHJpbWFyeS1saWdodGVyOiAjZjNmOGZjO1xuXG4gICAgLy8gU2Vjb25kYXJ5OiBUZXJyYWNvdHRhIC0gVXNlZCBzcGFyaW5nbHkgZm9yIGFjY2VudHMuXG4gICAgLy8gNS41MjoxIG9uIHN1cmZhY2UgYW5kIDUuMDk6MSBvbiB0aGUgY2FudmFzLCBzbyBpdCBob2xkcyBBQSBhcyB0ZXh0IGFzXG4gICAgLy8gd2VsbCBhcyBiZWhpbmQgd2hpdGUuIERlbGliZXJhdGVseSBrZXB0IG9mZiBhbWJlcjogYHdhcm5pbmdgIG93bnMgdGhhdFxuICAgIC8vIGh1ZSwgYW5kIGFuIGFjY2VudCB0aGF0IGJvcnJvd3MgYSBzdGF0dXMgY29sb3VyIHN0b3BzIGJlaW5nIGFuIGFjY2VudC5cbiAgICAtLXN3cC1zZWNvbmRhcnk6ICNhOTRlMjg7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LXJnYjogMTY5LCA3OCwgNDA7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWhvdmVyOiAjOTE0MjFmO1xuICAgIC0tc3dwLXNlY29uZGFyeS1kYXJrOiAjNzUzNTFhO1xuICAgIC0tc3dwLXNlY29uZGFyeS1saWdodDogI2ZiZWVlNztcbiAgICAtLXN3cC1zZWNvbmRhcnktbGlnaHRlcjogI2ZkZjhmNTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBOZXV0cmFsIENvbG9ycyAoU2xhdGUtYmFzZWQgZ3JheSBzY2FsZSBmb3IgbW9kZXJuIGZlZWwpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS1zd3AtZ3JheS01MDogI2Y4ZmFmYztcbiAgICAtLXN3cC1ncmF5LTEwMDogI2YxZjVmOTtcbiAgICAtLXN3cC1ncmF5LTIwMDogI2UyZThmMDtcbiAgICAtLXN3cC1ncmF5LTMwMDogI2NiZDVlMTtcbiAgICAtLXN3cC1ncmF5LTQwMDogIzk0YTNiODtcbiAgICAtLXN3cC1ncmF5LTUwMDogIzY0NzQ4YjtcbiAgICAtLXN3cC1ncmF5LTYwMDogIzQ3NTU2OTtcbiAgICAtLXN3cC1ncmF5LTcwMDogIzMzNDE1NTtcbiAgICAtLXN3cC1ncmF5LTgwMDogIzFlMjkzYjtcbiAgICAtLXN3cC1ncmF5LTkwMDogIzBmMTcyYTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTZW1hbnRpYyBDb2xvcnMgKEZlZWRiYWNrICYgU3RhdHVzKVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vIFN1Y2Nlc3NcbiAgICAvLyBOT1RFOiBgc3VjY2Vzc2AgKDIuNTQ6MSBvbiBzdXJmYWNlKSBhbmQgYHN1Y2Nlc3MtaG92ZXJgICgzLjc3OjEpIGFyZSBmaWxsXG4gICAgLy8gY29sb3Vycywgbm90IHRleHQgY29sb3VycyAtIGJvdGggZmFpbCBXQ0FHIEFBIGFzIHRleHQuIFVzZSBgc3VjY2Vzcy1kYXJrYFxuICAgIC8vIGZvciBhbnkgc3VjY2Vzcy1jb2xvdXJlZCAqdGV4dCouIFNlZSBERVNJR04ubWQgLSBUaGUgTGVnaWJsZSBTdGF0dXMgUnVsZS5cbiAgICAtLXN3cC1zdWNjZXNzOiAjMTBiOTgxO1xuICAgIC0tc3dwLXN1Y2Nlc3MtcmdiOiAxNiwgMTg1LCAxMjk7XG4gICAgLS1zd3Atc3VjY2Vzcy1ob3ZlcjogIzA1OTY2OTtcbiAgICAtLXN3cC1zdWNjZXNzLWRhcms6ICMwNDc4NTc7ICAgLy8gRW1lcmFsZC03MDAgLSBBQS1zYWZlIHN1Y2Nlc3MgdGV4dCAoNS40ODoxIG9uIHN1cmZhY2UsIDUuMDY6MSBvbiBib2R5LWJnKVxuICAgIC0tc3dwLXN1Y2Nlc3MtbGlnaHQ6ICNkMWZhZTU7XG4gICAgLS1zd3Atc3VjY2Vzcy1saWdodGVyOiAjZWNmZGY1O1xuXG4gICAgLy8gRGFuZ2VyXG4gICAgLy8gTk9URTogYGRhbmdlcmAgKDMuNzY6MSBvbiBzdXJmYWNlKSBpcyBhIGZpbGwgY29sb3VyLCBub3QgYSB0ZXh0IGNvbG91ci5cbiAgICAvLyBVc2UgYGRhbmdlci1kYXJrYCBmb3IgZGFuZ2VyLWNvbG91cmVkICp0ZXh0Ki5cbiAgICAtLXN3cC1kYW5nZXI6ICNlZjQ0NDQ7XG4gICAgLS1zd3AtZGFuZ2VyLXJnYjogMjM5LCA2OCwgNjg7XG4gICAgLS1zd3AtZGFuZ2VyLWhvdmVyOiAjZGMyNjI2O1xuICAgIC0tc3dwLWRhbmdlci1kYXJrOiAjYjkxYzFjOyAgICAvLyBSZWQtNzAwIC0gQUEtc2FmZSBkYW5nZXIgdGV4dCAoNi40NzoxIG9uIHN1cmZhY2UsIDUuOTc6MSBvbiBib2R5LWJnKVxuICAgIC0tc3dwLWRhbmdlci1saWdodDogI2ZlZTJlMjtcbiAgICAtLXN3cC1kYW5nZXItbGlnaHRlcjogI2ZlZjJmMjtcblxuICAgIC8vIFdhcm5pbmdcbiAgICAtLXN3cC13YXJuaW5nOiAjZjU5ZTBiO1xuICAgIC0tc3dwLXdhcm5pbmctcmdiOiAyNDUsIDE1OCwgMTE7XG4gICAgLS1zd3Atd2FybmluZy1ob3ZlcjogI2Q5NzcwNjtcbiAgICAtLXN3cC13YXJuaW5nLWxpZ2h0OiAjZmVmM2M3O1xuICAgIC0tc3dwLXdhcm5pbmctbGlnaHRlcjogI2ZmZmJlYjtcblxuICAgIC8vIEluZm9cbiAgICAtLXN3cC1pbmZvOiAjM2I4MmY2O1xuICAgIC0tc3dwLWluZm8tcmdiOiA1OSwgMTMwLCAyNDY7XG4gICAgLS1zd3AtaW5mby1ob3ZlcjogIzI1NjNlYjtcbiAgICAtLXN3cC1pbmZvLWxpZ2h0OiAjZGJlYWZlO1xuICAgIC0tc3dwLWluZm8tbGlnaHRlcjogI2VmZjZmZjtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTdXJmYWNlIENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC0tc3dwLWJvZHktYmc6ICNmNGY2Zjg7XG4gICAgLS1zd3Atc3VyZmFjZTogI2ZmZmZmZjtcbiAgICAtLXN3cC1zdXJmYWNlLWhvdmVyOiAjZjhmYWZjO1xuICAgIC0tc3dwLXN1cmZhY2UtZWxldmF0ZWQ6ICNmZmZmZmY7XG4gICAgLS1zd3Atc3VyZmFjZS1vdmVybGF5OiByZ2IoMTUgMjMgNDIgLyA1MCUpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFRleHQgQ29sb3JzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gRGVmYXVsdCBib2R5IHRleHQuIEFsaWFzZXMgYHRleHQtcHJpbWFyeWAgcmF0aGVyIHRoYW4gZHVwbGljYXRpbmcgdGhlXG4gICAgLy8gbGl0ZXJhbCAtIGl0IHdhcyBhIHB1cmUgIzMzMzMzMyBncmF5LCB3aGljaCB0aGUgVGludGVkIE5ldXRyYWxzIFJ1bGVcbiAgICAvLyBwcm9oaWJpdHMsIGFuZCB0aGVyZSBpcyBubyByZWFzb24gZm9yIHRoZSB0d28gdG8gZXZlciBkaXZlcmdlLlxuICAgIC0tc3dwLWJvZHktY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIC0tc3dwLXRleHQtcHJpbWFyeTogIzFlMjkzYjtcbiAgICAtLXN3cC10ZXh0LXNlY29uZGFyeTogIzQ3NTU2OTtcbiAgICAtLXN3cC10ZXh0LW11dGVkOiAjNjQ3NDhiO1xuXG4gICAgLy8gV0FSTklORzogMi41NjoxIG9uIHN1cmZhY2UsIDIuMzc6MSBvbiBib2R5LWJnIC0gRkFJTFMgV0NBRyBBQSAoMS40LjMpLlxuICAgIC8vIFNhZmUgT05MWSBmb3IgZGlzYWJsZWQgdGV4dCAoZXhlbXB0IGZyb20gMS40LjMpIGFuZCBkZWNvcmF0aXZlIGdseXBocy5cbiAgICAvLyBOZXZlciB1c2UgZm9yIHBsYWNlaG9sZGVycyBvciBhbnkgb3RoZXIgbWVhbmluZ2Z1bCB0ZXh0LlxuICAgIC0tc3dwLXRleHQtbGlnaHQ6ICM5NGEzYjg7XG4gICAgLS1zd3AtdGV4dC1pbnZlcnNlOiAjZmZmZmZmO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEJvcmRlciBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1ib3JkZXI6ICNlMmU4ZjA7XG4gICAgLS1zd3AtYm9yZGVyLWxpZ2h0OiAjZjFmNWY5O1xuICAgIC0tc3dwLWJvcmRlci1kYXJrOiAjY2JkNWUxO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIExpbmsgQ29sb3JzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS1zd3AtbGluay1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIC0tc3dwLWxpbmstaG92ZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTUEFDSU5HIFNDQUxFICg4cHggYmFzZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXNwYWNlLTA6IDA7XG4gICAgLS1zd3Atc3BhY2UtcHg6IDFweDtcbiAgICAtLXN3cC1zcGFjZS0wLTU6IDAuMTI1cmVtOyAgLy8gMnB4XG4gICAgLS1zd3Atc3BhY2UtMTogMC4yNXJlbTsgICAgIC8vIDRweFxuICAgIC0tc3dwLXNwYWNlLTEtNTogMC4zNzVyZW07ICAvLyA2cHhcbiAgICAtLXN3cC1zcGFjZS0yOiAwLjVyZW07ICAgICAgLy8gOHB4XG4gICAgLS1zd3Atc3BhY2UtMi01OiAwLjYyNXJlbTsgIC8vIDEwcHhcbiAgICAtLXN3cC1zcGFjZS0zOiAwLjc1cmVtOyAgICAgLy8gMTJweFxuICAgIC0tc3dwLXNwYWNlLTMtNTogMC44NzVyZW07ICAvLyAxNHB4XG4gICAgLS1zd3Atc3BhY2UtNDogMXJlbTsgICAgICAgIC8vIDE2cHhcbiAgICAtLXN3cC1zcGFjZS01OiAxLjI1cmVtOyAgICAgLy8gMjBweFxuICAgIC0tc3dwLXNwYWNlLTY6IDEuNXJlbTsgICAgICAvLyAyNHB4XG4gICAgLS1zd3Atc3BhY2UtNzogMS43NXJlbTsgICAgIC8vIDI4cHhcbiAgICAtLXN3cC1zcGFjZS04OiAycmVtOyAgICAgICAgLy8gMzJweFxuICAgIC0tc3dwLXNwYWNlLTk6IDIuMjVyZW07ICAgICAvLyAzNnB4XG4gICAgLS1zd3Atc3BhY2UtMTA6IDIuNXJlbTsgICAgIC8vIDQwcHhcbiAgICAtLXN3cC1zcGFjZS0xMTogMi43NXJlbTsgICAgLy8gNDRweFxuICAgIC0tc3dwLXNwYWNlLTEyOiAzcmVtOyAgICAgICAvLyA0OHB4XG4gICAgLS1zd3Atc3BhY2UtMTQ6IDMuNXJlbTsgICAgIC8vIDU2cHhcbiAgICAtLXN3cC1zcGFjZS0xNjogNHJlbTsgICAgICAgLy8gNjRweFxuICAgIC0tc3dwLXNwYWNlLTIwOiA1cmVtOyAgICAgICAvLyA4MHB4XG4gICAgLS1zd3Atc3BhY2UtMjQ6IDZyZW07ICAgICAgIC8vIDk2cHhcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQk9SREVSIFJBRElVU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtcmFkaXVzLW5vbmU6IDA7XG4gICAgLS1zd3AtcmFkaXVzLXNtOiAwLjM3NXJlbTsgICAgLy8gNnB4IC0gU21hbGwgZWxlbWVudHMsIHRhZ3NcbiAgICAtLXN3cC1yYWRpdXMtbWQ6IDAuNXJlbTsgICAgICAvLyA4cHggLSBGb3JtIGNvbnRyb2xzLCBidXR0b25zXG4gICAgLS1zd3AtcmFkaXVzLWxnOiAwLjc1cmVtOyAgICAgLy8gMTJweCAtIENhcmRzLCBtb2RhbHNcbiAgICAtLXN3cC1yYWRpdXMteGw6IDFyZW07ICAgICAgICAvLyAxNnB4IC0gTGFyZ2UgY2FyZHMsIGRpYWxvZ3NcbiAgICAtLXN3cC1yYWRpdXMtMnhsOiAxLjVyZW07ICAgICAvLyAyNHB4IC0gRXh0cmEgbGFyZ2UgZWxlbWVudHNcbiAgICAtLXN3cC1yYWRpdXMtZnVsbDogOTk5OXB4OyAgICAvLyBQaWxsIHNoYXBlXG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNIQURPV1MgKFN1YnRsZSwgbW9kZXJuIGVsZXZhdGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIEVsZXZhdGlvbiBzaGFkb3dzXG4gICAgLS1zd3Atc2hhZG93LXhzOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgLS1zd3Atc2hhZG93LXNtOiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAxMCUpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tc3dwLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMTAlKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXN3cC1zaGFkb3ctbGc6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMTAlKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXN3cC1zaGFkb3cteGw6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMTAlKSwgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgLS1zd3Atc2hhZG93LTJ4bDogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMjUlKTtcblxuICAgIC8vIElubmVyIHNoYWRvd1xuICAgIC0tc3dwLXNoYWRvdy1pbm5lcjogaW5zZXQgMCAycHggNHB4IDAgcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgLy8gQ29sb3JlZCBzaGFkb3dzIGZvciBidXR0b25zIGFuZCBpbnRlcmFjdGl2ZSBlbGVtZW50c1xuICAgIC0tc3dwLXNoYWRvdy1wcmltYXJ5OiAwIDRweCAxNHB4IDAgcmdiKDQ2IDE1MCA1OCAvIDI1JSk7XG4gICAgLS1zd3Atc2hhZG93LXByaW1hcnktbGc6IDAgOHB4IDIwcHggMCByZ2IoNDYgMTUwIDU4IC8gMzAlKTtcbiAgICAtLXN3cC1zaGFkb3ctZGFuZ2VyOiAwIDRweCAxNHB4IDAgcmdiKDIzOSA2OCA2OCAvIDI1JSk7XG4gICAgLS1zd3Atc2hhZG93LWRhbmdlci1sZzogMCA4cHggMjBweCAwIHJnYigyMzkgNjggNjggLyAzMCUpO1xuXG4gICAgLy8gRm9jdXMgcmluZyBzaGFkb3dcbiAgICAtLXN3cC1yaW5nLXByaW1hcnk6IDAgMCAwIDNweCByZ2IoNDYgMTUwIDU4IC8gMTUlKTtcbiAgICAtLXN3cC1yaW5nLWRhbmdlcjogMCAwIDAgM3B4IHJnYigyMzkgNjggNjggLyAxNSUpO1xuICAgIC0tc3dwLXJpbmctb2Zmc2V0OiAwIDAgMCAycHggdmFyKC0tc3dwLXN1cmZhY2UpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUUkFOU0lUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gRHVyYXRpb25zXG4gICAgLS1zd3AtZHVyYXRpb24tZmFzdDogMTUwbXM7XG4gICAgLS1zd3AtZHVyYXRpb24tYmFzZTogMjAwbXM7XG4gICAgLS1zd3AtZHVyYXRpb24tc2xvdzogMzAwbXM7XG4gICAgLS1zd3AtZHVyYXRpb24tc2xvd2VyOiA0MDBtcztcblxuICAgIC8vIFRpbWluZyBmdW5jdGlvbnNcbiAgICAtLXN3cC1lYXNlLWxpbmVhcjogbGluZWFyO1xuICAgIC0tc3dwLWVhc2UtaW46IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpO1xuICAgIC0tc3dwLWVhc2Utb3V0OiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICAtLXN3cC1lYXNlLWluLW91dDogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcblxuICAgIC8vIENvbW1vbiB0cmFuc2l0aW9uc1xuICAgIC0tc3dwLXRyYW5zaXRpb24tZmFzdDogdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIHZhcigtLXN3cC1lYXNlLWluLW91dCk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi1iYXNlOiB2YXIoLS1zd3AtZHVyYXRpb24tYmFzZSkgdmFyKC0tc3dwLWVhc2UtaW4tb3V0KTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLXNsb3c6IHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1pbi1vdXQpO1xuXG4gICAgLy8gUHJvcGVydHktc3BlY2lmaWMgdHJhbnNpdGlvbnNcbiAgICAtLXN3cC10cmFuc2l0aW9uLWNvbG9yczogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLXNoYWRvdzogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLXRyYW5zZm9ybTogdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tYWxsOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFotSU5ERVggU0NBTEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXotZHJvcGRvd246IDEwMDA7XG4gICAgLS1zd3Atei1zdGlja3k6IDEwMjA7XG4gICAgLS1zd3Atei1maXhlZDogMTAzMDtcbiAgICAtLXN3cC16LW1vZGFsLWJhY2tkcm9wOiAxMDQwO1xuICAgIC0tc3dwLXotbW9kYWw6IDEwNTA7XG4gICAgLS1zd3Atei1wb3BvdmVyOiAxMDYwO1xuICAgIC0tc3dwLXotdG9vbHRpcDogMTA3MDtcbiAgICAtLXN3cC16LXRvYXN0OiAxMDgwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01QT05FTlQtU1BFQ0lGSUMgVE9LRU5TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyBDYXJkXG4gICAgLS1zd3AtY2FyZC1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tc3dwLWNhcmQtYm9yZGVyOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAtLXN3cC1jYXJkLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgLS1zd3AtY2FyZC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIC0tc3dwLWNhcmQtcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIC0tc3dwLWNhcmQtaGVhZGVyLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgLS1zd3AtY2FyZC1mb290ZXItcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIEZvcm0gY29udHJvbHNcbiAgICAtLXN3cC1pbnB1dC1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tc3dwLWlucHV0LWJvcmRlcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgLS1zd3AtaW5wdXQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAtLXN3cC1pbnB1dC1wYWRkaW5nLXk6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgIC0tc3dwLWlucHV0LXBhZGRpbmcteDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIC0tc3dwLWlucHV0LWZvY3VzLWJvcmRlcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIC0tc3dwLWlucHV0LWZvY3VzLXJpbmc6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuXG4gICAgLy8gQnV0dG9uc1xuICAgIC0tc3dwLWJ0bi1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIC0tc3dwLWJ0bi1wYWRkaW5nLXk6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgIC0tc3dwLWJ0bi1wYWRkaW5nLXg6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAtLXN3cC1idG4tZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgIC8vIE1vZGFsXG4gICAgLS1zd3AtbW9kYWwtYmc6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAtLXN3cC1tb2RhbC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgIC0tc3dwLW1vZGFsLXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14bCk7XG4gICAgLS1zd3AtbW9kYWwtcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gVGFibGVcbiAgICAtLXN3cC10YWJsZS1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tc3dwLXRhYmxlLWJvcmRlcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgLS1zd3AtdGFibGUtaGVhZGVyLWJnOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgLS1zd3AtdGFibGUtcm93LWhvdmVyLWJnOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgLS1zd3AtdGFibGUtY2VsbC1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gQWxlcnRcbiAgICAtLXN3cC1hbGVydC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIC0tc3dwLWFsZXJ0LXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIC8vIE1vbmV5IGRpc3BsYXkgKHNpZ25hdHVyZSBjb21wb25lbnQgLSBzZWUgY29tcG9uZW50cy9fbW9uZXkuc2NzcylcbiAgICAvLyBFdmVyeSBjb2xvdXIgaGVyZSBpcyBBQS1jb21wbGlhbnQgYWdhaW5zdCBCT1RIIGBzdXJmYWNlYCBhbmQgYGJvZHktYmdgLFxuICAgIC8vIGJlY2F1c2UgbW9uZXkgbXVzdCBuZXZlciBiZSBtaXNyZWFkYWJsZSBvbiBhbnkgc3VyZmFjZSBpdCBsYW5kcyBvbi5cbiAgICAtLXN3cC1tb25leS1jdXJyZW5jeTogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTsgIC8vIDcuNTg6MSAvIDYuOTk6MVxuICAgIC0tc3dwLW1vbmV5LW5ldXRyYWw6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpOyAgICAgLy8gMTQuNjM6MSAvIDEzLjUwOjFcbiAgICAtLXN3cC1tb25leS1wYWlkOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTsgICAgICAgIC8vIDUuNDg6MSAvIDUuMDY6MVxuICAgIC0tc3dwLW1vbmV5LW92ZXJkdWU6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7ICAgICAgLy8gNi40NzoxIC8gNS45NzoxXG5cbiAgICAvLyBSZWxhdGl2ZSBzdGVwIGFwcGxpZWQgdG8gYSBgLm1vbmV5LS10b3RhbGAgYW1vdW50LiBVbml0bGVzcyBtdWx0aXBsaWVyIHNvXG4gICAgLy8gdGhlIHN0ZXAgaXMgY29ycmVjdCBhdCBldmVyeSBpbmhlcml0ZWQgYmFzZSBzaXplLlxuICAgIC0tc3dwLW1vbmV5LXRvdGFsLXNjYWxlOiAxLjEyNTtcblxuICAgIC8vIFJlbGF0aXZlIHNpemUgb2YgdGhlIGN1cnJlbmN5IGNvZGUgYWdhaW5zdCBpdHMgYW1vdW50LiBUaGUgY29kZSBpcyBhIHVuaXQsXG4gICAgLy8gbm90IGEgc2Vjb25kIG51bWJlciwgYW5kIHJlYWRzIGFzIHN1Ym9yZGluYXRlIHJhdGhlciB0aGFuIGNvbXBldGluZy5cbiAgICAtLXN3cC1tb25leS1jdXJyZW5jeS1zY2FsZTogMC43NWVtO1xufVxuIiwiLyoqXG4gKiBBdWdpYXMgRGVzaWduIFN5c3RlbSAtIFR5cG9ncmFwaHlcbiAqXG4gKiBUeXBvZ3JhcGh5IHNjYWxlLCBmb250IGZhbWlsaWVzLCB3ZWlnaHRzLCBhbmQgbGluZSBoZWlnaHRzLlxuICogVXNlcyBzeXN0ZW0gZm9udHMgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIG5hdGl2ZSBmZWVsLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPTlQgRkFNSUxJRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIFN5c3RlbSBmb250IHN0YWNrIC0gTW9kZXJuLCBwZXJmb3JtYW50LCBuYXRpdmUgZmVlbFxuICAgIC0tc3dwLWZvbnQtc2FuczogLWFwcGxlLXN5c3RlbSwgYmxpbmttYWNzeXN0ZW1mb250LCAnU2Vnb2UgVUknLCByb2JvdG8sXG4gICAgICAgICAgICAgICAgICAgICAnSGVsdmV0aWNhIE5ldWUnLCBhcmlhbCwgJ05vdG8gU2FucycsIHNhbnMtc2VyaWYsXG4gICAgICAgICAgICAgICAgICAgICAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJyxcbiAgICAgICAgICAgICAgICAgICAgICdOb3RvIENvbG9yIEVtb2ppJztcblxuICAgIC8vIE1vbm9zcGFjZSBmb3IgY29kZSwgbnVtYmVycyBpbiB0YWJsZXNcbiAgICAtLXN3cC1mb250LW1vbm86IHVpLW1vbm9zcGFjZSwgc2Ztb25vLXJlZ3VsYXIsICdTRiBNb25vJywgbWVubG8sIG1vbmFjbyxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuXG4gICAgLy8gRGVmYXVsdCBmb250IGZhbWlseVxuICAgIC0tc3dwLWZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1zYW5zKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBTSVpFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtdGV4dC14czogMC43NXJlbTsgICAgICAgLy8gMTJweCAtIEZpbmUgcHJpbnQsIGJhZGdlc1xuICAgIC0tc3dwLXRleHQtc206IDAuODEyNXJlbTsgICAgIC8vIDEzcHggLSBIZWxwIHRleHQsIGNhcHRpb25zXG4gICAgLS1zd3AtdGV4dC1iYXNlOiAwLjkzNzVyZW07ICAgLy8gMTVweCAtIEJvZHkgdGV4dCAoc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gMTRweCBmb3IgcmVhZGFiaWxpdHkpXG4gICAgLS1zd3AtdGV4dC1tZDogMXJlbTsgICAgICAgICAgLy8gMTZweCAtIEVtcGhhc2l6ZWQgYm9keVxuICAgIC0tc3dwLXRleHQtbGc6IDEuMTI1cmVtOyAgICAgIC8vIDE4cHggLSBDYXJkIHRpdGxlcywgc2VjdGlvbiBoZWFkZXJzXG4gICAgLS1zd3AtdGV4dC14bDogMS4yNXJlbTsgICAgICAgLy8gMjBweCAtIFBhZ2Ugc3VidGl0bGVzXG4gICAgLS1zd3AtdGV4dC0yeGw6IDEuNXJlbTsgICAgICAgLy8gMjRweCAtIFBhZ2UgdGl0bGVzXG4gICAgLS1zd3AtdGV4dC0zeGw6IDEuODc1cmVtOyAgICAgLy8gMzBweCAtIEhlcm8gdGl0bGVzXG4gICAgLS1zd3AtdGV4dC00eGw6IDIuMjVyZW07ICAgICAgLy8gMzZweCAtIExhcmdlIGRpc3BsYXlcbiAgICAtLXN3cC10ZXh0LTV4bDogM3JlbTsgICAgICAgICAvLyA0OHB4IC0gRXh0cmEgbGFyZ2UgZGlzcGxheVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5FIEhFSUdIVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLWxlYWRpbmctbm9uZTogMTtcbiAgICAtLXN3cC1sZWFkaW5nLXRpZ2h0OiAxLjI1O1xuICAgIC0tc3dwLWxlYWRpbmctc251ZzogMS4zNzU7XG4gICAgLS1zd3AtbGVhZGluZy1ub3JtYWw6IDEuNTtcbiAgICAtLXN3cC1sZWFkaW5nLXJlbGF4ZWQ6IDEuNjI1O1xuICAgIC0tc3dwLWxlYWRpbmctbG9vc2U6IDI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPTlQgV0VJR0hUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtZm9udC10aGluOiAxMDA7XG4gICAgLS1zd3AtZm9udC1leHRyYWxpZ2h0OiAyMDA7XG4gICAgLS1zd3AtZm9udC1saWdodDogMzAwO1xuICAgIC0tc3dwLWZvbnQtbm9ybWFsOiA0MDA7XG4gICAgLS1zd3AtZm9udC1tZWRpdW06IDUwMDtcbiAgICAtLXN3cC1mb250LXNlbWlib2xkOiA2MDA7XG4gICAgLS1zd3AtZm9udC1ib2xkOiA3MDA7XG4gICAgLS1zd3AtZm9udC1leHRyYWJvbGQ6IDgwMDtcbiAgICAtLXN3cC1mb250LWJsYWNrOiA5MDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExFVFRFUiBTUEFDSU5HXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC10cmFja2luZy10aWdodGVyOiAtMC4wNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLXRpZ2h0OiAtMC4wMjVlbTtcbiAgICAtLXN3cC10cmFja2luZy1ub3JtYWw6IDA7XG4gICAgLS1zd3AtdHJhY2tpbmctd2lkZTogMC4wMjVlbTtcbiAgICAtLXN3cC10cmFja2luZy13aWRlcjogMC4wNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLXdpZGVzdDogMC4xZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUE9HUkFQSFkgVVRJTElUWSBDTEFTU0VTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhZ2UgdGl0bGUgLSBMYXJnZSwgcHJvbWluZW50IGhlYWRpbmdcblxuLnRleHQtcGFnZS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXRpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG59XG5cbi8vIFBhZ2Ugc3VidGl0bGVcblxuLnRleHQtcGFnZS1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBDYXJkIHRpdGxlXG5cbi50ZXh0LWNhcmQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXNudWcpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLy8gQ2FyZCBzdWJ0aXRsZVxuXG4udGV4dC1jYXJkLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBTZWN0aW9uIHRpdGxlICh3aXRoIGljb24gcGF0dGVybilcblxuLnRleHQtc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctc251Zyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIHN2ZyxcbiAgICBpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi8vIExhYmVsIHRleHQgKGZvcm0gbGFiZWxzLCB0YWJsZSBoZWFkZXJzKVxuXG4udGV4dC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8vIEJvZHkgdGV4dFxuXG4udGV4dC1ib2R5IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1yZWxheGVkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xufVxuXG4vLyBTbWFsbC9IZWxwIHRleHRcblxuLnRleHQtaGVscCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gTW9ub3NwYWNlIHRleHQgKGZvciBJRHMsIGNvZGVzKVxuXG4udGV4dC1tb25vIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi8vIFRhYmxlIGhlYWRlciB0ZXh0XG5cbi50ZXh0LXRhYmxlLWhlYWRlciB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG59XG5cbi8vIEVtcGhhc2l6ZWQvSGlnaGxpZ2h0IHRleHRcblxuLnRleHQtZW1waGFzaXMge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBNdXRlZCB0ZXh0XG5cbi50ZXh0LXN1YnRsZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gTGluayBzdHlsaW5nXG5cbi50ZXh0LWxpbmsge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbGluay1jb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtbGluay1ob3Zlci1jb2xvcik7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLy8gVHJ1bmNhdGUgdGV4dCB3aXRoIGVsbGlwc2lzXG5cbi50ZXh0LXRydW5jYXRlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8vIE11bHRpLWxpbmUgdHJ1bmNhdGlvbiAocmVxdWlyZXMgLXdlYmtpdClcblxuLnRleHQtbGluZS1jbGFtcC0yIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udGV4dC1saW5lLWNsYW1wLTMge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4iLCIvKipcbiAqIEF1Z2lhcyDigJQgU3RhdHVzIEJhZGdlc1xuICpcbiAqIFN0YXR1cyBjaGlwcyByZW5kZXIgYXMgVGFibGVyJ3MgdGludGVkIGBiZy08Y29sb3VyPi1sdGAgdmFyaWFudHMgcmF0aGVyIHRoYW5cbiAqIHNvbGlkIGZpbGxzLiBPbiBhIGxpc3QsIGEgc29saWQgc2F0dXJhdGVkIHBpbGwgcmVwZWF0ZWQgZG93biBldmVyeSByb3cgaXMgdGhlXG4gKiBsb3VkZXN0IHRoaW5nIG9uIHNjcmVlbiwgY29tcGV0aW5nIHdpdGggdGhlIGZpZ3VyZXMgYW5kIG5hbWVzIHRoYXQgcGVvcGxlXG4gKiBhY3R1YWxseSByZWFkOyBhIHRpbnQgY2FycmllcyB0aGUgc2FtZSBzaWduYWwgYW5kIGxldHMgdGhlIGRhdGEgbGVhZC5cbiAqXG4gKiBUYWJsZXIgYnVpbGRzIHRob3NlIHZhcmlhbnRzIGJ5IHB1dHRpbmcgdGhlIGNvbG91ciBhdCBmdWxsIHN0cmVuZ3RoIGFzICp0ZXh0KlxuICogb3ZlciB0aGUgc2FtZSBjb2xvdXIgYXQgMTAlIGFzIGJhY2tncm91bmQuIFRoYXQgaXMgcHJlY2lzZWx5IHRoZSBwYXR0ZXJuXG4gKiBERVNJR04ubWQgcmVjb3JkcyBhcyBub24tY29uZm9ybWFudCDigJQgbWVhc3VyZWQgaGVyZSBhdCAxLjk3OjEgZm9yIFBlbmRpbmcgYW5kXG4gKiAyLjQ4OjEgZm9yIFBhaWQsIGFnYWluc3QgYSA0LjU6MSByZXF1aXJlbWVudC4gVGhlIHRpbnQgaXMgd29ydGgga2VlcGluZzsgdGhlXG4gKiB0ZXh0IGNvbG91ciBpcyBub3QsIHNvIGVhY2ggY2hpcCBpcyByZXBvaW50ZWQgYXQgYSBgLWRhcmtgIHN0ZXAgdGhhdCBjbGVhcnMgQUFcbiAqIG92ZXIgaXRzIG93biB0aW50LiBgIWltcG9ydGFudGAgaXMgbm90IGRlY29yYXRpb246IFRhYmxlcidzIGNvbG91ciB1dGlsaXRpZXNcbiAqIGNhcnJ5IGl0LCBhbmQgYSBwbGFpbiBkZWNsYXJhdGlvbiBsb3NlcyB0byB0aGVtIGF0IGFueSBzcGVjaWZpY2l0eS5cbiAqXG4gKiBUYWJsZXIgYWxzbyBzaGlwcyBubyBgLWx0YCBmb3IgYGdyYXlgLCB3aGljaCB0aGUgc3RhdHVzIGVudW1zIHVzZSBmb3IgdGhlaXJcbiAqIHF1aWV0ZXN0IHN0YXRlcyAobmV3LCBkcmFmdCksIHNvIGl0IGlzIGRlZmluZWQgaGVyZSBvdXRyaWdodC5cbiAqL1xuXG4uYmctZ3JheS1sdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLy8gTWVhc3VyZWQgb3ZlciBlYWNoIGNvbG91cidzIG93biAxMCUgdGludCBjb21wb3NpdGVkIG9uIHdoaXRlLlxuXG4uYmFkZ2Uge1xuXG4gICAgJi5iZy15ZWxsb3ctbHQge1xuICAgICAgICBjb2xvcjogIzg1NGQwZSAhaW1wb3J0YW50OyAvLyB5ZWxsb3ctODAwXG4gICAgfVxuXG4gICAgJi5iZy1ncmVlbi1sdCB7XG4gICAgICAgIGNvbG9yOiAjMTY2NTM0ICFpbXBvcnRhbnQ7IC8vIGdyZWVuLTgwMFxuICAgIH1cblxuICAgICYuYmctcmVkLWx0IHtcbiAgICAgICAgY29sb3I6ICNiOTFjMWMgIWltcG9ydGFudDsgLy8gcmVkLTcwMCwgbWF0Y2hlcyAtLXN3cC1kYW5nZXItZGFya1xuICAgIH1cblxuICAgICYuYmctcHVycGxlLWx0IHtcbiAgICAgICAgY29sb3I6ICM3ZTIyY2UgIWltcG9ydGFudDsgLy8gcHVycGxlLTcwMFxuICAgIH1cblxuICAgICYuYmctdGVhbC1sdCB7XG4gICAgICAgIGNvbG9yOiAjMGY3NjZlICFpbXBvcnRhbnQ7IC8vIHRlYWwtNzAwXG4gICAgfVxuXG4gICAgJi5iZy1vcmFuZ2UtbHQge1xuICAgICAgICBjb2xvcjogI2MyNDEwYyAhaW1wb3J0YW50OyAvLyBvcmFuZ2UtNzAwXG4gICAgfVxufVxuIiwiLyoqXG4gKiBBdWdpYXMgRGVzaWduIFN5c3RlbSAtIENvbXBvbmVudCBJbmRleFxuICpcbiAqIEN1c3RvbSBjb21wb25lbnQgc3R5bGVzIHRoYXQgZXh0ZW5kIEJvb3RzdHJhcC9UYWJsZXIuXG4gKiBPbmx5IGFkZCBzdHlsZXMgaGVyZSB0aGF0IHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBiZXlvbmQgd2hhdCBCb290c3RyYXAvVGFibGVyIG9mZmVyLlxuICpcbiAqIE5vdGU6IE1vc3QgY29tcG9uZW50IHN0eWxpbmcgY29tZXMgZnJvbSBCb290c3RyYXAgNSBhbmQgVGFibGVyLlxuICogVGhpcyBmaWxlIGltcG9ydHMgb25seSBjdXN0b20gZXh0ZW5zaW9ucywgbm90IHJlcGxhY2VtZW50cy5cbiAqL1xuXG4vLyBTaGFyZWQgRm9ybSBQYWdlIC0gQ29uc29saWRhdGVkIGZvcm0tcGFnZSBsYXlvdXQgcGF0dGVyblxuQGltcG9ydCAnZm9ybS1wYWdlJztcblxuLy8gRG9jdW1lbnQgVmlldyAtIFNoYXJlZCBsYXlvdXQgZm9yIEludm9pY2UgYW5kIFF1b3RlIHZpZXcgcGFnZXNcbkBpbXBvcnQgJ2RvY3VtZW50LXZpZXcnO1xuXG4vLyBFeHRlcm5hbCBEb2N1bWVudCBWaWV3IC0gU2hhcmVkIGxheW91dCBmb3IgcHVibGljLWZhY2luZyBJbnZvaWNlIGFuZCBRdW90ZSBwYWdlc1xuQGltcG9ydCAnZXh0ZXJuYWwtZG9jLXZpZXcnO1xuXG4vLyBEb2N1bWVudCBUZW1wbGF0ZXMgLSBQaG9uZSBsYXlvdXQgb2YgdGhlIGludm9pY2UgYW5kIHF1b3RlIGRlc2lnbnNcbkBpbXBvcnQgJ2RvY3VtZW50LXRlbXBsYXRlcyc7XG5cbi8vIE1hcmtldHBsYWNlIC0gU2hhcmVkIHN0eWxlcyBmb3IgUGF5bWVudCBhbmQgTm90aWZpY2F0aW9uIG1hcmtldHBsYWNlIHBhZ2VzXG5AaW1wb3J0ICdtYXJrZXRwbGFjZSc7XG5cbi8vIEdsb2JhbCBTZWFyY2ggLSBUb3AgbmF2aWdhdGlvbiBzZWFyY2ggYmFyIHdpdGggbGl2ZSByZXN1bHRzIGRyb3Bkb3duXG5AaW1wb3J0ICdnbG9iYWwtc2VhcmNoJztcblxuLy8gRGF0YUdyaWQgLSBNb2Rlcm4gdGFibGUvZ3JpZCBjb21wb25lbnQgc3R5bGVzXG5AaW1wb3J0ICdkYXRhZ3JpZCc7XG5cbi8vIENsaWVudCBGb3JtIC0gTW9kZXJuIGNsaWVudCBjcmVhdGlvbiBmb3JtXG5AaW1wb3J0ICdjbGllbnQtZm9ybSc7XG5cbi8vIEJpbGxpbmcgRm9ybSAtIFNoYXJlZCBzdHlsZXMgZm9yIEludm9pY2UgYW5kIFF1b3RlIGNyZWF0aW9uIGZvcm1zXG5AaW1wb3J0ICdiaWxsaW5nLWZvcm0nO1xuXG4vLyBQYXltZW50IFBhZ2UgLSBJbnZvaWNlIHBheW1lbnQgZm9ybSB3aXRoIG1ldGhvZCBzZWxlY3Rpb25cbkBpbXBvcnQgJ3BheW1lbnQtcGFnZSc7XG5cbi8vIFBheW1lbnRzIExpc3QgLSBQYXltZW50cyBsaXN0IHBhZ2Ugd2l0aCBLUEkgY2FyZHMgYW5kIGZpbHRlcnNcbkBpbXBvcnQgJ3BheW1lbnRzLWxpc3QnO1xuXG4vLyBVc2VycyBQYWdlIC0gVXNlcnMgbGlzdCB3aXRoIEtQSSBjYXJkcyBhbmQgdGFic1xuQGltcG9ydCAndXNlcnMtcGFnZSc7XG5cbi8vIFByb2ZpbGUgUGFnZSAtIFVzZXIgcHJvZmlsZSBhbmQgc2V0dGluZ3MgcGFnZXNcbkBpbXBvcnQgJ3Byb2ZpbGUtcGFnZSc7XG5cbi8vIFR3by1GYWN0b3IgQXV0aGVudGljYXRpb24gLSAyRkEgY29uZmlndXJhdGlvbiBhbmQgbG9naW4gcGFnZXNcbkBpbXBvcnQgJ3R3by1mYWN0b3InO1xuXG4vLyBOb3RpZmljYXRpb25zIFBhZ2UgLSBVc2VyIG5vdGlmaWNhdGlvbiBwcmVmZXJlbmNlc1xuQGltcG9ydCAnbm90aWZpY2F0aW9ucy1wYWdlJztcblxuLy8gU3Vic2NyaXB0aW9uIFBhZ2VzIC0gVHJpYWwgZXhwaXJlZCwgY2FuY2VsbGVkLCBwZW5kaW5nIHN1YnNjcmlwdGlvbiBzdGF0ZXNcbkBpbXBvcnQgJ3N1YnNjcmlwdGlvbi1wYWdlcyc7XG5cbi8vIE9uYm9hcmRpbmcgQ2hlY2tsaXN0IC0gRGFzaGJvYXJkIGNoZWNrbGlzdCB3aWRnZXQgc3R5bGVzXG5AaW1wb3J0ICdvbmJvYXJkaW5nLWNoZWNrbGlzdCc7XG5cbi8vIE9uYm9hcmRpbmcgV2l6YXJkIC0gRmlyc3QtcnVuIGZsb3cgKC9vbmJvYXJkaW5nKSBzdHlsZXNcbkBpbXBvcnQgJ29uYm9hcmRpbmctd2l6YXJkJztcblxuLy8gTW9uZXkgLSBTaWduYXR1cmUgY29tcG9uZW50OyBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBldmVyeSBjdXJyZW5jeSB2YWx1ZVxuQGltcG9ydCAnbW9uZXknO1xuXG4vLyBJbnN0YW5jZSBMYWJlbCAtIFwiVEVTVFwiIG9uIGV2ZXJ5IHBhZ2Ugb2YgYW4gaW5zdGFuY2UgY2xpZW50cyBkbyBub3QgdXNlXG5AaW1wb3J0ICdpbnN0YW5jZS1sYWJlbCc7XG4iLCIvKipcbiAqIEF1Z2lhcyAtIFNoYXJlZCBGb3JtIFBhZ2UgU3R5bGVzXG4gKlxuICogQ29uc29saWRhdGVkIGZvcm0tcGFnZSBsYXlvdXQgcGF0dGVybiB1c2VkIGFjcm9zcyBUYXhCdW5kbGUsIENsaWVudEJ1bmRsZSxcbiAqIFVzZXJCdW5kbGUgKFByb2ZpbGUsIEludml0ZSwgQ2hhbmdlUGFzc3dvcmQpIGFuZCBzaW1pbGFyIGZvcm0gcGFnZXMuXG4gKlxuICogVGVtcGxhdGUgc3RydWN0dXJlOlxuICogICAuZm9ybS1wYWdlID4gLmZvcm0tcGFnZS1jb250YWluZXJbLS1uYXJyb3d8LS1tZWRpdW18LS13aWRlXSA+XG4gKiAgICAgLmZvcm0tcGFnZS1oZWFkZXIgPiAuZm9ybS1wYWdlLWhlYWRlci1jb250ZW50ID5cbiAqICAgICAgIC5mb3JtLXBhZ2UtaWNvblstLXNlY3VyaXR5XSArIGRpdiguZm9ybS1wYWdlLXRpdGxlICsgLmZvcm0tcGFnZS1zdWJ0aXRsZSlcbiAqICAgICAuZm9ybS1wYWdlLXNlY3Rpb25zID4gLmZvcm0tcGFnZS1zZWN0aW9uID5cbiAqICAgICAgIC5zZWN0aW9uLWhlYWRlciA+IC5zZWN0aW9uLWljb25bLS1zZWN1cml0eV0gKyAuc2VjdGlvbi1oZWFkZXItdGV4dFxuICogICAgICAgICAoLnNlY3Rpb24tdGl0bGUgKyAuc2VjdGlvbi1kZXNjcmlwdGlvbilcbiAqICAgICAgIC5zZWN0aW9uLWNvbnRlbnQgPiAuZm9ybS1ncmlkID4gLmZvcm0tZmllbGRbLmZvcm0tZmllbGQtd2lkZV1cbiAqICAgICAuZm9ybS1wYWdlLWFjdGlvbnMgPiAuZm9ybS1wYWdlLWFjdGlvbnMtaW5uZXJbLS1tZWRpdW1dXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBXUkFQUEVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFdJRFRILUNPTlNUUkFJTkVEIENPTlRBSU5FUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yNCk7XG5cbiAgICAmLS1uYXJyb3cgeyBtYXgtd2lkdGg6IDgwMHB4OyB9XG5cbiAgICAmLS1tZWRpdW0geyBtYXgtd2lkdGg6IDkwMHB4OyB9XG5cbiAgICAmLS13aWRlICAgeyBtYXgtd2lkdGg6IDExMDBweDsgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwO1xufVxuXG4uZm9ybS1wYWdlLWhlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5mb3JtLXBhZ2UtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtLXNlY3VyaXR5IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMSkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4uZm9ybS1wYWdlLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xufVxuXG4uZm9ybS1wYWdlLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMSkgMCAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT05TIExJU1Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZS1zZWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTkRJVklEVUFMIFNFQ1RJT04gQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSksXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNIQVJFRCBTRUNUSU9OIEhFQURFUiAodXNlZCBpbnNpZGUgZm9ybS1wYWdlLXNlY3Rpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTYpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uc2VjdGlvbi1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLS1zZWN1cml0eSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xNSkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNSkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4uc2VjdGlvbi1oZWFkZXItdGV4dCB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT04gQk9EWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdGlvbi1jb250ZW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRXTy1DT0xVTU4gRk9STSBHUklEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuLmZvcm0tZmllbGQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmZvcm0tZmllbGQtd2lkZSB7XG4gICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RJQ0tZIEZPT1RFUiBBQ1RJT05TIEJBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLWFjdGlvbnMge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgei1pbmRleDogMTA7XG4gICAgYm94LXNoYWRvdzogMCAtNHB4IDEycHggcmdiKDAgMCAwIC8gNSUpO1xufVxuXG4uZm9ybS1wYWdlLWFjdGlvbnMtaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgICYtLW1lZGl1bSB7IG1heC13aWR0aDogOTAwcHg7IH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU5IQU5DRUQgU0FWRSBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1zYXZlLFxuLmJ0bi1zYXZlLXByaW1hcnkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLmZvcm0tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1oZWFkZXItY29udGVudCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1pY29uIHtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lciB7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuZm9ybS1wYWdlLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBBdWdpYXMgLSBEb2N1bWVudCBWaWV3IFNoYXJlZCBTdHlsZXNcbiAqXG4gKiBTaGFyZWQgbGF5b3V0IGFuZCBjb21wb25lbnQgc3R5bGVzIGZvciBJbnZvaWNlIGFuZCBRdW90ZSB2aWV3IHBhZ2VzLlxuICogVXNlcyBnZW5lcmljIGBkb2Mtdmlldy0qYCAvIGBkb2MtKmAgY2xhc3MgbmFtZXMgdG8gYXZvaWQgZHVwbGljYXRpb24uXG4gKiBCb3RoIGludm9pY2Utdmlldy5zY3NzIGFuZCBxdW90ZS12aWV3LnNjc3MgdXNlIHRoZXNlIGNsYXNzZXMgZGlyZWN0bHkuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LXBhZ2Uge1xuICAgIG1heC13aWR0aDogMTQwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIFRoZSBsYXlvdXQgYWxyZWFkeSBrZWVwcyBhIGd1dHRlciBvbiBhIHBob25lOyB0aGlzIG9uZSBvbiB0b3Agb2YgaXRcbiAgICAvLyBsZWZ0IHRoZSBkb2N1bWVudCBhIGNvbHVtbiB0d28tdGhpcmRzIG9mIHRoZSBzY3JlZW4gd2lkZS5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgfVxufVxuXG4uZG9jLXZpZXctaGVhZGVyLWxlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmRvYy12aWV3LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uZG9jLXZpZXctdGl0bGUtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRvYy12aWV3LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsLCAxLjI1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xufVxuXG4uZG9jLXZpZXctbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmRvYy12aWV3LW1ldGEtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG59XG5cbi8vIEhlYWRlciBBY3Rpb25zXG5cbi5kb2Mtdmlldy1oZWFkZXItYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblxuICAgICAgICAvLyBUcmFuc2l0aW9uIGJ1dHRvbnMgKFwiUmVmdXNlclwiLCBcIkFjY2VwdGVyXCIsIFwiRW52b3llclwiKSBjYXJyeSByZWFsXG4gICAgICAgIC8vIHdvcmRzLCBub3QgaWNvbnM6IGxldCB0aGUgcm93IHdyYXAgcmF0aGVyIHRoYW4gc3F1ZWV6ZSB0aGVtIHRvIGljb25cbiAgICAgICAgLy8gd2lkdGgsIHdoaWNoIHB1c2hlZCB0aGVpciBsYWJlbHMgb3V0IG92ZXIgZWFjaCBvdGhlci5cbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgIC5idG4sXG4gICAgICAgIC5idG4tZ3JvdXAsXG4gICAgICAgIC5kb2Mtdmlldy11dGlsaXR5LWFjdGlvbnMge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kb2Mtdmlldy11dGlsaXR5LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLy8gRHJvcGRvd24gc3R5bGluZ1xuXG4uZG9jLXZpZXctaGVhZGVyIC5kcm9wZG93bi1tZW51IHtcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLnRleHQtZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWRpdmlkZXIge1xuICAgICAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVSTyBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1oZXJvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gYnRuLWhlcm8gaXMgbWVhbnQgdG8gc3RhbmQgYWxvbmU6IGl0cyBnbG93IGFuZCBpdHMgMXB4IGhvdmVyIGxpZnQgbWFrZSBpdFxuLy8gb3ZlcmxhcCBhbmQgZHJpZnQgb3V0IG9mIGxpbmUgd2l0aCB0aGUgbmVpZ2hib3VyaW5nIHNwbGl0LWRyb3Bkb3duIHdoZW4gaXRcbi8vIHNpdHMgaW5zaWRlIGEgLmJ0bi1ncm91cCwgd2hpY2ggam9pbnMgaXRzIGJ1dHRvbnMgd2l0aCBuZWdhdGl2ZSBtYXJnaW5zLlxuXG4uYnRuLWdyb3VwID4gLmJ0bi1oZXJvIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG59XG5cbi5idG4taGVyby11cmdlbnQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1kYW5nZXIpIDAlLCB2YXIoLS1zd3AtZGFuZ2VyLWhvdmVyKSAxMDAlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctZGFuZ2VyKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZGFuZ2VyLWhvdmVyKSAwJSwgdmFyKC0tc3dwLWRhbmdlcikgMTAwJSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctZGFuZ2VyLWxnKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1BSU4gQ09OVEVOVCBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMzQwcHg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDEwMjRweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERPQ1VNRU5UIEFSRUEgKE1haW4pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1kb2N1bWVudCB7XG4gICAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50IG92ZXJmbG93XG59XG5cbi5kb2MtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vIFBpbGwtc2hhcGVkIHN0YXR1cyBjaGlwcyB3aGVyZXZlciB0aGV5IGFwcGVhciBpbnNpZGUgdGhlIGRvY3VtZW50IHZpZXcgb3IgaXRzXG4vLyBzaWRlYmFyLCBtYXRjaGluZyB0aGUgZGVzaWduIHN5c3RlbSBzcGVjIChyYWRpdXMtZnVsbCwgd2VpZ2h0IDUwMCwgMnB4IHggMTBweCkuXG5cbi5kb2MtY2FyZCAuYmFkZ2UsXG4uZG9jLXBhZ2UtaGVhZGVyIC5iYWRnZSxcbi5kb2Mtdmlldy1oZWFkZXIgLmJhZGdlLFxuLmRvYy12aWV3LXNpZGViYXIgLmJhZGdlIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgICAvLyBUYWJsZXIgYmluZHMgYHRleHQtZ3JheS1mZ2AgdG8gYW1iZXIgdmlhIC0tYnMtc2Vjb25kYXJ5OyB0aGlzIG1ha2VzIGFcbiAgICAvLyBgQ2FuY2VsbGVkYCBjaGlwIHJlYWQgYXMgYSB3YXJuaW5nLiBQaW4gdGhlIG5ldXRyYWwgY2hpcCB0byBzbGF0ZSBzbyB0aGVcbiAgICAvLyBjb2xvdXIgbWF0Y2hlcyB3aGF0IHRoZSBjbGFzcyBuYW1lIGltcGxpZXMuXG5cbiAgICAmLmJnLWdyYXkudGV4dC1ncmF5LWZnIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxufVxuXG4vLyBEb2N1bWVudCBIZWFkZXIgKEZyb20vVG8pXG5cbi5kb2MtaGVhZGVyLWZyb20tdG8ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1zd3AtZ3JheS01MCkgMCUsIHZhcigtLXN3cC1zdXJmYWNlKSAxMDAlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG59XG5cbi5kb2MtcGFydHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRvYy1wYXJ0eS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZG9jLXBhcnR5LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcsIDEuMTI1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uZG9jLXBhcnR5LWRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG5cbiAgICAuZGV0YWlsLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBcIjpcIjtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpoYXMoLmRldGFpbC1sYWJlbCkge1xuICAgICAgICAvLyBBIGxhYmVsbGVkIHZhbHVlIOKAlCBhbiBlLWludm9pY2luZyBhZGRyZXNzLCBhIFZBVCBudW1iZXIg4oCUIGlzIG9uZVxuICAgICAgICAvLyBsb25nIHdvcmQ6IGl0IGdvZXMgdW5kZXIgaXRzIGxhYmVsLCBhbmQgYnJlYWtzIHRoZXJlIGlmIGl0IGhhcyB0byxcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gcnVubmluZyBvdXQgb2YgdGhlIGNhcmQuIE9ubHkgdGhvc2Ugcm93cyB3cmFwOiBhbiBpY29uXG4gICAgICAgIC8vIHN0YXlzIGJlc2lkZSB0aGUgYWRkcmVzcyBpdCBtYXJrcy5cbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIH1cblxuICAgIC5kZXRhaWwtdmFsdWUge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICB9XG5cbiAgICBhLmRldGFpbC12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTGluZSBJdGVtcyBUYWJsZVxuXG4uZG9jLWl0ZW1zIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5kb2MtaXRlbXMtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cbiAgICB0aGVhZCB7XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgJi5jb2x1bW4tcHJpY2UsXG4gICAgICAgICAgICAmLmNvbHVtbi1xdHksXG4gICAgICAgICAgICAmLmNvbHVtbi10YXgsXG4gICAgICAgICAgICAmLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIaWRlIHRhYmxlIGhlYWRlciBvbiBtb2JpbGVcbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRib2R5IHtcblxuICAgICAgICB0ciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0YWNrIHJvd3MgYXMgY2FyZHMgb24gbW9iaWxlXG4gICAgICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcblxuICAgICAgICAgICAgJi5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmNvbHVtbi1wcmljZSxcbiAgICAgICAgICAgICYuY29sdW1uLXF0eSxcbiAgICAgICAgICAgICYuY29sdW1uLXRheCxcbiAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdGFjayBjZWxscyBvbiBtb2JpbGVcbiAgICAgICAgICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtbGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAgICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIHdpZHRocyAoZGVza3RvcCBvbmx5KVxuICAgIEBtZWRpYSAod2lkdGggPj0gNjQxcHgpIHtcblxuICAgICAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1wcmljZSB7XG4gICAgICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXF0eSB7XG4gICAgICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdGF4IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUb3RhbHMgU2VjdGlvblxuXG4uZG9jLXRvdGFscyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBwYWRkaW5nLXRvcDogMDtcblxuICAgIC8vIFVuZGVyIHRoZSBsaW5lcywgd2hpY2ggYXJlIGNhcmRzIG9uIGEgcGhvbmU6IGFzIHdpZGUgYXMgdGhleSBhcmUuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uZG9jLXRvdGFscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWluLXdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgfVxufVxuXG4udG90YWxzLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcblxuICAgIC50b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgfVxufVxuXG4vLyBQYXltZW50cyByZWNlaXZlZCBhcmUgbW9uZXkgaW47IHN1Y2Nlc3MgZ3JlZW4gZWFybnMgaXRzIHBsYWNlIGhlcmUuXG5cbi50b3RhbHMtcm93LXBheW1lbnQgLnRvdGFscy12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLy8gQSBkaXNjb3VudCBpcyBhIGRlZHVjdGlvbiwgbm90IGEgc3VjY2VzcyBzdGF0ZS4gU3RheSBuZXV0cmFsOyBxdWlldCAkMCBjYXNlcy5cblxuLnRvdGFscy1yb3ctZGlzY291bnQgLnRvdGFscy12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLnRvdGFscy1yb3ctZmluYWwge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIEdyYW5kIHRvdGFsIGlzIGluZm9ybWF0aW9uYWw7IGdyZWVuIGlzIHJlc2VydmVkIGZvciBhY3R1YWxseS1wYWlkIHN0YXRlc1xuICAgIC8vIChoYW5kbGVkIGJ5IC5zdW1tYXJ5LWl0ZW0tcGFpZCAvIC50b3RhbHMtcm93LXBheW1lbnQpLlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcsIDEuMTI1cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQsIDcwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxufVxuXG4vLyBEb2N1bWVudCBGb290ZXIgKFRlcm1zICYgTm90ZXMpXG5cbi5kb2MtZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbn1cblxuLmRvYy1mb290ZXItc2VjdGlvbiB7XG5cbiAgICAmICsgJiB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuLmRvYy1mb290ZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uZG9jLWZvb3Rlci10ZXh0IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSURFQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDEwMjRweCkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI4MHB4LCAxZnIpKTtcbiAgICB9XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtbXV0ZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtc3VjY2VzcyB7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWhpZ2hsaWdodCB7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLXN1Y2Nlc3MgLmRvYy1zaWRlYmFyLWNhcmQtaWNvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmRvYy1zaWRlYmFyLWNhcmQtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4vLyBTdW1tYXJ5IEdyaWRcblxuLmRvYy1zdW1tYXJ5LWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLy8gU3VtbWFyeSBJdGVtc1xuXG4uc3VtbWFyeS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgLnN1bW1hcnktbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLnN1bW1hcnktdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICB9XG5cbiAgICAvLyBBbW91bnQgZmllbGQ6IHRvdGFsIGludm9pY2UgdmFsdWUuIE5ldXRyYWwgYnkgZGVmYXVsdDsgdGhlIHN0YXR1cyByb3cgY2Fycmllc1xuICAgIC8vIHRoZSBcIlBhaWQgLyBPdmVyZHVlIC8gRHJhZnRcIiBtZWFuaW5nLiBHcmVlbiBoZXJlIHdvdWxkIGRvdWJsZS1lbmNvZGUuXG5cbiAgICAuc3VtbWFyeS12YWx1ZS1hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCwgNzAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAvLyBCYWxhbmNlIHN0aWxsIG93ZWQ6IGFtYmVyIGF0dGVudGlvbiBpcyBhcHByb3ByaWF0ZS5cblxuICAgIC5zdW1tYXJ5LXZhbHVlLWJhbGFuY2Uge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCwgNzAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LWl0ZW0tb3ZlcmR1ZSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbjogY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS0yKSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgIC5zdW1tYXJ5LXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cbn1cblxuLnN1bW1hcnktaXRlbS1wYWlkIHtcblxuICAgIC5zdW1tYXJ5LXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi8vIENsaWVudCBJbmZvICh1c2VkIGluIHNpZGViYXIpXG5cbi5jbGllbnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY2xpZW50LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3RzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5jbGllbnQtY29udGFjdCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbn1cblxuLmNvbnRhY3QtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmNvbnRhY3QtZW1haWwsXG4uY29udGFjdC1kZXRhaWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cbn1cblxuLy8gUGF5bWVudHMgTGlzdCAodXNlZCBpbiBpbnZvaWNlIHNpZGViYXIpXG5cbi5wYXltZW50cy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLnBheW1lbnQtY2FyZC1jYXB0dXJlZCB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbn1cblxuLnBheW1lbnQtY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ucGF5bWVudC1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSwgMXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQsIDcwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLFxuLnBheW1lbnQtZGF0ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXNzYWdlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4vLyBSZWxhdGVkIGRvY3VtZW50IGxpbmtzXG5cbi5yZWxhdGVkLXF1b3RlLWxpbmssXG4ucmVsYXRlZC1pbnZvaWNlLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi5yZWxhdGVkLWludm9pY2Utc3RhdHVzIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmRvYy12aWV3LXBhZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZG9jLXZpZXctY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5kb2Mtdmlldy1kb2N1bWVudCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5kb2MtY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAuZG9jLWhlYWRlci1mcm9tLXRvIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMjBweCAwO1xuICAgIH1cblxuICAgIC5kb2MtaXRlbXMtdGFibGUge1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kb2MtdG90YWxzLWdyaWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCkgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC5kb2MtZm9vdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAubm8tcHJpbnQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBFeHRlcm5hbCBEb2N1bWVudCBWaWV3IC0gU2hhcmVkIFN0eWxlc1xuICpcbiAqIFNoYXJlZCBzdHlsZXMgZm9yIHB1YmxpYy1mYWNpbmcgaW52b2ljZSBhbmQgcXVvdGUgdmlld3MuXG4gKiBJbnZvaWNlLXNwZWNpZmljOiBleHRlcm5hbC1pbnZvaWNlLXZpZXcuc2Nzc1xuICogUXVvdGUtc3BlY2lmaWM6IGV4dGVybmFsLXF1b3RlLXZpZXcuc2Nzc1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgV1JBUFBFUiAoc2hhcmVkIGJhc2UpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItZ3JheS01MCwgI2Y4ZmFmYyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFQUCBCUkFORElORyBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFwcC1icmFuZGluZy1oZWFkZXIge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAwO1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG5cbiAgICAuYXBwLWxvZ28ge1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hcHAtYnJhbmQtbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LCAjMWU0OTc2KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB9XG5cbiAgICAuYXBwLWJyYW5kLXRhZ2xpbmUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1zZWNvbmRhcnksICM2NDc0OGIpO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ1RJT04gQkFSIChUT1ApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLWFjdGlvbi1iYXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYmctc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBPR1JBUEhZICYgVklTVUFMIEhJRVJBUkNIWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb21wYW55IG5hbWUgaW4gaGVhZGVyXG5cbi5leHQtZG9jLWNvbXBhbnktbmFtZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xufVxuXG4vLyBEb2N1bWVudCBudW1iZXIgLSBsYXJnZSBhbmQgcHJvbWluZW50XG5cbi5leHQtZG9jLW51bWJlciB7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbn1cblxuLmV4dC1kb2MtbnVtYmVyLWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4vLyBWQVQgbnVtYmVyIC0gc3VidGxlIG9wYWNpdHlcblxuLmV4dC1kb2MtdmF0LW51bWJlciB7XG4gICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgb3BhY2l0eTogMC43NTtcbn1cblxuLy8gTG9nbyBjb250YWluZXJcblxuLmV4dC1kb2MtbG9nbyB7XG5cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRVRBREFUQSBDQVJEIC0gRGF0ZSwgRHVlIERhdGUsIFRvdGFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLW1ldGFkYXRhLWNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgZWFzZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiKDAgMCAwIC8gOCUpO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxufVxuXG4uZXh0LWRvYy1tZXRhZGF0YS1sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLmV4dC1kb2MtbWV0YWRhdGEtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbn1cblxuLmV4dC1kb2MtbWV0YWRhdGEtdG90YWwge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnksICMxZTQ5NzYpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZST00gLyBUTyBTRUNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1wYXJ0aWVzLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5leHQtZG9jLXBhcnR5LWxhYmVsIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4uZXh0LWRvYy1wYXJ0eS1uYW1lIHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLmV4dC1kb2MtcGFydHktZGV0YWlsIHtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5FIElURU1TIFRBQkxFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLWl0ZW1zLXRhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuXG4gICAgdGhlYWQge1xuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvciwgI2NiZDVlMSk7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjg3NXJlbSAwLjc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0Ym9keSB7XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YmxyLWdyYXktNTAsICNmOGZhZmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMXJlbSAwLjc1cmVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICB9XG5cbiAgICAuaXRlbS1hbW91bnQge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICd0bnVtJztcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRPVEFMUyBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLXRvdGFscy1jYXJkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cbn1cblxuLmV4dC1kb2MtdG90YWxzLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjYyNXJlbSAwO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW07XG4gICAgfVxufVxuXG4uZXh0LWRvYy10b3RhbHMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICd0bnVtJztcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5leHQtZG9jLXRvdGFscy1maW5hbCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWRhcmssICM5NGEzYjgpO1xuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xuICAgIG1hcmdpbi10b3A6IDAuNzVyZW07XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtcm93IHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAgMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtdG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LCAjMWU0OTc2KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT09URVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtZm9vdGVyIHtcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1iZy1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDAgMCAwIC8gNSUpO1xuICAgIH1cblxuICAgIC5idG4tc20ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICB9XG5cbiAgICAuYXBwLWxvZ28gaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDogMjRweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0FSRCBSRUZJTkVNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdGF0dXMgYmFkZ2VzXG5cbi5iYWRnZSB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbn1cblxuLy8gSG9yaXpvbnRhbCBydWxlc1xuXG5ociB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLy8gRm9jdXMgc3R5bGVzIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uXG5cbi5idG46Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRibHItcHJpbWFyeSwgIzFlNDk3Nik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLmNhcmQtbGcge1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2IoMCAwIDAgLyA4JSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDIuNXJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gOTkxcHgpIHtcblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQgLmNhcmQtYm9keSxcbiAgICAuZXh0LWRvYy10b3RhbHMtY2FyZCAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICB9XG5cbiAgICAuY2FyZC1sZyAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3cHgpIHtcblxuICAgIC5leHQtZG9jLW51bWJlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS10b3RhbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5leHQtZG9jLXRvdGFscy1maW5hbCAuZXh0LWRvYy10b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtcGFydGllcy1zZWN0aW9uIHtcblxuICAgICAgICAuY29sLXNtLTY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG5cbiAgICAuY29udGFpbmVyLXhsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgIH1cblxuICAgIC5jYXJkLWxnIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCAuY2FyZC1ib2R5LFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgIH1cblxuICAgIC8vIEFwcCBicmFuZGluZyBoZWFkZXIgLSBzdGFjayBvbiBtb2JpbGVcblxuICAgIC5hcHAtYnJhbmRpbmctaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMXJlbSAwO1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcHAtYnJhbmQtbmFtZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuYXBwLWJyYW5kLXRhZ2xpbmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb290ZXIgLSBzdGFjayBvbiBtb2JpbGVcblxuICAgIC5leHQtZG9jLWZvb3RlciB7XG5cbiAgICAgICAgLmJ0bi1zbSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RhY2sgbWV0YWRhdGEgaXRlbXMgb24gbW9iaWxlXG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkIHtcblxuICAgICAgICAuY29sLXNtLTQsXG4gICAgICAgIC5jb2wtc20tNiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIGFjdGlvbiBidXR0b25zIHN0YWNrIG5pY2VseSBvbiBtb2JpbGVcblxuICAgIC5leHQtZG9jLWFjdGlvbi1iYXIge1xuXG4gICAgICAgIC5kLWZsZXguanVzdGlmeS1jb250ZW50LWJldHdlZW4ge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogMC43NXJlbTtcblxuICAgICAgICAgICAgLmQtZmxleC5nYXAtMiB7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBnYXA6IDAuNXJlbTtcblxuICAgICAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnRuLXByaW1hcnksXG4gICAgICAgICAgICAuYnRuLWRhbmdlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWJsZSBhZGp1c3RtZW50c1xuXG4gICAgLmV4dC1kb2MtaXRlbXMtdGFibGUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHkgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5uby1wcmludCxcbiAgICAuZC1wcmludC1ub25lIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAcGFnZSB7XG4gICAgICAgIG1hcmdpbjogMWNtO1xuICAgIH1cblxuICAgIGh0bWwsXG4gICAgYm9keSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtcGFnZSxcbiAgICAucGFnZS13cmFwcGVyLFxuICAgIC5wYWdlLWJvZHkge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY29udGFpbmVyLXhsIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAuNWNtICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5yb3cge1xuICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2FyZCxcbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkLFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAuY2FyZC1sZyAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cblxuICAgIHRhYmxlIHtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdXRvO1xuICAgIH1cblxuICAgIHRyIHtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgYnJlYWstYWZ0ZXI6IGF1dG87XG4gICAgfVxuXG4gICAgdGhlYWQge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gICAgfVxuXG4gICAgLmJnLWxpZ2h0LFxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQsXG4gICAgLmV4dC1kb2MtdG90YWxzLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAuYmctZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLnRleHQtcHJpbWFyeSxcbiAgICAuZXh0LWRvYy1tZXRhZGF0YS10b3RhbCxcbiAgICAuZXh0LWRvYy10b3RhbHMtZmluYWwgLmV4dC1kb2MtdG90YWxzLXZhbHVlIHtcbiAgICAgICAgY29sb3I6ICMxZTQ5NzYgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC50ZXh0LWRhbmdlciB7XG4gICAgICAgIGNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAudGV4dC1zdWNjZXNzIHtcbiAgICAgICAgY29sb3I6ICMxMGI5ODEgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC5leHQtZG9jLWl0ZW1zLXRhYmxlIHRib2R5IHRyOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGhyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjY2JkNWUxICFpbXBvcnRhbnQ7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIERvY3VtZW50IFRlbXBsYXRlcyAtIFBob25lIGxheW91dCBvZiB0aGUgaW52b2ljZSBhbmQgcXVvdGUgZGVzaWduc1xuICpcbiAqIFRoZSBkZXNpZ25zIHVuZGVyIFRlbXBsYXRlcy88c2x1Zz4vcHJldmlldy5odG1sLnR3aWcgYXJlIGRyYXduIGZvciBhIHBhZ2U6XG4gKiBhIGZvdXItY29sdW1uIGxpbmUgdGFibGUgYW5kIGEgZGlzcGxheS1zaXplIG51bWJlciBkbyBub3QgZml0IGEgMzkwcHhcbiAqIHNjcmVlbi4gQmVsb3cgdGhlIHNtIGJyZWFrcG9pbnQgZWFjaCBsaW5lIGJlY29tZXMgYSBzbWFsbCBjYXJkIC0gdGhlXG4gKiBkZXNjcmlwdGlvbiBvbiB0b3AsIHRoZW4gb25lIFwibGFiZWwgLi4uIHZhbHVlXCIgcm93IHBlciBmaWd1cmUsIHRoZSBsYWJlbFxuICogY29taW5nIGZyb20gdGhlIGNlbGwncyBkYXRhLWxhYmVsLlxuICovXG5cbi5pbnZvaWNlLXRlbXBsYXRlLFxuLnF1b3RlLXRlbXBsYXRlIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcblxuICAgICAgICAvLyBUaGUgZGVzaWducyBzZXQgdGhlaXIgb3duIHBhZGRpbmcgaW5saW5lLCBkcmF3biBmb3IgYSBwYWdlLlxuXG4gICAgICAgICZbc3R5bGUqPSdwYWRkaW5nJ10ge1xuICAgICAgICAgICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtYm9keSxcbiAgICAgICAgLnAtNSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBIG51bWJlciBzZXQgYXQgNTYtNjRweCBpbmxpbmUsIGRyYXduIGZvciBhbiBBNCBwYWdlLlxuXG4gICAgICAgIC5kb2MtdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaXRsZSBvbiBvbmUgc2lkZSwgZGF0ZXMgb24gdGhlIG90aGVyOiBvbmUgdW5kZXIgdGhlIG90aGVyIGluc3RlYWQuXG5cbiAgICAgICAgLmRvYy1oZWFkZXIge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBnYXA6IDAuNzVyZW07XG5cbiAgICAgICAgICAgID4gLnRleHQtZW5kIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZGlzcGxheS0zIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kaXNwbGF5LTUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRpc3BsYXktNiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVGhlIGRlc2lnbnMgYWJvdmUgYW5kIHRoZSBkZWZhdWx0IHB1YmxpYyB2aWV3cyBzaGFyZSB0aGUgbGluZSBsYXlvdXQuIEFuXG4vLyBleHBsaWNpdCBjbGFzcyByYXRoZXIgdGhhbiA6aGFzKHRoZWFkKTogYnJvd3NlcnMgd2l0aG91dCA6aGFzKCkgKG9sZGVyXG4vLyBBbmRyb2lkIG9uZXMpIHdvdWxkIGhhdmUga2VwdCB0aGUgd2lkZSB0YWJsZS5cblxudGFibGUuZG9jLWxpbmVzLXN0YWNrZWQge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xuXG4gICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICB0Ym9keSxcbiAgICAgICAgdHIsXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICB0ciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDA7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1jb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZG9jLWxpbmVzLWluZGV4IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuZG9jLWxpbmVzLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXdlaWdodC1tZWRpdW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGRbZGF0YS1sYWJlbF0ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1sYWJlbCk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1ib2R5LWZvbnQtZmFtaWx5KTtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEBpZiBub3QgJG4ge1xuICAgIEBlcnJvciBcImJyZWFrcG9pbnQgYCN7JG5hbWV9YCBub3QgZm91bmQgaW4gYCN7JGJyZWFrcG9pbnRzfWBcIjtcbiAgfVxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2Zcbi8vIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiAgYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIEF1Z2lhcyAtIFNoYXJlZCBNYXJrZXRwbGFjZSBTdHlsZXNcbiAqXG4gKiBDb21tb24gc3R5bGVzIHNoYXJlZCBiZXR3ZWVuIFBheW1lbnRCdW5kbGUgYW5kIE5vdGlmaWNhdGlvbkJ1bmRsZSBtYXJrZXRwbGFjZSBwYWdlcy5cbiAqIFBhZ2Utc3BlY2lmaWMgc3R5bGVzIHJlbWFpbiBpbiBwYXltZW50LW1hcmtldHBsYWNlLnNjc3MgYW5kIG5vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZS5zY3NzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1BUktFVFBMQUNFIFBBTkVMIC0gTGVmdCBTaWRlIFN0aWNreSBQYW5lbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubWFya2V0cGxhY2UtcGFuZWwge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXN3cC1zcGFjZS0xNikpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IDZweDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1jb2xvcnMpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNDAwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm1hcmtldHBsYWNlLWhlYWRlciB7XG5cbiAgICBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIH1cblxuICAgIC5pbnB1dC1ncm91cCB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyguZm9ybS1jb250cm9sOmZvY3VzKSB7XG5cbiAgICAgICAgICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVMRVRFIENPTkZJUk1BVElPTiBORVNURUQgTU9EQUxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tYmFja2Ryb3Age1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMCAwIDAgLyA2MCUpO1xuICAgIHotaW5kZXg6IDEwNjA7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMTVzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLW1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogMTA3MDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjE1cyBlYXNlO1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAyNSUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1zY2FsZS1pbiAwLjJzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1oZWFkZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICBoNCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuZGVsZXRlLWljb24td3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWZvb3RlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNIQVJFRCBBTklNQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2UtZmFkZS1pbiB7XG5cbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuXG4gICAgdG8geyBvcGFjaXR5OiAxOyB9XG59XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2xpZGUtdXAge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2NhbGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVRJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmFkZ2Utc20ge1xuICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgcGFkZGluZzogMC4xMjVyZW0gMC41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG59XG5cbi5tYXJrZXRwbGFjZS1zZWFyY2gtY2xlYXIge1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHJpZ2h0OiA4cHggIWltcG9ydGFudDtcbn1cbiIsIi8qKlxuICogR2xvYmFsIFNlYXJjaCAtIFRvcCBuYXZpZ2F0aW9uIHNlYXJjaCBiYXIgd2l0aCBsaXZlIHJlc3VsdHMgZHJvcGRvd25cbiAqL1xuXG4uZ2xvYmFsLXNlYXJjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1heC13aWR0aDogNjAwcHg7XG5cbiAgICAmLWlucHV0LXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJi1pY29uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwLjc1cmVtO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgICYtaW5wdXQge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAvLyAwLjc1cmVtIGljb24tbGVmdCArIDFyZW0gaWNvbi13aWR0aCArIDAuNXJlbSBnYXAgPSAyLjI1cmVtXG4gICAgICAgIC8vIFJpZ2h0OiBoZWxwLWJ0biAyMHB4ICsgZ2FwIDZweCArIHNob3J0Y3V0IH42NXB4ICsgbWFyZ2luIDEwcHggPSB+MTAxcHgg4omIIDYuNXJlbVxuICAgICAgICBwYWRkaW5nOiAwIDYuNXJlbSAwIDIuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzhweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2QwZDNkODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogIzM1NDA1MjtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xuXG4gICAgICAgIC8vIFJlbW92ZSBicm93c2VyIGRlZmF1bHQgc2VhcmNoIGNhbmNlbCBidXR0b25cblxuICAgICAgICAmOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuICAgICAgICAmOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzFlNDk3NjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2IoNDYgMTUwIDU4IC8gMTIlKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLWFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAwLjYyNXJlbTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgfVxuXG4gICAgJi1zaG9ydGN1dCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogM3B4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICBrYmQge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjFyZW0gMC4zNXJlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXRibHItZm9udC1tb25vc3BhY2UpO1xuICAgICAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2ZiO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U2ZTdlOTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWFyY2gtaGVscC10cmlnZ2VyIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMGUzZTg7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogMjJweDtcbiAgICBoZWlnaHQ6IDIycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICNhZGI1YmQ7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICM0OTUwNTc7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzlhYTBhYztcbiAgICB9XG59XG5cbi5zZWFyY2gtaGVscC1zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICBjb2xvcjogIzlhYTBhYztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4uc2VhcmNoLWhlbHAtb3Age1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS10YmxyLWZvbnQtbW9ub3NwYWNlKTtcbiAgICBiYWNrZ3JvdW5kOiAjZjVmN2ZiO1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjb2xvcjogIzM1NDA1Mjtcbn1cblxuLnNlYXJjaC1oZWxwLWV4YW1wbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDNweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICMxZTQ5NzY7XG5cbiAgICBjb2RlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGNvbG9yOiAjMWE1NmRiO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgICAgIGNvbG9yOiAjOWFhMGFjO1xuICAgIH1cbn1cblxuLnNlYXJjaC1kcm9wZG93biB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDEwMCUgKyA2cHgpO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgbWluLXdpZHRoOiA1MjBweDtcblxuICAgIC8vIEV4dGVuZCBzeW1tZXRyaWNhbGx5IGJleW9uZCB0aGUgaW5wdXQgZm9yIGEgd2lkZXIgcGFuZWxcbiAgICBtYXJnaW4tbGVmdDogLTYwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNmU3ZTk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDQwcHggcmdiKDAgMCAwIC8gMTglKSwgMCAycHggOHB4IHJnYigwIDAgMCAvIDglKTtcblxuICAgIC8vIFVzZSBpc29sYXRpb24gdG8gYXZvaWQgc3RhY2tpbmcgY29udGV4dCBpc3N1ZXMgZnJvbSB0aGUgbmF2YmFyXG4gICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgIHotaW5kZXg6IDk5OTk7XG5cbiAgICAmLmlzLW9wZW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYW5pbWF0aW9uOiBzZWFyY2gtZHJvcGRvd24taW4gMC4xMnMgZWFzZS1vdXQ7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNlYXJjaC1kcm9wZG93bi1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpIHNjYWxlKDAuOTkpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLnNlYXJjaC1zcGlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICBjb2xvcjogIzlhYTBhYztcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uc2VhcmNoLXJlc3VsdHMge1xuICAgIG1heC1oZWlnaHQ6IDQ0MHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IDRweDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTNlODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIH1cbn1cblxuLnNlYXJjaC1ncm91cCB7XG5cbiAgICAmICsgJiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZjBmMmY1O1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xuICAgIH1cblxuICAgICYtbGFiZWwge1xuICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbSAwLjg3NXJlbSAwLjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgfVxufVxuXG4uc2VhcmNoLXJlc3VsdC1pdGVtIHtcblxuICAgICYuaXMtYWN0aXZlIC5zZWFyY2gtcmVzdWx0LWxpbmsge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2ZiO1xuICAgIH1cblxuICAgICY6aG92ZXIgLnNlYXJjaC1yZXN1bHQtbGluayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3ZmI7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi5zZWFyY2gtcmVzdWx0LWxpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNzVyZW07XG4gICAgcGFkZGluZzogMC41cmVtIDAuODc1cmVtO1xuICAgIGNvbG9yOiAjMzU0MDUyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMDhzIGVhc2U7XG59XG5cbi5zZWFyY2gtcmVzdWx0LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICB3aWR0aDogMzRweDtcbiAgICBoZWlnaHQ6IDM0cHg7XG4gICAgcGFkZGluZzogNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLnNlYXJjaC1yZXN1bHQtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc2VhcmNoLXJlc3VsdC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiAjMzU0MDUyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLnNlYXJjaC1yZXN1bHQtc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgY29sb3I6ICM5YWEwYWM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1hcmdpbi10b3A6IDFweDtcbn1cblxuLnNlYXJjaC1yZXN1bHQtYXNpZGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgZ2FwOiAwLjJyZW07XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG5cbi5zZWFyY2gtcmVzdWx0LWJhZGdlIHtcbiAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBwYWRkaW5nOiAwLjE1cmVtIDAuNDVyZW07XG59XG5cbi5zZWFyY2gtcmVzdWx0LW1ldGEge1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICMzNTQwNTI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnNlYXJjaC1lbXB0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMi41cmVtIDFyZW07XG4gICAgY29sb3I6ICM5YWEwYWM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcblxuICAgICYtaWNvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNjI1cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuXG4gICAgJi10ZXh0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgIH1cbn1cblxuLnNlYXJjaC1lcnJvciB7XG4gICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlciwgI2Q2MzkzOSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG59XG5cbi5zZWFyY2gtY2hpcCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBwYWRkaW5nOiAwLjE1cmVtIDAuNXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThmMGZlO1xuICAgIGNvbG9yOiAjMWE1NmRiO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLXJlbW92ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2VhcmNoLWNoaXBzLWJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA0cHg7XG4gICAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYyZjU7XG4gICAgbWluLWhlaWdodDogMDtcblxuICAgICY6ZW1wdHkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLnNlYXJjaC1zdWdnZXN0aW9ucyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogY2FsYygxMDAlICsgNHB4KTtcbiAgICBsZWZ0OiAwO1xuICAgIG1pbi13aWR0aDogMjIwcHg7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTZlN2U5O1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYigwIDAgMCAvIDEyJSk7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmLmlzLW9wZW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAmLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbSAwLjFyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgfVxuXG4gICAgJi1pdGVtIHtcbiAgICAgICAgcGFkZGluZzogMC40cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogIzM1NDA1MjtcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2ZiO1xuICAgICAgICB9XG5cbiAgICAgICAgY29kZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIEF1Z2lhcyBEYXRhR3JpZCBDb21wb25lbnQgU3R5bGVzXG4gKlxuICogTW9kZXJuLCBjbGVhbiBkYXRhIGdyaWQgc3R5bGluZyBmb2xsb3dpbmcgdGhlIEF1Z2lhcyBkZXNpZ24gc3lzdGVtLlxuICogVXNlcyBkZXNpZ24gdG9rZW5zIGZyb20gX3Rva2Vucy5zY3NzIGZvciBjb25zaXN0ZW5jeS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEQVRBR1JJRCBCQVNFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZCB7XG4gICAgLy8gQ29udGFpbmVyIGZvciB0aGUgZW50aXJlIGRhdGFncmlkIGNvbXBvbmVudFxuICAgIC8vIE5vdGU6IG92ZXJmbG93IGlzIE5PVCBzZXQgdG8gaGlkZGVuIHRvIGFsbG93IGRyb3Bkb3ducyB0byBleHRlbmQgYmV5b25kIGJvdW5kc1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIC8vIEZsYXNoIG1lc3NhZ2VzIGluc2lkZSB0aGUgZGF0YWdyaWRcblxuICAgID4gLmFsZXJ0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG59XG5cbi5kYXRhZ3JpZC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUFSQ0ggJiBGSUxURVIgQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtdG9vbGJhci1zdGFydCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uZGF0YWdyaWQtdG9vbGJhci1lbmQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmRhdGFncmlkLXNlYXJjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDE7XG4gICAgbWF4LXdpZHRoOiAzMjBweDtcblxuICAgIC5kYXRhZ3JpZC1zZWFyY2gtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0xMCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElWRSBGSUxURVJTIChDaGlwcyBpbiB0b29sYmFyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtYWN0aXZlLWZpbHRlcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuXG4gICAgICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLXJlbW92ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtYWN0aXZlLWZpbHRlci1rZXkge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnOic7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLXZhbHVlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxNTBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXItcmVtb3ZlIHtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGSUxURVIgUEFORUwgKERyb3Bkb3duKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtZmlsdGVyLWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwge1xuICAgIHdpZHRoOiAzMjBweDtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjAwcHgpO1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gRW5zdXJlIG5lc3RlZCBkcm9wZG93bnMgKGxpa2Ugc2VsZWN0MikgYXBwZWFyIGFib3ZlIHRoZSBwYW5lbFxuXG4gICAgLmRyb3Bkb3duLW1lbnUsXG4gICAgLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgICAgICAgei1pbmRleDogMTA2MCAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLXRpdGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAzNTBweCk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmRhdGFncmlkLWZpbHRlci1mb3JtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItZmllbGQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC8vIEVuc3VyZSBkcm9wZG93bnMgd2l0aGluIGZpZWxkcyBoYXZlIHByb3BlciB6LWluZGV4XG5cbiAgICAuZm9ybS1zZWxlY3QsXG4gICAgc2VsZWN0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgIC8vIERhdGUgcmFuZ2UgZmllbGRzXG5cbiAgICAucm93IHtcbiAgICAgICAgLS1icy1ndXR0ZXIteDogMC41cmVtO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLmRhdGFncmlkLWZpbHRlci13aWRnZXQge1xuICAgIC8vIENvbnRhaW5lciBmb3IgZm9ybSB3aWRnZXRzXG5cbiAgICAvLyBEYXRlIHJhbmdlIGZpZWxkcyAtIGRpc3BsYXkgaW5saW5lIChzaWRlIGJ5IHNpZGUpXG4gICAgLy8gVGhlIERhdGVSYW5nZUZvcm1UeXBlIGNyZWF0ZXMgYSBjb250YWluZXIgZGl2IHdpdGggc3RhcnQvZW5kIGRhdGUgZmllbGRzXG5cbiAgICA+IGRpdjpoYXMoPiBkaXYgPiBpbnB1dFt0eXBlPVwiZGF0ZVwiXSkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIC8vIEVhY2ggZGF0ZSBmaWVsZCBjb250YWluZXJcblxuICAgICAgICAgICAgLmZvcm0tbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBhbmRlZCBjaG9pY2UgKGNoZWNrYm94ZXMvcmFkaW9zKSAtIHJlbmRlciBhcyBzdGFuZGFyZCBjaGVja2JveGVzXG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdmVycmlkZSBhbnkgc3dpdGNoIHN0eWxlcyAtIGZvcmNlIHJlZ3VsYXIgY2hlY2tib3ggYXBwZWFyYW5jZVxuXG4gICAgICAgICYuZm9ybS1zd2l0Y2gge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgICAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSBzd2l0Y2gvcGlsbCBhcHBlYXJhbmNlXG5cbiAgICAgICAgICAgICZbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuXG4gICAgICAgICAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyMCAyMCclM2UlM2NwYXRoIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZmZmJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMycgZD0nTTYgMTBsMyAzbDYtNicvJTNlJTNjL3N2ZyUzZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTcGFjZSBiZXR3ZWVuIGNoZWNrYm94ZXNcblxuICAgIC5mb3JtLWNoZWNrICsgLmZvcm0tY2hlY2sge1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLWZvb3RlciB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyBGb3JtIGVsZW1lbnRzIHdpdGhpbiBmaWx0ZXIgcGFuZWxcblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbCB7XG4gICAgLy8gU3RhbmRhcmQgZm9ybSBjb250cm9sc1xuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGlkZSBuZXN0ZWQgbGFiZWxzIGZyb20gRGF0ZVJhbmdlRm9ybVR5cGUgKHdlIHNob3cgb3VyIG93bilcblxuICAgIC5kYXRhZ3JpZC1maWx0ZXItZmllbGQgPiAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gRGF0ZSByYW5nZSBzdWItbGFiZWxzXG5cbiAgICAuZGF0YWdyaWQtZmlsdGVyLWZpZWxkIC5yb3cge1xuXG4gICAgICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIH1cblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNdWx0aXBsZSBjaG9pY2UgY2hlY2tib3hlc1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEtNSkgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2hlbiBtdWx0aXBsZSBjaGVja2JveGVzIGluIGEgbGlzdFxuXG4gICAgLmZvcm0tY2hlY2sgKyAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG5cbiAgICAvLyBTZWxlY3QgZHJvcGRvd24gYWRqdXN0bWVudHNcblxuICAgIHNlbGVjdFttdWx0aXBsZV0ge1xuICAgICAgICBtaW4taGVpZ2h0OiAxMjBweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgICAgIG9wdGlvbiB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgICAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVYUE9SVCBNRU5VIChEcm9wZG93bilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWV4cG9ydC1kcm9wZG93biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUge1xuICAgIHdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LWhlYWRlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LXN1YnRpdGxlIHtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uOmhvdmVyICYsXG4gICAgLmRhdGFncmlkLWV4cG9ydC1vcHRpb246Zm9jdXMtdmlzaWJsZSAmIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24tdGV4dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uLWhpbnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTFVNTiBWSVNJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1jb2x1bW4tcGlja2VyIHtcblxuICAgIC5kcm9wZG93bi10b2dnbGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgIH1cblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lOyAvLyBIaWRlIGRlZmF1bHQgZHJvcGRvd24gY2FyZXRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICAgICAgbWF4LWhlaWdodDogMzIwcHg7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgYWNjZW50LWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQkxFIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtdGFibGUtd3JhcHBlciB7XG4gICAgLy8gVGhlIGNvbnRhaW5pbmcgYmxvY2sgb2Ygd2hhdCB0aGUgdGFibGUgcG9zaXRpb25zIGFic29sdXRlbHkg4oCUIHRoZVxuICAgIC8vIHZpc3VhbGx5IGhpZGRlbiBsYWJlbHMgaW4gaXRzIGhlYWRlciBhbW9uZyB0aGVtLiBXaXRob3V0IGl0IHRoZXlcbiAgICAvLyBlc2NhcGVkIHRoZSBzY3JvbGwsIGFuZCBvbiBhIHBob25lIGV2ZXJ5IGxpc3Qgc2Nyb2xsZWQgc2lkZXdheXMsIG91dFxuICAgIC8vIHRvIHdoZXJlIHRoZSB3aWRlc3QgY29sdW1uJ3MgbGFiZWwgd291bGQgaGF2ZSBiZWVuLlxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBBIGZpbGxlZCBncmV5IGhlYWRlciBiYW5kIHdpdGggdXBwZXJjYXNlLCBsZXR0ZXItc3BhY2VkIGxhYmVscyBpcyB0aGVcbiAgICAvLyBBZG1pbkxURSBzaWduYXR1cmUgdGhpcyByZXdyaXRlIGlzIGxlYXZpbmcgYmVoaW5kLiBUaGUgY29sdW1uIG5hbWVzIGFyZVxuICAgIC8vIHN0cnVjdHVyZSwgbm90IGNvbnRlbnQ6IHRoZXkgZWFybiB0aGVpciBwbGFjZSB0aHJvdWdoIHdlaWdodCBhbmQgYSBmaXJtXG4gICAgLy8gcnVsZSB1bmRlciB0aGUgcm93LCBub3QgdGhyb3VnaCBhIGJsb2NrIG9mIGNvbG91ciBiZWhpbmQgdGhlbS5cblxuICAgIHRoIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG5cbiAgICB0Ym9keSB7XG4gICAgICAgIC8vIFRhYnVsYXIgZmlndXJlcyBhY3Jvc3MgdGhlIHRhYmxlIHNvIGFtb3VudHMsIElEcyBhbmQgZGF0ZXMgYWxpZ24gY2xlYW5seVxuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cblxuICAgIHRib2R5IHRyIHtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc2VsZWN0ZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbHVtbiB0eXBlc1xuXG4gICAgLmNvbC1jaGVja2JveCB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgdGguY29sLWNoZWNrYm94IHtcbiAgICAgICAgLy8gS2VlcCBoZWFkZXIgY2hlY2tib3ggY2VudGVyZWQgdG8gbWF0Y2ggY2VsbHNcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5jb2wtaWQge1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgIC5jb2wtZGF0ZSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLy8gTW9uZXkgY29sdW1uczogcmlnaHQtYWxpZ24gYm90aCBoZWFkZXIgYW5kIGNlbGwsIHRhYnVsYXIgZmlndXJlcyBvbiBzeXN0ZW0gZm9udC5cbiAgICAvLyBNb25vIGlzIHJlc2VydmVkIGZvciBpZGVudGlmaWVycyBwZXIgdGhlIGRlc2lnbiBzeXN0ZW07IG1vbmV5IHJlYWRzIGFzIGRhdGEsIG5vdCBjb2RlLlxuXG4gICAgLmNvbC1hbW91bnQsXG4gICAgLmNvbC1tb25leSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB9XG5cbiAgICB0aC5jb2wtYW1vdW50LFxuICAgIHRoLmNvbC1tb25leSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIC8vIFRoZSBzb3J0YWJsZSBsaW5rIGluc2lkZSBhIHJpZ2h0LWFsaWduZWQgaGVhZGVyIG5lZWRzIGl0cyBjb250ZW50IHB1c2hlZCByaWdodCB0b29cblxuICAgIHRoLmNvbC1hbW91bnQgLmRhdGFncmlkLXNvcnQtbGluayxcbiAgICB0aC5jb2wtbW9uZXkgLmRhdGFncmlkLXNvcnQtbGluayB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLmNvbC1zdGF0dXMge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5jb2wtYWN0aW9ucyB7XG4gICAgICAgIHdpZHRoOiAxJTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLy8gVGFibGVyIGJhZGdlcyBsaXZlIGluc2lkZSBzdGF0dXMgY2VsbHMuIFRoZSBkZXNpZ24gc3lzdGVtIG1hbmRhdGVzIHBpbGwgY2hpcHMuXG5cbiAgICB0Ym9keSAuYmFkZ2Uge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBwYWRkaW5nOiAycHggMTBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgIH1cbn1cblxuLy8gU29ydGFibGUgY29sdW1uIGhlYWRlcnNcblxuLmRhdGFncmlkLXNvcnQtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5zb3J0ZWQge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgb3BhY2l0eTogMC4zNTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlciAuZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJPVyBBQ1RJT05TIChJY29uIEJ1dHRvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1yb3ctYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi8vIFR3byBpY29ucyBvbiBldmVyeSByb3cgaXMgYSBjb2x1bW4gb2Ygbm9pc2UgcmVwZWF0ZWQgYXMgZmFyIGFzIHRoZSBsaXN0IGdvZXMsXG4vLyBjb21wZXRpbmcgd2l0aCB0aGUgZGF0YSBmb3IgYXR0ZW50aW9uIHdoaWxlIG9ubHkgZXZlciBhcHBseWluZyB0byB0aGUgb25lIHJvd1xuLy8gdW5kZXIgdGhlIHBvaW50ZXIuIEZhZGluZyB0aGVtIGluIG9uIGhvdmVyIGtlZXBzIHRoZW0gZXhhY3RseSBhcyByZWFjaGFibGUg4oCUXG4vLyBvcGFjaXR5LCBub3QgdmlzaWJpbGl0eSwgc28gdGhleSBzdGF5IGluIHRoZSB0YWIgb3JkZXIg4oCUIGFuZCBgZm9jdXMtd2l0aGluYFxuLy8gYnJpbmdzIHRoZW0gYmFjayBmb3Iga2V5Ym9hcmQgdXNlcnMgdGhlIG1vbWVudCB0aGV5IGFyZSB0YWJiZWQgdG8uXG5cbi5kYXRhZ3JpZC10YWJsZSB0Ym9keSB7XG5cbiAgICAuZGF0YWdyaWQtcm93LWFjdGlvbnMge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgIH1cblxuICAgIHRyOmhvdmVyIC5kYXRhZ3JpZC1yb3ctYWN0aW9ucyxcbiAgICB0cjpmb2N1cy13aXRoaW4gLmRhdGFncmlkLXJvdy1hY3Rpb25zIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi8vIEEgdG91Y2ggc2NyZWVuIGhhcyBubyBob3ZlciBzdGF0ZSB0byByZXZlYWwgdGhlbSB3aXRoLCBzbyB0aGVyZSB0aGV5IHN0YXkgcHV0LlxuQG1lZGlhIChob3Zlcjogbm9uZSkge1xuXG4gICAgLmRhdGFncmlkLXRhYmxlIHRib2R5IC5kYXRhZ3JpZC1yb3ctYWN0aW9ucyB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtYWN0aW9uLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLmFjdGlvbi12aWV3OmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5hY3Rpb24tZWRpdDpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuYWN0aW9uLWRlbGV0ZTpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vIFRocmVlLWRvdCBtZW51IGJ1dHRvblxuXG4uZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyLFxuICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyBUaHJlZS1kb3QgZHJvcGRvd24gbWVudSBjb250YWluZXJcblxuLmRhdGFncmlkLW1vcmUtbWVudSB7XG5cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIG1pbi13aWR0aDogMTYwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgJi50ZXh0LWRhbmdlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWRpdmlkZXIge1xuICAgICAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwO1xuICAgIH1cbn1cblxuLy8gU2hvdyBtb3JlIGJ1dHRvbiBvbiByb3cgaG92ZXIgb25seSAoc3VidGxlIFVYKVxuXG50Ym9keSB0cjpub3QoOmhvdmVyKSAuZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbnRib2R5IHRyOmhvdmVyIC5kYXRhZ3JpZC1tb3JlLWJ0bixcbi5kYXRhZ3JpZC1tb3JlLW1lbnUuc2hvdyAuZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0hFQ0tCT1ggU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1jaGVja2JveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBhY2NlbnQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1QVFkgU1RBVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWVtcHR5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMTYpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5kYXRhZ3JpZC1lbXB0eS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZW1wdHktdGl0bGUge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmRhdGFncmlkLWVtcHR5LW1lc3NhZ2Uge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtZW1wdHktYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGTE9BVElORyBCVUxLIEFDVElPTiBCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWJ1bGstYmFyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiAyNHB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgxMDBweCk7XG4gICAgei1pbmRleDogOTk5OTsgLy8gVmVyeSBoaWdoIHRvIGVuc3VyZSB2aXNpYmlsaXR5IGFib3ZlIGV2ZXJ5dGhpbmdcbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgb3BhY2l0eSAzMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5IDBzIDMwMG1zO1xuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHkgMHM7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtYnVsay1iYXItaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktOTAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstY291bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAuY291bnQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktOTAwKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1idWxrLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIGJhY2tncm91bmQ6IHJnYigyNTUgMjU1IDI1NSAvIDEwJSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcbiAgICB9XG5cbiAgICAmLmJ0bi1kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjM5IDY4IDY4IC8gMjAlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRhdGFncmlkLWJ1bGstZGl2aWRlciB7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstY2xvc2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyAxMCUpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHSU5BVElPTiBGT09URVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZvb3Rlci1pbmZvIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGF0YWdyaWQtcGVyLXBhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEtNSkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1wYWdpbmF0aW9uIHtcblxuICAgIC5wYWdpbmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB9XG5cbiAgICAucGFnZS1pdGVtIHtcblxuICAgICAgICAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIC5wYWdlLWxpbmsge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RBVFVTIEJBREdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0wLTUpIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgJi5zdGF0dXMtc3VjY2VzcyB7XG4gICAgICAgIGNvbG9yOiAjMDY1ZjQ2O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy1kYW5nZXIge1xuICAgICAgICBjb2xvcjogIzk5MWIxYjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy13YXJuaW5nIHtcbiAgICAgICAgY29sb3I6ICM5MjQwMGU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuc3RhdHVzLWluZm8ge1xuICAgICAgICBjb2xvcjogIzFlNDBhZjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtcHJpbWFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtc2Vjb25kYXJ5IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTcwMCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUxBVElWRSBEQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1yZWxhdGl2ZS1kYXRlIHtcbiAgICBjdXJzb3I6IGhlbHA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAzcHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMXB4O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMT0FESU5HIFNUQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1sb2FkaW5nIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyA3MCUpO1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1sb2FkaW5nLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICB6LWluZGV4OiAxMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuZGF0YWdyaWQtaGVhZGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXNlYXJjaCB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtdGFibGUge1xuXG4gICAgICAgIHRoLFxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWJ1bGstYmFyIHtcbiAgICAgICAgLy8gUGlubmVkIGJldHdlZW4gdGhlIHR3byBndXR0ZXJzIHJhdGhlciB0aGFuIGNlbnRyZWQgb24gaXRzIG93blxuICAgICAgICAvLyB3aWR0aCwgd2hpY2ggb24gYSBwaG9uZSB3YXMgd2lkZXIgdGhhbiB0aGUgc2NyZWVuLlxuICAgICAgICByaWdodDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBsZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG5cbiAgICAgICAgJi52aXNpYmxlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1idWxrLWJhci1pbm5lciB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWJ1bGstYWN0aW9ucyB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWJ1bGstZGl2aWRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFWFBBTkRBQkxFIFJPV1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLXRhYmxlIHtcbiAgICAvLyBFeHBhbmQgY29sdW1uIHN0eWxpbmdcblxuICAgIC5jb2wtZXhwYW5kIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cGFuZC1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyBEZXRhaWwgcm93IChoaWRkZW4gYnkgZGVmYXVsdClcblxuLmRhdGFncmlkLWRldGFpbC1yb3cge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1kZXRhaWwtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBhbmltYXRpb246IGRhdGFncmlkLXNsaWRlLWRvd24gMjAwbXMgZWFzZTtcblxuICAgIC8vIE92ZXJyaWRlIG5lc3RlZCBkYXRhZ3JpZCBjYXJkIHN0eWxlcyB3aGVuIGluc2lkZSBkZXRhaWwgcm93XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBkYXRhZ3JpZC1zbGlkZS1kb3duIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVBJIFRPS0VOIEhJU1RPUlkgKEV4cGFuZGFibGUgUm93IERldGFpbClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFwaS10b2tlbi1oaXN0b3J5IHtcblxuICAgIGg0IHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC50YWJsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13aGl0ZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICB0aGVhZCB0aCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5IHtcblxuICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UtaG92ZXIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRkIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHI6bGFzdC1jaGlsZCB0ZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIEF1Z2lhcyAtIENsaWVudCBGb3JtIFN0eWxlc1xuICpcbiAqIENsaWVudC1zcGVjaWZpYyBzdHlsZXMgZm9yIHRoZSBjbGllbnQgY3JlYXRpb24vZWRpdCBmb3JtLlxuICogT3V0ZXIgZm9ybS1wYWdlIGxheW91dCB1c2VzIHNoYXJlZCBjbGFzc2VzIGZyb20gX2Zvcm0tcGFnZS5zY3NzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9QVElPTkFMIFNFQ1RJT04gVkFSSUFOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWZvcm0tc2VjdGlvbi1vcHRpb25hbCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1zdHlsZTogZGFzaGVkO1xuXG4gICAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVFVSVJFRCAvIE9QVElPTkFMIFNFQ1RJT04gSUNPTiBNT0RJRklFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdGlvbi1pY29uLXJlcXVpcmVkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09MTEFQU0lCTEUgU0VDVElPTiBIRUFERVIgKG9wdGlvbmFsIHNlY3Rpb25zOiB0YXggSURzLCBhZGRyZXNzZXMsIGN1c3RvbVxuLy8gZmllbGRzIOKAlCBjb2xsYXBzZWQgYnkgZGVmYXVsdCBzbyBhIHF1aWNrIFwianVzdCBhIG5hbWUgYW5kIGEgY29udGFjdFwiIGVudHJ5XG4vLyBpc24ndCBidXJpZWQgdW5kZXIgZmllbGRzIG1vc3QgcGVvcGxlIHNraXApLiBTdGF5cyBhIHBsYWluIDxkaXY+IChyb2xlPVxuLy8gXCJidXR0b25cIikgcmF0aGVyIHRoYW4gYSByZWFsIDxidXR0b24+IOKAlCBhIDxidXR0b24+IG5lZWRzIHNldmVyYWwgVUEtZGVmYXVsdFxuLy8gcmVzZXRzIChib3JkZXIvYmFja2dyb3VuZC9mb250L2FwcGVhcmFuY2UpIGZvdWdodCBiYWNrIG9uZSBieSBvbmUsIHdoZXJlYXNcbi8vIGEgZGl2IGluaGVyaXRzIC5zZWN0aW9uLWhlYWRlcidzIGV4aXN0aW5nLCBhbHJlYWR5LWNvcnJlY3Qgc3R5bGluZyBhcy1pcy5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlY3Rpb24taGVhZGVyLXRvZ2dsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gICAgfVxuXG4gICAgLnNlY3Rpb24tdG9nZ2xlLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgICZbYXJpYS1leHBhbmRlZD0ndHJ1ZSddIC5zZWN0aW9uLXRvZ2dsZS1pY29uIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBUlRZIFJPTEUgUElDS0VSIChDbGllbnQgLyBTdXBwbGllciDigJQgdGhlIGZpcnN0IGRlY2lzaW9uIG9uIHRoZSBmb3JtKS5cbi8vIEVhY2ggY2hlY2tib3ggYWxyZWFkeSByZW5kZXJzIGFzIGEgYC5mb3JtLXN3aXRjaC1maWVsZGAgY2FyZCAodGhlIHNoYXJlZFxuLy8gdG9nZ2xlLXN3aXRjaCBjb21wb25lbnQsIHNlZSBfZm9ybXMuc2Nzcykg4oCUIGxhaWQgb3V0IHNpZGUgYnkgc2lkZSBoZXJlXG4vLyBpbnN0ZWFkIG9mIGl0cyB1c3VhbCBmdWxsLXdpZHRoIHN0YWNrOyBubyBzZXBhcmF0ZSBjYXJkIHN0eWxpbmcgb2Ygb3VyXG4vLyBvd24gbmVlZGVkLCB0aGF0IHdvdWxkIGp1c3QgZG91YmxlIHVwIG9uIHRvcCBvZiBpdC5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnJvbGUtcGlja2VyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnJvbGUtcGlja2VyIC5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgZmxleDogMSAxIDIwMHB4O1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblxuICAgICY6aGFzKC5mb3JtLWNoZWNrLWlucHV0OmNoZWNrZWQpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05UQUNUIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbnRhY3RzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmNvbnRhY3QtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC40KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4uY29udGFjdC1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmNvbnRhY3QtYXZhdGFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5jb250YWN0LWNhcmQtdGl0bGUge1xuICAgIGZsZXg6IDE7XG59XG5cbi5jb250YWN0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmNvbnRhY3QtY2FyZC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY29udGFjdC1jYXJkLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmNvbnRhY3QtZm9ybS1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLmNvbnRhY3QtZmllbGQtZW1haWwge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERElUSU9OQUwgQ09OVEFDVCBERVRBSUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hZGRpdGlvbmFsLWRldGFpbHMtc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbC1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxNDBweCAxZnIgYXV0bztcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICAuYWRkaXRpb25hbC1kZXRhaWwtYWN0aW9uIHtcbiAgICAgICAgICAgIGp1c3RpZnktc2VsZjogZW5kO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYWRkaXRpb25hbC1kZXRhaWwtYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1hZGQge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmFkZC1kZXRhaWwtYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZHJlc3Nlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5hZGRyZXNzLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC40KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4uYWRkcmVzcy1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmFkZHJlc3MtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xufVxuXG4uYWRkcmVzcy1jYXJkLXRpdGxlIHtcbiAgICBmbGV4OiAxO1xufVxuXG4uYWRkcmVzcy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5hZGRyZXNzLWNhcmQtYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmFkZHJlc3MtY2FyZC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5hZGRyZXNzLWZvcm0tZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERCBJVEVNIEFDVElPTiBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZC1pdGVtLWFjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLmFkZC1pdGVtLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcrJztcbiAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVRJT04gRk9SIE5FVyBJVEVNU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5Aa2V5ZnJhbWVzIGNsaWVudC1zbGlkZS1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5jb250YWN0LWNhcmQsXG4uYWRkcmVzcy1jYXJkIHtcbiAgICBhbmltYXRpb246IGNsaWVudC1zbGlkZS1pbiAwLjJzIGVhc2Utb3V0O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFTVBUWSBTVEFURSBTVFlMSU5HXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb250YWN0cy1saXN0OmVtcHR5OjpiZWZvcmUsXG4uYWRkcmVzc2VzLWxpc3Q6ZW1wdHk6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmVtcHR5LWNvbnRhY3RzLWhpbnQsXG4uZW1wdHktYWRkcmVzc2VzLWhpbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIHAge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIEF1Z2lhcyAtIEJpbGxpbmcgRm9ybSBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4sIGNsZWFuIGludm9pY2UgY3JlYXRpb24gZm9ybSB3aXRoIDItY29sdW1uIGxheW91dCxcbiAqIHN0aWNreSB0b3RhbHMgc2lkZWJhciwgYW5kIGNvbGxhcHNpYmxlIHNlY3Rpb25zLlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJJTExJTkcgRk9STSBQQUdFIENPTlRBSU5FUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1mb3JtLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbi5iaWxsaW5nLWZvcm0tY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTI0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctZm9ybS1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgMDtcbn1cblxuLmJpbGxpbmctZm9ybS1oZWFkZXItY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uYmlsbGluZy1mb3JtLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5iaWxsaW5nLWZvcm0tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5iaWxsaW5nLWZvcm0tc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDAgMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQklMTElORyBERVRBSUxTIFNFQ1RJT04gKENsaWVudCwgSW52b2ljZSBJRCwgRGF0ZXMsIERpc2NvdW50KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1kZXRhaWxzLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5iaWxsaW5nLWRldGFpbHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC8vIE1vZGlmaWVyIGZvciBmb3JtcyB3aXRob3V0IGRhdGUgZmllbGRzIChlLmcuLCBRdW90ZXMpXG5cbiAgICAmLS1uby1kYXRlcyB7XG5cbiAgICAgICAgLmJpbGxpbmctZGV0YWlscy1yaWdodCB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmlsbGluZy1kZXRhaWxzLWxlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmJpbGxpbmctZGV0YWlscy1yaWdodCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4vLyBJbnZvaWNlIElEIHdpdGggaW5saW5lIGVkaXRcblxuLmJpbGxpbmctaWQtZGlzcGxheSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC5iaWxsaW5nLWlkLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaWQtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcblxuICAgICAgICAvLyBJZGVudGlmaWVycyBhcmUgbm90IG1vbmV5LiBQcmltYXJ5IGdyZWVuIGlzIHJlc2VydmVkIGZvciBwYWlkIHN0YXRlcyBhbmQgQ1RBcy5cbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWlkLWVkaXQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5iaWxsaW5nLWlkLWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4vLyBEYXRlIGZpZWxkcyByb3dcblxuLmludm9pY2UtZGF0ZXMtcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDTElFTlQgU0VMRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtc2VsZWN0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5zZWxlY3RlZC1jbGllbnQtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IGJpbGxpbmctc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uc2VsZWN0ZWQtY2xpZW50LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1jaGFuZ2Uge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLnNlbGVjdGVkLWNsaWVudC1jb250YWN0cyB7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmNvbnRhY3RzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY29udGFjdHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY29udGFjdC1jaGVja2JveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuY29udGFjdC1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgfVxuXG4gICAgLmNvbnRhY3QtZW1haWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1BSU4gQ09OVEVOVCAtIDIgQ09MVU1OIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1mb3JtLW1haW4ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMzIwcHg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSAxMTAwcHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMjgwcHg7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTkUgSVRFTVMgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1pdGVtcy1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmJpbGxpbmctaXRlbXMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uYmlsbGluZy1pdGVtcy1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLy8gTGluZSBpdGVtcyBsaXN0IChyZXNwb25zaXZlIGdyaWQpXG5cbi5iaWxsaW5nLWl0ZW1zLWxpc3Qge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmJpbGxpbmctaXRlbXMtaGVhZGVyLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAyLjZmcikgbWlubWF4KDEzMHB4LCAxLjFmcikgNTZweCBtaW5tYXgoMTQwcHgsIDAuOWZyKSBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgID4gZGl2IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmNvbHVtbi10b3RhbCB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIC5jb2x1bW4tYWN0aW9ucyB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyBXaXRob3V0IHRheCBjb2x1bW4gLSBnaXZlIGRlc2NyaXB0aW9uIGV2ZW4gbW9yZSBzcGFjZVxuXG4uYmlsbGluZy1pdGVtcy1saXN0Om5vdCg6aGFzKC5jb2x1bW4tdGF4KSkge1xuXG4gICAgLmJpbGxpbmctaXRlbXMtaGVhZGVyLXJvdyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDMuOGZyKSBtaW5tYXgoMTAwcHgsIDAuOWZyKSA1NnB4IG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDMuOGZyKSBtaW5tYXgoMTAwcHgsIDAuOWZyKSA1NnB4IG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcblxuICAgICAgICAvLyBUaGUgdHdvIGNvbHVtbnMgdGhlIHBob25lIGxheW91dCdzIGFyZWFzIGFyZSBkcmF3biBvbi4gQSBzaW5nbGVcbiAgICAgICAgLy8gb25lIGhlcmUgbGVmdCB0aGUgc2Vjb25kIHRvIGJlIG1hZGUgdXAgYXQgY29udGVudCB3aWR0aCwgYW5kIHRoZVxuICAgICAgICAvLyBwcmljZSBnb3QgMTNweCBvZiBpdC5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBXaGVuIHRoZSBUYXggY29sdW1uIGV4aXN0cyBidXQgbm8gbGluZS10YXggZHJvcGRvd25zIGFyZSBhZGRlZCBvbiBhbnkgcm93LFxuLy8gc2hyaW5rIHRoZSBUYXggc2xvdCBzbyB0aGUgXCIrIEFkZCB0YXhcIiBidXR0b24gZG9lc24ndCBsZWF2ZSBhIHZpc2libGUgZ2FwXG4vLyBiZXR3ZWVuIFRheCBhbmQgVG90YWwuIFRoZSB3aWRlciBzbG90IHJldHVybnMgdGhlIG1vbWVudCBhIHRheCByb3cgYXBwZWFycy5cblxuLmJpbGxpbmctaXRlbXMtbGlzdDpoYXMoLmNvbHVtbi10YXgpOm5vdCg6aGFzKC5saW5lLXRheC1yb3cpKSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93LFxuICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMy4yZnIpIG1pbm1heCgxMzBweCwgMS4xZnIpIDU2cHggbWlubWF4KDgwcHgsIDAuNWZyKSBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbS1yb3cge1xuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDIuNmZyKSBtaW5tYXgoMTMwcHgsIDEuMWZyKSA1NnB4IG1pbm1heCgxNDBweCwgMC45ZnIpIG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgPiBkaXYge1xuICAgICAgICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnQgZ3JpZCBibG93b3V0XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cblxuICAgIC5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnQgZ3JpZCBibG93b3V0XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgbWluLWhlaWdodDogNjBweDtcbiAgICAgICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pdGVtLXN1cHBseS10eXBlIHtcbiAgICAgICAgLy8gR29vZHMgb3IgYSBzZXJ2aWNlOiBhIHNtYWxsIHNlbGVjdCB1bmRlciB0aGUgZGVzY3JpcHRpb24sIGZvciB0aGVcbiAgICAgICAgLy8gc2FtZSByZWFzb24gYXMgdGhlIGRpc2J1cnNlbWVudCBzd2l0Y2ggYmVsb3cuXG4gICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMHJlbTtcbiAgICB9XG5cbiAgICAuaXRlbS1kaXNidXJzZW1lbnQtY2hlY2sge1xuICAgICAgICAvLyBVbmRlciB0aGUgZGVzY3JpcHRpb24gcmF0aGVyIHRoYW4gaW4gYSBjb2x1bW4gb2YgaXRzIG93bjogYSByYXJlXG4gICAgICAgIC8vIHF1YWxpZmllciBvbiBhIGxpbmUsIGFuZCBhIHdob2xlIGNvbHVtbiBmb3IgaXQgd291bGQgd2lkZW4gdGhlIGdyaWRcbiAgICAgICAgLy8gb24gZXZlcnkgaW52b2ljZSB0aGF0IG5ldmVyIHVzZXMgb25lLlxuICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG5cbiAgICAgICAgLmZvcm0tdGV4dCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLXByaWNlLFxuICAgIC5jb2x1bW4tcXR5LFxuICAgIC5jb2x1bW4tdGF4IHtcblxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1wcmljZSB7XG4gICAgICAgIC8vIFNsaW0gZG93biB0aGUgbGVhZGluZyBjdXJyZW5jeS1zeW1ib2wgYWRkb24gKHRoZSBcIiRcIi9cIuKCrFwiIHByZWZpeClcbiAgICAgICAgLy8gc28gaXQgc3RvcHMgZWF0aW5nIH4zMCUgb2YgdGhlIGNvbHVtbidzIHVzYWJsZSBpbnB1dCB3aWR0aC5cblxuICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNHJlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2x1bW4tcXR5IHtcblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAgICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIE1vYmlsZSByZXNwb25zaXZlIGxheW91dFxuICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcblxuICAgICAgICAvLyBIYWx2ZXMgZm9yIHJlYWw6IGEgYmFyZSAxZnIga2VlcHMgYSBjb2x1bW4gYXQgbGVhc3QgYXMgd2lkZSBhc1xuICAgICAgICAvLyB3aGF0IGlzIGluIGl0LlxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgICAnZGVzYyBkZXNjJ1xuICAgICAgICAgICAgJ3ByaWNlIHF0eSdcbiAgICAgICAgICAgICd0YXggdGF4J1xuICAgICAgICAgICAgJ2FjdGlvbnMgdG90YWwnO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogZGVzYztcblxuICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXByaWNlIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogcHJpY2U7XG5cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tcXR5IHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogcXR5O1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXRheCB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IHRheDtcblxuICAgICAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tYWN0aW9ucyB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IGFjdGlvbnM7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IHRvdGFsO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgICAgICAgICAgLm1vYmlsZS1sYWJlbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5pdGVtLXRvdGFsLXZhbHVlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFJlbW92ZSBpdGVtIGJ1dHRvblxuXG4ucmVtb3ZlLWl0ZW0tYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDJweCA0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICBoZWlnaHQ6IDEycHg7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICB9XG59XG5cbi8vIEFkZCBpdGVtIGJ1dHRvblxuXG4uYWRkLWl0ZW0tYWN0aW9uIHtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5hZGQtaXRlbS1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBFUi1MSU5FIE1VTFRJLVRBWCAoU3RhY2tlZCByb3dzIGluIHRoZSBUYXggY29sdW1uKVxuLy8gRWFjaCAubGluZS10YXgtcm93IHVzZXMgYSBzaW5nbGUtcm93IGZsZXggbGF5b3V0OlxuLy8gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilJBcbi8vICAg4pSCIHRheCBkcm9wZG93biAgICAgICAgICAgICAgICAgICAg4pSCICDDlyAg4pSCXG4vLyAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUmFxuLy8gQ29tcG91bmQgaXMgYSBwcm9wZXJ0eSBvZiB0aGUgdW5kZXJseWluZyBUYXggcmF0ZSAoc25hcHNob3R0ZWQgaW50byBMaW5lVGF4XG4vLyB2aWEgYHNuYXBzaG90RnJvbWApIOKAlCB0aGVyZSdzIG5vIHBlci1saW5lIG92ZXJyaWRlLCBzbyB0aGUgZm9ybSBkb2Vzbid0XG4vLyBleHBvc2UgaXQuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5saW5lLXRheC1jb2xsZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ubGluZS10YXgtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogNHB4O1xufVxuXG4ubGluZS10YXgtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogMDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLmxpbmUtdGF4LWZpZWxkLXRheCB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgbWluLXdpZHRoOiAwO1xuXG4gICAgc2VsZWN0LFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHBhZGRpbmc6IDRweCAyMnB4IDRweCA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCA2cHggY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEycHg7XG4gICAgfVxufVxuXG4ubGluZS10YXgtYWN0aW9ucyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubGluZS10YXgtcmVtb3ZlLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAycHggNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSwgYmFja2dyb3VuZCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICBoZWlnaHQ6IDEycHg7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtZGFuZ2VyLXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmxpbmUtdGF4LWFkZC1idG4ge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlZPSUNFLUxFVkVMIFRBWEVTIChXaXRoaG9sZGluZyAmIGFkanVzdG1lbnRzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMtc3VidGl0bGUge1xuICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4LXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAyZnIpIG1pbm1heCgwLCAxZnIpIG1pbm1heCgwLCAzZnIpIGF1dG87XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLmludm9pY2UtdGF4LWZpZWxkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAubW9iaWxlLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pbnZvaWNlLXRheC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVE9UQUxTIFNJREVCQVIgKFN0aWNreSBvbiBEZXNrdG9wKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy10b3RhbHMtc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB9XG59XG5cbi5iaWxsaW5nLXRvdGFscy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmJpbGxpbmctdG90YWxzLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmJpbGxpbmctdG90YWxzLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLmJpbGxpbmctdG90YWxzLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5iaWxsaW5nLXRvdGFscy1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi50b3RhbHMtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSAwO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuLnRvdGFscy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi50b3RhbHMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi50b3RhbHMtcm93LWRpc2NvdW50IHtcbiAgICAvLyBBIGRpc2NvdW50IGlzIGEgZGVkdWN0aW9uLCBub3QgYW4gZXJyb3IuIFF1aWV0IGl0IGRvd24gaW5zdGVhZCBvZiBmbGFnZ2luZyBpdCByZWQuXG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi50b3RhbHMtcm93LXRvdGFsIHtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcblxuICAgIC50b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIFRoZSBncmFuZCB0b3RhbCBpcyBpbmZvcm1hdGlvbmFsLCBub3QgYSBcIlBhaWRcIiBzdGF0ZS4gR3JlZW4gb25seSB3aGVuIHRoZVxuICAgIC8vIGludm9pY2UgaXMgYWN0dWFsbHkgcGFpZDsgb24gdGhlIGVkaXQgc2NyZWVuIHRoaXMgc3RheXMgbmV1dHJhbCB0ZXh0LlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cbn1cblxuLy8gRGlzY291bnQgZmllbGQgaW4gc2lkZWJhclxuXG4uZGlzY291bnQtZmllbGQge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBURVJNUyAmIE5PVEVTIENPTExBUFNJQkxFIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctdGVybXMtc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICZbb3Blbl0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG5cbiAgICAgICAgLnRlcm1zLXN1bW1hcnkge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRlcm1zLXN1bW1hcnktaWNvbiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi50ZXJtcy1zdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4udGVybXMtc3VtbWFyeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4udGVybXMtc3VtbWFyeS10ZXh0IHtcbiAgICBmbGV4OiAxO1xufVxuXG4udGVybXMtc3VtbWFyeS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cblxuLnRlcm1zLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLnRlcm1zLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gQUNUSU9OUyAoU3RpY2t5IEZvb3Rlcilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctZm9ybS1hY3Rpb25zIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGJveC1zaGFkb3c6IDAgLTRweCAxMnB4IHJnYigwIDAgMCAvIDUlKTtcbn1cblxuLmJpbGxpbmctZm9ybS1hY3Rpb25zLWlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1heC13aWR0aDogMTEwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgLy8gV2l0aG91dCB0aGlzIHRoZSByb3cga2VlcHMgYm90aCBidXR0b25zIHNpZGUgYnkgc2lkZSBvbiBhIHBob25lIGFuZFxuICAgIC8vIHNocmlua3MgdGhlbSBwYXN0IHRoZWlyIG93biBsYWJlbHMsIHNvIFwiRW5yZWdpc3RyZXIgY29tbWUgYnJvdWlsbG9uXCJcbiAgICAvLyBzcGlsbHMgb3V0IG9mIGl0cyBidXR0b24gYW5kIG92ZXIgXCJBbm51bGVyXCIuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXG4gICAgICAgIC5idG4sXG4gICAgICAgIC5zYXZlLWJ1dHRvbi1ncm91cCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zYXZlLWJ1dHRvbi1ncm91cCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAuYnRuLXNhdmUtcHJpbWFyeSB7XG4gICAgICAgICAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFNwbGl0IGJ1dHRvbiBncm91cCBmb3Igc2F2ZSBhY3Rpb25zXG5cbi5zYXZlLWJ1dHRvbi1ncm91cCB7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5idG4tc2F2ZS1wcmltYXJ5IHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYigyNTUgMjU1IDI1NSAvIDIwJSk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgbWluLXdpZHRoOiAxODBweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTU9CSUxFIExJTkUgSVRFTSBDQVJEU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy10YWJsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbXMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPj0gNzY5cHgpIHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IGJpbGxpbmctc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuNCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQtdG90YWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5pdGVtLXRvdGFsLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFOSU1BVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGtleWZyYW1lcyBiaWxsaW5nLXNsaWRlLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAuYmlsbGluZy1mb3JtLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIwKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZm9ybS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZGV0YWlscy1zZWN0aW9uLFxuICAgIC5iaWxsaW5nLWl0ZW1zLXNlY3Rpb24sXG4gICAgLmJpbGxpbmctdG90YWxzLWNhcmQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWFjdGlvbnMtaW5uZXIge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmlsbGluZy1pZC1kaXNwbGF5IHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgIC5iaWxsaW5nLWlkLWxhYmVsLFxuICAgICAgICAuYmlsbGluZy1pZC12YWx1ZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUNVUlJJTkcgSU5WT0lDRSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVjdXJyaW5nIFNjaGVkdWxlIFNlY3Rpb24gKG9uIGNyZWF0ZS9lZGl0IHBhZ2UpXG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgICAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItYmxvY2stZW5kOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAgICAgLnNlY3Rpb24taGVhZGVyLWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeSkgMCUsIHZhcigtLXN3cC1wcmltYXJ5LWRhcmspIDEwMCUpO1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWN0aW9uLWhlYWRlci1jb250ZW50IHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG5cbiAgICAgICAgICAgIC5zZWN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSkgMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yZWN1cnJpbmctc2NoZWR1bGUtY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLy8gUmVjdXJyaW5nIE9wdGlvbnMgV3JhcHBlciAtIFN0eWxlIGZvcm0gZmllbGRzIHJlbmRlcmVkIGJ5IER5bmFtaWNGb3JtQnVpbGRlclxuXG4ucmVjdXJyaW5nLW9wdGlvbnMtd3JhcHBlciB7XG4gICAgLy8gVHlwZSBmaWVsZCAocmFkaW8gYnV0dG9ucykgLSBNYWtlIHRoZW0gdmlzdWFsIGNhcmRzXG5cbiAgICBbaWQkPSdfdHlwZSddLCBbaWQkPSdfZW5kVHlwZSddIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuZm9ybS1jaGVjayB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNzBweDtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIgbGFiZWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgW2lkJD0nX2VuZFR5cGUnXSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIERheXMgZmllbGQgZm9yIFdlZWtseS9ZZWFybHkgKGNoZWNrYm94ZXMgZm9yIGRheXMvbW9udGhzKSAtIE1ha2UgdGhlbSBidXR0b24gdG9nZ2xlc1xuXG4gICAgW2lkJD0nX2RheXMnXSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg4MHB4LCAxZnIpKTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoNzBweCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5mb3JtLWNoZWNrIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRleHQgY29udGVudCBpcyB2aXNpYmxlXG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucmVjdXJyaW5nLWZyZXF1ZW5jeS1kaXNwbGF5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDUpIDEwMCUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5yZWN1cnJpbmctZnJlcXVlbmN5LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLnJlY3VycmluZy1mcmVxdWVuY3ktdGV4dCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFZhcmlhYmxlIEhlbHAgLSBDb2xsYXBzaWJsZSBJbmZvIEJveFxuXG4ucmVjdXJyaW5nLXZhcmlhYmxlcy1oZWxwIHtcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWluZm8tYm9yZGVyLXN1YnRsZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tYmctc3VidGxlKTtcblxuICAgIC52YXJpYWJsZXMtc3VtbWFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZW1waGFzaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnZhcmlhYmxlcy1jb250ZW50IHtcbiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAxcHggc29saWQgdmFyKC0tc3dwLWluZm8tYm9yZGVyLXN1YnRsZSk7XG5cbiAgICAgICAgLnZhcmlhYmxlcy1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnZhcmlhYmxlcy1saXN0IHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG5cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICAgICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuXG4gICAgICAgICAgICAgICAgY29kZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAudmFyaWFibGUtZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC52YXJpYWJsZS1leGFtcGxlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZXhhbXBsZS10ZXh0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmW29wZW5dIC52YXJpYWJsZXMtc3VtbWFyeSB7XG4gICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUNVUlJJTkcgSU5WT0lDRSBWSUVXIFBBR0UgU0lERUJBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBIaWdobGlnaHRlZCBjYXJkIChlLmcuLCBSZWN1cnJpbmcgU2NoZWR1bGUgY2FyZClcblxuLmludm9pY2Utc2lkZWJhci1jYXJkLWhpZ2hsaWdodCB7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDMpLCB0cmFuc3BhcmVudCk7XG59XG5cbi8vIFJlY3VycmluZyBTY2hlZHVsZSBHcmlkIChsYWJlbCB8IHZhbHVlIHBhaXJzKVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4vLyBVcGNvbWluZyBPY2N1cnJlbmNlcyBMaXN0XG5cbi5vY2N1cnJlbmNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm9jY3VycmVuY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xuICAgIH1cbn1cblxuLm9jY3VycmVuY2UtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ub2NjdXJyZW5jZS1kYXRlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIEdlbmVyYXRlZCBJbnZvaWNlcyBMaXN0XG5cbi5nZW5lcmF0ZWQtaW52b2ljZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAuZ2VuZXJhdGVkLWludm9pY2UtbnVtYmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtdG90YWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi52aWV3LWFsbC1saW5rIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBBdWdpYXMgLSBQYXltZW50IFBhZ2UgU3R5bGVzXG4gKlxuICogTW9kZXJuLCBjbGVhbiBwYXltZW50IHBhZ2Ugd2l0aCB0d28tY29sdW1uIGxheW91dCxcbiAqIGNhcmQtYmFzZWQgcGF5bWVudCBtZXRob2Qgc2VsZWN0aW9uLCBhbmQgaW52b2ljZSBzdW1tYXJ5LlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWU1FTlQgUEFHRSBDT05UQUlORVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLnBheW1lbnQtY29udGFpbmVyIHtcbiAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEyKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5wYXltZW50LWhlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5wYXltZW50LWhlYWRlci1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5wYXltZW50LWhlYWRlci1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUV08tQ09MVU1OIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1sYXlvdXQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlZPSUNFIFNVTU1BUlkgQ0FSRCAoTGVmdCBDb2x1bW4pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWludm9pY2Utc3VtbWFyeSB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgfVxufVxuXG4uaW52b2ljZS1zdW1tYXJ5LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uaW52b2ljZS1zdW1tYXJ5LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1pbmZvLWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5pbnZvaWNlLXN1bW1hcnktdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi8vIFN1bW1hcnkgU2VjdGlvbnNcblxuLnN1bW1hcnktc2VjdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLnN1bW1hcnktc2VjdGlvbi1sYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uc3VtbWFyeS1jbGllbnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5jbGllbnQtbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4uY2xpZW50LWNyZWRpdC1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLy8gSW52b2ljZSBEZXRhaWxzIEdyaWRcblxuLmludm9pY2UtZGV0YWlscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5kZXRhaWwtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGV0YWlsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGV0YWlsLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIExpbmUgSXRlbXMgUHJldmlld1xuXG4ubGluZS1pdGVtcy1wcmV2aWV3IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5saW5lLWl0ZW0tcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xufVxuXG4ubGluZS1pdGVtLWRlc2Mge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBtYXgtd2lkdGg6IDYwJTtcbn1cblxuLmxpbmUtaXRlbS1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vIFN1bW1hcnkgVG90YWxzXG5cbi5zdW1tYXJ5LXRvdGFscyB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG59XG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyBBIGRpc2NvdW50IGlzIGEgZGVkdWN0aW9uLCBub3QgYW4gZXJyb3IuIFN0YXkgbmV1dHJhbC5cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93LWRpc2NvdW50IC50b3RhbHMtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIFBheW1lbnRzIGFscmVhZHkgcmVjZWl2ZWQgYXJlIHBvc2l0aXZlIG1vbmV5IGluLlxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3ctcGF5bWVudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1yb3ctYmFsYW5jZSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG5cbiAgICAudG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIFRoZSBhbW91bnQtdG8tcGF5IGlzIGluZm9ybWF0aW9uYWw7IGdyZWVuIHdvdWxkIGltcGx5IFwiUGFpZFwiLCB3aGljaCBpdFxuICAgIC8vIGlzbid0IHlldC4gVGhlIFwiQmFsYW5jZSByZW1haW5pbmdcIiBjYWxsb3V0IG5leHQgdG8gdGhlIGFtb3VudCBmaWVsZFxuICAgIC8vIGFscmVhZHkgY2FycmllcyB0aGUgYXR0ZW50aW9uLlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIEZPUk0gQ0FSRCAoUmlnaHQgQ29sdW1uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1mb3JtLXNlY3Rpb24ge1xuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgfVxufVxuXG4ucGF5bWVudC1mb3JtLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucGF5bWVudC1mb3JtLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLnBheW1lbnQtZm9ybS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5wYXltZW50LWZvcm0tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnBheW1lbnQtZm9ybS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi5wYXltZW50LWZvcm0tZm9vdGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBGT1JNIEJPRFkgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWZvcm0tYm9keSB7XG4gICAgLy8gU3R5bGUgZm9ybSBsYWJlbHNcblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICAmLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnIConO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9ybSBoZWxwIHRleHRcblxuICAgIC5mb3JtLXRleHQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC8vIEZpeCBmb3IgbW9uZXkgdHlwZSBpbnB1dCBncm91cHNcblxuICAgIC5pbnB1dC1ncm91cCB7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIH1cblxuICAgIC8vIFRleHRhcmVhIHN0eWxpbmdcblxuICAgIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHByb3BlciBzcGFjaW5nIGJldHdlZW4gZm9ybSBncm91cHNcblxuICAgIC5tYi00Omxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIE1FVEhPRFMgR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tZXRob2RzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1jYXJkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJjpoYXMoLnBheW1lbnQtbWV0aG9kLWlucHV0OmNoZWNrZWQpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcblxuICAgICAgICAucGF5bWVudC1tZXRob2QtY2hlY2sge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aGFzKC5wYXltZW50LW1ldGhvZC1pbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXRob2QtcHJlZmVycmVkIHtcbiAgICBvcmRlcjogLTE7XG59XG5cbi5wYXltZW50LW1ldGhvZC1pbnB1dCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZsZXg6IDE7XG59XG5cbi5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTIwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWJhZGdlLW9ubGluZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1iYWRnZS1jcmVkaXQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY2hlY2sge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTU9VTlQgRklFTERcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFtb3VudC1maWVsZC13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLmZvcm0tbGFiZWwsXG4gICAgLmZvcm0tc2VjdGlvbi1sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uYW1vdW50LWJhbGFuY2UtaGludCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0FQVFVSRSBPTkxJTkUgRklFTERcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNhcHR1cmUtb25saW5lLWZpZWxkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWhlbHAge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKDIuNXJlbSArIHZhcigtLXN3cC1zcGFjZS0yKSk7XG4gICAgfVxufVxuXG4vLyBIaWRlIGNhcHR1cmUgb25saW5lIHNlY3Rpb24gd2hlbiBvZmZsaW5lIG1ldGhvZCBzZWxlY3RlZFxuXG5bZGF0YS1wYXltZW50LW1ldGhvZC1zZWxlY3QtdGFyZ2V0PVwiY2FwdHVyZU9ubGluZVwiXS5kLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xJQ0tBQkxFIExJTktTIChDbGllbnQgJiBJbnZvaWNlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LW5hbWUtbGluayxcbi5pbnZvaWNlLWlkLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNsaWVudC1uYW1lLWxpbmsge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xufVxuXG4uaW52b2ljZS1pZC1saW5rIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubywgbW9ub3NwYWNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBISVNUT1JZIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtaGlzdG9yeS1jYXJkIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5wYXltZW50LWhpc3RvcnktaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4ucGF5bWVudC1oaXN0b3J5LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQsICNmZWYzYzcpIDAlLCByZ2IoMjQ1IDE1OCAxMSAvIDIwJSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nLCAjZjU5ZTBiKTtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS10aXRsZSB7XG4gICAgZmxleDogMTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1jb3VudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtaW4td2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTIwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIENBUkRTIChNYXRjaGluZyBQUiAjMjIxNSBzdHlsZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnBheW1lbnQtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ucGF5bWVudC1jYXJkLWNhcHR1cmVkIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIsIHJnYigxNiAxODUgMTI5IC8gNSUpKTtcbn1cblxuLnBheW1lbnQtY2FyZC1mYWlsZWQge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIsIHJnYigyMzkgNjggNjggLyA1JSkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5wYXltZW50LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnBheW1lbnQtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxufVxuXG4ucGF5bWVudC1tZXNzYWdlIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVkgQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4tcGF5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIEFESlVTVE1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcblxuICAgIC5wYXltZW50LWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTE2KTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIH1cblxuICAgIC5wYXltZW50LWhlYWRlci1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1oZWFkZXItdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tZXRob2RzLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAuaW52b2ljZS1kZXRhaWxzLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAucGF5bWVudC1mb3JtLWZvb3RlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFtb3VudC1maWVsZC13cmFwcGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogUGF5bWVudHMgTGlzdCBQYWdlIFN0eWxlc1xuICpcbiAqIE1pbmltYWwgc3R5bGluZyBmb3IgdGhlIHBheW1lbnRzIGxpc3QgcGFnZSB3aXRoIEtQSSBjYXJkcy5cbiAqIE1vc3Qgc3R5bGVzIGNvbWUgZnJvbSBUYWJsZXIvQm9vdHN0cmFwIC0gdGhpcyBmaWxlIG9ubHkgYWRkcyBzcGVjaWZpYyBjdXN0b21pemF0aW9ucy5cbiAqL1xuXG4vLyBLUEkgU3RhdGlzdGljcyBDYXJkcyAtIHN1YnRsZSBob3ZlciBlZmZlY3RcblxuLnJvdy1kZWNrIC5jYXJkLXNtIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogQXVnaWFzIC0gVXNlcnMgUGFnZSBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4gdXNlcnMgbGlzdCBwYWdlIHdpdGggS1BJIGNhcmRzIGFuZCB0YWJiZWQgaW50ZXJmYWNlLlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVTRVJTIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi51c2Vycy1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBLUEkgU1RBVFMgQ0FSRFMgKFRvcCBvZiBQYWdlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBVc2VzIHN0YW5kYXJkIEJvb3RzdHJhcCBjYXJkLXNtIHN0eWxpbmcgZnJvbSByZWNlbnQgcmVkZXNpZ25zXG4vLyBObyBjdXN0b20gc3R5bGVzIG5lZWRlZCAtIEJvb3RzdHJhcC9UYWJsZXIgaGFuZGxlcyB0aGlzXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQlMgSU4gQ0FSRCBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVXNlcyBzdGFuZGFyZCBuYXYtdGFicyBjYXJkLWhlYWRlci10YWJzIHBhdHRlcm5cbi8vIEN1c3RvbSB0YWIgc3R5bGVzIGFyZSBpbiBfdGFicy5zY3NzIGNvbXBvbmVudFxuLy8gTm8gYWRkaXRpb25hbCBjdXN0b20gc3R5bGVzIG5lZWRlZFxuXG4vLyBFbXB0eSBzdGF0ZSB1c2VzIFRhYmxlcidzIGJ1aWx0LWluIC5lbXB0eSBjb21wb25lbnQgY2xhc3Nlc1xuIiwiLyoqXG4gKiBBdWdpYXMgLSBQcm9maWxlIFBhZ2UgU3R5bGVzXG4gKlxuICogU3R5bGVzIGZvciB0aGUgdXNlciBwcm9maWxlIHZpZXcgYW5kIHNpZGViYXIgbmF2aWdhdGlvbi5cbiAqIEZvcm0gcGFnZXMgKGVkaXQsIGNoYW5nZS1wYXNzd29yZCkgdXNlIHNoYXJlZCBjbGFzc2VzIGZyb20gX2Zvcm0tcGFnZS5zY3NzLlxuICogSW5jbHVkZXM6IHNpZGViYXIgbmF2aWdhdGlvbiwgcHJvZmlsZSB2aWV3LCBzZWN1cml0eSBzdGF0dXMuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0lERUJBUiBOQVZJR0FUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLXNpZGViYXIge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5wcm9maWxlLW5hdi1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLnByb2ZpbGUtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5wcm9maWxlLW5hdi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1uYXYtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGNvbG9yOiBjdXJyZW50Y29sb3I7XG59XG5cbi5wcm9maWxlLW5hdi10ZXh0IHtcbiAgICBmbGV4OiAxO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBIRUFERVIgV0lUSCBBVkFUQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnByb2ZpbGUtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLnByb2ZpbGUtYXZhdGFyIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi5wcm9maWxlLWhlYWRlci1pbmZvIHtcbiAgICBmbGV4OiAxO1xufVxuXG4ucHJvZmlsZS1uYW1lIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTtcbn1cblxuLnByb2ZpbGUtZW1haWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIElORk9STUFUSU9OIFNFQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5wcm9maWxlLXNlY3Rpb24tdGl0bGUge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnByb2ZpbGUtc2VjdGlvbi1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi5wcm9maWxlLXNlY3Rpb24tZm9vdGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBERVRBSUwgR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1kZXRhaWwtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uZGV0YWlsLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRldGFpbC1pdGVtLXdpZGUge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi5kZXRhaWwtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbn1cblxuLmRldGFpbC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIFNFQ1VSSVRZIFNUQVRVU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdXJpdHktc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5zZWN1cml0eS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICB9XG59XG5cbi5zZWN1cml0eS1pdGVtLWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4OiAxO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uLXN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uc2VjdXJpdHktaXRlbS1pY29uLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXdhcm5pbmctcmdiKSwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xufVxuXG4uc2VjdXJpdHktaXRlbS1jb250ZW50IHtcbiAgICBmbGV4OiAxO1xufVxuXG4uc2VjdXJpdHktaXRlbS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG59XG5cbi5zZWN1cml0eS1pdGVtLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tYWN0aW9uIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHT09HTEUgU0lHTi1JTiBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmdvb2dsZS1zaWduaW4tYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTtcbiAgICB9XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBU1NXT1JEIFJFUVVJUkVNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMTUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuXG4ucGFzc3dvcmQtcmVxdWlyZW1lbnRzLWxpc3Qge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG5cbiAgICBsaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpIDAgdmFyKC0tc3dwLXNwYWNlLTEpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAn4pyTJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRhYmxldCBhZGp1c3RtZW50c1xuQG1lZGlhICh3aWR0aCA+PSA3NjhweCkgYW5kICh3aWR0aCA8PSA5OTEuOThweCkge1xuXG4gICAgLnByb2ZpbGUtc2lkZWJhciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAvLyBQcm9maWxlIHNlY3Rpb24gZm9vdGVyIGJ1dHRvbnNcblxuICAgIC5wcm9maWxlLXNlY3Rpb24tZm9vdGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLnByb2ZpbGUtc2VjdGlvbi1mb290ZXIsXG4gICAgLnByb2ZpbGUtc2lkZWJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEF1Z2lhcyAtIFR3by1GYWN0b3IgQXV0aGVudGljYXRpb24gU3R5bGVzXG4gKlxuICogTW9kZXJuIDJGQSBjb25maWd1cmF0aW9uIGFuZCBsb2dpbiBwYWdlcyB3aXRoIGVsZWdhbnQgZGVzaWduLlxuICogTWF0Y2hlcyB0aGUgcHJvZmlsZSBwYWdlIHBhdHRlcm5zIGFuZCBUYWJsZXIgZGVzaWduIHN5c3RlbS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05GSUdVUkFUSU9OIFBBR0UgLSAyRkEgU0VUVElOR1MgU0VDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnR3by1mYWN0b3Itc2V0dGluZ3Mge1xuXG4gICAgLmZvcm0tcGFnZS1zZWN0aW9ucyB7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLy8gU2VjdGlvbiBDb250ZW50IExheW91dFxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLnR3by1mYWN0b3Itc2VjdGlvbi1pbmZvIHtcbiAgICBmbGV4OiAxO1xufVxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RQIFNFVFVQIE1PREFMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50b3RwLXNldHVwLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG59XG5cbi5zZXR1cC1zdGVwcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLnNldHVwLXN0ZXBzIC5zdGVwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgIC5zdGVwLW51bWJlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi5xci1jb2RlLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5xci1jb2RlLWltYWdlIHtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBzdW1tYXJ5IHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYW51YWwtZW50cnktY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgfVxuXG4gICAgLm1hbnVhbC1lbnRyeS1jb2RlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjFlbTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyBWZXJpZmljYXRpb24gRm9ybVxuXG4udmVyaWZpY2F0aW9uLWZvcm0tY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbn1cblxuLnZlcmlmaWNhdGlvbi1jb2RlLWlucHV0IHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpICFpbXBvcnRhbnQ7XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNlbTtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41ZW0gIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJBQ0tVUCBDT0RFUyBNT0RBTFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmFja3VwLWNvZGVzLW1vZGFsLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uYmFja3VwLWNvZGVzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4uYmFja3VwLWNvZGUtaXRlbSB7XG5cbiAgICBjb2RlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTE9HSU4gUEFHRVMgLSAyRkEgVkVSSUZJQ0FUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50d28tZmFjdG9yLWxvZ2luLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4udHdvLWZhY3Rvci1sb2dpbi1jYXJkIHtcblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYigwIDAgMCAvIDglKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuY2FyZC1zdGF0dXMtdG9wIHtcbiAgICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBBdmF0YXIgSWNvblxuXG4udHdvLWZhY3Rvci1hdmF0YXIge1xuICAgIHdpZHRoOiA3MnB4O1xuICAgIGhlaWdodDogNzJweDtcbiAgICBtYXJnaW46IDAgYXV0byB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG5cbiAgICAmLnR3by1mYWN0b3ItYXZhdGFyLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMikgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMik7XG4gICAgfVxufVxuXG4vLyBMb2dpbiBIZWFkaW5nXG5cbi50d28tZmFjdG9yLWxvZ2luLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50d28tZmFjdG9yLWxvZ2luLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gVmVyaWZpY2F0aW9uIENvZGUgSW5wdXQgKGZvciBsb2dpbiBwYWdlcylcblxuLnR3by1mYWN0b3ItY29kZS1pbnB1dCB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuM2VtO1xuICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41ZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gRm9ybSBIaW50XG5cbi50d28tZmFjdG9yLWZvcm0taGludCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVHJ1c3QgRGV2aWNlIE9wdGlvblxuXG4udHJ1c3QtZGV2aWNlLW9wdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wNSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMTVlbTtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG4vLyBBbHRlcm5hdGl2ZSBNZXRob2RzIFNlY3Rpb25cblxuLmFsdGVybmF0aXZlLW1ldGhvZHMge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAuYWx0ZXJuYXRpdmUtbWV0aG9kcy10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLmFsdGVybmF0aXZlLW1ldGhvZHMtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxufVxuXG4vLyBTZWN1cml0eSBOb3RpY2VcblxuLnR3by1mYWN0b3Itc2VjdXJpdHktbm90aWNlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyBFbWFpbCBSZXNlbmQgU2VjdGlvblxuXG4uZW1haWwtcmVzZW5kLXNlY3Rpb24ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wNSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpO1xuXG4gICAgLnJlc2VuZC10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLnJlc2VuZC1saW5rIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmV4cGlyeS13YXJuaW5nIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZyk7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLnRvdHAtc2V0dXAtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG4gICAgfVxuXG4gICAgLnNldHVwLXN0ZXBzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5xci1jb2RlLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5xci1jb2RlLWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyNTBweDtcbiAgICB9XG5cbiAgICAudmVyaWZpY2F0aW9uLWZvcm0tY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG4gICAgfVxuXG4gICAgLmJhY2t1cC1jb2Rlcy1ncmlkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuXG4gICAgLnFyLWNvZGUtaW1hZ2Uge1xuICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIH1cblxuICAgIC50d28tZmFjdG9yLWxvZ2luLWNhcmQgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLnR3by1mYWN0b3ItYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNDRVNTSUJJTElUWSBJTVBST1ZFTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRm9jdXMgdmlzaWJsZSBzdHlsZXNcblxuLmJhY2t1cC1jb2RlLWl0ZW0gY29kZTpmb2N1cy12aXNpYmxlLFxuLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHN1bW1hcnk6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vLyBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydFxuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG5cbiAgICAucXItY29kZS1pbWFnZSB7XG4gICAgICAgIGJvcmRlci13aWR0aDogM3B4O1xuICAgIH1cblxuICAgIC5iYWNrdXAtY29kZS1pdGVtIGNvZGUge1xuICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICB9XG59XG5cbi8vIFJlZHVjZWQgbW90aW9uIHN1cHBvcnRcbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuYmFja3VwLWNvZGUtaXRlbSBjb2RlLFxuICAgIC5zZXR1cC1zdGVwcyAuc3RlcCxcbiAgICAubWFudWFsLWVudHJ5LWRldGFpbHMgc3VtbWFyeSxcbiAgICAudHdvLWZhY3Rvci1jb2RlLWlucHV0IHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIEF1Z2lhcyAtIE5vdGlmaWNhdGlvbnMgUGFnZSBTdHlsZXNcbiAqXG4gKiBOb3RpZmljYXRpb24gcHJlZmVyZW5jZXMgcGFnZSB3aXRoIGNhcmQtYmFzZWQgbGF5b3V0IGFuZCBjYXRlZ29yeSBncm91cGluZy5cbiAqIFBhZ2UgY29udGFpbmVyL2hlYWRlci9mb290ZXIgdXNlIHNoYXJlZCBmb3JtLXBhZ2UtKiBjbGFzc2VzIGZyb20gX2Zvcm0tcGFnZS5zY3NzLlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgbm90aWZpY2F0aW9uLXNwZWNpZmljIHN0eWxlcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlRFR1JBVElPTiBNQU5BR0VNRU5UIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4uaW50ZWdyYXRpb24tbWFuYWdlbWVudC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtaW5mbyB7XG4gICAgZmxleDogMTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4uaW50ZWdyYXRpb24tbWFuYWdlbWVudC1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5pbnRlZ3JhdGlvbi1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5PVElGSUNBVElPTiBHUk9VUFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IC8vIFNpbmdsZSBjb2x1bW4gb24gbW9iaWxlXG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4ubm90aWZpY2F0aW9uLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5ncm91cC10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOT1RJRklDQVRJT04gQ0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1jYXJkcyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDsgLy8gQWxsb3dzIHRleHQgdHJ1bmNhdGlvblxufVxuXG4ubm90aWZpY2F0aW9uLWNhcmQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWluZm8ge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ubm90aWZpY2F0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0wLTUpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5ub3RpZmljYXRpb24tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1jaGFubmVscyB7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIQU5ORUwgQ0hFQ0tCT1hFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIEJvb3RzdHJhcCBmb3JtLWNoZWNrIGludGVncmF0aW9uIC0gY29tcGFjdCBpbmxpbmUgc3R5bGVcblxuLm5vdGlmaWNhdGlvbi1jYXJkLWNoYW5uZWxzIHtcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgLy8gSGlkZSBjaGVja2JveCB2aXN1YWxseSBidXQga2VlcCBpdCBhY2Nlc3NpYmxlIGZvciBmb3JtIHN1Ym1pc3Npb25cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgZm9jdXMgcmluZyB0byBsYWJlbCB3aGVuIGNoZWNrYm94IGlzIGZvY3VzZWRcblxuICAgICAgICAgICAgJjpmb2N1cyArIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dDpjaGVja2VkICsgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE1vYmlsZSAoPCA3NjhweClcbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tbWFuYWdlbWVudC1saXN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG5cbiAgICAuZ3JvdXAtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQtY29udGVudCB7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWNoYW5uZWxzIHtcblxuICAgICAgICAubm90aWZpY2F0aW9uLWNoYW5uZWxzLWxpc3Qge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjayAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb25zLWVtcHR5LXN0YXRlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgICAgICAuZW1wdHktc3RhdGUtaWNvbiB7XG4gICAgICAgICAgICB3aWR0aDogNjRweDtcbiAgICAgICAgICAgIGhlaWdodDogNjRweDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUYWJsZXQgYW5kIERlc2t0b3AgKD4gNzY4cHgpIC0gMiBjb2x1bW4gbGF5b3V0IGZvciBjYXRlZ29yaWVzXG5AbWVkaWEgKHdpZHRoID49IDc2OHB4KSB7XG5cbiAgICAubm90aWZpY2F0aW9uLWdyb3VwcyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5ub3RpZmljYXRpb24tY2FyZCB7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVRJT05TIC0gRGlzYWJsZWQgZm9yIGNsZWFuZXIsIGZhc3RlciByZW5kZXJpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQW5pbWF0aW9ucyByZW1vdmVkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIGNsZWFuZXIgZmVlbFxuIiwiLyoqXG4gKiBBdWdpYXMgLSBTdWJzY3JpcHRpb24gUGFnZXMgU3R5bGVzXG4gKlxuICogQmlsbGluZywgcGxhbi1waWNrZXIsIGFuZCBzdWJzY3JpcHRpb24tc3RhdGUgcGFnZXMgKHByaWNpbmcsIG92ZXJ2aWV3LFxuICogY2hhbmdlLCBjYW5jZWxsZWQsIHBhdXNlZCwgcGVuZGluZywgdHJpYWwgZXhwaXJlZCkuXG4gKlxuICogQWxsIHZhbHVlcyBhcmUgYC0tc3dwLSpgIGRlc2lnbiB0b2tlbnMuIFN0YXRlIGlzIGNhcnJpZWQgYnkgYSBzb2Z0IGljb25cbiAqIG1lZGFsbGlvbiArIGhlYWRpbmcsIG5ldmVyIGJ5IGEgZGVjb3JhdGl2ZSBhY2NlbnQgc3RyaXBlLCBhIGNvbG9yZWQgZ2xvdywgb3JcbiAqIGEgbG9vcGluZyBhbmltYXRpb24uIENvbG91ciBzdGF5cyBvbiB0aGUgYnJhbmQ6IFRydXN0IEdyZWVuIGlzIHRoZSBvbmx5XG4gKiBhY2NlbnQ7IHRoZXJlIGlzIG5vIFRhYmxlciBibHVlIGFuZCBubyBhbWJlci1ieS1hY2NpZGVudCBoZXJlLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJBU0UgUEFHRSBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tc3dwLXNwYWNlLTI0KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLXN3cC1ncmF5LTUwKSwgdmFyKC0tc3dwLXN1cmZhY2UpKTtcbn1cblxuLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogNjQwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbiAgICBhbmltYXRpb246IHN1YnNjcmlwdGlvbi1mYWRlLWluIDAuM3MgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgc3Vic2NyaXB0aW9uLWZhZGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFQURFUiBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhZ2UgaGVhZGVyIChhYm92ZSBzdWJzY3JpcHRpb24gY29udGFpbmVyKVxuXG4uc3Vic2NyaXB0aW9uLXBhZ2UtaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuXG4gICAgLmg0IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gU29mdCBtZWRhbGxpb24sIGZsYXQgdGludCArIHRpbnRlZCBnbHlwaCAodGhlIHNhbWUgbGFuZ3VhZ2UgdGhlIGRhc2hib2FyZFxuLy8gZW1wdHkgc3RhdGVzIGFuZCBvbmJvYXJkaW5nIHdpemFyZCB1c2UpLiBObyBncmFkaWVudCBkaXNjLlxuXG4uc3Vic2NyaXB0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3dwLXNwYWNlLTgpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi13YXJuaW5nIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbn1cblxuLnN1YnNjcmlwdGlvbi1pY29uLWRhbmdlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xufVxuXG4uc3Vic2NyaXB0aW9uLWljb24taW5mbyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi1wYXVzZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5zdWJzY3JpcHRpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnN1YnNjcmlwdGlvbi1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEwKTtcbiAgICBsaW5lLWhlaWdodDogMS43O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCRU5FRklUUyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdWJzY3JpcHRpb24tYmVuZWZpdHMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG5cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIENhbmNlbGxlZCBwYWdlOiBsb2NrZWQgZmVhdHVyZXMgYXJlIG11dGVkLCBub3QgYWxhcm1lZCBpbiByZWQuIExvc2luZyBhY2Nlc3Ncbi8vIHRvIGEgZmVhdHVyZSB5b3UgY2hvc2UgdG8gY2FuY2VsIGlzIGluZm9ybWF0aW9uLCBub3QgYW4gZXJyb3IuXG5cbi5zdWJzY3JpcHRpb24tY2FuY2VsbGVkLXBhZ2UgLnN1YnNjcmlwdGlvbi1iZW5lZml0cyBsaSBzdmcge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElPTlMgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc3Vic2NyaXB0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAuYnRuLWxnIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCksIHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0bi1naG9zdCB7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVEFURS1TUEVDSUZJQyBQQUdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3RhdGUgaXMgY2FycmllZCBieSB0aGUgaWNvbiBtZWRhbGxpb24gKyBoZWFkaW5nICsgY29weS4gVGhlIHByZXZpb3VzIDRweFxuLy8gdG9wIGFjY2VudCBzdHJpcGVzIG9uIGAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lcmAgd2VyZSB0aGUgYWNjZW50LXN0cmlwZVxuLy8gYW50aS1wYXR0ZXJuICh0aGUgXCI+MXB4IGNvbG91cmVkIGJvcmRlclwiIHJ1bGUpIHJvdGF0ZWQgdG8gdGhlIHRvcCBlZGdlLCBhbmRcbi8vIHRoZSByZWQgZGFuZ2VyIGZyYW1pbmcgb24gdGhlIGNhbmNlbGxlZCBwYWdlIHNjb2xkZWQgYSB1c2VyIGZvciBhIGNob2ljZVxuLy8gdGhleSBtYWRlOyBib3RoIGFyZSBnb25lLlxuXG4uc3Vic2NyaXB0aW9uLXBhdXNlZC1wYWdlIHtcbiAgICAvLyBQYXVzZWQgYmVuZWZpdHMgYXJlIG5laXRoZXIgYWNoaWV2ZW1lbnRzIChncmVlbikgbm9yIGxvc3NlcyAocmVkKSAtIHRoZXlcbiAgICAvLyBhcmUgc2ltcGx5IG9uIGhvbGQuXG5cbiAgICAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIGxpIHN2ZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUxFUlQgQkFOTkVSIChUb3Agb2YgcGFnZSBpbmplY3Rpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hbGVydC1iYW5uZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgLmQtZmxleCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFsZXJ0LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmJ0bi1zbSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC8vIFdhcm5pbmcgYmFubmVyICh0cmlhbClcblxuICAgICYuYWxlcnQtd2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAuYnRuLXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1ob3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYW5nZXIgYmFubmVyIChjYW5jZWxsZWQpXG5cbiAgICAmLmFsZXJ0LWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICAgICAgLmJ0bi1kYW5nZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklDSU5HIFBBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1wcmljaW5nLXBhZ2Uge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLnBsYW4tY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgLy8gSG92ZXIgbGlmdHMgYnkgc2hhZG93IG9ubHkgKG5vIHRyYW5zZm9ybSksIHBlciB0aGUgZGVzaWduIHN5c3RlbSdzIGNhcmRcbiAgICAvLyBydWxlcy5cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAvLyBSZXNlcnZlIHRoZSBiYW5uZXIncyBoZWlnaHQgb24gZXZlcnkgcGFpZCBjYXJkIHNvIHRoZSBwcmljZSBiYXNlbGluZSBpc1xuICAgIC8vIHRoZSBzYW1lIHdoZXRoZXIgb3Igbm90IHRoZSBjYXJkIGNhcnJpZXMgYSBiYW5uZXIgKHRoZSBiYW5uZXIgaXRzZWxmIGlzXG4gICAgLy8gdGFrZW4gb3V0IG9mIGZsb3cgYmVsb3cpLlxuXG4gICAgPiAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS05KTtcbiAgICB9XG59XG5cbi5wbGFuLWNhcmQtcmVjb21tZW5kZWQge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgIH1cbn1cblxuLy8gUmliYm9uIGFjcm9zcyB0aGUgdG9wIG9mIHRoZSBjYXJkLiBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQgc28gaXQgbmV2ZXIgcHVzaGVzXG4vLyB0aGUgcHJpY2UgZG93biAodGhlIGNhcmQgYm9keSByZXNlcnZlcyBtYXRjaGluZyB0b3AgcGFkZGluZyBhYm92ZSksIGFuZCBpblxuLy8gVHJ1c3QgR3JlZW4gLSBub3QgdGhlIFRhYmxlci1ibHVlIGl0IHVzZWQgdG8gZmFsbCBiYWNrIHRvLlxuXG4ucGxhbi1jYXJkLWJhbm5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBpbnNldC1pbmxpbmU6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyBGcmVlIHBsYW46IHByZXNlbnRlZCBhcyBhIHNsaW0gc2Vjb25kYXJ5IGNhcmQgYmVsb3cgdGhlIG1haW4gZ3JpZC5cblxuLnBsYW4tY2FyZC1mcmVlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxuXG4gICAgLnBsYW4tY2FyZC1mZWF0dXJlcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnBsYW4tY2FyZC1mcmVlLWhlYWRlciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ucGxhbi1jYXJkLWZyZWUtY3RhIHtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLy8gSW5saW5lIGZlYXR1cmUgbGlzdCBmbG93cyBob3Jpem9udGFsbHkgYW5kIHdyYXBzOyBrZWVwcyB0aGUgZnJlZSBzdHJpcCBzbGltLlxuXG4ucGxhbi1jYXJkLWZlYXR1cmVzLWlubGluZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxufVxuXG4vLyBUaGUgZGlzcGxheSBwcmljZSByZW5kZXJzIHRocm91Z2ggdGhlIGAubW9uZXlgIGNvbXBvbmVudCAoYG1vbmV5LS10b3RhbGApLFxuLy8gd2hpY2ggaW5oZXJpdHMgaXRzIHNpemUgZnJvbSBoZXJlOyB0aGUgaW50ZXJ2YWwgc2l0cyBxdWlldGx5IGJlc2lkZSBpdC5cblxuLnBsYW4tY2FyZC1wcmljZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC00eGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi5wbGFuLWNhcmQtaW50ZXJ2YWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG59XG5cbi5wbGFuLWNhcmQtZmVhdHVyZXMge1xuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xufVxuXG4vLyBBIGNvdXBvbiAvIHByb21vIGNhcmQgKHRyaWFsLWV4cGlyZWQgcGFnZSkuIFRva2VuaXNlZCBncmVlbi10aW50IHBhbmVsLFxuLy8gcmVwbGFjaW5nIHRoZSBvZmYtc3lzdGVtIFRhYmxlciBgYXp1cmVgIHV0aWxpdGllcy5cblxuLnN1YnNjcmlwdGlvbi1jb3Vwb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC8vIFRoZSBjb3Vwb24gY29kZSBpdHNlbGYsIGluIHNvbGlkIFRydXN0IEdyZWVuIHNvIGl0IHJlYWRzIGFzIHRoZSBvbmUgdGhpbmdcbiAgICAvLyB0byBjb3B5LiBXaXRob3V0IHRoaXMgYSBiYXJlIGAuYmFkZ2VgIGZhbGxzIGJhY2sgdG8gdGhlIHRoZW1lJ3MgYW1iZXIuXG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5zdWJzY3JpcHRpb24tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1wYWdlLWhlYWRlciB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1ncm91cCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuMzc1cmVtO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tc3VidGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tYWN0aW9ucyB7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hbGVydC1iYW5uZXIge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLXNtIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUYWJsZXQgYWRqdXN0bWVudHNcbkBtZWRpYSAod2lkdGggPj0gNzY4cHgpIGFuZCAod2lkdGggPD0gOTkxLjk4cHgpIHtcblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNDRVNTSUJJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZWR1Y2VkIG1vdGlvbjogZHJvcCB0aGUgY29udGFpbmVyIHJldmVhbCBhbmQgdGhlIGhvdmVyIHNoYWRvdyB0cmFuc2l0aW9ucy5cbi8vIFRoZXJlIGlzIG5vIGxvb3BpbmcvcHVsc2luZyBhbmltYXRpb24gbGVmdCBpbiB0aGlzIGZpbGUgdG8gZ3VhcmQuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgLnBsYW4tY2FyZCxcbiAgICAucGxhbi1jYXJkLWZyZWUsXG4gICAgLnN1YnNjcmlwdGlvbi1hY3Rpb25zIC5idG4tbGcge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLXBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuYWxlcnQtYmFubmVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIE9uYm9hcmRpbmcgQ2hlY2tsaXN0IC0gRGFzaGJvYXJkIHdpZGdldFxuICpcbiAqIFRoZSBmaXJzdCBjb21wb25lbnQgYSBuZXcgdXNlciBtZWV0cy4gUHJpb3JpdGllcywgaW4gb3JkZXI6XG4gKiAgIDEuIENvbnZleSBzdGF0ZSAodG9kbyAvIGRvbmUgLyBob3ZlcmVkIC8gZm9jdXNlZCkuIE5ldmVyIGRlY29yYXRpb24uXG4gKiAgIDIuIFN0YXkgb24gdGhlIEF1Z2lhcyBkZXNpZ24gc3lzdGVtIC0gYC0tc3dwLSpgIHRva2VucyBvbmx5LlxuICogICAzLiBSZWFkIGNvcnJlY3RseSB3aGV0aGVyIGEgcm93IGlzIGFuIDxhPiAoYWN0aW9uYWJsZSkgb3IgYSA8c3Bhbj4gKGRvbmUpLlxuICpcbiAqIFN0cnVjdHVyZSBjb21lcyBmcm9tIFRhYmxlciAoYGNhcmRgLCBgY2FyZC1zdGFtcGAsIGBjYXJkLWxpbmstcG9wYCxcbiAqIGBvZmZjYW52YXNgLCBgdmlzdWFsbHktaGlkZGVuYCkuIFRoaXMgZmlsZSBvbmx5IGFkZHMgd2hhdCBUYWJsZXIgZG9lcyBub3RcbiAqIGFscmVhZHkgcHJvdmlkZSAtIGl0IGRvZXMgbm90IHJlc3RhdGUgb3IgZmlnaHQgaXQuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1VDQ0VTUyBDQVJEIC0gYWxsIHN0ZXBzIGNvbXBsZXRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE1hdGNoZXMgYDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYWN0aXZlXCI+YC4gTm90IGludGVyYWN0aXZlIChpdHMgb25seSBjb250cm9sXG4vLyBpcyB0aGUgZGlzbWlzcyBidXR0b24gaW5zaWRlKSwgc28gaXQgZ2V0cyBubyBob3ZlciBzdGF0ZSAtIGEgbGlmdCBoZXJlIHdvdWxkXG4vLyBiZSBhIGZhbHNlIGFmZm9yZGFuY2UuIEEgZmxhdCBzdWNjZXNzIHRpbnQgcGx1cyBhIGZ1bGwgMXB4IGJvcmRlciBjYXJyaWVzXG4vLyB0aGUgc3RhdGU7IHRoZSBjYXJkIGtlZXBzIFRhYmxlcidzIHJlc3RpbmcgYHNoYWRvdy1zbWAuXG5cbi5jYXJkLmNhcmQtYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbn1cblxuLy8gRGVjb3JhdGl2ZSB3YXRlcm1hcmsgYmVoaW5kIHRoZSBjYXJkIHRpdGxlIChUYWJsZXIgYC5jYXJkLXN0YW1wYCkuXG5cbi5jYXJkLXN0YW1wLWljb24ge1xuICAgIG9wYWNpdHk6IDAuMTU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIRUNLTElTVCBJVEVNU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2hlY2tsaXN0LWl0ZW1zLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xufVxuXG4vLyBSZW5kZXJzIGFzIDxhPiB3aGlsZSBpbmNvbXBsZXRlIGFuZCA8c3Bhbj4gb25jZSBjb21wbGV0ZSwgc28gZXZlcnlcbi8vIGludGVyYWN0aXZlIHN0eWxlIGlzIGdhdGVkIGJlaGluZCBgOm5vdCguY29tcGxldGVkKWAuXG5cbi5jaGVja2xpc3QtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgICBjb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgdmFyKC0tc3dwLWVhc2Utb3V0KSxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgdmFyKC0tc3dwLWVhc2Utb3V0KSxcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1vdXQpO1xuXG4gICAgLy8gSG92ZXIgYW5kIGZvY3VzIHJlc29sdmUgdG8gdGhlIHNhbWUgc3VyZmFjZSBzbyBwb2ludGVyIGFuZCBrZXlib2FyZFxuICAgIC8vIHVzZXJzIGFyZSBzaG93biB0aGUgc2FtZSB0YXJnZXQ7IGZvY3VzIGFkZHMgdGhlIGhhbG8gYmVsb3cuXG5cbiAgICAmOm5vdCguY29tcGxldGVkKTppcyg6aG92ZXIsIDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAuY2hlY2tsaXN0LWl0ZW0tYWN0aW9uIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb2N1cyBIYWxvLiBgLS1zd3AtcmluZy1wcmltYXJ5YCBpcyBhIDE1JS1hbHBoYSBncmVlbiAofjEuMToxIG9uIHdoaXRlKVxuICAgIC8vIGFuZCBjYW5ub3QgY2FycnkgYSBmb2N1cyBpbmRpY2F0b3Igb24gaXRzIG93biwgc28gdGhlIGJvcmRlciBzaGlmdHMgdG9cbiAgICAvLyBmdWxsIGAtLXN3cC1wcmltYXJ5YCBhbG9uZ3NpZGUgaXQgdG8gbWVldCBXQ0FHIDIuMSBTQyAyLjQuMTEuXG5cbiAgICAmOm5vdCguY29tcGxldGVkKTpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gRG9uZS4gU2lnbmFsbGVkIGJ5IHRpbnQgKyBzdHJpa2V0aHJvdWdoICsgd2VpZ2h0IGRyb3AgKyBkZS1lbXBoYXNpcywgc29cbiAgICAvLyBpdCBzdXJ2aXZlcyB3aXRob3V0IGh1ZS4gVGhlIHByb2dyYW1tYXRpYyBzaWduYWwgaXMgQTUnc1xuICAgIC8vIHZpc3VhbGx5LWhpZGRlbiBzdGF0dXMgdGV4dCwgbm90IGFueXRoaW5nIGluIGhlcmUuXG5cbiAgICAmLmNvbXBsZXRlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgICAgIC5pdGVtLW5hbWUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgICAgIH1cblxuICAgICAgICAuaXRlbS1pY29uIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3RoaW5nIGxlZnQgdG8gbmF2aWdhdGUgdG8uXG5cbiAgICAgICAgLmNoZWNrbGlzdC1pdGVtLWFjdGlvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBDb21wbGV0aW9uIG1hcmtlci4gR3JlZW4gY2hlY2sgd2hlbiBkb25lOyBhIG5ldXRyYWwgcmluZyB3aGVuIG5vdC5cblxuLmNoZWNrbGlzdC1pdGVtLWljb24ge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtOm5vdCguY29tcGxldGVkKSAuY2hlY2tsaXN0LWl0ZW0taWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG59XG5cbi5jaGVja2xpc3QtaXRlbS1jb250ZW50IHtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmNoZWNrbGlzdC1pdGVtLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLy8gU2NvcGVkIHRvIHRoZSByb3c6IGBpdGVtLWljb25gIC8gYGl0ZW0tbmFtZWAgYXJlIHRvbyBnZW5lcmljIHRvIG93biBnbG9iYWxseS5cblxuLmNoZWNrbGlzdC1pdGVtIC5pdGVtLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW0gLml0ZW0tbmFtZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbn1cblxuLy8gQWx3YXlzIHZpc2libGUsIG5vdCBob3Zlci1yZXZlYWxlZDogaG92ZXIgbmV2ZXIgZmlyZXMgb24gdG91Y2gsIHNvIGFcbi8vIGhvdmVyLW9ubHkgYWZmb3JkYW5jZSBpcyBpbnZpc2libGUgdG8gaGFsZiB0aGUgdXNlcnMgd2hvIG5lZWQgaXQuXG5cbi5jaGVja2xpc3QtaXRlbS1hY3Rpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT0ZGQ0FOVkFTIFBBTkVMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5vbmJvYXJkaW5nLW9mZmNhbnZhcyB7XG4gICAgd2lkdGg6IDQyMHB4O1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLy8gUHJvZ3Jlc3Mgc3VtbWFyeSBjYXJkIGF0IHRoZSB0b3Agb2YgdGhlIHBhbmVsLiBTY29wZWQgdG8gdGhpcyB3aWRnZXQgLSB0aGVcbi8vIHVuc2NvcGVkIGAub2ZmY2FudmFzLWJvZHkgLmNhcmRgIGl0IHJlcGxhY2VzIHdvdWxkIHJlc3R5bGUgZXZlcnkgY2FyZCBpblxuLy8gZXZlcnkgb2ZmY2FudmFzIGluIHRoZSBhcHAuXG5cbi5vbmJvYXJkaW5nLW9mZmNhbnZhcyAub2ZmY2FudmFzLWJvZHkgLmNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xufVxuXG4ub25ib2FyZGluZy1wcm9ncmVzcy1sYWJlbCB7XG4gICAgbWluLXdpZHRoOiAzcmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ0NFU1NJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIE5vIG1vdGlvbiBzdXJ2aXZlcyBpbiB0aGlzIGZpbGUgLSBubyB0cmFuc2Zvcm1zLCBubyBrZXlmcmFtZXMuIFdoYXQgaXMgbGVmdFxuLy8gaXMgYSAxNTBtcyBjb2xvdXIvc2hhZG93IGNyb3NzLWZhZGUsIHdoaWNoIGlzIG5vdCB2ZXN0aWJ1bGFyLiBUaGlzIGJsb2NrIGlzXG4vLyBkZWZlbnNpdmUgb25seSwgYW5kIGlzIHBvaW50ZWQgYXQgYSBzZWxlY3RvciB0aGF0IGFjdHVhbGx5IGV4aXN0cy5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuY2hlY2tsaXN0LWl0ZW0ge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogT25ib2FyZGluZyBXaXphcmQgLSB0aGUgZmlyc3QtcnVuIGZsb3cgKC9vbmJvYXJkaW5nKVxuICpcbiAqIFRoaXMgaXMgdGhlIGZpcnN0IHNjcmVlbiBldmVyeSBuZXcgdXNlciBtZWV0czogcG9zdC1pbnN0YWxsIGFuZCBwb3N0LXNpZ251cCxcbiAqIGEgdXNlciB3aXRoIG5vIGNvbXBhbnkgaXMgcmVkaXJlY3RlZCBoZXJlIHRvIGNyZWF0ZSB0aGVpciBjb21wYW55LCBhblxuICogb3B0aW9uYWwgZmlyc3QgY2xpZW50LCBhbmQgYSBmaXJzdCBpbnZvaWNlLlxuICpcbiAqIEl0IHVzZWQgdG8gYmUgc3R5bGVkIHdpdGggaW5saW5lIDxzdHlsZT4gYmxvY2tzIHRoYXQgY29udHJhZGljdGVkIHRoZSBkZXNpZ25cbiAqIHN5c3RlbSB3aG9sZXNhbGUgLSBCb290c3RyYXAgYmx1ZSAoIzA2NmZkMSkgaW5zdGVhZCBvZiBUcnVzdCBHcmVlbiwgZ3JhZGllbnRzXG4gKiBvbiB0aGUgY2FudmFzIC8gc3RlcCBpY29uIC8gYmFkZ2UsIGEgM3B4IGBib3JkZXItbGVmdGAgc2lkZS1zdHJpcGUgb24gdGhlXG4gKiBiZW5lZml0cyBib3ggKGEgaGFyZCBiYW4pLCBhbmQgYSBib3VuY2UvZWxhc3RpYyBjZWxlYnJhdGlvbiB3aXRoIGFuIGluZmluaXRlXG4gKiBwdWxzZSBhbmQgbm8gcmVkdWNlZC1tb3Rpb24gZmFsbGJhY2suIFRoaXMgZmlsZSByZXBsYWNlcyBhbGwgb2YgaXQgd2l0aFxuICogYC0tc3dwLSpgIHRva2VucywgZmxhdCBzdXJmYWNlcywgYW5kIGVhc2Utb3V0IG1vdGlvbi5cbiAqXG4gKiBFdmVyeXRoaW5nIGlzIHNjb3BlZCB1bmRlciBgLm9uYm9hcmRpbmctY29udGFpbmVyYCBiZWNhdXNlIHRoZSBjbGFzcyBuYW1lc1xuICogKGBzdGVwLWljb25gLCBgc3RlcC1iZW5lZml0c2AsIGB3ZWxjb21lLWJhZGdlYCwgLi4uKSBhcmUgZ2VuZXJpYyBhbmQgdXNlZFxuICogbm93aGVyZSBlbHNlIC0gc2NvcGluZyBrZWVwcyB0aGVtIGZyb20gbGVha2luZyBpbnRvIHRoZSByZXN0IG9mIHRoZSBhcHAuXG4gKlxuICogU3RydWN0dXJlIChCb290c3RyYXAgZ3JpZCwgYGNhcmRgLCBgYnRuYCwgYGZvcm0tY29udHJvbGAsIGBwcm9ncmVzc2ApIGNvbWVzXG4gKiBmcm9tIFRhYmxlcjsgdGhpcyBmaWxlIG9ubHkgc3R5bGVzIHRoZSBjdXN0b20gd2l6YXJkIGNocm9tZS5cbiAqL1xuXG4ub25ib2FyZGluZy1jb250YWluZXIge1xuICAgIC8vIFBhcGVyLW9uLWRlc2sgY2FudmFzOiB0aGUgYXBwJ3Mgb3duIGZsYXQgYm9keSBiYWNrZ3JvdW5kLiBUaGUgcHJldmlvdXNcbiAgICAvLyBncmV5IGRpYWdvbmFsIGdyYWRpZW50IHdhcyBkZWNvcmF0aW9uIHRoZSBkZXNpZ24gc3lzdGVtIGRvZXMgbm90IHBlcm1pdC5cbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtYm9keS1iZyk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQUk9HUkVTUyBIRUFERVJcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC5vbmJvYXJkaW5nLXByb2dyZXNzIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG4gICAgfVxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLy8gVXBjb21pbmcgc3RlcCBhdCByZXN0OiBuZXV0cmFsIHNsYXRlLlxuXG4gICAgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICAgICAgY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCksXG4gICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpO1xuICAgIH1cblxuICAgIC8vIFJlYWNoZWQgKHRoZSBjdXJyZW50IHN0ZXAgb3IgYW4gZWFybGllciBvbmUpOiBhIHNvZnQgZ3JlZW4gdGludC5cblxuICAgIC5zdGVwLWluZGljYXRvci5hY3RpdmUgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGN1cnJlbnQgc3RlcDogZmlsbGVkIFRydXN0IEdyZWVuIHdpdGggdGhlIHN0YW5kYXJkIGZvY3VzIGhhbG8sIHNvIHRoZVxuICAgIC8vIHVzZXIncyBwb3NpdGlvbiByZWFkcyBhdCBhIGdsYW5jZS5cblxuICAgIC5zdGVwLWluZGljYXRvci5jdXJyZW50IC5zdGVwLW51bWJlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuc3RlcC1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCk7XG4gICAgfVxuXG4gICAgLy8gcHJpbWFyeS1kYXJrICgjMTIyOTNmKSBvbiB0aGUgd2hpdGUgaGVhZGVyIGhvbGRzIEFBIGNvbWZvcnRhYmx5OyB0aGUgcmF3XG4gICAgLy8gcHJpbWFyeSB3b3VsZCBub3QgZm9yIHRleHQgdGhpcyBzbWFsbC5cblxuICAgIC5zdGVwLWluZGljYXRvci5hY3RpdmUgLnN0ZXAtbGFiZWwsXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmN1cnJlbnQgLnN0ZXAtbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgfVxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmN1cnJlbnQgLnN0ZXAtbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cblxuICAgIC5zdGVwLWNvbm5lY3RvciB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBtYXJnaW46IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KTtcbiAgICB9XG5cbiAgICAuc3RlcC1jb25uZWN0b3IuY29tcGxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNURVAgQ0FSRFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLy8gUGFwZXIgb24gdGhlIGNhbnZhczogc3VyZmFjZSwgc29mdCByZXN0aW5nIHNoYWRvdywgZ2VuZXJvdXMgcmFkaXVzLiBOb3QgYVxuICAgIC8vIGhlYXZpZXIgY3VzdG9tIHNoYWRvdyAtIHRoZSBkZXNpZ24gc3lzdGVtJ3MgYHNoYWRvdy1zbWAgaXMgdGhlIGNhcmQgcmVzdC5cblxuICAgIC5vbmJvYXJkaW5nLXN0ZXAtY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBTVEVQIElDT04gTUVEQUxMSU9OXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvLyBGbGF0IHByaW1hcnkgdGludCB3aXRoIGEgVHJ1c3QgR3JlZW4gZ2x5cGggLSB0aGUgc2FtZSBzb2Z0LW1lZGFsbGlvblxuICAgIC8vIGxhbmd1YWdlIHRoZSBkYXNoYm9hcmQgZW1wdHkgc3RhdGVzIHVzZS4gVGhlIHByZXZpb3VzIHNhdHVyYXRlZCBibHVlXG4gICAgLy8gZ3JhZGllbnQgZGlzYyB3YXMgdGhlIEFJLXNsb3AgaGVyby1pY29uIHRlbGwuXG5cbiAgICAuc3RlcC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA0cmVtO1xuICAgICAgICBoZWlnaHQ6IDRyZW07XG4gICAgICAgIG1hcmdpbjogMCBhdXRvIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFdFTENPTUUgU0VDVElPTiArIEJBREdFXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAud2VsY29tZS1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLndlbGNvbWUtYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEJFTkVGSVRTIC8gXCJXSFkgVEhJUyBNQVRURVJTXCIgQk9YXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvLyBBIGZ1bGwgMXB4IGJvcmRlciBwbHVzIGFuIGFtYmllbnQgZ3JlZW4gd2FzaC4gTk8gc2lkZS1zdHJpcGU6IGEgY29sb3VyZWRcbiAgICAvLyBgYm9yZGVyLWxlZnRgIHRoaWNrZXIgdGhhbiAxcHggaXMgYSBoYXJkIGJhbiwgYW5kIHRoZSBsZWFkaW5nIGljb24gaW5zaWRlXG4gICAgLy8gYWxyZWFkeSBjYXJyaWVzIHRoZSBhY2NlbnQuXG5cbiAgICAuc3RlcC1iZW5lZml0cyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICBsaSArIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENPTVBMRVRJT04gU0NSRUVOXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAuY2VsZWJyYXRpb24taWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC8vIFN1Y2Nlc3MgbWVkYWxsaW9uOiBzdWNjZXNzLWxpZ2h0IGRpc2MsIEFBLXNhZmUgc3VjY2Vzcy1kYXJrIGNoZWNrLiBFbnRlcnNcbiAgICAvLyBvbmNlIHdpdGggYSBnZW50bGUgZWFzZS1vdXQgc2NhbGUsIG5ldmVyIGJvdW5jZXMsIG5ldmVyIGxvb3BzLlxuXG4gICAgLnN1Y2Nlc3MtY2hlY2ttYXJrIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNnJlbTtcbiAgICAgICAgaGVpZ2h0OiA2cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTtcbiAgICAgICAgYW5pbWF0aW9uOiBvbmJvYXJkaW5nLWNlbGVicmF0ZSB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KSBib3RoO1xuICAgIH1cblxuICAgIC8vIEEgcXVpZXQsIG5ldXRyYWwgdGlwIG5vdGUgLSBkaXN0aW5jdCBmcm9tIHRoZSBncmVlbiBiZW5lZml0cyBib3ggYW5kIG5vXG4gICAgLy8gbG9uZ2VyIGEgcmF3IEJvb3RzdHJhcCBgYWxlcnQtaW5mb2AgYmx1ZS5cblxuICAgIC5vbmJvYXJkaW5nLXRpcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTAtNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNlY29uZGFyeS1kYXJrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFJFU1BPTlNJVkVcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcblxuICAgICAgICAub25ib2FyZGluZy1zdGVwLWNhcmQge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdGVwLWNvbm5lY3RvciB7XG4gICAgICAgICAgICBtYXJnaW46IDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIG9uYm9hcmRpbmctY2VsZWJyYXRlIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNDRVNTSUJJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZWR1Y2VkIG1vdGlvbiBpcyBub3Qgb3B0aW9uYWwuIFRoZSBwcm9ncmVzcy1pbmRpY2F0b3IgY3Jvc3MtZmFkZXMgYXJlXG4vLyBub24tdmVzdGlidWxhciwgYnV0IHRoZSBjZWxlYnJhdGlvbiBzY2FsZSBpcyBhIHRyYW5zZm9ybSwgc28gaXQgaXMgZGlzYWJsZWRcbi8vIG91dHJpZ2h0IGFuZCB0aGUgZmluYWwgc3RhdGUgc2hvd3MgaW5zdGFudGx5LlxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblxuICAgIC5vbmJvYXJkaW5nLWNvbnRhaW5lciB7XG5cbiAgICAgICAgLnN0ZXAtbnVtYmVyLFxuICAgICAgICAuc3RlcC1sYWJlbCxcbiAgICAgICAgLnN0ZXAtY29ubmVjdG9yIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuc3VjY2Vzcy1jaGVja21hcmsge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBBdWdpYXMgRGVzaWduIFN5c3RlbSAtIE1vbmV5IERpc3BsYXlcbiAqXG4gKiBUaGUgc2lnbmF0dXJlIGNvbXBvbmVudCAoREVTSUdOLm1kIHNlY3Rpb24gNSkuIEV2ZXJ5IGN1cnJlbmN5IHZhbHVlIGluIHRoZVxuICogYXBwbGljYXRpb24gcmVuZGVycyB0aHJvdWdoIGAubW9uZXlgOyBpdCBpcyB0aGUgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3JcbiAqIG1vbmV5IGRpc3BsYXksIGFuZCByYXcgYHt7IGFtb3VudCB9fWAgcmVuZGVyaW5nIGlzIHByb2hpYml0ZWQuXG4gKlxuICogQ29udHJhY3Q6XG4gKiAgIDxzcGFuIGNsYXNzPVwibW9uZXlcIj5cbiAqICAgICA8c3BhbiBjbGFzcz1cIm1vbmV5LWN1cnJlbmN5XCI+VVNEPC9zcGFuPlxuICogICAgIDxzdHJvbmcgY2xhc3M9XCJtb25leS1hbW91bnRcIj4xLDIzNC41Njwvc3Ryb25nPlxuICogICA8L3NwYW4+XG4gKlxuICogTW9kaWZpZXJzIChvbiB0aGUgYC5tb25leWAgcm9vdCwgY29tYmluYWJsZSk6XG4gKiAgIC5tb25leS0tcGFpZCAgICAgIEFtb3VudCBpbiBBQS1zYWZlIHN1Y2Nlc3MuIE9OTFkgdmFsaWQgYWxvbmdzaWRlIGFuXG4gKiAgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0IFwiUGFpZFwiIGxhYmVsICh0aGUgTW9uZXktQ29sb3IgUnVsZSkuXG4gKiAgIC5tb25leS0tb3ZlcmR1ZSAgIEFtb3VudCBpbiBBQS1zYWZlIGRhbmdlci4gU2FtZSBsYWJlbGxpbmcgcnVsZS5cbiAqICAgLm1vbmV5LS10b3RhbCAgICAgV2VpZ2h0IDYwMCwgYW1vdW50IG9uZSBzaXplIHN0ZXAgdXAuXG4gKiAgIChub25lKSAgICAgICAgICAgIE5ldXRyYWwgLSB0aGUgZGVmYXVsdCBhbmQgdGhlIGNvbW1vbiBjYXNlLlxuICpcbiAqIFRoZSBjb21wb25lbnQgbmV2ZXIgc2V0cyBpdHMgb3duIGZvbnQtc2l6ZS4gSXQgaW5oZXJpdHMgZnJvbSBjb250ZXh0LCBzbyB0aGVcbiAqIHNhbWUgbWFya3VwIGlzIGNvcnJlY3QgaW5saW5lIGluIGEgdGFibGUgY2VsbCwgaW4gYSBoZWFkaW5nLCBhbmQgYXRcbiAqIGAuc3RhdC12YWx1ZWAgc2NhbGUgaW4gdGhlIGRhc2hib2FyZCBoZXJvIHRpbGVzLiBPbmx5IGAubW9uZXktLXRvdGFsYCBzdGVwc1xuICogdGhlIGFtb3VudCwgYW5kIGl0IHN0ZXBzIHJlbGF0aXZlbHkgc28gdGhlIHJlc3VsdCBpcyByaWdodCBhdCBldmVyeSBiYXNlLlxuICovXG5cbi5tb25leSB7XG4gICAgLy8gaW5saW5lLWZsZXggcmF0aGVyIHRoYW4gcGxhaW4gaW5saW5lLCBmb3IgdHdvIHJlYXNvbnM6XG4gICAgLy8gIDEuIFRoZSBnYXAgYmV0d2VlbiBjdXJyZW5jeSBhbmQgYW1vdW50IGlzIGRldGVybWluaXN0aWMgd2hldGhlciBvciBub3RcbiAgICAvLyAgICAgdGhlIGVtaXR0ZWQgbWFya3VwIGhhcHBlbnMgdG8gY2Fycnkgd2hpdGVzcGFjZSBiZXR3ZWVuIHRoZSBzcGFuc1xuICAgIC8vICAgICAoZmxleCBkcm9wcyB3aGl0ZXNwYWNlLW9ubHkgYW5vbnltb3VzIGJveGVzKS5cbiAgICAvLyAgMi4gYGFsaWduLWl0ZW1zOiBiYXNlbGluZWAga2VlcHMgYSBzaXplLXN0ZXBwZWQgYC5tb25leS0tdG90YWxgIGFtb3VudFxuICAgIC8vICAgICBzaGFyaW5nIGEgYmFzZWxpbmUgd2l0aCBpdHMgY3VycmVuY3ksIGluc3RlYWQgb2YgY2VudHJpbmcgYWdhaW5zdCBpdC5cbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAvLyBNb25leSBjbGFyaXR5OiBhIGN1cnJlbmN5IGNvZGUgbXVzdCBuZXZlciBiZSBvcnBoYW5lZCBmcm9tIGl0cyBudW1iZXIuXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgIC8vIFRoZSBUYWJ1bGFyIEZpZ3VyZXMgUnVsZSAtIGFtb3VudHMgYWxpZ24gaW4gY2xlYW4gdmVydGljYWwgY29sdW1ucy5cbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyBDdXJyZW5jeSBjb2RlIG9yIHN5bWJvbC4gRGltbWVkIHJlbGF0aXZlIHRvIHRoZSBhbW91bnQsIGJ1dCBpdCBpcyBtZWFuaW5nZnVsXG4vLyB0ZXh0IHJhdGhlciB0aGFuIGRlY29yYXRpb24sIHNvIGl0IGhvbGRzIEFBIG9uIGV2ZXJ5IHN1cmZhY2UgaW4gdGhlIHN5c3RlbS5cblxuLm1vbmV5LWN1cnJlbmN5IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLW1vbmV5LWN1cnJlbmN5KTtcbn1cblxuLy8gVGhlIGFtb3VudC4gV2VpZ2h0IGlzIG5vcm1hbGlzZWQgaGVyZSBzbyB0aGF0IHRoZSBVQSBkZWZhdWx0IG9mIDcwMCBvblxuLy8gYDxzdHJvbmc+YCBkb2VzIG5vdCBwcmUtZW1wdCB0aGUgYC5tb25leS0tdG90YWxgIHN0ZXAgdXAgdG8gNjAwLlxuXG4ubW9uZXktYW1vdW50IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLW1vbmV5LW5ldXRyYWwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNT0RJRklFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUGFpZC4gQ29sb3VyIGlzIGFtcGxpZmljYXRpb24gaGVyZSwgbmV2ZXIgdGhlIGNhcnJpZXIgb2YgbWVhbmluZyAtIGEgZ3JlZW5cbi8vIGFtb3VudCB3aXRob3V0IGFuIGFjY29tcGFueWluZyBcIlBhaWRcIiBsYWJlbCBpcyBhIGJ1Zywgbm90IGEgc3R5bGUgY2hvaWNlLlxuXG4ubW9uZXktLXBhaWQgLm1vbmV5LWFtb3VudCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1tb25leS1wYWlkKTtcbn1cblxuLy8gT3ZlcmR1ZS4gU2FtZSBydWxlOiBhbHdheXMgcmVuZGVyZWQgd2l0aCBhbiBleHBsaWNpdCBcIk92ZXJkdWVcIiBsYWJlbC5cblxuLm1vbmV5LS1vdmVyZHVlIC5tb25leS1hbW91bnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbW9uZXktb3ZlcmR1ZSk7XG59XG5cbi8vIFRvdGFsLiBIZWF2aWVyLCBhbmQgb25lIHNpemUgc3RlcCB1cCByZWxhdGl2ZSB0byB0aGUgaW5oZXJpdGVkIGNvbnRleHQuXG4vLyBUaGUgY3VycmVuY3kga2VlcHMgaXRzIGluaGVyaXRlZCB3ZWlnaHQgc28gdGhlIGRpbW1lZC1wcmVmaXggcmVsYXRpb25zaGlwXG4vLyBzdXJ2aXZlcyB0aGUgc3RlcCB1cC5cblxuLm1vbmV5LS10b3RhbCAubW9uZXktYW1vdW50IHtcbiAgICBmb250LXNpemU6IGNhbGMoMWVtICogdmFyKC0tc3dwLW1vbmV5LXRvdGFsLXNjYWxlKSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbn1cblxuLy8gQXQgZGlzcGxheSBzaXplIHRoZSBjdXJyZW5jeSBjb2RlIGlzIGRpbW1lZCBieSBzaXplIGFzIHdlbGwgYXMgYnkgY29sb3VyOiBhdCBhXG4vLyBzaGFyZWQgc2l6ZSBpdCBjb21wZXRlcyB3aXRoIHRoZSBhbW91bnQgZm9yIGF0dGVudGlvbiBpdCBoYXMgbm90IGVhcm5lZCwgYW5kXG4vLyBcIlVTRCAxMjAsODgyLjE5XCIgc2hvdWxkIHJlYWQgYXMgYSBudW1iZXIgY2FycnlpbmcgYSB1bml0IHJhdGhlciB0aGFuIGFzIHR3b1xuLy8gZXF1YWwgd29yZHMuIFNjb3BlZCB0byBgLS10b3RhbGAgZGVsaWJlcmF0ZWx5LiBBdCBib2R5IHNpemUgKGEgdGFibGUgcm93LCBhblxuLy8gYWN0aXZpdHkgZmVlZCkgdGhlIHNhbWUgcmVkdWN0aW9uIHdvdWxkIHB1dCB0aGUgY29kZSBuZWFyIDEwcHgsIHdoaWNoIGlzIHRoZVxuLy8gbGVnaWJpbGl0eSBwcm9ibGVtIHJhdGhlciB0aGFuIHRoZSBmaXgsIHNvIHRoZSBjb2RlIHN0YXlzIGZ1bGwgc2l6ZSB0aGVyZS5cblxuLm1vbmV5LS10b3RhbCAubW9uZXktY3VycmVuY3kge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLW1vbmV5LWN1cnJlbmN5LXNjYWxlKTtcbn1cbiIsIi8qKlxuICogSW5zdGFuY2UgbGFiZWwg4oCUIHRoZSBcIlRFU1RcIiBhbiBpbnN0YW5jZSBjbGllbnRzIGRvIG5vdCB1c2Ugd2VhcnMgb24gZXZlcnlcbiAqIHBhZ2UgKEFVR0lBU19JTlNUQU5DRV9MQUJFTCk6IGEgY29sb3VyZWQgZWRnZSBhbG9uZyB0aGUgdG9wIG9mIHRoZSB3aW5kb3dcbiAqIHdpdGggYSB0YWIgaGFuZ2luZyBmcm9tIGl0cyBtaWRkbGUuIEl0IG5ldmVyIHRha2VzIGEgY2xpY2suXG4gKi9cblxuLmluc3RhbmNlLWxhYmVsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogMjAwMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6ICNjMjQxMGM7IC8vIG9yYW5nZS03MDA6IHdoaXRlIHRleHQgb24gaXQgcGFzc2VzIEFBXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICA+IHNwYW4ge1xuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgdmFyKC0tc3dwLWJvcmRlci1yYWRpdXMsIDRweCkgdmFyKC0tc3dwLWJvcmRlci1yYWRpdXMsIDRweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBBdWdpYXMgRGVzaWduIFN5c3RlbSAtIExheW91dCBJbmRleFxuICpcbiAqIExheW91dCBwYXR0ZXJuIHN0eWxlcyB0aGF0IGV4dGVuZCBUYWJsZXIvQm9vdHN0cmFwLlxuICogT25seSBhZGQgbGF5b3V0IGZpbGVzIGZvciBwYXR0ZXJucyBub3QgY292ZXJlZCBieSB0aGUgZnJhbWV3b3Jrcy5cbiAqXG4gKiBOb3RlOiBNb3N0IGxheW91dCBzdHlsaW5nIGNvbWVzIGZyb20gVGFibGVyIChwYWdlLXdyYXBwZXIsIHBhZ2UtaGVhZGVyLCBldGMuKVxuICogVGhpcyBmaWxlIGltcG9ydHMgb25seSBjdXN0b20gZXh0ZW5zaW9ucyB3aGVuIG5lZWRlZC5cbiAqL1xuXG4vLyBWZXJ0aWNhbCBzaWRlYmFyIHJlY29sb3Ig4oCUIGNvbnZlcnRzIFRhYmxlcidzIGRhcmsgc2xhdGUgc2lkZWJhciBpbnRvXG4vLyB0aGUgcXVpZXQgbGlnaHQgcGFuZWwgcHJlc2NyaWJlZCBieSBERVNJR04ubWQgKGdyYXktMTAwIGJlaGluZCB0aGUgYm9keSkuXG5AaW1wb3J0ICduYXZiYXItdmVydGljYWwnO1xuXG4vLyBQYWdlIGhlYWRlciDigJQgc3RhY2sgdGhlIHRpdGxlIGFib3ZlIGl0cyBhY3Rpb24gYnV0dG9ucyBvbiBzbWFsbCBzY3JlZW5zLFxuLy8gd2hlcmUgVGFibGVyJ3Mgc2lkZS1ieS1zaWRlIGNvbHVtbnMgc3F1ZWV6ZSBsb25nIGRvY3VtZW50IHRpdGxlcy5cbkBpbXBvcnQgJ3BhZ2UtaGVhZGVyJztcbiIsIi8qKlxuICogQXVnaWFzIOKAlCBWZXJ0aWNhbCBOYXZiYXIgKFNpZGViYXIpXG4gKlxuICogVGFibGVyIHNoaXBzIGAubmF2YmFyLXZlcnRpY2FsLm5hdmJhci1kYXJrYCBhcyBhIGhlYXZ5IHNsYXRlIHBhbmVsIChncmF5LTgwMClcbiAqIHRoYXQgUFJPRFVDVC5tZCBuYW1lcyBhcyB0aGUgQWRtaW5MVEUgYW50aS1yZWZlcmVuY2UgdGhlIHJld3JpdGUgaXMgZXNjYXBpbmcuXG4gKiBUaGlzIGZpbGUgcmVjb2xvcnMgdGhlIHNpZGViYXIgb25lIHNoYWRlIGxpZ2h0ZXIgKGdyYXktNzAwKSBzbyBpdCBzdGlsbFxuICogY2FycmllcyBwcmVzZW5jZSwgYnV0IHVzZXMgdGludGVkIG5ldXRyYWxzIGFuZCBhbiBpbmstdGludGVkIGFjdGl2ZSBzdGF0ZVxuICogdG8gZGlmZmVyZW50aWF0ZSBpdCBmcm9tIGdlbmVyaWMgVGFibGVyIGFkbWluIG91dHB1dC5cbiAqXG4gKiBTZWxlY3RvciBzcGVjaWZpY2l0eSB0YXJnZXRzIGAubmF2YmFyLXZlcnRpY2FsYCBzbyBUYWJsZXIncyBtb2JpbGUtY29sbGFwc2UsXG4gKiBkcmF3ZXIsIGFuZCBkcm9wZG93biBydWxlcyBjb250aW51ZSB0byBhcHBseS5cbiAqL1xuXG4vLyBUYWJsZXIgaGFyZGNvZGVzIHRoZSB2ZXJ0aWNhbCBzaWRlYmFyIChhbmQgaXRzIGNvbnRlbnQtYXJlYSBvZmZzZXQpIHRvXG4vLyAxNXJlbSBhdCB0aGUgbGcgYnJlYWtwb2ludCwgd2l0aCBubyBDU1MgdmFyaWFibGUgdG8gaG9vayBpbnRvLiBBIG1vZGVzdFxuLy8gYnVtcCBnaXZlcyBsb25nZXIgRnJlbmNoIGxhYmVscyBicmVhdGhpbmcgcm9vbSB3aXRob3V0IHRoZSBwYW5lbCBiZWNvbWluZ1xuLy8gb3ZlcnNpemVkOyBib3RoIHRoZSBzaWRlYmFyJ3Mgb3duIHdpZHRoIGFuZCB0aGUgcGFnZSdzIG1hdGNoaW5nIGxlZnRcbi8vIG9mZnNldCBuZWVkIHVwZGF0aW5nIHRvZ2V0aGVyLCBvciBjb250ZW50IGVuZHMgdXAgbWlzYWxpZ25lZC5cbiRzd3AtbmF2YmFyLXZlcnRpY2FsLXdpZHRoOiAxN3JlbTtcblxuQG1lZGlhICh3aWR0aCA+PSA5OTJweCkge1xuXG4gICAgLm5hdmJhci5uYXZiYXItdmVydGljYWwubmF2YmFyLWV4cGFuZC1sZyB7XG4gICAgICAgIHdpZHRoOiAkc3dwLW5hdmJhci12ZXJ0aWNhbC13aWR0aDtcbiAgICB9XG5cbiAgICAvLyBUaGUgb2Zmc2V0IGxpdmVzIG9uIC5wYWdlLXdyYXBwZXIgYW5kIHRoZSB0b3AgaGVhZGVyIGFzIGEgbWFyZ2luLCBub3Qgb25cbiAgICAvLyBgLnBhZ2VgIOKAlCB0aGF0IGNsYXNzIG9ubHkgYXBwZWFycyBvbiB0aGUgc2lkZWJhci1sZXNzIHBhZ2UtY2VudGVyIGxheW91dHNcbiAgICAvLyAobG9naW4sIGVycm9yLCB0d28tZmFjdG9yKSwgc28gdGhlIG9yaWdpbmFsIHNlbGVjdG9yIG1hdGNoZWQgbm90aGluZyBhbmRcbiAgICAvLyB0aGUgc2lkZWJhciBncmV3IHRvIDE3cmVtIHdoaWxlIGNvbnRlbnQgc3RheWVkIGF0IFRhYmxlcidzIDE1cmVtLCBsZWF2aW5nXG4gICAgLy8gMnJlbSBvZiBldmVyeSBwYWdlIHVuZGVybmVhdGggdGhlIGZpeGVkIHBhbmVsLlxuXG4gICAgLm5hdmJhci5uYXZiYXItdmVydGljYWwubmF2YmFyLWV4cGFuZC1sZyB+IC5wYWdlLXdyYXBwZXIsXG4gICAgLm5hdmJhci5uYXZiYXItdmVydGljYWwubmF2YmFyLWV4cGFuZC1sZyB+IGhlYWRlci5uYXZiYXIge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHN3cC1uYXZiYXItdmVydGljYWwtd2lkdGg7XG4gICAgfVxufVxuXG4ubmF2YmFyLm5hdmJhci12ZXJ0aWNhbCxcbi5uYXZiYXIubmF2YmFyLXZlcnRpY2FsLm5hdmJhci1kYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS03MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLXN3cC1ncmF5LTgwMCk7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcblxuICAgIC8vIEJyYW5kOiBsb2dvICsgcHJvZHVjdCBuYW1lIGF0IHRoZSB0b3Agb2YgdGhlIHNpZGViYXIuXG5cbiAgICAubmF2YmFyLWJyYW5kIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB9XG5cbiAgICAubmF2YmFyLWJyYW5kLWF1dG9kYXJrIHtcbiAgICAgICAgZmlsdGVyOiBub25lO1xuICAgIH1cblxuICAgIC8vIE5hdiBsaW5rIGRlZmF1bHQgc3RhdGUuXG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgIC8vIEZsZXggaXRlbXMgZGVmYXVsdCB0byBhIG1pbi13aWR0aCBiYXNlZCBvbiB0aGVpciBjb250ZW50LCBzbyBhIGxvbmdcbiAgICAgICAgLy8gbGFiZWwgKGUuZy4gXCJGYWN0dXJlcyByw6ljdXJyZW50ZXNcIikgb3ZlcmZsb3dzIHRoZSBmaXhlZC13aWR0aFxuICAgICAgICAvLyBzaWRlYmFyIGluc3RlYWQgb2Ygc2hyaW5raW5nLiBMZXQgdGhlIGxpbmsgaXRzZWxmIHNocmluay4uLlxuICAgICAgICBtaW4td2lkdGg6IDA7XG5cbiAgICAgICAgLm5hdi1saW5rLWljb24sXG4gICAgICAgIC5uYXYtbGluay10aXRsZSB7XG4gICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtbGluay1pY29uIHtcbiAgICAgICAgICAgIC8vIC4uLmJ1dCBuZXZlciBsZXQgdGhlIGljb24gc2hyaW5rIGFsb25nc2lkZSBpdC5cbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1saW5rLXRpdGxlIHtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIb3ZlcjogbGlmdCB0byBhIHNsaWdodGx5IGxpZ2h0ZXIgc2xhdGUsIGJyaWdodGVyIHRleHQuXG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS02MDApO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEtleWJvYXJkIGZvY3VzIGhhbG8sIHBlciBUaGUgRm9jdXMgSGFsbyBSdWxlLlxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWN0aXZlIHJvdXRlOiB0aW50ZWQgYmFja2dyb3VuZCBwdWxsZWQgZnJvbSBUcnVzdCBHcmVlbiBmYW1pbHkuXG4gICAgICAgIC8vIExvb2tzIGxpa2UgYSBzb2Z0IFwiYnV0dG9uXCIgb24gdGhlIGRhcmsgc2xhdGUgd2l0aG91dCBhbnkgc2lkZSBzdHJpcGUuXG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcblxuICAgICAgICAgICAgLm5hdi1saW5rLWljb24sXG4gICAgICAgICAgICAubmF2LWxpbmstdGl0bGUge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlY3Rpb24gbGFiZWxzIChpZiBhbnkpIHNpdCBxdWlldGx5LlxuXG4gICAgLm5hdi1zdWJ0aXRsZSxcbiAgICAubmF2LWhlYWRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS00MDApO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGVyKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgfVxuXG4gICAgLy8gRHJvcGRvd24gY2hldnJvbnMgbWF0Y2ggc2Vjb25kYXJ5IHRleHQuXG5cbiAgICAubmF2LWxpbmstdG9nZ2xlLFxuICAgIC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgfVxuXG4gICAgLy8gTmVzdGVkIGRyb3Bkb3duIG1lbnVzIGluc2lkZSB0aGUgc2lkZWJhciBsaWZ0IG9udG8gYSBwYXBlciBzdXJmYWNlIHNvXG4gICAgLy8gc3VibWVudSBjb250ZW50IHJlYWRzIGxpa2UgY29udGVudCwgbm90IG5hdiBjaHJvbWUuXG5cbiAgICAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuXG4gICAgICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXQgdGhlIGRlc2t0b3AgYnJlYWtwb2ludCBUYWJsZXIgcmVuZGVycyB0aGVzZSBpbmxpbmUgKG5vdCBhcyBhXG4gICAgICAgICAgICAvLyBmbG9hdGluZyBwb3BvdmVyKSBhcyBmbGV4IHJvd3Mgd2l0aGluIHRoZSBzYW1lIGZpeGVkLXdpZHRoXG4gICAgICAgICAgICAvLyBzaWRlYmFyIGNvbHVtbiwgc28gYSBsb25nIGxhYmVsIChlLmcuIFwiTGlzdGUgZGVzIGZhY3R1cmVzXG4gICAgICAgICAgICAvLyByw6ljdXJyZW50ZXNcIikgbmVlZHMgdGhlIHNhbWUgc2hyaW5rLXRoZW4tZWxsaXBzaXMgdHJlYXRtZW50IGFzXG4gICAgICAgICAgICAvLyB0aGUgdG9wLWxldmVsIC5uYXYtbGluay10aXRsZSwgb3IgaXQgb3ZlcmZsb3dzIHBhc3QgdGhlIHNpZGViYXJcbiAgICAgICAgICAgIC8vIGVkZ2UgaW5zdGVhZCBvZiB0cnVuY2F0aW5nLlxuXG4gICAgICAgICAgICAuZHJvcGRvd24taXRlbS10aXRsZSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJhZGdlIHtcbiAgICAgICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbGxhcHNlZCBleHBhbmQgdG9nZ2xlIChoYW1idXJnZXIgb24gbW9iaWxlKS5cblxuICAgIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS0yMDApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ncmF5LTYwMCk7XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTW9iaWxlIGhvcml6b250YWwgbmF2YmFyIChyZW5kZXJlZCB3aGVuIHRoZSB2ZXJ0aWNhbCBkcmF3ZXIgY29sbGFwc2VzKS5cblxuLm5hdmJhci5uYXZiYXItdmVydGljYWwubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICBAbWVkaWEgKHdpZHRoIDwgOTkycHgpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNzAwKTtcbiAgICB9XG59XG5cbi8vIFF1b3RlL2F2b2lkOiB3aGVuIHRoZSBzeXN0ZW0gZW5hYmxlcyBkYXJrIG1vZGUgcHJlZmVyZW5jZSwgbGVhdmUgdGhlIGRhcmtcbi8vIHRoZW1lIHRvIFRhYmxlci4gTGlnaHQgb3ZlcnJpZGVzIHNjb3BlIG9ubHkgdG8gZGVmYXVsdCB0aGVtZS5cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcblxuICAgIFtkYXRhLWJzLXRoZW1lPVwiZGFya1wiXSAubmF2YmFyLm5hdmJhci12ZXJ0aWNhbC5uYXZiYXItZGFyayB7XG4gICAgICAgIC8vIEludGVudGlvbmFsbHkgZW1wdHk6IGRlZmVyIHRvIFRhYmxlciBkYXJrIGRlZmF1bHRzIHVudGlsIEF1Z2lhc1xuICAgICAgICAvLyBzaGlwcyBhIGRvY3VtZW50ZWQgZGFyayB0aGVtZS5cbiAgICB9XG59XG4iLCIvKipcbiAqIEF1Z2lhcyDigJQgUGFnZSBIZWFkZXJcbiAqXG4gKiBUYWJsZXIncyBwYWdlIGhlYWRlciBwdXRzIHRoZSB0aXRsZSBpbiBhIGAuY29sYCBhbmQgdGhlIGFjdGlvbiBidXR0b25zIGluIGFcbiAqIGAuY29sLWF1dG9gLCBzaWRlIGJ5IHNpZGUgYXQgZXZlcnkgd2lkdGguIFRoYXQgaG9sZHMgd2hpbGUgdGl0bGVzIGFyZSBzaG9ydCxcbiAqIGJ1dCBvdXIgZG9jdW1lbnQgdmlld3MgdGl0bGUgdGhlbXNlbHZlcyB3aXRoIGEgcGFydHkncyBmdWxsIGNvbXBhbnkgbmFtZSDigJRcbiAqIFwiRm91cm5pdHVyZXMgSW5kdXN0cmllbGxlcyBkdSBOb3JkXCIg4oCUIG5leHQgdG8gdHdvIG9yIHRocmVlIHRyYW5zaXRpb25cbiAqIGJ1dHRvbnMuIE9uIGEgcGhvbmUgdGhlIGJ1dHRvbiBjb2x1bW4gdGFrZXMgd2hhdCBpdCBuZWVkcyBhbmQgbGVhdmVzIHRoZVxuICogdGl0bGUgYSBjb2x1bW4gYmFyZWx5IHdpZGVyIHRoYW4gb25lIHdvcmQsIHdob3NlIHRleHQgdGhlbiBzcGlsbHMgc2lkZXdheXNcbiAqIGFjcm9zcyB0aGUgYnV0dG9ucyBpbnN0ZWFkIG9mIHdyYXBwaW5nIGluc2lkZSBpdHMgb3duIGJveC5cbiAqXG4gKiBCZWxvdyB0aGUgdGFibGV0IGJyZWFrcG9pbnQgdGhlIGJ1dHRvbnMgdGhlcmVmb3JlIHRha2UgYSBmdWxsIGxpbmUgb2YgdGhlaXJcbiAqIG93biB1bmRlciB0aGUgdGl0bGUuIFRoZWlyIGBtcy1hdXRvYCBtYXJnaW4gdGhlbiBoYXMgbm8gZnJlZSBzcGFjZSBsZWZ0IHRvXG4gKiBjb25zdW1lLCBzbyBpdCByZXNvbHZlcyB0byB6ZXJvIGFuZCB0aGUgcm93IHN0YXlzIGxlZnQtYWxpZ25lZC4gVGhlIHRpdGxlXG4gKiBhbHNvIGdldHMgYG92ZXJmbG93LXdyYXBgLCBzaW5jZSBhIGNvbXBhbnkgbmFtZSBjYW4gY2FycnkgYSB3b3JkIGxvbmdlciB0aGFuXG4gKiB0aGUgY29sdW1uIGFuZCB0aGlzIHJvdyBpcyBub3QgYSBzY3JvbGwgY29udGFpbmVyIOKAlCBzdWNoIGEgd29yZCB3b3VsZCBydW5cbiAqIG9mZiB0aGUgdmlld3BvcnQgcmF0aGVyIHRoYW4gb2ZmIHRoZSBib3guXG4gKi9cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLnBhZ2UtaGVhZGVyIC5yb3cgPiAuY29sLWF1dG8ge1xuICAgICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICB9XG5cbiAgICAucGFnZS10aXRsZSB7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgIH1cbn1cbiIsIi8qKlxuICogQXVnaWFzIERlc2lnbiBTeXN0ZW0gLSBGb3JtIFN0eWxlc1xuICpcbiAqIEdlbmVyaWMgZm9ybSBjb21wb25lbnQgc3R5bGVzIGZvciB0aGUgZW50aXJlIGFwcGxpY2F0aW9uLlxuICogVXNlcyBkZXNpZ24gc3lzdGVtIHRva2VucyBmb3IgY29uc2lzdGVudCBzdHlsaW5nLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gQ09OVFJPTCBCQVNFIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1jb250cm9sLFxuLmZvcm0tc2VsZWN0IHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtaW5wdXQtcmFkaXVzKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1pbnB1dC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1pbnB1dC1wYWRkaW5nLXkpIHZhcigtLXN3cC1pbnB1dC1wYWRkaW5nLXgpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtaW5wdXQtZm9jdXMtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLWlucHV0LWZvY3VzLXJpbmcpO1xuICAgIH1cblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gTEFCRUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAvLyBSZXF1aXJlZCBpbmRpY2F0b3JcblxuICAgICYucmVxdWlyZWQ6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAqJztcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBGSUVMRCBXUkFQUEVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWZpZWxkIHtcblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtYm9keS1jb2xvcik7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gSEVMUCBURVhUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWhlbHAsXG4uZm9ybS10ZXh0LFxuLmZvcm0taGVscC10ZXh0IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgIHNtYWxsIHtcbiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVE9HR0xFIFNXSVRDSCAoQ2hlY2tib3ggYXMgU3dpdGNoKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1zd2l0Y2gtZmllbGQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zLTUpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cbn1cblxuLmZvcm0tc3dpdGNoLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5QVVQgV0lUSCBJQ09OIChJbnB1dCBHcm91cHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnB1dC1pY29uLWdyb3VwIHtcblxuICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG5cbiAgICAgICAgICAgIH4gLmlucHV0LWdyb3VwLXRleHQsXG4gICAgICAgICAgICArIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdoZW4gaWNvbiBpcyBvbiB0aGUgbGVmdFxuXG4gICAgLmlucHV0LWdyb3VwLXRleHQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAgICAgKyAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWQUxJREFUSU9OIEJVVFRPTiBJTiBJTlBVVCBHUk9VUFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaW5wdXQtdmFsaWRhdGUtZ3JvdXAge1xuXG4gICAgLmJ0bi12YWxpZGF0ZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBHUk9VUFMgKE5lc3RlZC9Hcm91cGVkIEZpZWxkcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tZ3JvdXAtY2FyZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5mb3JtLWdyb3VwLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1ncm91cC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtYm9keS1jb2xvcik7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1ncm91cC1jb250ZW50IHtcblxuICAgICAgICAubWItMzpsYXN0LWNoaWxkLFxuICAgICAgICAubWItNDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUREUkVTUyBXSURHRVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZHJlc3Mtd2lkZ2V0IHtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBWQUxJREFUSU9OIFNUQVRFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1jb250cm9sLmlzLWludmFsaWQsXG4uZm9ybS1zZWxlY3QuaXMtaW52YWxpZCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDEuNWVtICsgMC43NXJlbSk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMiAxMicgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyBmaWxsPSdub25lJyBzdHJva2U9JyUyM2VmNDQ0NCclM2UlM2NjaXJjbGUgY3g9JzYnIGN5PSc2JyByPSc0LjUnLyUzZSUzY3BhdGggc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgZD0nTTUuOCAzLjZoLjRMNiA2LjV6Jy8lM2UlM2NjaXJjbGUgY3g9JzYnIGN5PSc4LjInIHI9Jy42JyBmaWxsPSclMjNlZjQ0NDQnIHN0cm9rZT0nbm9uZScvJTNlJTNjL3N2ZyUzZVwiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNhbGMoMC4zNzVlbSArIDAuMTg3NXJlbSkgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSkgY2FsYygwLjc1ZW0gKyAwLjM3NXJlbSk7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctZGFuZ2VyKTtcbiAgICB9XG59XG5cbi5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsXG4uZm9ybS1zZWxlY3QuaXMtdmFsaWQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiKDE2IDE4NSAxMjkgLyAxNSUpO1xuICAgIH1cbn1cblxuLmludmFsaWQtZmVlZGJhY2sge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbn1cblxuLnZhbGlkLWZlZWRiYWNrIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGSUxFIFVQTE9BRCAvIERST1BaT05FIFNUWUxJTkdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZpbGUtdXBsb2FkLWFyZWEge1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJi5kcmFnb3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAudXBsb2FkLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnVwbG9hZC10ZXh0IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgfVxuXG4gICAgLnVwbG9hZC1oaW50IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vIFN5bWZvbnkgVVggRHJvcHpvbmUgc3R5bGluZ1xuXG4uZHJvcHpvbmUge1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgIG1pbi1oZWlnaHQ6IGF1dG87XG5cbiAgICAmOmhvdmVyLFxuICAgICYuZHJvcHpvbmUtZHJhZ292ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUNUSU9OIFRJVExFUyAoRm9yIG9yZ2FuaXplZCBmb3Jtcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICBzdmcsXG4gICAgaSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gQUNUSU9OUyAoQ2FyZCBmb290ZXIgd2l0aCBidXR0b25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFN0YW5kYXJkIEZvcm0gQWN0aW9ucyBQYXR0ZXJuOlxuICpcbiAqIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICog4pSCIFtDYW5jZWwgKGdob3N0KV0gICAgICAgICAgICAgICAgICAgICAgW1NhdmUgKHByaW1hcnkgKyBpY29uKV3ilIJcbiAqIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuICpcbiAqIC0gQ2FuY2VsOiBMZWZ0IHNpZGUgT1IgZ2hvc3Qgc3R5bGVcbiAqIC0gU2F2ZTogUmlnaHQgc2lkZSwgcHJpbWFyeSBzdHlsZSwgd2l0aCBzYXZlIGljb25cbiAqL1xuXG4uZm9ybS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAvLyBXaGVuIHVzZWQgaW4gYSBjYXJkIGZvb3RlclxuXG4gICAgLmNhcmQtZm9vdGVyICYge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBTcHJlYWQgYnV0dG9ucyAoY2FuY2VsIGxlZnQsIHNhdmUgcmlnaHQpXG5cbiAgICAmLmZvcm0tYWN0aW9ucy1zcHJlYWQge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTkxJTkUgRk9STVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSE9SSVpPTlRBTCBGT1JNXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWhvcml6b250YWwge1xuXG4gICAgLmZvcm0tZ3JvdXAsXG4gICAgLm1iLTMsXG4gICAgLm1iLTQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDIwMHB4IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTVBBQ1QgRk9STVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1jb21wYWN0IHtcblxuICAgIC5tYi0zLFxuICAgIC5tYi00IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHTE9CQUwgQlVUVE9OIEVOSEFOQ0VNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBUYWJsZXIncyAuYnRuIGFscmVhZHkgc2V0cyBkaXNwbGF5OiBpbmxpbmUtZmxleCBhbmQgYWxpZ24taXRlbXM6IGNlbnRlcixcbi8vIGJ1dCBkb2VzIG5vdCBzZXQgZ2FwLiBBZGQgY29uc2lzdGVudCBzcGFjaW5nIGJldHdlZW4gaWNvbiBhbmQgdGV4dC5cblxuLmJ0biB7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElDT04gQlVUVE9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYnRuLWljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cbn1cblxuLmJ0bi1naG9zdC1kYW5nZXIge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctZGFuZ2VyKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQiBOQVZJR0FUSU9OIElOIENBUkQgSEVBREVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZWR1Y2UgZm9udCBzaXplIGZvciB0YWJzIGluIGNhcmQgaGVhZGVyc1xuXG4uY2FyZC1oZWFkZXItdGFicyAubmF2LWxpbmsge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgQURKVVNUTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQm9vdHN0cmFwIDUgZG9lcyBub3QgaW5jbHVkZSBhIDUwMC13ZWlnaHQgdXRpbGl0eTsgYWRkIGl0IGhlcmUgYXMgYSBzaGFyZWQgdXRpbGl0eS5cblxuLmZ3LW1lZGl1bSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG5cbiAgICAuZm9ybS1zd2l0Y2gtZmllbGQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLmZvcm0tc3dpdGNoLXdyYXBwZXIge1xuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAxLjEyNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWdyb3VwLWNhcmQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tYWN0aW9ucyB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBDb21wYW55IFBhZ2VzIFN0eWxlc1xuICpcbiAqIFN0eWxlcyBmb3IgY29tcGFueSBzZWxlY3Rpb24gYW5kIGNyZWF0aW9uIHBhZ2VzXG4gKiBBbGwgc3R5bGVzIGFyZSBzY29wZWQgdG8gLmNvbXBhbnktc2VsZWN0LXBhZ2UgYW5kIC5jb21wYW55LWNyZWF0ZS1wYWdlXG4gKiB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBwYWdlcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTaGFyZWQgU3R5bGVzIChib3RoIHNlbGVjdCBhbmQgY3JlYXRlIHBhZ2VzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29tcGFueS1zZWxlY3QtcGFnZSxcbi5jb21wYW55LWNyZWF0ZS1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAvLyBBcHBsaWNhdGlvbiBIZWFkZXJcblxuICAgIC5jb21wYW55LXBhZ2UtaGVhZGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteHMpO1xuICAgIH1cblxuICAgIC5jb21wYW55LXBhZ2UtbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb21wYW55LXBhZ2UtYnJhbmQge1xuXG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQYWdlIGludHJvIHNlY3Rpb24gKHVzZWQgYnkgYm90aCBzZWxlY3QgYW5kIGNyZWF0ZSBwYWdlcylcblxuICAgIC5jb21wYW55LXBhZ2UtaW50cm8ge1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYXZhdGFyLW1kIHtcbiAgICAgICAgd2lkdGg6IDIuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYXZhdGFyLWxnIHtcbiAgICAgICAgd2lkdGg6IDMuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjVyZW07XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYXZhdGFyLTJ4bCB7XG4gICAgICAgIHdpZHRoOiA0cmVtO1xuICAgICAgICBoZWlnaHQ6IDRyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG5cbiAgICAuYXZhdGFyLXhsIHtcbiAgICAgICAgd2lkdGg6IDVyZW07XG4gICAgICAgIGhlaWdodDogNXJlbTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5hdmF0YXItaW5pdGlhbHMge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cblxuICAgIC5mb3JtLWhpbnQge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIGFkanVzdG1lbnRzXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgICAgIC5hdmF0YXItbGcge1xuICAgICAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDNyZW07XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmF2YXRhci0yeGwge1xuICAgICAgICAgICAgd2lkdGg6IDNyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDNyZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuaDIsIGgyIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wYW55IFNlbGVjdGlvbiBQYWdlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb21wYW55LXNlbGVjdC1wYWdlIHtcbiAgICAvLyBNYWluIENhcmQgQ29udGFpbmVyXG5cbiAgICAuY2FyZC5zaGFkb3ctc20ge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICB9XG5cbiAgICAvLyBDb21wYW55IENhcmRzXG5cbiAgICAuY2FyZC1jb21wYW55IHtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tc3dwLXRyYW5zaXRpb24tYWxsKTtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14bCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAgICAgLmNvbXBhbnktYXJyb3cge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb21wYW55LWF2YXRhciB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgICAgIC5hdmF0YXIge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdmF0YXIgd2l0aCBsb2dvIGltYWdlXG5cbiAgICAgICAgLmF2YXRhciBpbWcge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZhdGFyIHdpdGggaW5pdGlhbHMgLSBmb3JjZSBzb2xpZCBwcmltYXJ5IGJhY2tncm91bmRcblxuICAgICAgICAuYXZhdGFyLmJnLXByaW1hcnkge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdmF0YXIgaW5pdGlhbHMgdGV4dCAtIGZvcmNlIHdoaXRlIGNvbG9yXG5cbiAgICAgICAgLmF2YXRhci1pbml0aWFscyxcbiAgICAgICAgLmF2YXRhci5iZy1wcmltYXJ5IHNwYW4ge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbXBhbnktYXJyb3cge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXN3cC1kdXJhdGlvbi1iYXNlKSB2YXIoLS1zd3AtZWFzZS1pbi1vdXQpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAubWluLXctMCB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgQ29tcGFueSBDYXJkXG5cbiAgICAuY2FyZC1jcmVhdGUtY29tcGFueSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNSkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wMikgMTAwJSk7XG4gICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tc3dwLXRyYW5zaXRpb24tYWxsKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA4KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA0KSAxMDAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC53LW1kLWF1dG8ge1xuICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPj0gNzY4cHgpIHtcblxuICAgICAgICAudy1tZC1hdXRvIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbXBhbnkgQ3JlYXRpb24gUGFnZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29tcGFueS1jcmVhdGUtcGFnZSB7XG5cbiAgICAuZm9ybS1zbW9vdGgge1xuXG4gICAgICAgIC5mb3JtLWNvbnRyb2w6Zm9jdXMsXG4gICAgICAgIC5mb3JtLXNlbGVjdDpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMjVyZW0gcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgIH1cblxuICAgIC5hbGVydCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgICAmLmFsZXJ0LWluZm8ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjA4KTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hbGVydC13YXJuaW5nIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLXdhcm5pbmctcmdiKSwgMC4wOCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXdhcm5pbmctcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWxlcnQtc3VjY2VzcyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDgpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYnRuLXByaW1hcnkge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMWVtO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU2V0dGluZ3MgUGFnZSBTdHlsZXNcbiAqIE9ubHkgY3VzdG9tIHN0eWxlcyB0aGF0IGNhbid0IGJlIGFjaGlldmVkIHdpdGggQm9vdHN0cmFwL1RhYmxlciB1dGlsaXRpZXNcbiAqL1xuXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNldHRpbmdzIFBhZ2UgQ29udGFpbmVyIC0gTWF4LXdpZHRoIGNlbnRlcmluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2V0dGluZ3MtcGFnZSB7XG4gICAgbWF4LXdpZHRoOiA5MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cblxuLy8gTW9iaWxlOiBob3Jpem9udGFsIHNjcm9sbGluZyB0YWJzXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcblxuICAgIC5zZXR0aW5ncy1wYWdlID4gLm5hdi11bmRlcmxpbmUge1xuICAgICAgICBtYXJnaW4tbGVmdDogLTFyZW07XG4gICAgICAgIG1hcmdpbi1yaWdodDogLTFyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1pdGVtIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXR0aW5ncyBDYXJkIC0gcGFwZXItb24tZGVzayBzdXJmYWNlIHBlciBkZXNpZ24gc3lzdGVtXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZXR0aW5ncy1jb250ZW50LWNhcmQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG5cbiAgICA+IC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS04KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICA+IC5jYXJkLWZvb3RlciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZWN0aW9uIGJsb2NrcyBpbnNpZGUgdGhlIGNhcmQgdXNlIGxpZ2h0ZXIgZGl2aWRlcnMgc28gdGhlIHBhZ2UgcmVhZHMgYXNcbiAgICAvLyBhIHNpbmdsZSBxdWlldCBzdXJmYWNlLCBub3QgZml2ZSBzdGFja2VkIGNhcmRzLlxuXG4gICAgLmNhcmQtYm9keSA+IC5ib3JkZXItYm90dG9tIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCkgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvLyBTZWN0aW9uIGhlYWRpbmc6IG1hdGNoIHRoZSBkZXNpZ24gc3lzdGVtIHRpdGxlIHNjYWxlIGFuZCBsZXQgdGhlIGljb25cbiAgICAvLyBiZSBhIHNsYXRlIGFjY2VudCByYXRoZXIgdGhhbiBhIGZpZnRoIGdyZWVuIGVsZW1lbnQgb24gdGhlIHBhZ2UuXG5cbiAgICAuY2FyZC1ib2R5IGgzIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG5cbiAgICAgICAgPiBzdmcge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhlbHBlciBwYXJhZ3JhcGhzIHNpdCB1bmRlciBoZWFkaW5nczsgY2FwIHRoZWlyIHJlYWRpbmcgd2lkdGguXG5cbiAgICAuY2FyZC1ib2R5IGgzICsgcC50ZXh0LW11dGVkIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2NWNoO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTG9nbyBVcGxvYWQgLSBDdXN0b20gZHJvcHpvbmUgc3R5bGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubG9nby11cGxvYWQtY2FyZCB7XG5cbiAgICAubG9nby1wcmV2aWV3LWZyYW1lIHtcbiAgICAgICAgd2lkdGg6IDgwcHg7XG4gICAgICAgIGhlaWdodDogODBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UyZThmMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZHJvcHpvbmUge1xuICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgI2NiZDVlMTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICYuZHJvcHpvbmUtZHJhZ292ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEYW5nZXIgWm9uZSAtIHNlcmlvdXMsIG5vdCB0aGVhdHJpY2FsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZXR0aW5ncy1kYW5nZXItem9uZSAuY2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgICAgIC5jYXJkLXRpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlbGV0ZSBDb21wYW55IE1vZGFsIC0gRW5oYW5jZWQgc3R5bGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4jZGVsZXRlQ29tcGFueU1vZGFsIHtcblxuICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMjUlKTtcbiAgICB9XG5cbiAgICAuZm9udC1tb25vc3BhY2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmMmYyO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ3VzdG9tIEZpZWxkcyAtIFJlb3JkZXJhYmxlIGxpc3Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmN1c3RvbS1maWVsZC1saXN0IHtcblxuICAgIC5jdXN0b20tZmllbGQtcm93IHtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxMjBtcyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIgLmN1c3RvbS1maWVsZC1oYW5kbGUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgICAgIH1cblxuICAgICAgICAmLnNvcnRhYmxlLWdob3N0IHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiLCA5OSAxMDIgMjQxKSwgMC4wNik7XG4gICAgICAgIH1cblxuICAgICAgICAmLnNvcnRhYmxlLWNob3NlbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiwgOTkgMTAyIDI0MSksIDAuMDQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmN1c3RvbS1maWVsZC1oYW5kbGUge1xuICAgICAgICBjdXJzb3I6IGdyYWI7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLW11dGVkLCAjOTRhM2I4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG5cbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgY3Vyc29yOiBncmFiYmluZztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgU3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuc2V0dGluZ3MtcGFnZSB7XG5cbiAgICAgICAgLm5hdi11bmRlcmxpbmUsXG4gICAgICAgIC5zZXR0aW5ncy1kYW5nZXItem9uZSxcbiAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVzaWduIHRlbXBsYXRlIHBpY2tlciAoU2V0dGluZ3MgPiBEZXNpZ24pXG4vLyBTZWxmLWNvbnRhaW5lZDogZG9lcyBub3QgcmVseSBvbiBUYWJsZXIncyBmb3JtLWltYWdlY2hlY2sgY29tcG9uZW50LiBUaGVcbi8vIHJhZGlvIGlzIHZpc3VhbGx5IGhpZGRlbiBhbmQgdG9nZ2xlZCB0aHJvdWdoIGl0cyB3cmFwcGluZyA8bGFiZWw+OyB0aGVcbi8vIHNlbGVjdGVkIHN0YXRlIHNob3dzIGFzIGEgcHJpbWFyeSBib3JkZXIgb24gdGhlIGNhcmQgcGx1cyBhIGNoZWNrIGJhZGdlLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udGVtcGxhdGUtcGlja2VyIHtcblxuICAgIC50ZW1wbGF0ZS1waWNrZXItY2FyZCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cbiAgICAgICAgJjpoYXMoLnRlbXBsYXRlLXBpY2tlci1pbnB1dDpjaGVja2VkKSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSwgIzIwNmJjNCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiLCAzMiwgMTA3LCAxOTYpLCAwLjI1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKC50ZW1wbGF0ZS1waWNrZXItaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiwgMzIsIDEwNywgMTk2KSwgMC41KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItb3B0aW9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLy8gVmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgZm9ybS1zdWJtaXR0YWJsZSBhbmQgZm9jdXNhYmxlOyBjbGlja3Mgb25cbiAgICAvLyB0aGUgbGFiZWwgKHRodW1ibmFpbCkgdG9nZ2xlIGl0IG5hdGl2ZWx5LlxuXG4gICAgLy8gVGhlIHRoZW1lIHdyYXBzIHRoZSByYWRpbyBpbiBhIC5mb3JtLWNoZWNrIHRoYXQgd291bGQgdGFrZSBhIGxpbmUgb2YgaXRzIG93bi5cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItb3B0aW9uID4gLmZvcm0tY2hlY2sge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLWlucHV0IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItdGh1bWIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiA0IC8gMztcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1iZy1zdXJmYWNlLXNlY29uZGFyeSwgI2YxZjVmOSk7XG5cbiAgICAgICAgaWZyYW1lIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogNDAwJTtcbiAgICAgICAgICAgIGhlaWdodDogNDAwJTtcbiAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4yNSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG5cbiAgICAgICAgICAgIC8vIFRoZSBpZnJhbWUgbXVzdCBuZXZlciBzd2FsbG93IGNsaWNrcyBtZWFudCBmb3IgdGhlIGxhYmVsLlxuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBiYWRnZSBpbiB0aGUgdGh1bWJuYWlsIGNvcm5lciwgb25seSB3aGlsZSBzZWxlY3RlZC5cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItY2hlY2sge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMC41cmVtO1xuICAgICAgICByaWdodDogMC41cmVtO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEuNzVyZW07XG4gICAgICAgIGhlaWdodDogMS43NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXByaW1hcnksICMyMDZiYzQpO1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigxNSAyMyA0MiAvIDI1JSk7XG4gICAgfVxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci1vcHRpb246aGFzKC50ZW1wbGF0ZS1waWNrZXItaW5wdXQ6Y2hlY2tlZCkgLnRlbXBsYXRlLXBpY2tlci1jaGVjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuXG4gICAgJi50ZW1wbGF0ZS1waWNrZXItZGlzYWJsZWQge1xuXG4gICAgICAgIC50ZW1wbGF0ZS1waWNrZXItb3B0aW9uIHtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAudGVtcGxhdGUtcGlja2VyLXRodW1iIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRUxFQ1RST05JQyBJTlZPSUNJTkcgUEFORUwgLSBsZWFkcyB0aGUgaW52b2ljZSB0YWIsIHN3aXRjaCBpbiB0aGUgaGVhZGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5laW52b2ljaW5nLXBhbmVsIHtcbiAgICBib3JkZXItd2lkdGg6IDJweDtcblxuICAgIC5laW52b2ljaW5nLXBhbmVsLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMS4yNXJlbTtcbiAgICB9XG5cbiAgICAvLyBBIHRpbnQgb25seTogYmctKi1sdCB3b3VsZCBhbHNvIGNvbG91ciB0aGUgaGVhZGVyJ3MgdGV4dC5cbiAgICBAZWFjaCAkdG9uZSBpbiAocHJpbWFyeSwgc3VjY2Vzcywgd2FybmluZykge1xuICAgICAgICAmLmVpbnZvaWNpbmctcGFuZWwtI3skdG9uZX0gLmVpbnZvaWNpbmctcGFuZWwtaGVhZGVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLSN7JHRvbmV9LXJnYiksIDAuMDgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVpbnZvaWNpbmctcGFuZWwtc3dpdGNoIHtcblxuICAgICAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAzLjI1cmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAxLjc1cmVtO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIEF1Z2lhcyBEYXNoYm9hcmQgU3R5bGVzXG4gKlxuICogU3R5bGVzIGZvciB0aGUgcmVkZXNpZ25lZCBkYXNoYm9hcmQgaW5jbHVkaW5nIGhlcm8gc3RhdHMsXG4gKiBjaGFydHMsIGF0dGVudGlvbiByZXF1aXJlZCBzZWN0aW9uLCBxdWljayBhY3Rpb25zLCBhbmQgYWN0aXZpdHkgZmVlZC5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVSTyBTVEFUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGhlIGZvdXIgZmlndXJlcyB1c2VkIHRvIGJlIG9uZSB3aWRnZXQgb24gYSBwcml2YXRlIG5pbmUtdHJhY2sgZ3JpZCwgd2hlcmUgYW5cbi8vIG9yZGluYXJ5IHRpbGUgc3Bhbm5lZCB0d28gdHJhY2tzIGFuZCB0aGUgdXJnZW50IG9uZSB0aHJlZS4gVGhleSBhcmUgZm91clxuLy8gd2lkZ2V0cyBub3csIHNvIHRoZXkgc2l0IG9uIHRoZSB6b25lJ3MgZ3JpZCBsaWtlIGV2ZXJ5dGhpbmcgZWxzZSBhbmQgdGhlaXJcbi8vIHdpZHRocyBjb21lIGZyb20gdGhlIGxheW91dDogdGhlIGFzeW1tZXRyeSB0aGF0IGdyaWQgZXhpc3RlZCB0byBwcm9kdWNlIGlzXG4vLyBzb21ldGhpbmcgdGhlIHVzZXIgYXJyYW5nZXMsIG5vdCBzb21ldGhpbmcgdGhpcyBmaWxlIGRlY2lkZXMuXG5cbi5zdGF0LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBObyBob3ZlciB0cmVhdG1lbnQ6IHRoZSB0aWxlIGlzIGFuIGluZXJ0IGRpdiB3aXRoIG5vIGxpbmsgYW5kIG5vIGhhbmRsZXIuXG4gICAgLy8gTm90aGluZyBoZXJlIHRyYW5zaXRpb25zLCBzbyB0aGVyZSBpcyBub3RoaW5nIGZvciByZWR1Y2VkLW1vdGlvbiB0byB1bmRvLlxuXG4gICAgLy8gU3RhdGUgaXMgY2FycmllZCBieSB0aGUgaWNvbiB0aW50LCB0aGUgdmFsdWUgY29sb3VyIGFuZCB0aGUgc3VyZmFjZSB0aW50LlxuICAgIC8vIE5ldmVyIGEgc2lkZSBzdHJpcGUsIG5ldmVyIGEgZ2xvdy5cbiAgICAvLyBUaGUgdGludCBsaXZlcyBvbiAtLWRhbmdlciBhbG9uZSwgbmV2ZXIgb24gLS11cmdlbnQuIC0tdXJnZW50IGlzIGFwcGxpZWRcbiAgICAvLyB1bmNvbmRpdGlvbmFsbHkgdG8gaG9sZCB0aGUgZ3JpZCB0cmFjaywgc28gdGludGluZyBpdCB3b3VsZCBwYWludCBhIHJlZFxuICAgIC8vIGNhcmQgZm9yIGEgdXNlciB3aXRoIHplcm8gb3ZlcmR1ZSBpbnZvaWNlczogdGhlIHNhbWUgZGVmZWN0IGFzIHJlbmRlcmluZ1xuICAgIC8vIGEgJDAuMDAgdG90YWwgaW4gc3VjY2VzcyBncmVlbiwgbWlycm9yZWQuXG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgIH1cblxuICAgIC8vIFwiT3ZlcmR1ZVwiIGlzIHRoZSBvbmx5IGFjdGlvbmFibGUgbnVtYmVyIGluIHRoZSByb3csIHNvIGl0IG11c3Qgbm90IHJlYWQgYXNcbiAgICAvLyBpbnRlcmNoYW5nZWFibGUgd2l0aCB0aGUgdG90YWxzIGJlc2lkZSBpdDogYSBmdWxsIHR5cGUgc3RlcCBsYXJnZXIgYXRcbiAgICAvLyBldmVyeSB3aWR0aC4gSXQgdXNlZCB0byBiZSBoYWxmIGFnYWluIGFzIHdpZGUgYXMgd2VsbCwgd2hpY2ggaXMgbm93IHRoZVxuICAgIC8vIHRpbGUncyBzdG9yZWQgd2lkdGggYW5kIHRoZXJlZm9yZSB0aGUgdXNlcidzIHRvIGtlZXAgb3IgdW5kby5cblxuICAgICYtLXVyZ2VudCB7XG5cbiAgICAgICAgLnN0YXQtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0zeGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc3RhdC1jYXJkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5zdGF0LWljb24ge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxufVxuXG4uc3RhdC1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc3RhdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG59XG5cbi5zdGF0LXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXRpZ2h0KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXG4gICAgLy8gR3JlZW4gbWVhbnMgXCJQYWlkXCIuIEEgbGlmZXRpbWUgcmV2ZW51ZSBhZ2dyZWdhdGUgaXMgbm90IGEgcGF5bWVudCBzdGF0ZSxcbiAgICAvLyBzbyB0aGVyZSBpcyBubyBgLS1zdWNjZXNzYCBoZXJlOyBwYWlkIHNlbWFudGljcyBsaXZlIGluIGAubW9uZXktLXBhaWRgLlxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIFRoZSB0aWxlIGFscmVhZHkgY2FycmllcyB0aGUgZW1waGFzaXM6IGAuc3RhdC12YWx1ZWAgaXMgdGhlIGxhcmdlc3QgdGV4dCBpblxuICAgIC8vIHRoZSBjYXJkLiBgLm1vbmV5LS10b3RhbGAgc3RlcHBpbmcgaXQgdXAgYW5vdGhlciAxMi41JSBvbiB0b3Agb2YgdGhhdCBpcyB3aGF0XG4gICAgLy8gcHVzaGVkIFwiVVNEIDEyMCw4ODIuMTlcIiBwYXN0IHRoZSBjYXJkIGVkZ2Ugb24gYSBzcGFuLTIgdGlsZS4gVGhlIG1vZGlmaWVyIGlzXG4gICAgLy8ga2VwdCBmb3IgaXRzIHdlaWdodCwgd2hpY2ggdGhlIHRpbGUgc3RpbGwgd2FudHM7IG9ubHkgdGhlIHNpemUgc3RlcCBpcyB1bmRvbmUuXG4gICAgLy8gYC5tb25leWAgaXMgYHdoaXRlLXNwYWNlOiBub3dyYXBgIGJ5IGRlc2lnbiAoYSBjdXJyZW5jeSBjb2RlIG11c3QgbmV2ZXIgYmVcbiAgICAvLyBvcnBoYW5lZCBmcm9tIGl0cyBudW1iZXIpLCBzbyBhbiBhbW91bnQgdGhhdCBkb2VzIG5vdCBmaXQgb3ZlcmZsb3dzIHJhdGhlclxuICAgIC8vIHRoYW4gd3JhcHBpbmcuIFdpZHRoIGhhcyB0byBiZSB3b24gYmFjayBoZXJlLCBub3QgYWJzb3JiZWQgYXQgcmVuZGVyIHRpbWUuXG5cbiAgICAubW9uZXktLXRvdGFsIC5tb25leS1hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICB9XG59XG5cbi5zdGF0LXN1YnZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDSEFSVCBDT05UQUlORVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWNvbnRhaW5lciB7XG4gICAgbWluLWhlaWdodDogMjgwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZGFzaGJvYXJkLXJldmVudWUtY2hhcnQge1xuICAgIGhlaWdodDogMjgwcHggIWltcG9ydGFudDtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jb250YWluZXIge1xuICAgIG1pbi1oZWlnaHQ6IDI4MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtY2hhcnQge1xuICAgIGhlaWdodDogMjgwcHggIWltcG9ydGFudDtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jZW50ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG5cbiAgICAvLyBDaGFydC5qcyBwYWludHMgdGhlIGxlZ2VuZCBpbnNpZGUgdGhlIGNhbnZhcyBhbG9uZyBpdHMgYm90dG9tIGVkZ2UsIHNvIHRoZVxuICAgIC8vIHJpbmcncyBjZW50cmUgc2l0cyBhIGxpdHRsZSBhYm92ZSB0aGUgY29udGFpbmVyJ3MgbWlkcG9pbnQuIFRoaXMgbnVkZ2VcbiAgICAvLyBjb21wZW5zYXRlcy4gSXQgaXMgYSBmaXhlZCBkaXN0YW5jZSByYXRoZXIgdGhhbiBhIHBlcmNlbnRhZ2Ugb2YgdGhpc1xuICAgIC8vIGVsZW1lbnQncyBvd24gaGVpZ2h0LCBzbyBjaGFuZ2luZyB0aGUgdG90YWwncyB0eXBlIHNpemUgb3Igd3JhcHBpbmcgaXRzXG4gICAgLy8gbGFiZWwgY2FuIG5vIGxvbmdlciBkcmFnIHRoZSBudW1iZXIgb2ZmIHRoZSByaW5nJ3MgY2VudHJlLlxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIGNhbGMoLTUwJSAtIHZhcigtLXN3cC1zcGFjZS0xLTUpKSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtdG90YWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgLy8gRGVtb3RlZCBmcm9tIDMycHg6IHRoZSBsZWFzdCBhY3Rpb25hYmxlIHdpZGdldCBvbiB0aGUgcGFnZSBzaG91bGQgbm90IG93blxuICAgIC8vIGl0cyBsYXJnZXN0IG51bWJlci4gVGhhdCBub3cgYmVsb25ncyB0byB0aGUgb3ZlcmR1ZSBjb3VudC5cbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLmRhc2hib2FyZC1kb251dC1sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZXIpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5LWljb24ge1xuICAgIC8vIFdhcyBgLS1zd3AtdGV4dC1saWdodGAgKDIuNTY6MSBvbiBzdXJmYWNlKTogdGVjaG5pY2FsbHkgZGVjb3JhdGlvbiwgYnV0XG4gICAgLy8gY2xvc2UgZW5vdWdoIHRvIGludmlzaWJsZSB0aGF0IGl0IHJlYWQgYXMgYSByZW5kZXJpbmcgZmF1bHQuIGAtLXRleHQtbXV0ZWRgXG4gICAgLy8gY2xlYXJzIDEuNC4xMSBmb3IgYSBtZWFuaW5nZnVsIGdyYXBoaWMgYW5kIHN0aWxsIHNpdHMgYSBzdGVwIGxpZ2h0ZXIgdGhhblxuICAgIC8vIHRoZSB0ZXh0IGJlbG93IGl0LCBzbyB0aGUgaWNvbiBzdXBwb3J0cyB0aGUgbWVzc2FnZSBpbnN0ZWFkIG9mIGxlYWRpbmcgaXQuXG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZW1wdHktdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyBBIGZhaWxlZCBxdWVyeSBpcyBub3QgYW4gZW1wdHkgYWNjb3VudCwgYW5kIG11c3QgbmV2ZXIgaW1wZXJzb25hdGUgb25lLiBUaGVcbi8vIGVtcHR5IHN0YXRlIGFib3ZlIGlzIGNhbG0gYW5kIGVuY291cmFnaW5nOyB0aGlzIG9uZSBuYW1lcyBhIHByb2JsZW0gYW5kIG9mZmVyc1xuLy8gYSB3YXkgb3V0IG9mIGl0LiBDb2xvdXIgYW1wbGlmaWVzIHRoZSBkaXN0aW5jdGlvbiwgaXQgbmV2ZXIgY2FycmllcyBpdCBhbG9uZTpcbi8vIHRoZSB0ZXh0IGxhYmVsIGRvZXMgdGhhdC5cblxuLmRhc2hib2FyZC1jaGFydC1lcnJvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmRhc2hib2FyZC1jaGFydC1lcnJvci1pY29uIHtcbiAgICAvLyBDb250YWluZWQgaW4gYSB0aW50ZWQgbWVkYWxsaW9uLCB1bmxpa2UgdGhlIGVtcHR5IHN0YXRlJ3MgYmFyZSBpY29uLiBUaGlzXG4gICAgLy8gaXMgdGhlIHNhbWUgXCJzdGF0ZSBtZWRhbGxpb25cIiBzaGFwZSBgLmF0dGVudGlvbi1lbXB0eS1pY29uYCBhbHJlYWR5IHVzZXMsXG4gICAgLy8gc28gdGhlIHR3byBzdGF0ZXMgYXJlIHRvbGQgYXBhcnQgYnkgZm9ybSBiZWZvcmUgY29sb3VyIGlzIHJlYWQgYXQgYWxsLlxuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItdGl0bGUge1xuICAgIC8vIEhlYXZpZXIgYW5kIGRhcmtlciB0aGFuIGAuZGFzaGJvYXJkLWNoYXJ0LWVtcHR5LXRleHRgOiBhIHN0YXRlbWVudCBvZiB3aGF0XG4gICAgLy8gd2VudCB3cm9uZywgbm90IGEgc2hydWcuXG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWF4LXdpZHRoOiA0MmNoO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVRURU5USU9OIFJFUVVJUkVEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYXR0ZW50aW9uLWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYXR0ZW50aW9uLWVtcHR5LWljb24ge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmF0dGVudGlvbi1lbXB0eS10ZXh0IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmF0dGVudGlvbi1zZWN0aW9uIHtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctaG92ZXIpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmF0dGVudGlvbi1iYWRnZSB7XG4gICAgLy8gV2FzIDExcHgsIG9mZi1yYW1wLiBCYWRnZSB0ZXh0IGlzIHRoZSBkb2N1bWVudGVkIExhYmVsIHN0ZXAgKDEycHgpLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctaG92ZXIpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxuXG4gICAgJi0tcHJpbWFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24taXRlbXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC8vIFRoZSByb3dzIGZvbGxvdyB0aGUgd2lkdGggb2YgdGhlaXIgY2FyZCwgbm90IG9mIHRoZSBzY3JlZW46IGEgY2FyZCBpc1xuICAgIC8vIGp1c3QgYXMgbmFycm93IGluIGEgdGhyZWUtY29sdW1uIGRhc2hib2FyZCBhcyBvbiBhIHBob25lLlxuICAgIGNvbnRhaW5lci10eXBlOiBpbmxpbmUtc2l6ZTtcbn1cblxuLmF0dGVudGlvbi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gT25lIG9mIHRoZSBBdHRlbnRpb24gcm93cyB3cml0ZXMgaW5zdGVhZCBvZiBuYXZpZ2F0aW5nIOKAlCBjcmVhdGluZyBhblxuLy8gYWNjb3VudGluZyBwZXJpb2Qg4oCUIHNvIGl0IGlzIGEgc3VibWl0IGJ1dHRvbiBpbnNpZGUgYSBmb3JtIHJhdGhlciB0aGFuIGFuXG4vLyBhbmNob3IuIFRoZXNlIHR3byBydWxlcyBhcmUgd2hhdCBzdG9wIHRoZSBicm93c2VyJ3Mgb3duIGJ1dHRvbiBjaHJvbWUgZnJvbVxuLy8gbWFraW5nIGl0IGxvb2sgbGlrZSBhIGRpZmZlcmVudCBraW5kIG9mIHRoaW5nIHRvIHRoZSByb3dzIGFib3ZlIGl0LlxuXG4uYXR0ZW50aW9uLWl0ZW0tZm9ybSB7XG4gICAgZGlzcGxheTogY29udGVudHM7XG59XG5cbi5hdHRlbnRpb24taXRlbS0tYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0tbWFpbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBmbGV4OiAxO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0taWQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbn1cblxuLmF0dGVudGlvbi1pdGVtLWNsaWVudCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0tbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0tYW1vdW50IHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0tZGF0ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyBJbiBhIG5hcnJvdyBjYXJkLCBmb3VyIHRoaW5ncyBvbiBvbmUgbGluZSBsZWZ0IGFuIGludm9pY2UgbnVtYmVyIGJyb2tlblxuLy8gb3ZlciB0aHJlZSBsaW5lcyBhbmQgZXZlcnkgY2xpZW50IGN1dCB0byBpdHMgZmlyc3Qgd29yZC4gRWFjaCBzaWRlIHN0YWNrc1xuLy8gaW5zdGVhZDogbnVtYmVyIG92ZXIgY2xpZW50LCBhbW91bnQgb3ZlciBkYXRlLlxuQGNvbnRhaW5lciAod2lkdGggPCA0ODBweCkge1xuXG4gICAgLmF0dGVudGlvbi1pdGVtLW1haW4ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAwO1xuICAgIH1cblxuICAgIC5hdHRlbnRpb24taXRlbS1jbGllbnQge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmF0dGVudGlvbi1pdGVtLW1ldGEge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUlDSyBBQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucXVpY2stYWN0aW9ucy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5xdWljay1hY3Rpb24tYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXNlY29uZGFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zZWNvbmRhcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2Vjb25kYXJ5LWRhcmspO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXNlY29uZGFyeS1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mby1ob3Zlcik7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1zdWNjZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1ob3Zlcik7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgICAgICYsXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnF1aWNrLWFjdGlvbi1pY29uIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ucXVpY2stYWN0aW9uLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElWSVRZIFRJTUVMSU5FXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi5hY3Rpdml0eS10aW1lbGluZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uYWN0aXZpdHktaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWljb24ge1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiAycHg7XG5cbiAgICAmLS1wYXltZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cblxuICAgICYtLWludm9pY2UsXG4gICAgJi0taW52b2ljZV9zZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXF1b3RlX2FjY2VwdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cblxuICAgICYtLXF1b3RlX2RlY2xpbmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS1yZWN1cnJpbmdfZ2VuZXJhdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmFjdGl2aXR5LWRlc2NyaXB0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cblxuLmFjdGl2aXR5LXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgLy8gV2FzIDE0cHgsIG9mZi1yYW1wLiBCb2R5IGlzIDE1cHgsIGFuZCBpdCBwYWlycyB3aXRoIHRoZSAxM3B4IG1vbm8gZG9jLWxpbmtcbiAgICAvLyBuZXN0ZWQgaW5zaWRlIGl0IGV4YWN0bHkgYXMgdGhlIHJhbXAgaW50ZW5kcy4gSXQgYWxzbyBrZWVwcyB0aGlzIHJvdyBhIHN0ZXBcbiAgICAvLyBhYm92ZSBgLmFjdGl2aXR5LWRldGFpbHNgIGJlbG93LCB3aGljaCB0aGUgMTNweCBzdGVwIHdvdWxkIGhhdmUgZmxhdHRlbmVkLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG59XG5cbi5hY3Rpdml0eS1kb2MtbGluayB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5hY3Rpdml0eS1kZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4uYWN0aXZpdHktY2xpZW50LWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA0cHg7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LXNlcGFyYXRvciB7XG4gICAgLy8gVGhpcyBpcyB0ZXh0LCBub3QgYSBydWxlIG9yIGEgZ3JhcGhpYy4gYC0tc3dwLXRleHQtbGlnaHRgIGlzIDIuNTY6MSBvbiB0aGVcbiAgICAvLyBjYXJkIHN1cmZhY2UgYW5kIGZhaWxzIEFBIG91dHJpZ2h0LlxuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi5hY3Rpdml0eS1hbW91bnQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5hY3Rpdml0eS10aW1lIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMQVlPVVQgRURJVElOR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRWRpdCBtb2RlIGlzIGEgQ1NTIHN0YXRlLCBub3QgYSBzZWNvbmQgcGFnZTogZXZlcnkgY29udHJvbCBiZWxvdyBpcyBhbHJlYWR5IGluXG4vLyB0aGUgRE9NIG9uIGEgbm9ybWFsIGxvYWQsIGhpZGRlbiB3aXRoIHRoZSBgaGlkZGVuYCBhdHRyaWJ1dGUgc28gaXQgaXMgb3V0IG9mXG4vLyB0aGUgdGFiIG9yZGVyIHRvby4gRW50ZXJpbmcgZWRpdCBtb2RlIHRoZXJlZm9yZSBjb3N0cyBubyByZXF1ZXN0LCBhbmQgbGVhdmluZ1xuLy8gaXQgY2Fubm90IGxvc2UgYW4gdW5zYXZlZCBhcnJhbmdlbWVudCAtIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcsIGVhY2ggY2hhbmdlIGlzXG4vLyBwZXJzaXN0ZWQgYXMgaXQgaGFwcGVucy5cblxuLy8gYGhpZGRlbmAgb25seSByZW1vdmVzIGFuIGVsZW1lbnQgdmlhIHRoZSB1c2VyLWFnZW50IHNoZWV0J3Ncbi8vIGBbaGlkZGVuXSB7IGRpc3BsYXk6IG5vbmUgfWAsIHdoaWNoIGxvc2VzIHRvIEFOWSBhdXRob3IgYGRpc3BsYXlgIGRlY2xhcmF0aW9uIC1cbi8vIGFuZCBgLmRhc2hib2FyZC13aWRnZXQtY29udHJvbHNgIGJlbG93IHNldHMgYGRpc3BsYXk6IGZsZXhgLiBUaGlzIHByb2plY3Qgc2hpcHNcbi8vIG5vIGBbaGlkZGVuXWAgcmVzZXQgb2YgaXRzIG93biAoVGFibGVyIGRvZXMgbm90IGFkZCBvbmUpLCBzbyB3aXRob3V0IHRoaXMgcnVsZVxuLy8gdGhlIGNvbnRyb2xzIGJhciBzaG93cyBvbiBldmVyeSBjYXJkIGF0IGFsbCB0aW1lcyBhbmQgdGhlIEN1c3RvbWlzZSBidXR0b25cbi8vIGxvb2tzIGJyb2tlbjogaXQgdG9nZ2xlcyBhbiBhdHRyaWJ1dGUgdGhhdCBjaGFuZ2VzIG5vdGhpbmcuXG4vLyAtXG4vLyBTY29wZWQgdG8gdGhlIGRhc2hib2FyZCByYXRoZXIgdGhhbiBtYWRlIGdsb2JhbCwgYW5kIGAhaW1wb3J0YW50YCBzbyB0aGF0IGFueVxuLy8gZWxlbWVudCBoaWRkZW4gaGVyZSBsYXRlciBjYW5ub3QgYmUgdW4taGlkZGVuIGJ5IGEgbW9yZSBzcGVjaWZpYyBgZGlzcGxheWAuXG5cbi5kYXNoYm9hcmQtcGFnZSBbaGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uZGFzaGJvYXJkLXRvb2xiYXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmRhc2hib2FyZC10b29sYmFyLXN0YXR1cyB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IDAuODEyNXJlbTtcblxuICAgIC8vIFJlc2VydmUgdGhlIGxpbmUgc28gYSBzdGF0dXMgYXBwZWFyaW5nIGFuZCBjbGVhcmluZyBkb2VzIG5vdCBzaHVudCB0aGVcbiAgICAvLyB0b29sYmFyIGJ1dHRvbnMgc2lkZXdheXMuXG4gICAgbWluLWhlaWdodDogMS4yNXJlbTtcblxuICAgICYtLWVycm9yIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIsICNlZjQ0NDQpO1xuICAgIH1cbn1cblxuLmRhc2hib2FyZC1waWNrZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZywgMC43NXJlbSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmRhc2hib2FyZC1waWNrZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5kYXNoYm9hcmQtcGlja2VyLWl0ZW1zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRhc2hib2FyZC1waWNrZXItaXRlbSB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCwgMC41cmVtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5kYXNoYm9hcmQtcGlja2VyLWVtcHR5IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLy8gQSB6b25lIGlzIGEgdHdlbHZlLXRyYWNrIGdyaWQgYW5kIGEgd2lkZ2V0IHNwYW5zIHNvbWUgb2YgaXQuIEV2ZXJ5dGhpbmcgYWJvdXRcbi8vIGhvdyB3aWRlIGEgd2lkdGggKmlzKiBsaXZlcyBoZXJlIGFuZCBub3doZXJlIGVsc2U6IFBIUCBuYW1lcyB0aGUgd2lkdGgsIHRoZVxuLy8gc3RvcmVkIGxheW91dCBjYXJyaWVzIHRoYXQgbmFtZSwgdGhlIGNvbnRyb2xsZXIgd3JpdGVzIGl0IHRvIGFuIGF0dHJpYnV0ZSwgYW5kXG4vLyB0aGlzIGlzIHRoZSBvbmx5IGZpbGUgdGhhdCB0dXJucyBpdCBpbnRvIGdlb21ldHJ5LiBBZGRpbmcgYSBicmVha3BvaW50IGJlbG93XG4vLyBjaGFuZ2VzIHRoZSBkYXNoYm9hcmQgZm9yIGV2ZXJ5IHdpZGdldCB3aXRob3V0IGEgbGluZSBvZiBQSFAgb3IgVHlwZVNjcmlwdC5cblxuLmRhc2hib2FyZC16b25lIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPj0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcik7XG4gICAgfVxufVxuXG4uZGFzaGJvYXJkLXdpZGdldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLy8gQ2FyZHMgaW4gdGhlIHNhbWUgcm93IGVuZCBsZXZlbCB3aXRoIGVhY2ggb3RoZXI6IHRoZSBjb250cm9scyBiYXIgc2l0cyBvblxuICAgIC8vIHRvcCBhdCBpdHMgb3duIGhlaWdodCBhbmQgdGhlIHdpZGdldCdzIGNvbnRlbnQgdGFrZXMgdGhlIHJlc3QsIHNvIGEgc2hvcnRcbiAgICAvLyBjYXJkIG5leHQgdG8gYSB0YWxsIGNoYXJ0IHN0cmV0Y2hlcyBpbnN0ZWFkIG9mIGxlYXZpbmcgYSByYWdnZWQgZWRnZS5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAvLyBHcmlkIGl0ZW1zIGFyZSBtaW4tY29udGVudCB3aWRlIGJ5IGRlZmF1bHQsIHNvIHdpdGhvdXQgdGhpcyBhIGxvbmcgbW9uZXlcbiAgICAvLyBzdHJpbmcgb3IgYSBjaGFydCBjYW52YXMgd291bGQgcHVzaCBpdHMgdHJhY2sgd2lkZXIgdGhhbiBpdHMgc2hhcmUuXG4gICAgbWluLXdpZHRoOiAwO1xuXG4gICAgLy8gRnVsbCB3aWR0aCB1bnRpbCB0aGVyZSBpcyBhIGdyaWQgdG8gc3Bhbi4gQmVsb3cgdGhlIGZpcnN0IGJyZWFrcG9pbnQgZXZlcnlcbiAgICAvLyBjYXJkIGlzIHRoZSB3aWR0aCBvZiB0aGUgem9uZSB3aGF0ZXZlciB0aGUgbGF5b3V0IHNheXMsIHdoaWNoIGlzIHRoZSBvbmx5XG4gICAgLy8gYXJyYW5nZW1lbnQgdGhhdCByZWFkcyBvbiBhIHBob25lLlxuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG5cbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA+PSA3NjhweCkge1xuXG4gICAgICAgICZbZGF0YS13aWRnZXQtd2lkdGg9J3F1YXJ0ZXInXSxcbiAgICAgICAgJltkYXRhLXdpZGdldC13aWR0aD0ndGhpcmQnXSxcbiAgICAgICAgJltkYXRhLXdpZGdldC13aWR0aD0naGFsZiddIHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoID49IDEyMDBweCkge1xuXG4gICAgICAgICZbZGF0YS13aWRnZXQtd2lkdGg9J3F1YXJ0ZXInXSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAzO1xuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLXdpZGdldC13aWR0aD0ndGhpcmQnXSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogc3BhbiA0O1xuICAgICAgICB9XG5cbiAgICAgICAgJltkYXRhLXdpZGdldC13aWR0aD0naGFsZiddIHtcbiAgICAgICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDY7XG4gICAgICAgIH1cblxuICAgICAgICAmW2RhdGEtd2lkZ2V0LXdpZHRoPSd0d29fdGhpcmRzJ10ge1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gODtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRhc2hib2FyZC13aWRnZXQtY29udHJvbHMge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQsIDAuNXJlbSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpIHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRhc2hib2FyZC13aWRnZXQtbmFtZSB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGZsZXg6IDE7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uZGFzaGJvYXJkLXdpZGdldC1oYW5kbGUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgY3Vyc29yOiBncmFiO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXG4gICAgJjphY3RpdmUge1xuICAgICAgICBjdXJzb3I6IGdyYWJiaW5nO1xuICAgIH1cbn1cblxuLmRhc2hib2FyZC13aWRnZXQtcGlubmVkIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xufVxuXG4vLyBUaGUgY2FyZCBiZWluZyBkcmFnZ2VkLiBLZXB0IGxlZ2libGUgcmF0aGVyIHRoYW4gcmVkdWNlZCB0byBhbiBvdXRsaW5lOiB0aGVcbi8vIHVzZXIgaXMgcGxhY2luZyB0aGlzIHNwZWNpZmljIHdpZGdldCwgc28gaXQgaGFzIHRvIHN0YXkgcmVjb2duaXNhYmxlIHdoaWxlIGl0XG4vLyBtb3Zlcy5cblxuLmRhc2hib2FyZC13aWRnZXQtLWdob3N0IHtcbiAgICBvcGFjaXR5OiAwLjQ7XG59XG5cbi5kYXNoYm9hcmQtcGFnZS0tZWRpdGluZyB7XG5cbiAgICAuZGFzaGJvYXJkLXdpZGdldCB7XG4gICAgICAgIG91dGxpbmU6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBDbGllbnQgUGFnZSBTdHlsZXNcbiAqXG4gKiBDdXN0b20gc3R5bGVzIGZvciB0aGUgQ2xpZW50IHZpZXcgcGFnZS5cbiAqIEZvbGxvd3MgdGhlIGRlc2lnbiBzeXN0ZW0gdG9rZW5zIGFuZCBtb2Rlcm4gU2FhUyBhZXN0aGV0aWMuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xJRU5UIEhFUk8gU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWhlcm8ge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4uY2xpZW50LWhlcm8tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi5jbGllbnQtaGVyby1tZXRhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNsaWVudC1oZXJvLW1ldGEtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUQVQgQ0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1zdGF0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5jbGllbnQtc3RhdC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbn1cblxuLy8gSW5jb21lIHJlY2VpdmVkIGlzIGEgcG9zaXRpdmUgc3RhdGU7IHN1Y2Nlc3MgZ3JlZW4gZWFybnMgaXRzIHBsYWNlLlxuXG4uY2xpZW50LXN0YXQtdmFsdWUtLXN1Y2Nlc3Mge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi8vIFwiT3V0c3RhbmRpbmdcIiBtZWFucyBvd2VkLCBub3Qgb3ZlcmR1ZS4gQW1iZXIsIG5vdCBkYW5nZXIgcmVkLlxuLy8gS2VwdCAtLWRhbmdlciBhbGlhcyBzbyBhbnkgbGVnYWN5IGNhbGxlcnMgc3RpbGwgcmVuZGVyIG1lYW5pbmdmdWxseS5cblxuLmNsaWVudC1zdGF0LXZhbHVlLS13YXJuaW5nLFxuLmNsaWVudC1zdGF0LXZhbHVlLS1kYW5nZXIge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZyk7XG59XG5cbi5jbGllbnQtc3RhdC1iYWRnZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xJRU5UIENSRURJVCBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtY3JlZGl0LWNhcmQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxufVxuXG4uY2xpZW50LWNyZWRpdC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5jbGllbnQtY3JlZGl0LWFtb3VudCB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmNsaWVudC1jcmVkaXQtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEFCUyBOQVZJR0FUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtdGFicy1jYXJkIHtcblxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cblxuICAgIC8qIC5uYXYtdGFicyB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgbWFyZ2luOiAwIGNhbGMoLTEgKiB2YXIoLS1zd3Atc3BhY2UtNikpO1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9ICovXG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSwgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2IoNDYgMTUwIDU4IC8gMzAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYmFkZ2Uge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMmVtIDAuNWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRhYi1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT04gSEVBREVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LXNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmNsaWVudC1zZWN0aW9uLXRpdGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTlRBQ1QgJiBBRERSRVNTIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtY29udGFjdC1jYXJkLFxuLmNsaWVudC1hZGRyZXNzLWNhcmQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIH1cblxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5jbGllbnQtY29udGFjdC1hdmF0YXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtbmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5jbGllbnQtY29udGFjdC1kZXRhaWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5jbGllbnQtY29udGFjdC1kZXRhaWwtaWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiAycHg7XG59XG5cbi5jbGllbnQtY29udGFjdC1kZXRhaWwtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcbn1cblxuLmNsaWVudC1jb250YWN0LWRldGFpbC12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJQ09OIEJVVFRPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1pY29uLXNtIHtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uYnRuLWdob3N0LXNlY29uZGFyeSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEFDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1mb3JtLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERFJFU1MgRElTUExBWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWFkZHJlc3MtdGV4dCB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmNsaWVudC1hZGRyZXNzLW1hcC1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQURESVRJT05BTCBDT05UQUNUIERFVEFJTFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1jb250YWN0LWV4dHJhIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5jbGllbnQtY29udGFjdC1leHRyYS10aXRsZSB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5jbGllbnQtY29udGFjdC1leHRyYS1sYWJlbCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtaW4td2lkdGg6IDgwcHg7XG59XG5cbi5jbGllbnQtY29udGFjdC1leHRyYS12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDVVNUT00gRklFTERTIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmN1c3RvbS1maWVsZHMtY2FyZCB7XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmN1c3RvbS1maWVsZHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uY3VzdG9tLWZpZWxkcy1pdGVtIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDE0MHB4LCAzMCUpIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG59XG5cbi5jdXN0b20tZmllbGRzLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcbn1cblxuLmN1c3RvbS1maWVsZHMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iYWRnZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuXG4gICAgLmN1c3RvbS1maWVsZHMtaXRlbSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gOTkxLjk4cHgpIHtcblxuICAgIC5jbGllbnQtaGVybyB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuY2xpZW50LWhlcm8tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuY2xpZW50LXN0YXQtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5jbGllbnQtaGVybyB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY2xpZW50LWhlcm8tbWV0YSB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5jbGllbnQtdGFicy1jYXJkIC5uYXYtdGFicyB7XG4gICAgICAgIG1hcmdpbjogMCBjYWxjKC0xICogdmFyKC0tc3dwLXNwYWNlLTQpKTtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jbGllbnQtdGFicy1jYXJkIC5uYXYtaXRlbSB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC5jbGllbnQtc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5jbGllbnQtaGVybyAuZHJvcGRvd24sXG4gICAgLmNsaWVudC1oZXJvIC5idG4sXG4gICAgLmNsaWVudC1zZWN0aW9uLWhlYWRlciAuYnRuLFxuICAgIC5idG4tZ2hvc3Qtc2Vjb25kYXJ5LFxuICAgIC5idG4tZ2hvc3QtZGFuZ2VyLFxuICAgIC5jbGllbnQtZm9ybS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jbGllbnQtaGVybyB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREREREQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBJbnZvaWNlIFZpZXcgUGFnZVxuICpcbiAqIEFsbCBzaGFyZWQgZG9jdW1lbnQgdmlldyBzdHlsZXMgYXJlIGluIGNvbXBvbmVudHMvX2RvY3VtZW50LXZpZXcuc2Nzcy5cbiAqIEludm9pY2Utc3BlY2lmaWMgcmVjdXJyaW5nIGludm9pY2Ugc3R5bGVzIGFyZSBhbHNvIGluIHRoYXQgc2hhcmVkIGNvbXBvbmVudC5cbiAqL1xuXG4vLyBSZWN1cnJpbmcgaW52b2ljZSBzaWRlYmFyOiBzY2hlZHVsZSAmIGdlbmVyYXRlZCBpbnZvaWNlc1xuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnNjaGVkdWxlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNjaGVkdWxlLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAvLyBEYXRlcyBhbmQgY291bnRzIGxpbmUgdXAgY2xlYW5seSBkb3duIHRoZSBzY2hlZHVsZSBzaWRlYmFyXG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLm9jY3VycmVuY2VzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLm9jY3VycmVuY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4ub2NjdXJyZW5jZS1kYXRlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pZCB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtYW1vdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cbiIsIi8qKlxuICogRXh0ZXJuYWwgSW52b2ljZSBWaWV3XG4gKlxuICogSW52b2ljZS1zcGVjaWZpYyBzdHlsZXMgZm9yIHRoZSBwdWJsaWMtZmFjaW5nIGludm9pY2UgcGFnZS5cbiAqIEFsbCBzaGFyZWQgZXh0ZXJuYWwgZG9jdW1lbnQgc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19leHRlcm5hbC1kb2Mtdmlldy5zY3NzLlxuICovXG5cbi8vIEludm9pY2Utc3BlY2lmaWMgYWN0aW9uIGJ1dHRvblxuXG4uYnRuLWludm9pY2UtYWN0aW9uIHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gU2NyZWVuIHJlYWRlciBvbmx5IHRleHRcblxuLnNyLW9ubHkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMXB4O1xuICAgIGhlaWdodDogMXB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAtMXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgY2xpcC1wYXRoOiBpbnNldCg1MCUpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYm9yZGVyLXdpZHRoOiAwO1xufVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmJ0bi1pbnZvaWNlLWFjdGlvbjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBFeHRlcm5hbCBRdW90ZSBWaWV3XG4gKlxuICogQWxsIHNoYXJlZCBleHRlcm5hbCBkb2N1bWVudCBzdHlsZXMgKGluY2x1ZGluZyBxdW90ZSBzdHlsZXMpIGFyZSBpblxuICogY29tcG9uZW50cy9fZXh0ZXJuYWwtZG9jLXZpZXcuc2Nzcy5cbiAqXG4gKiBUaGVyZSBhcmUgY3VycmVudGx5IG5vIHF1b3RlLXNwZWNpZmljIHN0eWxlcyBiZXlvbmQgd2hhdCBpcyBzaGFyZWQuXG4gKi9cbiIsIi8qKlxuICogUXVvdGUgVmlldyBQYWdlIC0gUXVvdGUtU3BlY2lmaWMgU3R5bGVzXG4gKlxuICogU2hhcmVkIGRvY3VtZW50IGxheW91dCBpcyBpbiBjb21wb25lbnRzL19kb2N1bWVudC12aWV3LnNjc3MuXG4gKiBUaGlzIGZpbGUgaXMgaW50ZW50aW9uYWxseSBtaW5pbWFsIC0gYWxsIHNoYXJlZCBkb2MgdmlldyBzdHlsZXMgYXJlIGluIHRoZSBjb21wb25lbnQuXG4gKi9cblxuLy8gTm8gcXVvdGUtc3BlY2lmaWMgb3ZlcnJpZGVzIG5lZWRlZCBiZXlvbmQgd2hhdCBfZG9jdW1lbnQtdmlldy5zY3NzIHByb3ZpZGVzLlxuIiwiLyoqXG4gKiBQYXltZW50IE1hcmtldHBsYWNlIFN0eWxlc1xuICogT25seSBwYXltZW50LXNwZWNpZmljIHN0eWxlcy4gU2hhcmVkIG1hcmtldHBsYWNlIHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fbWFya2V0cGxhY2Uuc2Nzcy5cbiAqL1xuXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBheW1lbnQgTWFya2V0cGxhY2UgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LW1hcmtldHBsYWNlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgVGFicyBOYXZpZ2F0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LW1hcmtldHBsYWNlID4gLm5hdi10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXN3cC10cmFuc2l0aW9uLWNvbG9ycyk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmJhZGdlLXNtIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjM3NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGV3YXkgQ2FyZHMgR3JpZFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZ2F0ZXdheS1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uZ2F0ZXdheS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDUlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyA4JSksIDAgMCAwIDFweCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblxuICAgICAgICAuZ2F0ZXdheS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgdmFyKC0tc3dwLXByaW1hcnkpIDEwMCUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlzLWNvbmZpZ3VyZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDUpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDIpIDEwMCUpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4zKTtcblxuICAgICAgICAuZ2F0ZXdheS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KSAwJSwgdmFyKC0tc3dwLXN1Y2Nlc3MpIDEwMCUpO1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wOCkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNCkgMTAwJSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtY3VzdG9tLWdhdGV3YXkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDEpIDEwMCUpO1xuICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICAvLyBBZGQgaG9yaXpvbnRhbCBkaXZpZGVyIGFmdGVyIGN1c3RvbSBnYXRld2F5XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IGNhbGMoLTEgKiB2YXIoLS1zd3Atc3BhY2UtNikgLyAyKTtcbiAgICAgICAgICAgIGxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgICAgIHJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZyxcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAwJSxcbiAgICAgICAgICAgICAgICB2YXIoLS1zd3AtYm9yZGVyKSAxNSUsXG4gICAgICAgICAgICAgICAgdmFyKC0tc3dwLWJvcmRlcikgODUlLFxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDEwMCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaW5zZXQ6IC0ycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeSksIHZhcigtLXN3cC1wcmltYXJ5LWRhcmspKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICAgIH1cblxuICAgICAgICAuZ2F0ZXdheS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA4KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjAyKSAxMDAlKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjA4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZ2F0ZXdheS1pY29uIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeSkgMCUsIHZhcigtLXN3cC1wcmltYXJ5LWRhcmspIDEwMCUpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmdhdGV3YXktY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDUycHg7XG4gICAgICAgIGhlaWdodDogNTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSAwJSwgdmFyKC0tc3dwLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYigwIDAgMCAvIDQlKTtcbiAgICB9XG5cbiAgICBoNiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgLnRleHQtbXV0ZWQge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Utc20ge1xuICAgICAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjJyZW0gMC41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWN0aXZlIE1ldGhvZHMgUGFuZWwgLSBSaWdodCBTaWRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hY3RpdmUtbWV0aG9kcy1wYW5lbCB7XG5cbiAgICBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgID4gLmQtZmxleCA+IC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zNXJlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS0xMDApIDAlLCB2YXIoLS1zd3AtZ3JheS0yMDApIDEwMCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gNSUpO1xuICAgIH1cbn1cblxuLmFjdGl2ZS1tZXRob2RzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5hY3RpdmUtbWV0aG9kLWNhcmQge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gNSUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDglKSwgMCAwIDAgMXB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcblxuICAgICAgICAucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cblxuICAgIGg2IHtcbiAgICAgICAgZm9udC1zaXplOiAxLjA2MjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgLnBheW1lbnQtbWV0aG9kLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDU2cHg7XG4gICAgICAgIGhlaWdodDogNTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSAwJSwgdmFyKC0tc3dwLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYigwIDAgMCAvIDQlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgICAmLmJnLXN1Y2Nlc3Mge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXN1Y2Nlc3MpIDAlLCB2YXIoLS1zd3Atc3VjY2Vzcy1ob3ZlcikgMTAwJSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYmctc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTQwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTUwMCkgMTAwJSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAxLjVweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWd1cmF0aW9uIEZvcm0gU3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LW1hcmtldHBsYWNlIHtcbiAgICAvLyBGaXggY2xvc2UgYnV0dG9uIGFsaWdubWVudCBpbiBjYXJkIGhlYWRlclxuXG4gICAgLmNhcmQtaGVhZGVyIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJ0bi1pY29uIHtcbiAgICAgICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBzcGFjaW5nIGJldHdlZW4gZm9ybSBzd2l0Y2ggZmllbGRzICh0aGUgY29udGFpbmVycyB3aXRoIGJhY2tncm91bmRzKVxuXG4gICAgZm9ybSB7XG5cbiAgICAgICAgLmZvcm0tc3dpdGNoLWZpZWxkICsgLmZvcm0tc3dpdGNoLWZpZWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBzcGFjaW5nIGJldHdlZW4gcmVndWxhciBmb3JtIGZpZWxkc1xuXG4gICAgICAgIC5tYi0zICsgLm1iLTMge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXltZW50IENvbmZpZ3VyYXRpb24gTW9kYWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbW9kYWwtYmFja2Ryb3Age1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMCAwIDAgLyA1MCUpO1xuICAgIHotaW5kZXg6IDEwNDA7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbn1cblxuLnBheW1lbnQtbW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICB6LWluZGV4OiAxMDUwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMnMgZWFzZTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4ucGF5bWVudC1tb2RhbC1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDEwJSksXG4gICAgICAgICAgICAgICAgMCAxMHB4IDEwcHggLTVweCByZ2IoMCAwIDAgLyA0JSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA5MjBweDtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tc3dwLXNwYWNlLTgpKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1zbGlkZS11cCAwLjNzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xufVxuXG4ucGF5bWVudC1tb2RhbC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnBheW1lbnQtbW9kYWwtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteGwpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnBheW1lbnQtbW9kYWwtY2xvc2Uge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5wYXltZW50LW1vZGFsLWJvZHkge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBSZW1vdmUgY2FyZCBzdHlsaW5nIGZyb20gUGF5bWVudFNldHRpbmdzIHdoZW4gaW5zaWRlIG1vZGFsXG5cbiAgICA+IGRpdiA+IC5jYXJkIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLy8gSGlkZSB0aGUgY2FyZCBoZWFkZXIgc2luY2UgbW9kYWwgaGFzIGl0cyBvd25cbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJkLWJvZHkge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgMCAwIDA7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTW9iaWxlIGFkYXB0YXRpb25zXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcblxuICAgIC5wYXltZW50LW1vZGFsIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgIC5wYXltZW50LW1vZGFsLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LWhlaWdodDogOTB2aDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2xpZGUtdXAtbW9iaWxlIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBtYXJrZXRwbGFjZS1zbGlkZS11cC1tb2JpbGUge1xuXG4gICAgICAgIGZyb20ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdG8ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBQcmV2ZW50IGJvZHkgc2Nyb2xsIHdoZW4gbW9kYWwgaXMgb3BlblxuXG5ib2R5OmhhcygucGF5bWVudC1tb2RhbCkge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBSZXNwb25zaXZlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuXG4gICAgLm1hcmtldHBsYWNlLXBhbmVsIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5nYXRld2F5LWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAuYWN0aXZlLW1ldGhvZC1jYXJkIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgICAgIC5idG4tZ3JvdXAsXG4gICAgICAgICAgICAuZC1mbGV4LmdhcC0yIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhvcml6b250YWwgc2Nyb2xsaW5nIHRhYnMgb24gbW9iaWxlXG5cbiAgICAucGF5bWVudC1tYXJrZXRwbGFjZSA+IC5uYXYtdGFicyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLXN3cC1zcGFjZS00KSAqIC0xKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLXN3cC1zcGFjZS00KSAqIC0xKTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWl0ZW0ge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFByaW50IFN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLnBheW1lbnQtbWFya2V0cGxhY2Uge1xuXG4gICAgICAgIC5uYXYtdGFicyxcbiAgICAgICAgLm1hcmtldHBsYWNlLXBhbmVsLFxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3RpdmUtbWV0aG9kLWNhcmQge1xuICAgICAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSBHcm91cHMgKGNhdGVnb3Jpc2VkIG1hcmtldHBsYWNlIHNlY3Rpb25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZ2F0ZXdheS1ncm91cCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgLmdhdGV3YXktZ3JvdXAtaGVhZGVyIHtcblxuICAgICAgICBoNiB7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ3VzdG9tIFwiY3JlYXRlIHlvdXIgb3duXCIgY2FyZCBzaXRzIGluc2lkZSB0aGUgb2ZmbGluZSBncm91cCBub3csIHNvIHRoZVxuICAgIC8vIGxlZ2FjeSBmdWxsLXdpZHRoIGRpdmlkZXIgaXQgdXNlZCB0byBkcmF3IGlzIG5vIGxvbmdlciBuZWVkZWQuXG5cbiAgICAuaXMtY3VzdG9tLWdhdGV3YXkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTGVnYWN5IC8gYWR2YW5jZWQgcHJvY2Vzc29ycyBhcmUgY29sbGFwc2VkIGF3YXkgYnkgZGVmYXVsdC5cblxuLmdhdGV3YXktZ3JvdXAtLW1vcmUge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgPiBzdW1tYXJ5IHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIgaDYge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gXCJBYm91dCB0aGlzIGdhdGV3YXlcIiBndWlkYW5jZSBwYW5lbCAoaW4gdGhlIGNvbmZpZyBtb2RhbClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtZ2F0ZXdheS1hYm91dCB7XG5cbiAgICAuYWxlcnQtdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtZ2F0ZXdheS1jb21wYXJlIHtcblxuICAgICAgICBzdW1tYXJ5IHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgICAgICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIE5vdGlmaWNhdGlvbiBNYXJrZXRwbGFjZSBTdHlsZXNcbiAqIE5vdGlmaWNhdGlvbi1zcGVjaWZpYyBzdHlsZXMuIFNoYXJlZCBtYXJrZXRwbGFjZSBzdHlsZXMgYXJlIGluIGNvbXBvbmVudHMvX21hcmtldHBsYWNlLnNjc3MuXG4gKi9cblxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOb3RpZmljYXRpb24gTWFya2V0cGxhY2UgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tbWFya2V0cGxhY2Uge1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBUYWJzIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZSA+IC5uYXYtdGFicyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1jb2xvcnMpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYWRnZS1zbSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgICAgICAgICAgcGFkZGluZzogMC4xMjVyZW0gMC4zNzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNYXJrZXRwbGFjZSBUYWJzIChTTVMvQ2hhdCkgLSBJbnNpZGUgUGFuZWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm1hcmtldHBsYWNlLXRhYnMge1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgLm5hdi1pdGVtIHtcbiAgICAgICAgZmxleDogMTtcbiAgICB9XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICAgICAgLm5hdi1saW5rLWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOm5vdCguYWN0aXZlKSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktaG92ZXIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSW50ZWdyYXRpb24gU2VjdGlvbiBIZWFkZXJzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnRlZ3JhdGlvbi1zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSW50ZWdyYXRpb24gQ2FyZHMgR3JpZFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaW50ZWdyYXRpb24tZ3JpZCB7XG4gICAgLy8gQ29udGFpbmVyIGZvciB0aGUgZnVsbCBpbnRlZ3JhdGlvbiBhcmVhIChubyBncmlkIGhlcmUpXG59XG5cbi5pbnRlZ3JhdGlvbi1zZWN0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmludGVncmF0aW9uLWNhcmRzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgfVxufVxuXG4vLyBJbnRlZ3JhdGlvbiBDYXJkIC0gVmVydGljYWwgTGF5b3V0XG5cbi5pbnRlZ3JhdGlvbi1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMjVzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMTZweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG5cbiAgICAgICAgLmludGVncmF0aW9uLWNhcmQtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCksIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yNSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlzLWNvbmZpZ3VyZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDMpLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDEpKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMjUpO1xuXG4gICAgICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpLCB2YXIoLS1zd3Atc3VjY2VzcykpO1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNSksIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wMikpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICB3aWR0aDogNjRweDtcbiAgICAgICAgaGVpZ2h0OiA2NHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS0xMDApLCB2YXIoLS1zd3AtZ3JheS0yMDApKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2U7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2IoMCAwIDAgLyA2JSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtY29udGVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1hY3Rpb24ge1xuICAgICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJlZCBJbnRlZ3JhdGlvbnMgUGFuZWwgLSBSaWdodCBTaWRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb25maWd1cmVkLWludGVncmF0aW9ucy1wYW5lbCB7XG5cbiAgICBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgID4gLmQtZmxleCA+IC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zNXJlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS0xMDApIDAlLCB2YXIoLS1zd3AtZ3JheS0yMDApIDEwMCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gNSUpO1xuICAgIH1cbn1cblxuLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb25zLWxpc3Qge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5jb25maWd1cmVkLWludGVncmF0aW9uLWNhcmQge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gNSUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDglKSwgMCAwIDAgMXB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcblxuICAgICAgICAuaW50ZWdyYXRpb24tbWV0aG9kLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG5cbiAgICBoNiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1tZXRob2QtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS0xMDApIDAlLCB2YXIoLS1zd3AtZ3JheS0yMDApIDEwMCUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiKDAgMCAwIC8gNCUpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjNyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDEuNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24gTW9kYWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1iYWNrZHJvcCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYigwIDAgMCAvIDUwJSk7XG4gICAgei1pbmRleDogMTA0MDtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogMTA1MDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjJzIGVhc2U7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDEwJSksXG4gICAgICAgICAgICAgICAgMCAxMHB4IDEwcHggLTVweCByZ2IoMCAwIDAgLyA0JSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tc3dwLXNwYWNlLTgpKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1zbGlkZS11cCAwLjNzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtY2xvc2Uge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtYm9keSB7XG4gICAgZmxleDogMTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIFJlbW92ZSBjYXJkIHN0eWxpbmcgZnJvbSBOb3RpZmljYXRpb25UcmFuc3BvcnRDb25maWd1cmF0aW9uIHdoZW4gaW5zaWRlIG1vZGFsXG5cbiAgICA+IGRpdiA+IC5jYXJkIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLy8gSGlkZSB0aGUgY2FyZCBoZWFkZXIgc2luY2UgbW9kYWwgaGFzIGl0cyBvd25cbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJkLWJvZHkge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgMCAwIDA7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFJlc3BvbnNpdmVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG5cbiAgICAubWFya2V0cGxhY2UtcGFuZWwge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb24tY2FyZCB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgICAgICAgICAuYnRuLWdyb3VwLFxuICAgICAgICAgICAgLmQtZmxleC5nYXAtMiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIb3Jpem9udGFsIHNjcm9sbGluZyB0YWJzIG9uIG1vYmlsZVxuXG4gICAgLm5vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZSA+IC5uYXYtdGFicyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLXN3cC1zcGFjZS00KSAqIC0xKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLXN3cC1zcGFjZS00KSAqIC0xKTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWl0ZW0ge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLW1vZGFsIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tbW9kYWwtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtaGVpZ2h0OiA5MHZoO1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBub3RpZmljYXRpb24tc2xpZGUtdXAtbW9iaWxlIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBub3RpZmljYXRpb24tc2xpZGUtdXAtbW9iaWxlIHtcblxuICAgICAgICBmcm9tIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUHJldmVudCBib2R5IHNjcm9sbCB3aGVuIG1vZGFsIGlzIG9wZW5cblxuYm9keTpoYXMoLm5vdGlmaWNhdGlvbi1tb2RhbCkge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFByaW50IFN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLm5vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZSB7XG5cbiAgICAgICAgLm5hdi10YWJzLFxuICAgICAgICAubWFya2V0cGxhY2UtcGFuZWwsXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb24tY2FyZCB7XG4gICAgICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/