/* ============================================================
   Pages — Design-System Application
   Implements DESIGN_SYSTEM.md vocabulary for ALL customer-facing
   pages: home, products, cart, auth (login/register/forgot/reset),
   account, legal (impressum/datenschutz/agb), checkout pages.
   Out of scope: configurator door grid (production-fixed).
   ============================================================ */

/* ──────────────────────────────────────────────────────────
   1. Foundational tokens (additive — does not rename existing)
   ────────────────────────────────────────────────────────── */

:root {
    /* Motion: phi-stepped from a 200 ms base (DESIGN_SYSTEM §8) */
    --motion-1: 124ms;        /* 1/φ — micro-feedback */
    --motion-2: 200ms;        /* 1   — default */
    --motion-3: 324ms;        /* φ   — entrances */
    --motion-4: 524ms;        /* φ²  — section fade */
    --motion-5: 848ms;        /* φ³  — celebratory */

    /* Easings */
    --ease-settle: cubic-bezier(0.22, 1.0, 0.36, 1.0);
    --ease-celebrate: cubic-bezier(0.34, 1.56, 0.64, 1.0);

    /* Phi proportions */
    --phi: 1.618;
    --phi-inv: 0.618;
    --sqrt-phi: 1.272;
}

/* ──────────────────────────────────────────────────────────
   2. .moment-card — the golden-rectangle "moment" recipe.
      Used for auth panels, success/cancel pages, narrow
      single-purpose cards. (DESIGN_SYSTEM §9)
   ────────────────────────────────────────────────────────── */

.moment-section {
    position: relative;
    min-height: calc(100vh - 240px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3.4375rem 1rem;          /* Fib 55 px on tall axis */
    overflow: hidden;
    background:
        radial-gradient(ellipse at top, rgba(212, 168, 83, 0.05) 0%, transparent 55%),
        radial-gradient(ellipse at bottom, rgba(45, 107, 92, 0.03) 0%, transparent 55%),
        var(--color-bg-warm);
}

/* Decorative golden-spiral motif, lower-right corner */
.moment-spiral {
    position: absolute;
    right: -1.3125rem;
    bottom: -2.125rem;
    width: 18rem;
    height: auto;
    color: var(--color-primary);
    opacity: 0.08;
    pointer-events: none;
}

.moment-card {
    --card-padding-block: 3.4375rem;   /* 55 px Fib */
    --card-padding-inline: 2.125rem;   /* 34 px Fib */

    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 34rem;
    background: var(--color-bg-white);
    border: 1px solid rgba(212, 168, 83, 0.18);
    border-radius: 1.8125rem;          /* concentric: 8 px inner + 34 px padding ≈ 42 px outer */
    box-shadow:
        0 1px 2px rgba(45, 55, 72, 0.04),
        0 21px 55px -8px rgba(45, 55, 72, 0.10);
    padding: var(--card-padding-block) var(--card-padding-inline);
    text-align: center;
    animation: momentCardEnter var(--motion-5) var(--ease-settle) both;
}

.moment-card--wide {
    max-width: 55rem;                  /* Fib 880 px — for product/legal-listing cards */
}

@keyframes momentCardEnter {
    from { opacity: 0; transform: translateY(13px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ──────────────────────────────────────────────────────────
   3. .moment-badge — concentric-ring icon (DESIGN_SYSTEM §5)
   ────────────────────────────────────────────────────────── */

.moment-badge {
    color: var(--color-primary);
    margin: 0 auto 2.125rem;
    width: 144px;
    height: 144px;
    display: grid;
    place-items: center;
    animation: momentBadgePop var(--motion-4) var(--ease-celebrate) var(--motion-1) both;
}

.moment-badge svg { width: 144px; height: 144px; }

.moment-badge__disc { fill: var(--color-primary); filter: drop-shadow(0 4px 14px rgba(212, 168, 83, 0.30)); }
.moment-badge__disc--secondary { fill: var(--color-secondary); filter: drop-shadow(0 4px 14px rgba(45, 107, 92, 0.30)); }
.moment-badge__disc--neutral { fill: var(--color-text-muted); filter: drop-shadow(0 4px 14px rgba(113, 128, 150, 0.20)); }
.moment-badge__disc--accent { fill: var(--color-accent); filter: drop-shadow(0 4px 14px rgba(139, 58, 77, 0.25)); }

@keyframes momentBadgePop {
    from { opacity: 0; transform: scale(0.62); }
    to   { opacity: 1; transform: scale(1); }
}

/* ──────────────────────────────────────────────────────────
   4. Typography ladder (phi-stepped) — applied to .moment-card
      and to global page titles via .page-title-block
   ────────────────────────────────────────────────────────── */

.moment-card__eyebrow,
.page-eyebrow {
    margin: 0 0 0.5rem;
    font-family: var(--font-subheading);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-primary-dark);
}

.moment-card__title,
.page-title {
    margin: 0 0 1.3125rem;             /* 21 px */
    font-family: var(--font-heading);
    font-size: 2.058rem;               /* φ × √φ */
    line-height: var(--sqrt-phi);
    font-weight: 600;
    color: var(--color-text);
    letter-spacing: -0.01em;
}

.moment-card__lede,
.page-lede {
    margin: 0 auto 2.125rem;
    max-width: 28rem;
    font-family: var(--font-body);
    font-size: 1rem;
    line-height: var(--phi);
    color: var(--color-text-muted);
}

.page-title-block {
    text-align: center;
    margin: 3.4375rem auto 2.125rem;
    max-width: 38rem;
    padding: 0 1rem;
}

/* ──────────────────────────────────────────────────────────
   5. Section ornament (flower of life) — DESIGN_SYSTEM §6
   ────────────────────────────────────────────────────────── */

.section-ornament {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.375rem;
    margin: 2.125rem auto;
    max-width: 8rem;
    flex-wrap: wrap;
}

.section-ornament span {
    display: block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--color-primary);
    opacity: 0.4;
}

.section-ornament span:nth-child(4) {
    width: 8px;
    height: 8px;
    opacity: 0.65;
}

.section-ornament--inverse span { background: var(--color-bg-white); opacity: 0.6; }
.section-ornament--inverse span:nth-child(4) { opacity: 0.85; }

/* ──────────────────────────────────────────────────────────
   6. .btn-ghost — secondary outlined action (used everywhere)
   ────────────────────────────────────────────────────────── */

.btn-ghost {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.75rem 1.5rem;
    background: transparent;
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-family: var(--font-subheading);
    font-weight: 500;
    text-decoration: none;
    transition: border-color var(--motion-2) var(--ease-settle),
                color var(--motion-2) var(--ease-settle),
                background var(--motion-2) var(--ease-settle);
    cursor: pointer;
}

.btn-ghost:hover {
    border-color: var(--color-primary);
    color: var(--color-primary-dark);
    background: rgba(212, 168, 83, 0.06);
}

/* ──────────────────────────────────────────────────────────
   7. Auth pages — apply moment-card recipe to existing markup
      (overrides the loose styles in main.css without renaming)
   ────────────────────────────────────────────────────────── */

.auth-section {
    position: relative;
    min-height: calc(100vh - 240px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3.4375rem 1rem;
    overflow: hidden;
    background:
        radial-gradient(ellipse at top, rgba(212, 168, 83, 0.05) 0%, transparent 55%),
        radial-gradient(ellipse at bottom, rgba(45, 107, 92, 0.03) 0%, transparent 55%),
        var(--color-bg-warm);
}

.auth-section .container {
    width: 100%;
    display: flex;
    justify-content: center;
}

.auth-card {
    /* Compose with .moment-card visuals */
    width: 100%;
    max-width: 32rem;
    background: var(--color-bg-white);
    border: 1px solid rgba(212, 168, 83, 0.18);
    border-radius: 1.8125rem;
    box-shadow:
        0 1px 2px rgba(45, 55, 72, 0.04),
        0 21px 55px -8px rgba(45, 55, 72, 0.10);
    padding: 3.4375rem 2.125rem;
    text-align: center;
    animation: momentCardEnter var(--motion-5) var(--ease-settle) both;
}

.auth-card h1 {
    margin: 0 0 0.5rem;
    font-family: var(--font-heading);
    font-size: 2.058rem;
    line-height: var(--sqrt-phi);
    font-weight: 600;
    color: var(--color-text);
    letter-spacing: -0.01em;
}

.auth-subtitle {
    margin: 0 auto 2.125rem;
    max-width: 26rem;
    color: var(--color-text-muted);
    font-size: 1rem;
    line-height: var(--phi);
}

/* Optional badge slot at the top of an auth card */
.auth-badge {
    color: var(--color-primary);
    margin: 0 auto 1.3125rem;
    width: 96px;
    height: 96px;
    display: grid;
    place-items: center;
    animation: momentBadgePop var(--motion-4) var(--ease-celebrate) var(--motion-1) both;
}
.auth-badge svg { width: 96px; height: 96px; }

/* Form layout */
.auth-form {
    text-align: left;
    margin: 0 auto;
    max-width: 26rem;
}
.auth-form .form-group { margin-bottom: 1.3125rem; }
.auth-form .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.8125rem; }
.auth-form label {
    display: block;
    margin-bottom: 0.5rem;
    font-family: var(--font-subheading);
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--color-text);
}
.auth-form input[type="text"],
.auth-form input[type="email"],
.auth-form input[type="password"] {
    width: 100%;
    padding: 0.8125rem 1rem;
    background: var(--color-bg-warm);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--color-text);
    transition: border-color var(--motion-2) var(--ease-settle),
                background var(--motion-2) var(--ease-settle);
    box-sizing: border-box;
}
.auth-form input:focus {
    outline: none;
    border-color: var(--color-primary);
    background: var(--color-bg-white);
    box-shadow: 0 0 0 3px rgba(212, 168, 83, 0.18);
}
.auth-form .form-error,
.auth-form .form-success {
    padding: 0.8125rem 1rem;
    border-radius: var(--radius-md);
    margin-bottom: 1.3125rem;
    font-size: 0.875rem;
    line-height: var(--phi);
}
.auth-form .form-error { background: rgba(139, 58, 77, 0.08); border: 1px solid rgba(139, 58, 77, 0.22); color: var(--color-accent-dark); }
.auth-form .form-success { background: rgba(45, 107, 92, 0.08); border: 1px solid rgba(45, 107, 92, 0.22); color: var(--color-secondary-dark); }

.auth-form button[type="submit"],
.auth-form .btn.btn-primary {
    width: 100%;
    margin-top: 0.5rem;
}

.auth-links {
    margin-top: 2.125rem;
    padding-top: 1.3125rem;
    border-top: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.5rem 0.8125rem;
    font-size: 0.875rem;
}
.auth-links a {
    color: var(--color-primary-dark);
    text-decoration: none;
    font-weight: 500;
    border-bottom: 1px solid rgba(212, 168, 83, 0.3);
    transition: border-color var(--motion-2) var(--ease-settle);
}
.auth-links a:hover { border-bottom-color: var(--color-primary); }
.auth-links .divider { color: var(--color-text-light); }

/* ──────────────────────────────────────────────────────────
   8. Hero — phi-stepped typography, ornament between sections
   ────────────────────────────────────────────────────────── */

.hero-compact h1 {
    font-family: var(--font-heading);
    font-size: 2.618rem;               /* φ² — flagship display */
    line-height: 1.1;
    font-weight: 600;
    letter-spacing: -0.015em;
}

@media (max-width: 480px) {
    .hero-compact h1 { font-size: 2.058rem; }
}

/* ──────────────────────────────────────────────────────────
   9. Products & Cart — typography refresh
   ────────────────────────────────────────────────────────── */

.products-section h1,
.cart-section h1,
.checkout-section h1 {
    font-family: var(--font-heading);
    font-size: 2.058rem;
    line-height: var(--sqrt-phi);
    font-weight: 600;
    letter-spacing: -0.01em;
    margin-bottom: 2.125rem;
    text-align: center;
}

.products-section h1::after,
.cart-section h1::after,
.checkout-section h1::after,
.legal-section h1::after {
    content: "";
    display: block;
    width: 3.4375rem;                  /* 55 px Fib */
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--color-primary) 50%, transparent);
    margin: 0.8125rem auto 0;
    opacity: 0.7;
}

/* ──────────────────────────────────────────────────────────
   10. Legal pages — Impressum / Datenschutz / AGB
   ────────────────────────────────────────────────────────── */

.legal-section {
    padding: 3.4375rem 1rem 5.5625rem;
    background: var(--color-bg-warm);
    min-height: calc(100vh - 240px);
}

.legal-content {
    max-width: 42rem;                  /* close to a golden-rect line length */
    margin: 0 auto;
    background: var(--color-bg-white);
    border: 1px solid rgba(212, 168, 83, 0.14);
    border-radius: 1.8125rem;
    padding: 3.4375rem 2.125rem;
    box-shadow: 0 1px 2px rgba(45, 55, 72, 0.04), 0 13px 34px -8px rgba(45, 55, 72, 0.08);
    animation: momentCardEnter var(--motion-5) var(--ease-settle) both;
}

@media (max-width: 480px) {
    .legal-content { padding: 2.125rem 1.3125rem; border-radius: 1.5rem; }
}

.legal-content h1 {
    font-family: var(--font-heading);
    font-size: 2.058rem;
    line-height: var(--sqrt-phi);
    font-weight: 600;
    color: var(--color-text);
    margin: 0 0 0.5rem;
    letter-spacing: -0.01em;
}

.legal-content .legal-updated {
    margin: 0 0 2.125rem;
    font-family: var(--font-subheading);
    font-size: 0.75rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-light);
}

.legal-content h2 {
    font-family: var(--font-subheading);
    font-size: 1.272rem;               /* √φ */
    line-height: 1.4;
    font-weight: 600;
    color: var(--color-text);
    margin: 2.125rem 0 0.8125rem;
}

.legal-content h3 {
    font-family: var(--font-subheading);
    font-size: 1rem;
    line-height: 1.5;
    font-weight: 600;
    color: var(--color-secondary-dark);
    margin: 1.3125rem 0 0.5rem;
    letter-spacing: 0.01em;
}

.legal-content p,
.legal-content li {
    font-family: var(--font-body);
    font-size: 1rem;
    line-height: var(--phi);           /* exact φ for prose */
    color: var(--color-text);
    margin: 0 0 0.8125rem;
}

.legal-content ul,
.legal-content ol {
    margin: 0 0 1.3125rem;
    padding-left: 1.3125rem;
}

.legal-content li { margin-bottom: 0.5rem; }

.legal-content a {
    color: var(--color-primary-dark);
    text-decoration: none;
    border-bottom: 1px solid rgba(212, 168, 83, 0.4);
    transition: border-color var(--motion-2) var(--ease-settle);
}
.legal-content a:hover { border-bottom-color: var(--color-primary); }

.legal-content strong { font-weight: 600; color: var(--color-text); }

.legal-content hr {
    border: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(212, 168, 83, 0.4) 50%, transparent);
    margin: 2.125rem 0;
}

/* Address blocks inside legal content */
.legal-content .legal-address {
    background: var(--color-bg-warm);
    border-left: 3px solid var(--color-primary);
    padding: 1rem 1.3125rem;
    margin: 1.3125rem 0;
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    font-style: normal;
    line-height: var(--phi);
}
.legal-content .legal-address strong { display: block; margin-bottom: 0.25rem; }

/* ──────────────────────────────────────────────────────────
   11. Reduced motion — disable all phi-derived animation
   ────────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
    .moment-card,
    .auth-card,
    .moment-badge,
    .auth-badge,
    .legal-content {
        animation: none;
    }
}

/* ──────────────────────────────────────────────────────────
   12. Tablet / mobile shrink for moment cards
   ────────────────────────────────────────────────────────── */

@media (max-width: 480px) {
    .moment-section,
    .auth-section { padding: 2.125rem 0.8125rem; align-items: flex-start; }
    .moment-card,
    .auth-card { padding: 2.125rem 1.3125rem; border-radius: 1.5rem; }
    .moment-card__title,
    .auth-card h1 { font-size: 1.618rem; }
    .moment-card__lede,
    .auth-subtitle { font-size: 0.9375rem; }
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jc3MvcGFnZXMtZGVzaWduLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O2lFQU1pRTs7QUFFakU7OytEQUUrRDs7QUFFL0Q7SUFDSSw4REFBOEQ7SUFDOUQsaUJBQWlCLFNBQVMseUJBQXlCO0lBQ25ELGlCQUFpQixTQUFTLGtCQUFrQjtJQUM1QyxpQkFBaUIsU0FBUyxvQkFBb0I7SUFDOUMsaUJBQWlCLFNBQVMsdUJBQXVCO0lBQ2pELGlCQUFpQixTQUFTLHNCQUFzQjs7SUFFaEQsWUFBWTtJQUNaLGlEQUFpRDtJQUNqRCxxREFBcUQ7O0lBRXJELG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGlCQUFpQjtBQUNyQjs7QUFFQTs7OzsrREFJK0Q7O0FBRS9EO0lBQ0ksa0JBQWtCO0lBQ2xCLCtCQUErQjtJQUMvQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2Qix1QkFBdUIsV0FBVywyQkFBMkI7SUFDN0QsZ0JBQWdCO0lBQ2hCOzs7NEJBR3dCO0FBQzVCOztBQUVBLHVEQUF1RDtBQUN2RDtJQUNJLGtCQUFrQjtJQUNsQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWixZQUFZO0lBQ1osMkJBQTJCO0lBQzNCLGFBQWE7SUFDYixvQkFBb0I7QUFDeEI7O0FBRUE7SUFDSSwrQkFBK0IsSUFBSSxjQUFjO0lBQ2pELCtCQUErQixJQUFJLGNBQWM7O0lBRWpELGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixpQ0FBaUM7SUFDakMsMENBQTBDO0lBQzFDLHdCQUF3QixXQUFXLHlEQUF5RDtJQUM1Rjs7K0NBRTJDO0lBQzNDLDZEQUE2RDtJQUM3RCxrQkFBa0I7SUFDbEIsa0VBQWtFO0FBQ3RFOztBQUVBO0lBQ0ksZ0JBQWdCLG1CQUFtQixpREFBaUQ7QUFDeEY7O0FBRUE7SUFDSSxPQUFPLFVBQVUsRUFBRSwyQkFBMkIsRUFBRTtJ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ImZpbGUiOiJwYWdlcy1kZXNpZ24uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQYWdlcyDigJQgRGVzaWduLVN5c3RlbSBBcHBsaWNhdGlvblxuICAgSW1wbGVtZW50cyBERVNJR05fU1lTVEVNLm1kIHZvY2FidWxhcnkgZm9yIEFMTCBjdXN0b21lci1mYWNpbmdcbiAgIHBhZ2VzOiBob21lLCBwcm9kdWN0cywgY2FydCwgYXV0aCAobG9naW4vcmVnaXN0ZXIvZm9yZ290L3Jlc2V0KSxcbiAgIGFjY291bnQsIGxlZ2FsIChpbXByZXNzdW0vZGF0ZW5zY2h1dHovYWdiKSwgY2hlY2tvdXQgcGFnZXMuXG4gICBPdXQgb2Ygc2NvcGU6IGNvbmZpZ3VyYXRvciBkb29yIGdyaWQgKHByb2R1Y3Rpb24tZml4ZWQpLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgMS4gRm91bmRhdGlvbmFsIHRva2VucyAoYWRkaXRpdmUg4oCUIGRvZXMgbm90IHJlbmFtZSBleGlzdGluZylcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG46cm9vdCB7XG4gICAgLyogTW90aW9uOiBwaGktc3RlcHBlZCBmcm9tIGEgMjAwIG1zIGJhc2UgKERFU0lHTl9TWVNURU0gwqc4KSAqL1xuICAgIC0tbW90aW9uLTE6IDEyNG1zOyAgICAgICAgLyogMS/PhiDigJQgbWljcm8tZmVlZGJhY2sgKi9cbiAgICAtLW1vdGlvbi0yOiAyMDBtczsgICAgICAgIC8qIDEgICDigJQgZGVmYXVsdCAqL1xuICAgIC0tbW90aW9uLTM6IDMyNG1zOyAgICAgICAgLyogz4YgICDigJQgZW50cmFuY2VzICovXG4gICAgLS1tb3Rpb24tNDogNTI0bXM7ICAgICAgICAvKiDPhsKyICDigJQgc2VjdGlvbiBmYWRlICovXG4gICAgLS1tb3Rpb24tNTogODQ4bXM7ICAgICAgICAvKiDPhsKzICDigJQgY2VsZWJyYXRvcnkgKi9cblxuICAgIC8qIEVhc2luZ3MgKi9cbiAgICAtLWVhc2Utc2V0dGxlOiBjdWJpYy1iZXppZXIoMC4yMiwgMS4wLCAwLjM2LCAxLjApO1xuICAgIC0tZWFzZS1jZWxlYnJhdGU6IGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxLjApO1xuXG4gICAgLyogUGhpIHByb3BvcnRpb25zICovXG4gICAgLS1waGk6IDEuNjE4O1xuICAgIC0tcGhpLWludjogMC42MTg7XG4gICAgLS1zcXJ0LXBoaTogMS4yNzI7XG59XG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgMi4gLm1vbWVudC1jYXJkIOKAlCB0aGUgZ29sZGVuLXJlY3RhbmdsZSBcIm1vbWVudFwiIHJlY2lwZS5cbiAgICAgIFVzZWQgZm9yIGF1dGggcGFuZWxzLCBzdWNjZXNzL2NhbmNlbCBwYWdlcywgbmFycm93XG4gICAgICBzaW5nbGUtcHVycG9zZSBjYXJkcy4gKERFU0lHTl9TWVNURU0gwqc5KVxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5tb21lbnQtc2VjdGlvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyNDBweCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDMuNDM3NXJlbSAxcmVtOyAgICAgICAgICAvKiBGaWIgNTUgcHggb24gdGFsbCBheGlzICovXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB0b3AsIHJnYmEoMjEyLCAxNjgsIDgzLCAwLjA1KSAwJSwgdHJhbnNwYXJlbnQgNTUlKSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgYm90dG9tLCByZ2JhKDQ1LCAxMDcsIDkyLCAwLjAzKSAwJSwgdHJhbnNwYXJlbnQgNTUlKSxcbiAgICAgICAgdmFyKC0tY29sb3ItYmctd2FybSk7XG59XG5cbi8qIERlY29yYXRpdmUgZ29sZGVuLXNwaXJhbCBtb3RpZiwgbG93ZXItcmlnaHQgY29ybmVyICovXG4ubW9tZW50LXNwaXJhbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAtMS4zMTI1cmVtO1xuICAgIGJvdHRvbTogLTIuMTI1cmVtO1xuICAgIHdpZHRoOiAxOHJlbTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIG9wYWNpdHk6IDAuMDg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5tb21lbnQtY2FyZCB7XG4gICAgLS1jYXJkLXBhZGRpbmctYmxvY2s6IDMuNDM3NXJlbTsgICAvKiA1NSBweCBGaWIgKi9cbiAgICAtLWNhcmQtcGFkZGluZy1pbmxpbmU6IDIuMTI1cmVtOyAgIC8qIDM0IHB4IEZpYiAqL1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAzNHJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE2OCwgODMsIDAuMTgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEuODEyNXJlbTsgICAgICAgICAgLyogY29uY2VudHJpYzogOCBweCBpbm5lciArIDM0IHB4IHBhZGRpbmcg4omIIDQyIHB4IG91dGVyICovXG4gICAgYm94LXNoYWRvdzpcbiAgICAgICAgMCAxcHggMnB4IHJnYmEoNDUsIDU1LCA3MiwgMC4wNCksXG4gICAgICAgIDAgMjFweCA1NXB4IC04cHggcmdiYSg0NSwgNTUsIDcyLCAwLjEwKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1jYXJkLXBhZGRpbmctYmxvY2spIHZhcigtLWNhcmQtcGFkZGluZy1pbmxpbmUpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbmltYXRpb246IG1vbWVudENhcmRFbnRlciB2YXIoLS1tb3Rpb24tNSkgdmFyKC0tZWFzZS1zZXR0bGUpIGJvdGg7XG59XG5cbi5tb21lbnQtY2FyZC0td2lkZSB7XG4gICAgbWF4LXdpZHRoOiA1NXJlbTsgICAgICAgICAgICAgICAgICAvKiBGaWIgODgwIHB4IOKAlCBmb3IgcHJvZHVjdC9sZWdhbC1saXN0aW5nIGNhcmRzICovXG59XG5cbkBrZXlmcmFtZXMgbW9tZW50Q2FyZEVudGVyIHtcbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEzcHgpOyB9XG4gICAgdG8gICB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxufVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDMuIC5tb21lbnQtYmFkZ2Ug4oCUIGNvbmNlbnRyaWMtcmluZyBpY29uIChERVNJR05fU1lTVEVNIMKnNSlcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4ubW9tZW50LWJhZGdlIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIGF1dG8gMi4xMjVyZW07XG4gICAgd2lkdGg6IDE0NHB4O1xuICAgIGhlaWdodDogMTQ0cHg7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGFuaW1hdGlvbjogbW9tZW50QmFkZ2VQb3AgdmFyKC0tbW90aW9uLTQpIHZhcigtLWVhc2UtY2VsZWJyYXRlKSB2YXIoLS1tb3Rpb24tMSkgYm90aDtcbn1cblxuLm1vbWVudC1iYWRnZSBzdmcgeyB3aWR0aDogMTQ0cHg7IGhlaWdodDogMTQ0cHg7IH1cblxuLm1vbWVudC1iYWRnZV9fZGlzYyB7IGZpbGw6IHZhcigtLWNvbG9yLXByaW1hcnkpOyBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNHB4IDE0cHggcmdiYSgyMTIsIDE2OCwgODMsIDAuMzApKTsgfVxuLm1vbWVudC1iYWRnZV9fZGlzYy0tc2Vjb25kYXJ5IHsgZmlsbDogdmFyKC0tY29sb3Itc2Vjb25kYXJ5KTsgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDRweCAxNHB4IHJnYmEoNDUsIDEwNywgOTIsIDAuMzApKTsgfVxuLm1vbWVudC1iYWRnZV9fZGlzYy0tbmV1dHJhbCB7IGZpbGw6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpOyBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNHB4IDE0cHggcmdiYSgxMTMsIDEyOCwgMTUwLCAwLjIwKSk7IH1cbi5tb21lbnQtYmFkZ2VfX2Rpc2MtLWFjY2VudCB7IGZpbGw6IHZhcigtLWNvbG9yLWFjY2VudCk7IGZpbHRlcjogZHJvcC1zaGFkb3coMCA0cHggMTRweCByZ2JhKDEzOSwgNTgsIDc3LCAwLjI1KSk7IH1cblxuQGtleWZyYW1lcyBtb21lbnRCYWRnZVBvcCB7XG4gICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogc2NhbGUoMC42Mik7IH1cbiAgICB0byAgIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxufVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDQuIFR5cG9ncmFwaHkgbGFkZGVyIChwaGktc3RlcHBlZCkg4oCUIGFwcGxpZWQgdG8gLm1vbWVudC1jYXJkXG4gICAgICBhbmQgdG8gZ2xvYmFsIHBhZ2UgdGl0bGVzIHZpYSAucGFnZS10aXRsZS1ibG9ja1xuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5tb21lbnQtY2FyZF9fZXllYnJvdyxcbi5wYWdlLWV5ZWJyb3cge1xuICAgIG1hcmdpbjogMCAwIDAuNXJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4xOGVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFyayk7XG59XG5cbi5tb21lbnQtY2FyZF9fdGl0bGUsXG4ucGFnZS10aXRsZSB7XG4gICAgbWFyZ2luOiAwIDAgMS4zMTI1cmVtOyAgICAgICAgICAgICAvKiAyMSBweCAqL1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWhlYWRpbmcpO1xuICAgIGZvbnQtc2l6ZTogMi4wNThyZW07ICAgICAgICAgICAgICAgLyogz4Ygw5cg4oiaz4YgKi9cbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3FydC1waGkpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuXG4ubW9tZW50LWNhcmRfX2xlZGUsXG4ucGFnZS1sZWRlIHtcbiAgICBtYXJnaW46IDAgYXV0byAyLjEyNXJlbTtcbiAgICBtYXgtd2lkdGg6IDI4cmVtO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWJvZHkpO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tcGhpKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi5wYWdlLXRpdGxlLWJsb2NrIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAzLjQzNzVyZW0gYXV0byAyLjEyNXJlbTtcbiAgICBtYXgtd2lkdGg6IDM4cmVtO1xuICAgIHBhZGRpbmc6IDAgMXJlbTtcbn1cblxuLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICA1LiBTZWN0aW9uIG9ybmFtZW50IChmbG93ZXIgb2YgbGlmZSkg4oCUIERFU0lHTl9TWVNURU0gwqc2XG4gICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnNlY3Rpb24tb3JuYW1lbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuMzc1cmVtO1xuICAgIG1hcmdpbjogMi4xMjVyZW0gYXV0bztcbiAgICBtYXgtd2lkdGg6IDhyZW07XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uc2VjdGlvbi1vcm5hbWVudCBzcGFuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogNXB4O1xuICAgIGhlaWdodDogNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBvcGFjaXR5OiAwLjQ7XG59XG5cbi5zZWN0aW9uLW9ybmFtZW50IHNwYW46bnRoLWNoaWxkKDQpIHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIG9wYWNpdHk6IDAuNjU7XG59XG5cbi5zZWN0aW9uLW9ybmFtZW50LS1pbnZlcnNlIHNwYW4geyBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7IG9wYWNpdHk6IDAuNjsgfVxuLnNlY3Rpb24tb3JuYW1lbnQtLWludmVyc2Ugc3BhbjpudGgtY2hpbGQoNCkgeyBvcGFjaXR5OiAwLjg1OyB9XG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgNi4gLmJ0bi1naG9zdCDigJQgc2Vjb25kYXJ5IG91dGxpbmVkIGFjdGlvbiAodXNlZCBldmVyeXdoZXJlKVxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5idG4tZ2hvc3Qge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tbW90aW9uLTIpIHZhcigtLWVhc2Utc2V0dGxlKSxcbiAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1tb3Rpb24tMikgdmFyKC0tZWFzZS1zZXR0bGUpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQgdmFyKC0tbW90aW9uLTIpIHZhcigtLWVhc2Utc2V0dGxlKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5idG4tZ2hvc3Q6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFyayk7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE2OCwgODMsIDAuMDYpO1xufVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDcuIEF1dGggcGFnZXMg4oCUIGFwcGx5IG1vbWVudC1jYXJkIHJlY2lwZSB0byBleGlzdGluZyBtYXJrdXBcbiAgICAgIChvdmVycmlkZXMgdGhlIGxvb3NlIHN0eWxlcyBpbiBtYWluLmNzcyB3aXRob3V0IHJlbmFtaW5nKVxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5hdXRoLXNlY3Rpb24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQwcHgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzLjQzNzVyZW0gMXJlbTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQ6XG4gICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHRvcCwgcmdiYSgyMTIsIDE2OCwgODMsIDAuMDUpIDAlLCB0cmFuc3BhcmVudCA1NSUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBib3R0b20sIHJnYmEoNDUsIDEwNywgOTIsIDAuMDMpIDAlLCB0cmFuc3BhcmVudCA1NSUpLFxuICAgICAgICB2YXIoLS1jb2xvci1iZy13YXJtKTtcbn1cblxuLmF1dGgtc2VjdGlvbiAuY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uYXV0aC1jYXJkIHtcbiAgICAvKiBDb21wb3NlIHdpdGggLm1vbWVudC1jYXJkIHZpc3VhbHMgKi9cbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDMycmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTY4LCA4MywgMC4xOCk7XG4gICAgYm9yZGVyLXJhZGl1czogMS44MTI1cmVtO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICAgIDAgMXB4IDJweCByZ2JhKDQ1LCA1NSwgNzIsIDAuMDQpLFxuICAgICAgICAwIDIxcHggNTVweCAtOHB4IHJnYmEoNDUsIDU1LCA3MiwgMC4xMCk7XG4gICAgcGFkZGluZzogMy40Mzc1cmVtIDIuMTI1cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbmltYXRpb246IG1vbWVudENhcmRFbnRlciB2YXIoLS1tb3Rpb24tNSkgdmFyKC0tZWFzZS1zZXR0bGUpIGJvdGg7XG59XG5cbi5hdXRoLWNhcmQgaDEge1xuICAgIG1hcmdpbjogMCAwIDAuNXJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDIuMDU4cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zcXJ0LXBoaSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG5cbi5hdXRoLXN1YnRpdGxlIHtcbiAgICBtYXJnaW46IDAgYXV0byAyLjEyNXJlbTtcbiAgICBtYXgtd2lkdGg6IDI2cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXBoaSk7XG59XG5cbi8qIE9wdGlvbmFsIGJhZGdlIHNsb3QgYXQgdGhlIHRvcCBvZiBhbiBhdXRoIGNhcmQgKi9cbi5hdXRoLWJhZGdlIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIGF1dG8gMS4zMTI1cmVtO1xuICAgIHdpZHRoOiA5NnB4O1xuICAgIGhlaWdodDogOTZweDtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgYW5pbWF0aW9uOiBtb21lbnRCYWRnZVBvcCB2YXIoLS1tb3Rpb24tNCkgdmFyKC0tZWFzZS1jZWxlYnJhdGUpIHZhcigtLW1vdGlvbi0xKSBib3RoO1xufVxuLmF1dGgtYmFkZ2Ugc3ZnIHsgd2lkdGg6IDk2cHg7IGhlaWdodDogOTZweDsgfVxuXG4vKiBGb3JtIGxheW91dCAqL1xuLmF1dGgtZm9ybSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBtYXgtd2lkdGg6IDI2cmVtO1xufVxuLmF1dGgtZm9ybSAuZm9ybS1ncm91cCB7IG1hcmdpbi1ib3R0b206IDEuMzEyNXJlbTsgfVxuLmF1dGgtZm9ybSAuZm9ybS1yb3cgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IGdhcDogMC44MTI1cmVtOyB9XG4uYXV0aC1mb3JtIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3ViaGVhZGluZyk7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cbi5hdXRoLWZvcm0gaW5wdXRbdHlwZT1cInRleHRcIl0sXG4uYXV0aC1mb3JtIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi5hdXRoLWZvcm0gaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwLjgxMjVyZW0gMXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13YXJtKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtYm9keSk7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tbW90aW9uLTIpIHZhcigtLWVhc2Utc2V0dGxlKSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLW1vdGlvbi0yKSB2YXIoLS1lYXNlLXNldHRsZSk7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5hdXRoLWZvcm0gaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjEyLCAxNjgsIDgzLCAwLjE4KTtcbn1cbi5hdXRoLWZvcm0gLmZvcm0tZXJyb3IsXG4uYXV0aC1mb3JtIC5mb3JtLXN1Y2Nlc3Mge1xuICAgIHBhZGRpbmc6IDAuODEyNXJlbSAxcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMS4zMTI1cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXBoaSk7XG59XG4uYXV0aC1mb3JtIC5mb3JtLWVycm9yIHsgYmFja2dyb3VuZDogcmdiYSgxMzksIDU4LCA3NywgMC4wOCk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTM5LCA1OCwgNzcsIDAuMjIpOyBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50LWRhcmspOyB9XG4uYXV0aC1mb3JtIC5mb3JtLXN1Y2Nlc3MgeyBiYWNrZ3JvdW5kOiByZ2JhKDQ1LCAxMDcsIDkyLCAwLjA4KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0NSwgMTA3LCA5MiwgMC4yMik7IGNvbG9yOiB2YXIoLS1jb2xvci1zZWNvbmRhcnktZGFyayk7IH1cblxuLmF1dGgtZm9ybSBidXR0b25bdHlwZT1cInN1Ym1pdFwiXSxcbi5hdXRoLWZvcm0gLmJ0bi5idG4tcHJpbWFyeSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xufVxuXG4uYXV0aC1saW5rcyB7XG4gICAgbWFyZ2luLXRvcDogMi4xMjVyZW07XG4gICAgcGFkZGluZy10b3A6IDEuMzEyNXJlbTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogMC41cmVtIDAuODEyNXJlbTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuLmF1dGgtbGlua3MgYSB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFyayk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjgsIDgzLCAwLjMpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1tb3Rpb24tMikgdmFyKC0tZWFzZS1zZXR0bGUpO1xufVxuLmF1dGgtbGlua3MgYTpob3ZlciB7IGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpOyB9XG4uYXV0aC1saW5rcyAuZGl2aWRlciB7IGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWxpZ2h0KTsgfVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDguIEhlcm8g4oCUIHBoaS1zdGVwcGVkIHR5cG9ncmFwaHksIG9ybmFtZW50IGJldHdlZW4gc2VjdGlvbnNcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4uaGVyby1jb21wYWN0IGgxIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDIuNjE4cmVtOyAgICAgICAgICAgICAgIC8qIM+GwrIg4oCUIGZsYWdzaGlwIGRpc3BsYXkgKi9cbiAgICBsaW5lLWhlaWdodDogMS4xO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxNWVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAuaGVyby1jb21wYWN0IGgxIHsgZm9udC1zaXplOiAyLjA1OHJlbTsgfVxufVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDkuIFByb2R1Y3RzICYgQ2FydCDigJQgdHlwb2dyYXBoeSByZWZyZXNoXG4gICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLnByb2R1Y3RzLXNlY3Rpb24gaDEsXG4uY2FydC1zZWN0aW9uIGgxLFxuLmNoZWNrb3V0LXNlY3Rpb24gaDEge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWhlYWRpbmcpO1xuICAgIGZvbnQtc2l6ZTogMi4wNThyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNxcnQtcGhpKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDIuMTI1cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnByb2R1Y3RzLXNlY3Rpb24gaDE6OmFmdGVyLFxuLmNhcnQtc2VjdGlvbiBoMTo6YWZ0ZXIsXG4uY2hlY2tvdXQtc2VjdGlvbiBoMTo6YWZ0ZXIsXG4ubGVnYWwtc2VjdGlvbiBoMTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDMuNDM3NXJlbTsgICAgICAgICAgICAgICAgICAvKiA1NSBweCBGaWIgKi9cbiAgICBoZWlnaHQ6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCB2YXIoLS1jb2xvci1wcmltYXJ5KSA1MCUsIHRyYW5zcGFyZW50KTtcbiAgICBtYXJnaW46IDAuODEyNXJlbSBhdXRvIDA7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDEwLiBMZWdhbCBwYWdlcyDigJQgSW1wcmVzc3VtIC8gRGF0ZW5zY2h1dHogLyBBR0JcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4ubGVnYWwtc2VjdGlvbiB7XG4gICAgcGFkZGluZzogMy40Mzc1cmVtIDFyZW0gNS41NjI1cmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdhcm0pO1xuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyNDBweCk7XG59XG5cbi5sZWdhbC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDQycmVtOyAgICAgICAgICAgICAgICAgIC8qIGNsb3NlIHRvIGEgZ29sZGVuLXJlY3QgbGluZSBsZW5ndGggKi9cbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE2OCwgODMsIDAuMTQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEuODEyNXJlbTtcbiAgICBwYWRkaW5nOiAzLjQzNzVyZW0gMi4xMjVyZW07XG4gICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoNDUsIDU1LCA3MiwgMC4wNCksIDAgMTNweCAzNHB4IC04cHggcmdiYSg0NSwgNTUsIDcyLCAwLjA4KTtcbiAgICBhbmltYXRpb246IG1vbWVudENhcmRFbnRlciB2YXIoLS1tb3Rpb24tNSkgdmFyKC0tZWFzZS1zZXR0bGUpIGJvdGg7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5sZWdhbC1jb250ZW50IHsgcGFkZGluZzogMi4xMjVyZW0gMS4zMTI1cmVtOyBib3JkZXItcmFkaXVzOiAxLjVyZW07IH1cbn1cblxuLmxlZ2FsLWNvbnRlbnQgaDEge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWhlYWRpbmcpO1xuICAgIGZvbnQtc2l6ZTogMi4wNThyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNxcnQtcGhpKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBtYXJnaW46IDAgMCAwLjVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG5cbi5sZWdhbC1jb250ZW50IC5sZWdhbC11cGRhdGVkIHtcbiAgICBtYXJnaW46IDAgMCAyLjEyNXJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWxpZ2h0KTtcbn1cblxuLmxlZ2FsLWNvbnRlbnQgaDIge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN1YmhlYWRpbmcpO1xuICAgIGZvbnQtc2l6ZTogMS4yNzJyZW07ICAgICAgICAgICAgICAgLyog4oiaz4YgKi9cbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIG1hcmdpbjogMi4xMjVyZW0gMCAwLjgxMjVyZW07XG59XG5cbi5sZWdhbC1jb250ZW50IGgzIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1zZWNvbmRhcnktZGFyayk7XG4gICAgbWFyZ2luOiAxLjMxMjVyZW0gMCAwLjVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbn1cblxuLmxlZ2FsLWNvbnRlbnQgcCxcbi5sZWdhbC1jb250ZW50IGxpIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5KTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXBoaSk7ICAgICAgICAgICAvKiBleGFjdCDPhiBmb3IgcHJvc2UgKi9cbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luOiAwIDAgMC44MTI1cmVtO1xufVxuXG4ubGVnYWwtY29udGVudCB1bCxcbi5sZWdhbC1jb250ZW50IG9sIHtcbiAgICBtYXJnaW46IDAgMCAxLjMxMjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxLjMxMjVyZW07XG59XG5cbi5sZWdhbC1jb250ZW50IGxpIHsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9XG5cbi5sZWdhbC1jb250ZW50IGEge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMTIsIDE2OCwgODMsIDAuNCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLW1vdGlvbi0yKSB2YXIoLS1lYXNlLXNldHRsZSk7XG59XG4ubGVnYWwtY29udGVudCBhOmhvdmVyIHsgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7IH1cblxuLmxlZ2FsLWNvbnRlbnQgc3Ryb25nIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpOyB9XG5cbi5sZWdhbC1jb250ZW50IGhyIHtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyMTIsIDE2OCwgODMsIDAuNCkgNTAlLCB0cmFuc3BhcmVudCk7XG4gICAgbWFyZ2luOiAyLjEyNXJlbSAwO1xufVxuXG4vKiBBZGRyZXNzIGJsb2NrcyBpbnNpZGUgbGVnYWwgY29udGVudCAqL1xuLmxlZ2FsLWNvbnRlbnQgLmxlZ2FsLWFkZHJlc3Mge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdhcm0pO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgcGFkZGluZzogMXJlbSAxLjMxMjVyZW07XG4gICAgbWFyZ2luOiAxLjMxMjVyZW0gMDtcbiAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXJhZGl1cy1tZCkgdmFyKC0tcmFkaXVzLW1kKSAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tcGhpKTtcbn1cbi5sZWdhbC1jb250ZW50IC5sZWdhbC1hZGRyZXNzIHN0cm9uZyB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9XG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgMTEuIFJlZHVjZWQgbW90aW9uIOKAlCBkaXNhYmxlIGFsbCBwaGktZGVyaXZlZCBhbmltYXRpb25cbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIC5tb21lbnQtY2FyZCxcbiAgICAuYXV0aC1jYXJkLFxuICAgIC5tb21lbnQtYmFkZ2UsXG4gICAgLmF1dGgtYmFkZ2UsXG4gICAgLmxlZ2FsLWNvbnRlbnQge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDEyLiBUYWJsZXQgLyBtb2JpbGUgc2hyaW5rIGZvciBtb21lbnQgY2FyZHNcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAubW9tZW50LXNlY3Rpb24sXG4gICAgLmF1dGgtc2VjdGlvbiB7IHBhZGRpbmc6IDIuMTI1cmVtIDAuODEyNXJlbTsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgICAubW9tZW50LWNhcmQsXG4gICAgLmF1dGgtY2FyZCB7IHBhZGRpbmc6IDIuMTI1cmVtIDEuMzEyNXJlbTsgYm9yZGVyLXJhZGl1czogMS41cmVtOyB9XG4gICAgLm1vbWVudC1jYXJkX190aXRsZSxcbiAgICAuYXV0aC1jYXJkIGgxIHsgZm9udC1zaXplOiAxLjYxOHJlbTsgfVxuICAgIC5tb21lbnQtY2FyZF9fbGVkZSxcbiAgICAuYXV0aC1zdWJ0aXRsZSB7IGZvbnQtc2l6ZTogMC45Mzc1cmVtOyB9XG59XG4iXX0= */