/*!**********************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[2]!./assets/styles/main.css ***!
  \**********************************************************************************************************************************************************************************************/
/* Reset CSS de base */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
body {
    overflow-x: hidden;
    position: relative;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Inter', sans-serif;
}
header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 5%;
    background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
    box-shadow: 0 8px 32px rgba(0,0,0,0.08);
    position: fixed;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1000;
    height: 80px;
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
#logo {
    height: 55px;
    width: auto;
    transition: transform 0.3s ease;
}
#logo:hover {
    transform: scale(1.05);
}
.nav {
    display: flex;
    align-items: center;
}
.nav ul {
    display: flex;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: 2.5rem;
}
.nav ul li a {
    text-decoration: none;
    color: #1e293b;
    font-weight: 600;
    font-size: 1rem;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    height: 100%;
    padding: 0.5rem 1rem;
    border-radius: 12px;
}
.nav ul li a::before {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 50%;
    width: 0;
    height: 3px;
    background: linear-gradient(90deg, #3b82f6, #8b5cf6);
    transition: all 0.3s ease;
    transform: translateX(-50%);
    border-radius: 2px;
}
.nav ul li a:hover {
    color: #3b82f6;
    background: rgba(59, 130, 246, 0.05);
    transform: translateY(-2px);
}
.nav ul li a:hover::before {
    width: 80%;
}
/* Burger Menu */
.burger-menu {
    display: none;
    flex-direction: column;
    gap: 6px;
    cursor: pointer;
    padding: 10px;
    z-index: 1001;
    position: relative;
}
.burger-menu span {
    display: block;
    width: 25px;
    height: 3px;
    background-color: #003366;
    transition: all 0.3s ease;
    transform-origin: center;
}
/* Media Queries */
@media screen and (max-width: 768px) {
    .burger-menu {
        display: flex;
    }

    .burger-menu.active span:nth-child(1) {
        transform: translateY(9px) rotate(45deg);
    }

    .burger-menu.active span:nth-child(2) {
        opacity: 0;
    }

    .burger-menu.active span:nth-child(3) {
        transform: translateY(-9px) rotate(-45deg);
    }

    .nav {
        position: fixed;
        top: 0;
        right: 0;
        width: 100%;
        height: 100vh;
        background: linear-gradient(135deg, 
            rgba(0, 51, 102, 0.85) 0%,
            rgba(0, 89, 161, 0.75) 50%,
            rgba(0, 51, 102, 0.65) 100%
        );
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        transform: translateX(100%);
        transition: transform 0.5s cubic-bezier(0.7, 0, 0.3, 1);
        z-index: 998;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .nav ul {
        flex-direction: column;
        gap: 2.5rem;
        padding: 0;
        transition: transform 0.5s cubic-bezier(0.7, 0, 0.3, 1), 
                    opacity 0.5s cubic-bezier(0.7, 0, 0.3, 1);
    }

    .nav.active {
        transform: translateX(0);
    }

    .nav.active ul {
        transform: translateX(0);
        opacity: 1;
    }

    .nav:not(.active) {
        transition-delay: 0.2s;
    }

    .nav:not(.active) ul {
        transform: translateX(30px);
        opacity: 0;
        transition-delay: 0s;
    }

    .nav ul li a {
        font-size: 2rem;
        color: white;
        font-weight: 300;
        letter-spacing: 1px;
        padding: 0.5rem 2rem;
        position: relative;
        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        display: inline-block;
        border-radius: 8px;
    }

    .nav ul li a:hover {
        transform: translateX(10px);
        color: rgba(255, 255, 255, 0.8);
        background: rgba(255, 255, 255, 0.1);
    }

    .nav ul li a.clicked {
        transform: scale(0.95) translateX(20px);
        opacity: 0.8;
        background: rgba(255, 255, 255, 0.15);
        box-shadow: 0 0 15px rgba(255, 255, 255, 0.5),
                    0 0 25px rgba(0, 89, 161, 0.5),
                    inset 0 0 10px rgba(255, 255, 255, 0.2);
        transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    }
}
@media screen and (max-width: 480px) {
    header {
        padding: 1rem;
    }

    #logo {
        height: 40px;
    }
}
.login-link {
    padding: 0;
    background: none;
}
.login-link i {
    font-size: 0.9rem;
}
.nav ul li {
    display: flex;
    align-items: center;
    height: 100%;
}
.products {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 20px;
}
.product-card {
    width: 30%;
    border: 1px solid #ccc;
    padding: 20px;
}
.product-card img {
    width: 100%;
    height: 200px;
    -o-object-fit: cover;
       object-fit: cover;
}
.product-card h3 {
    margin-top: 10px;
    font-size: 1.5rem;
}
.product-card p {
    margin-top: 10px;
    font-size: 1rem;
}
/* Hero Section */
.hero {
    position: relative;
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 6rem 0;
    background: url(/build/images/banner.9a6f5376.jpg) center/cover no-repeat;
    overflow: hidden;
}
.hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(to right, rgba(255, 255, 255, 0.95), rgba(255, 255, 255, 0.8));
    z-index: 1;
}
.hero-content {
    position: relative;
    z-index: 2;
    text-align: center;
    width: 100%;
    max-width: 800px;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.hero-content h1 {
    font-size: clamp(2.5rem, 6vw, 4rem);
    background: linear-gradient(135deg, rgb(1, 59, 137) 70%, rgb(41, 171, 226));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    margin-bottom: 1.5rem;
    line-height: 1.2;
    font-weight: bold;
}
.hero-content p {
    font-size: clamp(1.2rem, 4vw, 2rem);
    background: #0a9ef4;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    margin-bottom: 2rem;
    line-height: 1.4;
    font-weight: 500;
}
@keyframes glowPulse {
    from {
        text-shadow: 
            0 0 7px rgba(1, 59, 137, 0.2),
            0 0 10px rgba(1, 59, 137, 0.2),
            0 0 21px rgba(1, 59, 137, 0.2),
            0 0 42px rgba(1, 59, 137, 0.1);
    }
    to {
        text-shadow: 
            0 0 10px rgba(1, 59, 137, 0.3),
            0 0 14px rgba(1, 59, 137, 0.3),
            0 0 28px rgba(1, 59, 137, 0.2),
            0 0 48px rgba(1, 59, 137, 0.1);
    }
}
/* Services Section */
.services {
    padding: 4rem 10%;
    background: #f8f9fa;
}
.services-header {
    text-align: center;
    max-width: 900px;
    margin: 0 auto 3rem;
}
.services-header h2 {
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    color: #003366;
    margin-bottom: 1rem;
    line-height: 1.3;
}
.services-header h3 {
    font-size: clamp(1.8rem, 5vw, 3rem);
    color: #0059A1;
    margin-bottom: 2rem;
}
.services-header p {
    font-size: clamp(1rem, 3vw, 1.2rem);
    color: #666;
    line-height: 1.6;
}
.services-grid {
    position: relative;
    overflow: hidden;
    padding: 0 5rem;
}
.services-carousel {
    display: flex;
    transition: transform 0.5s ease;
    gap: 2rem;
    padding: 0 1rem;
}
.service-card {
    background: white;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0, 51, 102, 0.08);
    transition: all 0.3s ease;
    position: relative;
    border: 1px solid rgba(0, 89, 161, 0.1);
    display: flex;
    flex-direction: column;
    height: 650px;
    width: 320px;
    flex-shrink: 0;
}
.carousel-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0, 89, 161, 0.9);
    color: white;
    border: none;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    z-index: 10;
    font-size: 1.2rem;
    font-weight: bold;
}
.carousel-nav:hover {
    background: #003366;
    transform: translateY(-50%) scale(1.1);
    box-shadow: 0 4px 15px rgba(0, 89, 161, 0.3);
}
.carousel-nav.prev {
    left: 15px;
}
.carousel-nav.next {
    right: 15px;
}
.carousel-nav:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: translateY(-50%);
}
.carousel-nav:disabled:hover {
    background: rgba(0, 89, 161, 0.9);
    transform: translateY(-50%);
    box-shadow: none;
}
.service-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 8px 25px rgba(0, 51, 102, 0.15);
}
.service-header {
    background: linear-gradient(135deg, #003366, #0059A1);
    color: white;
    padding: 2rem;
    text-align: center;
    position: relative;
    overflow: hidden;
    height: 140px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    flex-shrink: 0;
}
.service-header::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(45deg, rgba(255, 255, 255, 0.1), transparent);
    z-index: 1;
}
.service-header h4 {
    font-size: 1.6rem;
    margin: 0;
    position: relative;
    z-index: 2;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
}
.service-subtitle {
    font-size: 0.95rem;
    opacity: 0.9;
    margin-top: 0.5rem;
    position: relative;
    z-index: 2;
    color: rgba(255, 255, 255, 0.9);
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    line-clamp: 1;
    -webkit-box-orient: vertical;
}
.service-price {
    text-align: center;
    padding: 2rem;
    background: white;
    position: relative;
    height: 120px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    flex-shrink: 0;
}
.service-price::after {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 80%;
    height: 1px;
    background: linear-gradient(to right, transparent, rgba(0, 89, 161, 0.2), transparent);
}
.service-price .period {
    font-size: 1rem;
    color: #666;
    margin-bottom: 0.5rem;
    order: 1;
}
.service-price .price-line {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 0.25rem;
    order: 2;
}
.service-price .amount {
    font-size: 2.5rem;
    font-weight: 700;
    color: #4C4C4B;
    text-shadow: 0 0 10px rgba(173, 216, 230, 0.2);
}
.service-price .currency {
    font-size: 1.2rem;
    color: #0059A1;
}
.service-features {
    padding: 2rem;
    background: rgba(248, 249, 250, 0.5);
    border-top: 1px solid rgba(0, 89, 161, 0.1);
    height: 150px;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    overflow: hidden;
    flex-shrink: 0;
}
.service-features ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.service-features li {
    padding: 0.5rem 0;
    color: #4C4C4B;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    border-bottom: 1px solid rgba(0, 89, 161, 0.1);
    font-size: 0.9rem;
    line-height: 1.3;
}
.service-features li:last-child {
    border-bottom: none;
}
.service-features li::before {
    content: '✓';
    color: #0059A1;
    font-weight: bold;
}
.service-button {
    display: block;
    background: #0059A1;
    color: white;
    text-align: center;
    padding: 1rem;
    text-decoration: none;
    margin: 0 2rem 2rem;
    border-radius: 4px;
    transition: background-color 0.3s;
    flex-shrink: 0;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.service-button:hover {
    background: #003366;
    text-decoration: none;
    color: white;
}
/* Footer */
.home-footer {
    background: linear-gradient(135deg, #003366, #0059A1);
    color: white;
    padding: 3rem 0 2rem;
    margin-top: 0;
}
.footer-content {
    max-width: 1200px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 2fr 1fr;
    gap: 3rem;
    align-items: center;
    padding: 0 2rem;
}
.footer-logo {
    display: flex;
    justify-content: center;
}
.footer-logo-img {
    max-width: 150px;
    height: auto;
}
.footer-info {
    text-align: center;
}
.footer-address {
    margin-bottom: 2rem;
}
.footer-address p {
    margin: 0.5rem 0;
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.9);
    line-height: 1.4;
}
.footer-copyright {
    border-top: 1px solid rgba(255, 255, 255, 0.2);
    padding-top: 1.5rem;
}
.footer-copyright p {
    margin: 0;
    font-size: 0.95rem;
    color: rgba(255, 255, 255, 0.8);
    font-weight: 500;
}
.footer-social {
    text-align: center;
}
.social-title {
    margin: 0 0 1.5rem 0;
    font-size: 1.1rem;
    font-weight: 600;
    color: white;
}
.social-links {
    display: flex;
    justify-content: center;
    gap: 1rem;
}
.social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 45px;
    height: 45px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    color: white;
    text-decoration: none;
    font-size: 1.2rem;
    transition: all 0.3s ease;
    border: 2px solid rgba(255, 255, 255, 0.2);
}
.social-link:hover {
    background: rgba(255, 255, 255, 0.2);
    transform: translateY(-3px);
    box-shadow: 0 6px 15px rgba(0, 0, 0, 0.2);
    border-color: rgba(255, 255, 255, 0.4);
    color: white;
}
.social-link i {
    font-size: 1.1rem;
}
/* Responsive Footer */
@media screen and (max-width: 768px) {
    .footer-content {
        grid-template-columns: 1fr;
        gap: 2rem;
        text-align: center;
        padding: 0 1rem;
    }
    
    .footer-logo-img {
        max-width: 120px;
    }
    
    .footer-address p {
        font-size: 0.95rem;
    }
    
    .footer-copyright p {
        font-size: 0.9rem;
    }
    
    .social-links {
        gap: 0.75rem;
    }
    
    .social-link {
        width: 40px;
        height: 40px;
        font-size: 1rem;
    }
}
@media screen and (max-width: 480px) {
    .home-footer {
        padding: 2rem 0 1.5rem;
    }
    
    .footer-content {
        gap: 1.5rem;
    }
    
    .footer-logo-img {
        max-width: 100px;
    }
    
    .footer-address p {
        font-size: 0.9rem;
    }
    
    .social-link {
        width: 35px;
        height: 35px;
        font-size: 0.9rem;
    }
}
@media screen and (max-width: 768px) {
    .hero {
        padding: 6rem 5% 2rem;
        text-align: center;
        background-position: center;
    }

    .hero::before {
        background: linear-gradient(
            to bottom,
            rgba(255, 255, 255, 0.85) 0%,
            rgba(255, 255, 255, 0.75) 50%,
            rgba(255, 255, 255, 0.3) 100%
        );
    }

    .services {
        padding: 3rem 5%;
    }

    .services-header {
        padding: 0 1rem;
    }

    .services-grid {
        padding: 0 3rem;
    }

    .service-card {
        height: 650px;
        width: 320px;
    }

    .carousel-nav {
        width: 40px;
        height: 40px;
        font-size: 1rem;
    }

    .carousel-nav.prev {
        left: 5px;
    }

    .carousel-nav.next {
        right: 5px;
    }

    .hero-content {
        padding: 0 1rem;
    }
}
@media screen and (max-width: 480px) {
    .services-grid {
        padding: 0 2rem;
    }

    .service-card {
        height: 650px;
        width: 320px;
    }

    .carousel-nav {
        width: 35px;
        height: 35px;
        font-size: 0.9rem;
    }
}
/* Style moderne - Variables CSS */
:root {
    /* Couleurs modernes */
    --primary-color: #2563eb;
    --primary-dark: #1d4ed8;
    --primary-light: #3b82f6;
    --secondary-color: #f59e0b;
    --success-color: #10b981;
    --text-primary: #1f2937;
    --text-secondary: #6b7280;
    --text-muted: #9ca3af;
    --background: #ffffff;
    --background-light: #f9fafb;
    --background-card: #ffffff;
    --border-light: #e5e7eb;
    --border-color: #d1d5db;
    
    /* Gradients modernes */
    --gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --gradient-card: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);
    --gradient-orange: linear-gradient(135deg, #ff6b35 0%, #f7931e 100%);
    
    /* Ombres modernes */
    --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    --shadow-card: 0 4px 16px rgba(0, 0, 0, 0.06);
    --shadow-card-hover: 0 8px 30px rgba(0, 0, 0, 0.12);
    
    /* Rayons modernes */
    --radius-sm: 6px;
    --radius-md: 12px;
    --radius-lg: 16px;
    --radius-xl: 24px;
    
    /* Transitions fluides */
    --transition-fast: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    --transition-normal: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    --transition-slow: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    
    /* Typographie moderne */
    --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
    --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
}
/* Suppression des flèches pour tous les inputs de type number */
input[type="number"] {
    -webkit-appearance: textfield;
            appearance: textfield;
    -moz-appearance: textfield;
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.incar-shop-container {
    max-width: 1400px;
    margin: 0 auto;
    padding: 24px;
    font-family: var(--font-family);
    background-color: var(--background-light);
    color: var(--text-primary);
    min-height: 100vh;
}
/* Page wrapper pour éviter le chevauchement avec le header */
.page-wrapper {
    min-height: 100vh;
    padding-top: 80px; /* Hauteur approximative du header fixe */
    position: relative;
}
/* Filtres style moderne */
.incar-shop-filters {
    background: var(--background-card);
    padding: 24px;
    border-radius: var(--radius-lg);
    margin-bottom: 32px;
    box-shadow: var(--shadow-card);
    border: 1px solid var(--border-light);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    background: rgba(255, 255, 255, 0.9);
}
.filter-section {
    display: flex;
    align-items: center;
    gap: 16px;
    width: 100%;
    min-width: 0;
}
.reference-section {
    grid-column: 1 / -1;
}
.filter-section h4 {
    color: var(--text-primary);
    white-space: nowrap;
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    min-width: 120px;
    letter-spacing: 0.025em;
}
.filter-group {
    flex: 1;
    min-width: 0;
}
.filter-select, 
.reference-search input {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding: 12px 16px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    background-color: var(--background);
    color: var(--text-primary);
    font-size: 14px;
    font-weight: 500;
    transition: var(--transition-fast);
    outline: none;
}
.filter-select:focus, 
.reference-search input:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
    transform: translateY(-1px);
}
.filter-select:hover,
.reference-search input:hover {
    border-color: var(--primary-light);
}
.reference-search input::-moz-placeholder {
    color: var(--amazon-text-light);
    opacity: 1;
}
.reference-search input::placeholder {
    color: var(--amazon-text-light);
    opacity: 1;
}
.reset-button {
    grid-column: 1 / -1;
    justify-self: center;
    padding: 8px 20px;
    background: #FCFCFC;
    border: 1px solid #299EFC;
    border-radius: 4px;
    color: #183f72;
    cursor: pointer;
    transition: all 0.3s ease;
}
.reset-button:hover {
    background-color: #183f72;
    color: #FCFCFC;
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
/* Grille moderne de calculateurs */
#calculateurs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));
    gap: 32px;
    padding: 32px 0;
    max-width: 1400px;
    margin: 0 auto;
}
/* Responsive pour différentes tailles d'écran */
@media (max-width: 1200px) {
    #calculateurs-grid {
        grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
        gap: 2rem;
    }
}
@media (max-width: 768px) {
    .shop-container.modern-shop {
        padding: 10rem 1rem 2rem 1rem; /* Plus de padding-top sur mobile */
    }
    
    #calculateurs-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
        padding: 1rem 0;
    }
    
    .filters-group {
        grid-template-columns: 1fr;
        gap: 1rem;
    }
    
    .shop-filters {
        padding: 1.5rem;
        margin-bottom: 2rem;
    }
    
    .card-header {
        height: 200px;
    }
    
    .card-content {
        padding: 1.5rem;
    }
    
    .card-footer {
        padding: 1.2rem 1.5rem 1.5rem;
    }
}
@media (max-width: 480px) {
    .shop-container.modern-shop {
        padding: 12rem 1rem 2rem 1rem; /* Encore plus de padding-top sur très petits écrans */
    }
    
    .card-title {
        font-size: 1.3rem;
    }
    
    .price-value {
        font-size: 1.8rem;
    }
    
    .btn-add-cart {
        padding: 1rem 1.5rem;
        font-size: 0.95rem;
    }
}
/* Animations et effets modernes */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
@keyframes scaleIn {
    from {
        opacity: 0;
        transform: scale(0.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}
@keyframes shimmer {
    0% {
        background-position: -1000px 0;
    }
    100% {
        background-position: 1000px 0;
    }
}
/* Application des animations */
.calculateur-card {
    animation: fadeInUp 0.6s ease-out forwards;
    animation-delay: calc(var(--animation-delay, 0) * 0.1s);
}
.calculateur-card:nth-child(1) { --animation-delay: 1; }
.calculateur-card:nth-child(2) { --animation-delay: 2; }
.calculateur-card:nth-child(3) { --animation-delay: 3; }
.calculateur-card:nth-child(4) { --animation-delay: 4; }
.calculateur-card:nth-child(5) { --animation-delay: 5; }
.calculateur-card:nth-child(6) { --animation-delay: 6; }
/* État de chargement avec effet shimmer */
.loading-skeleton {
    background: linear-gradient(90deg, 
        var(--background-light) 0%, 
        rgba(255, 255, 255, 0.8) 50%, 
        var(--background-light) 100%);
    background-size: 1000px 100%;
    animation: shimmer 2s infinite;
    border-radius: var(--radius-md);
}
/* Micro-interactions */
.calculateur-card * {
    transition: var(--transition-fast);
}
/* Badge "Nouveau" ou "Populaire" */
.badge-nouveau {
    position: absolute;
    top: 16px;
    right: 16px;
    background: var(--gradient-primary);
    color: var(--background);
    padding: 6px 12px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: var(--shadow-md);
    z-index: 2;
}
.badge-populaire {
    background: var(--gradient-orange);
}
/* Indicateur de prix */
.price-badge {
    background: var(--success-color);
    color: var(--background);
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 600;
    margin-left: 8px;
}
/* Style pour les cartes vides ou en chargement */
.calculateur-card.loading {
    pointer-events: none;
    opacity: 0.7;
}
.calculateur-card.loading .calculateur-image {
    background: var(--background-light);
}
.calculateur-card.loading .calculateur-title,
.calculateur-card.loading .calculateur-references {
    background: var(--background-light);
    color: transparent;
    border-radius: var(--radius-sm);
}
/* Amélioration du focus pour l'accessibilité */
.calculateur-card:focus-visible {
    outline: 3px solid var(--primary-color);
    outline-offset: 2px;
}
.prestation-tag:focus-visible,
.calculateur-card .add-to-cart:focus-visible {
    outline: 2px solid var(--primary-color);
    outline-offset: 2px;
}
/* Effets de parallaxe subtils */
.calculateur-header::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.05) 0%, transparent 70%);
    opacity: 0;
    transition: var(--transition-slow);
    pointer-events: none;
}
.calculateur-card:hover .calculateur-header::before {
    opacity: 1;
    transform: rotate(45deg);
}
/* ===== STYLES MODERNES POUR LES CLASSES TEMPLATE TWIG ===== */
/* Variables CSS spécifiques pour les cartes modernes */
:root {
    --card-bg: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);
    --card-border-radius: 20px;
    --card-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
    --card-shadow-hover: 0 16px 64px rgba(0, 0, 0, 0.18);
    --card-border: 1px solid rgba(255, 255, 255, 0.2);
    --transition-duration: 0.3s;
    --gradient-header: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --gradient-button: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --button-border-radius: 12px;
    --button-shadow-hover: 0 8px 25px rgba(102, 126, 234, 0.4);
    --spec-bg: rgba(102, 126, 234, 0.08);
    --spec-bg-hover: rgba(102, 126, 234, 0.12);
    --footer-bg: rgba(248, 250, 252, 0.8);
}
/* Container principal moderne */
.shop-container.modern-shop {
    max-width: 1400px;
    margin: 0 auto;
    padding: 4rem 2rem 2rem 2rem; /* Padding-top réduit pour un meilleur équilibre */
    background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
    min-height: 100vh;
    font-family: var(--font-family);
}
/* Filtres modernes */
.shop-filters {
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    border-radius: 20px;
    padding: 2rem;
    margin-bottom: 2rem; /* Marge réduite pour moins d'espacement */
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.3);
    position: relative;
    z-index: 10;
}
.filters-form {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
.filters-group {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 1.5rem;
    align-items: center;
}
.form-input {
    padding: 1rem 1.5rem;
    border: 2px solid rgba(102, 126, 234, 0.1);
    border-radius: 15px;
    font-size: 1rem;
    font-weight: 500;
    background: rgba(255, 255, 255, 0.9);
    color: var(--text-primary);
    transition: all 0.3s ease;
    outline: none;
    font-family: var(--font-family);
}
.form-input:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.1);
    background: white;
    transform: translateY(-2px);
}
.form-input:hover {
    border-color: rgba(102, 126, 234, 0.3);
    background: white;
}
.form-input::-moz-placeholder {
    color: var(--text-muted);
    font-weight: 400;
}
.form-input::placeholder {
    color: var(--text-muted);
    font-weight: 400;
}
/* Grille des prestations moderne */
.calculateur-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
    gap: 2rem; /* Gap réduit pour moins d'espacement */
    padding: 1rem 0; /* Padding réduit */
    max-width: 1400px;
    margin: 0 auto;
}
/* Carte principale - Style carte moderne avec effet 3D */
.calculateur-card {
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow);
    border: var(--card-border);
    padding: 0;
    transition: all var(--transition-duration) cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    height: -moz-fit-content;
    height: fit-content;
    display: flex;
    flex-direction: column;
    transform: translateY(0) scale(1);
    animation: cardSlideIn 0.6s ease-out forwards;
    min-height: auto;
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    cursor: pointer;
}
/* Animation d'entrée */
@keyframes cardSlideIn {
    from {
        opacity: 0;
        transform: translateY(30px) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}
/* Barre supérieure colorée */
.calculateur-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    transition: left 0.4s ease;
    z-index: 1;
}
.calculateur-card:hover::before {
    left: 0;
}
/* Effet hover 3D */
.calculateur-card:hover {
    transform: translateY(-12px) scale(1.02);
    box-shadow: var(--card-shadow-hover);
    border-color: rgba(102, 126, 234, 0.3);
}
/* Élément invisible pour maintenir la structure DOM (nécessaire pour les événements JS) */
.calculateur-card::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: transparent;
    opacity: 0;
    pointer-events: none;
    z-index: -1;
}
/* En-tête de la carte avec image - Style carte moderne */
.card-header {
    position: relative;
    padding: 0;
    background: var(--gradient-header);
    color: white;
    text-align: center;
    border-radius: var(--card-border-radius) var(--card-border-radius) 0 0;
    overflow: hidden;
    height: 240px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}
/* Effet de masque dégradé sur l'image - SUPPRIMÉ */
.card-image {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 1;
}
.calculateur-card:hover .card-image {
    transform: scale(1.1) rotate(1deg);
}
.card-image-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    color: white;
    opacity: 0.9;
    height: 100%;
    width: 100%;
    background: var(--gradient-header);
    z-index: 1;
    position: relative;
}
.card-image-placeholder i {
    font-size: 4rem;
    margin-bottom: 0.5rem;
    opacity: 0.8;
    filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3));
}
.card-image-placeholder span {
    font-size: 1.1rem;
    font-weight: 600;
    text-shadow: 0 2px 4px rgba(0,0,0,0.5);
    letter-spacing: 0.5px;
}
/* Badge de disponibilité moderne avec glassmorphism */
.card-badge {
    position: absolute;
    top: 1.2rem;
    right: 1.2rem;
    background: rgba(16, 185, 129, 0.9);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    color: white;
    padding: 0.6rem 1.2rem;
    border-radius: 25px;
    font-size: 0.85rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    box-shadow: 0 8px 25px rgba(16, 185, 129, 0.4);
    z-index: 3;
    border: 1px solid rgba(255, 255, 255, 0.3);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    animation: badgePulse 2s infinite;
}
@keyframes badgePulse {
    0%, 100% {
        transform: scale(1);
        box-shadow: 0 8px 25px rgba(16, 185, 129, 0.4);
    }
    50% {
        transform: scale(1.05);
        box-shadow: 0 12px 35px rgba(16, 185, 129, 0.6);
    }
}
.card-badge i {
    font-size: 0.9rem;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
}
/* Contenu principal moderne avec espacement amélioré */
.card-content {
    padding: 2.2rem;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    position: relative;
    z-index: 1;
}
.card-title {
    margin: 0 0 0.8rem 0;
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--text-primary);
    line-height: 1.2;
    letter-spacing: -0.03em;
    position: relative;
    padding-bottom: 0.5rem;
}
/* Ligne décorative sous le titre */
.card-title::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 40px;
    height: 3px;
    background: var(--gradient-primary);
    border-radius: 2px;
}
.card-description {
    margin: 0 0 1.5rem 0;
    font-size: 1.05rem;
    color: var(--text-secondary);
    line-height: 1.7;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-weight: 400;
}
.card-specs {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.spec-item {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    padding: 1rem 1.3rem;
    background: var(--spec-bg);
    border-radius: 15px;
    font-size: 1rem;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border-left: 4px solid var(--primary-color);
    position: relative;
    overflow: hidden;
}
.spec-item::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
    transition: left 0.5s ease;
}
.spec-item:hover::before {
    left: 100%;
}
.spec-item:hover {
    background: var(--spec-bg-hover);
    transform: translateX(8px) scale(1.02);
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.2);
    border-left-color: #4f46e5;
}
.spec-item i {
    color: var(--primary-color);
    width: 20px;
    text-align: center;
    font-size: 1.1rem;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.1));
}
.spec-item span {
    font-weight: 600;
    color: var(--text-primary);
}
/* Pied de carte moderne avec glassmorphism */
.card-footer {
    padding: 1.8rem 2.2rem 2.2rem;
    border-top: 2px solid rgba(102, 126, 234, 0.1);
    background: var(--footer-bg);
    -webkit-backdrop-filter: blur(15px);
            backdrop-filter: blur(15px);
    margin-top: auto;
    position: relative;
}
.card-footer::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 2px;
    background: var(--gradient-primary);
    border-radius: 1px;
}
.price-section {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.5rem;
}
.price {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
}
.price-value {
    font-size: 2.2rem;
    font-weight: 900;
    color: var(--primary-color);
    text-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);
    position: relative;
}
.price-currency {
    font-size: 1.4rem;
    font-weight: 800;
    color: var(--primary-color);
}
.price-tax {
    font-size: 0.9rem;
    color: var(--text-muted);
    margin-left: 0.4rem;
    font-weight: 600;
    background: rgba(102, 126, 234, 0.1);
    padding: 0.2rem 0.6rem;
    border-radius: 12px;
}
/* Bouton d'ajout au panier moderne avec animations */
.btn-add-cart {
    width: 100%;
    background: var(--gradient-button);
    color: white;
    border: none;
    padding: 1.2rem 1.8rem;
    border-radius: var(--button-border-radius);
    font-weight: 800;
    font-size: 1.05rem;
    cursor: pointer;
    transition: all var(--transition-duration) cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.8rem;
    position: relative;
    overflow: hidden;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
    border: 2px solid transparent;
}
/* Effet de brillance sur le bouton */
.btn-add-cart::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    transition: left 0.6s ease;
}
.btn-add-cart:hover::before {
    left: 100%;
}
.btn-add-cart:hover {
    transform: translateY(-4px) scale(1.02);
    box-shadow: var(--button-shadow-hover);
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
}
.btn-add-cart:active {
    transform: translateY(-2px) scale(0.98);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}
.btn-add-cart i {
    font-size: 1.2rem;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
}
/* Animation d'ajout réussi */
.btn-add-cart.added {
    background: linear-gradient(135deg, #10b981 0%, #059669 100%);
    transform: scale(0.95);
}
.btn-add-cart.added::after {
    content: '✓';
    position: absolute;
    font-size: 1.5rem;
    animation: checkmark 0.6s ease-out;
}
@keyframes checkmark {
    0% {
        opacity: 0;
        transform: scale(0) rotate(-45deg);
    }
    50% {
        opacity: 1;
        transform: scale(1.2) rotate(0deg);
    }
    100% {
        opacity: 1;
        transform: scale(1) rotate(0deg);
    }
}
/* Responsive pour les cartes modernes */
@media (max-width: 1200px) {
    .calculateur-grid {
        grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
        gap: 2rem;
    }
}
@media (max-width: 768px) {
    .shop-container.modern-shop {
        padding: 7rem 1rem 2rem 1rem; /* Espacement réduit sur mobile */
    }
    
    .calculateur-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
        padding: 1rem 0;
    }
    
    .filters-group {
        grid-template-columns: 1fr;
        gap: 1rem;
    }
    
    .shop-filters {
        padding: 1.5rem;
        margin-bottom: 2rem;
    }
    
    .card-header {
        height: 200px;
    }
    
    .card-content {
        padding: 1.5rem;
    }
    
    .card-footer {
        padding: 1.2rem 1.5rem 1.5rem;
    }
}
@media (max-width: 480px) {
    .shop-container.modern-shop {
        padding: 8rem 1rem 2rem 1rem; /* Espacement ajusté pour très petits écrans */
    }
    
    .card-title {
        font-size: 1.3rem;
    }
    
    .price-value {
        font-size: 1.8rem;
    }
    
    .btn-add-cart {
        padding: 1rem 1.5rem;
        font-size: 0.95rem;
    }
}
/* Panier flottant moderne */
.cart-toggle {
    position: fixed;
    top: 50%;
    right: 2rem;
    transform: translateY(-50%);
    background: var(--gradient-primary);
    color: white;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
    cursor: pointer;
    transition: all 0.3s ease;
    z-index: 1000;
    border: 3px solid rgba(255, 255, 255, 0.3);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
}
.cart-toggle:hover {
    transform: translateY(-50%) scale(1.1);
    box-shadow: 0 12px 35px rgba(102, 126, 234, 0.6);
}
.cart-count {
    display: none !important; /* Cacher le compteur */
    position: absolute;
    top: -8px;
    right: -8px;
    background: #ef4444;
    color: white;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 700;
    box-shadow: 0 2px 8px rgba(239, 68, 68, 0.4);
}
/* ===== STYLES MODALE MODERNE (COHÉRENTE AVEC LES CARTES) ===== */
/* Modale principale avec le même style que les cartes */
.amazon-modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.7);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
    z-index: 10000;
    display: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), visibility 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: auto;
    padding: 20px;
    box-sizing: border-box;
}
.amazon-modal.show {
    opacity: 1;
    visibility: visible;
}
/* Overlay pour fermer la modale */
.amazon-modal-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
}
/* Contenu de la modale avec le style des cartes */
.amazon-modal-content {
    position: relative;
    max-width: 1200px;
    width: 100%;
    max-height: 90vh;
    margin: 2vh auto;
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow-hover);
    border: var(--card-border);
    overflow: hidden;
    animation: modalSlideIn 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
}
@keyframes modalSlideIn {
    from {
        opacity: 0;
        transform: translateY(50px) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}
/* Barre supérieure colorée comme les cartes */
.amazon-modal-content::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    z-index: 1;
}
/* Header de la modale */
.amazon-modal-header {
    position: absolute;
    top: 15px;
    right: 15px;
    z-index: 2;
}
.close-modal {
    width: 45px;
    height: 45px;
    border: none;
    background: var(--gradient-primary);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    color: white;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
    border: 2px solid rgba(255, 255, 255, 0.3);
}
.close-modal:hover {
    transform: scale(1.1) rotate(90deg);
    box-shadow: 0 12px 35px rgba(102, 126, 234, 0.6);
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
}
/* Corps de la modale */
.amazon-modal-body {
    padding: 40px;
    overflow-y: auto;
    max-height: 85vh;
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
}
/* Layout produit moderne */
.amazon-product-layout {
    display: grid;
    grid-template-columns: 1fr 1fr 320px;
    gap: 40px;
    align-items: start;
}
/* Image du produit avec style moderne */
.amazon-product-image {
    position: relative;
    overflow: hidden;
    border-radius: 15px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
}
.amazon-product-image img {
    width: 100%;
    height: 320px;
    -o-object-fit: cover;
       object-fit: cover;
    border-radius: 15px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.amazon-product-image:hover img {
    transform: scale(1.05);
}
/* Détails du produit avec style moderne */
.amazon-product-details {
    padding-right: 20px;
}
.amazon-product-title {
    font-size: 2rem;
    font-weight: 800;
    color: var(--text-primary);
    line-height: 1.2;
    margin: 0 0 25px 0;
    letter-spacing: -0.03em;
    position: relative;
    padding-bottom: 15px;
}
/* Ligne décorative sous le titre comme les cartes */
.amazon-product-title::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 60px;
    height: 4px;
    background: var(--gradient-primary);
    border-radius: 2px;
}
.amazon-price-section {
    margin: 25px 0;
    padding: 20px;
    background: var(--spec-bg);
    border-radius: 15px;
    border-left: 4px solid var(--primary-color);
}
.amazon-price {
    font-size: 2rem;
    font-weight: 900;
    color: var(--primary-color);
    text-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);
}
.amazon-price-ht {
    font-size: 1rem;
    color: var(--text-muted);
    margin-left: 8px;
    font-weight: 600;
    background: rgba(102, 126, 234, 0.1);
    padding: 0.2rem 0.6rem;
    border-radius: 12px;
}
.amazon-description {
    margin: 30px 0;
}
.amazon-description h3 {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 15px 0;
    position: relative;
    padding-bottom: 8px;
}
.amazon-description h3::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 30px;
    height: 2px;
    background: var(--gradient-primary);
    border-radius: 1px;
}
.amazon-description p {
    color: var(--text-secondary);
    line-height: 1.7;
    margin: 0;
    font-size: 1.05rem;
}
/* Spécifications techniques avec style des cartes */
.amazon-specifications {
    margin: 30px 0;
}
.amazon-specifications h3 {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 20px 0;
    position: relative;
    padding-bottom: 8px;
}
.amazon-specifications h3::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 30px;
    height: 2px;
    background: var(--gradient-primary);
    border-radius: 1px;
}
.amazon-spec-grid {
    display: grid;
    gap: 15px;
}
.amazon-spec-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    background: var(--spec-bg);
    border-radius: 15px;
    border-left: 4px solid var(--primary-color);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
}
.amazon-spec-item::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
    transition: left 0.5s ease;
}
.amazon-spec-item:hover::before {
    left: 100%;
}
.amazon-spec-item:hover {
    background: var(--spec-bg-hover);
    transform: translateX(8px) scale(1.02);
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.2);
    border-left-color: #4f46e5;
}
.amazon-spec-item strong {
    color: var(--text-primary);
    font-weight: 600;
    min-width: 120px;
}
.amazon-spec-item span {
    color: var(--text-secondary);
    text-align: right;
    font-weight: 500;
}
/* Box d'achat avec style moderne des cartes */
.amazon-purchase-box {
    background: var(--card-bg);
    border: var(--card-border);
    border-radius: var(--card-border-radius);
    padding: 25px;
    position: sticky;
    top: 20px;
    height: -moz-fit-content;
    height: fit-content;
    box-shadow: var(--card-shadow);
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    border-left: 4px solid var(--primary-color);
}
.amazon-price-box {
    margin: 20px 0;
    text-align: left;
    padding: 15px 0;
    border-bottom: 2px solid rgba(102, 126, 234, 0.1);
}
.amazon-price-large {
    font-size: 2.2rem;
    font-weight: 900;
    color: var(--primary-color);
    display: block;
    text-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);
}
.amazon-price-ht-small {
    font-size: 0.9rem;
    color: var(--text-muted);
    margin-left: 8px;
    font-weight: 600;
    background: rgba(102, 126, 234, 0.1);
    padding: 0.2rem 0.6rem;
    border-radius: 12px;
}
.amazon-stock-info {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 20px 0;
    color: #10b981;
    font-weight: 700;
    font-size: 14px;
    background: rgba(16, 185, 129, 0.1);
    padding: 12px 16px;
    border-radius: 12px;
}
/* Bouton d'ajout au panier avec le même style que les cartes */
.amazon-add-to-cart {
    width: 100%;
    background: var(--gradient-button);
    color: white;
    border: none;
    border-radius: var(--button-border-radius);
    padding: 15px 20px;
    font-size: 1.05rem;
    font-weight: 800;
    cursor: pointer;
    transition: all var(--transition-duration) cubic-bezier(0.4, 0, 0.2, 1);
    margin: 20px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    position: relative;
    overflow: hidden;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
    border: 2px solid transparent;
}
/* Effet de brillance sur le bouton */
.amazon-add-to-cart::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    transition: left 0.6s ease;
}
.amazon-add-to-cart:hover::before {
    left: 100%;
}
.amazon-add-to-cart:hover {
    transform: translateY(-4px) scale(1.02);
    box-shadow: var(--button-shadow-hover);
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
}
.amazon-add-to-cart:active {
    transform: translateY(-2px) scale(0.98);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}
.amazon-add-to-cart i {
    font-size: 1.2rem;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
}
.amazon-secure-transaction {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--text-muted);
    font-size: 12px;
    margin-top: 15px;
    background: rgba(102, 126, 234, 0.05);
    padding: 8px 12px;
    border-radius: 8px;
    font-weight: 600;
}
.amazon-secure-transaction i {
    color: #10b981;
    font-size: 14px;
}
/* Responsive design pour la modale */
@media (max-width: 1024px) {
    .amazon-product-layout {
        grid-template-columns: 1fr;
        gap: 30px;
    }
    
    .amazon-purchase-box {
        position: static;
        margin-top: 20px;
    }
}
@media (max-width: 768px) {
    .amazon-modal {
        padding: 10px;
    }
    
    .amazon-modal-content {
        margin: 1vh auto;
        max-height: 95vh;
        border-radius: var(--card-border-radius);
    }
    
    .amazon-modal-body {
        padding: 25px;
    }
    
    .amazon-product-title {
        font-size: 1.6rem;
    }
    
    .amazon-price-large {
        font-size: 1.8rem;
    }
    
    .amazon-spec-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    
    .amazon-spec-item span {
        text-align: left;
    }
}
@media (max-width: 480px) {
    .amazon-modal-body {
        padding: 20px;
    }
    
    .amazon-product-layout {
        gap: 20px;
    }
    
    .amazon-product-title {
        font-size: 1.4rem;
    }
    
    .amazon-add-to-cart {
        padding: 12px 16px;
        font-size: 0.95rem;
    }
}
/* ===== FIN STYLES MODALE MODERNE ===== */
/* ===== CARD NO RESULTS MODERNE ===== */
.no-results-container {
    grid-column: 1 / -1;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 500px;
    padding: 2rem;
}
.no-results-card {
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow-hover);
    border: var(--card-border);
    padding: 3rem 2.5rem;
    text-align: center;
    max-width: 500px;
    width: 100%;
    position: relative;
    overflow: hidden;
    animation: slideInUp 0.6s ease-out;
}
.no-results-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    z-index: 1;
}
.no-results-illustration {
    position: relative;
    margin-bottom: 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}
.illustration-circle {
    width: 120px;
    height: 120px;
    background: var(--gradient-primary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 1rem;
    animation: pulse 2s infinite;
    box-shadow: 0 0 30px rgba(102, 126, 234, 0.3);
}
.illustration-circle i {
    font-size: 3rem;
    color: white;
    text-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.illustration-dots {
    display: flex;
    gap: 0.5rem;
}
.dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--primary-color);
    opacity: 0.3;
    animation: dotPulse 1.5s infinite;
}
.dot-1 { animation-delay: 0s; }
.dot-2 { animation-delay: 0.2s; }
.dot-3 { animation-delay: 0.4s; }
.no-results-title {
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--text-primary);
    margin-bottom: 1rem;
    background: var(--gradient-primary);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}
.no-results-description {
    font-size: 1rem;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 2rem;
}
.suggestions-card {
    background: var(--spec-bg);
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 2rem;
    text-align: left;
    border-left: 4px solid var(--primary-color);
}
.suggestions-title {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.suggestions-title i {
    color: var(--secondary-color);
    font-size: 1rem;
}
.suggestions-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.suggestions-list li {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0;
    color: var(--text-secondary);
    font-size: 0.9rem;
    transition: var(--transition-fast);
}
.suggestions-list li:hover {
    color: var(--text-primary);
    transform: translateX(5px);
}
.suggestions-list li i {
    color: var(--success-color);
    font-size: 0.8rem;
    flex-shrink: 0;
}
.no-results-actions {
    display: flex;
    gap: 1rem;
    justify-content: center;
    flex-wrap: wrap;
}
.btn-reset-filters,
.btn-contact {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.875rem 1.5rem;
    border-radius: var(--button-border-radius);
    font-weight: 600;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: var(--transition-normal);
    font-size: 0.9rem;
    min-width: 160px;
    justify-content: center;
}
.btn-reset-filters {
    background: var(--gradient-primary);
    color: white;
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
}
.btn-reset-filters:hover {
    transform: translateY(-2px);
    box-shadow: var(--button-shadow-hover);
    color: white;
}
.btn-contact {
    background: rgba(102, 126, 234, 0.1);
    color: var(--primary-color);
    border: 2px solid rgba(102, 126, 234, 0.2);
}
.btn-contact:hover {
    background: var(--primary-color);
    color: white;
    border-color: var(--primary-color);
    transform: translateY(-2px);
    text-decoration: none;
}
/* Animations */
@keyframes slideInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
@keyframes pulse {
    0%, 100% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.05);
    }
}
@keyframes dotPulse {
    0%, 100% {
        opacity: 0.3;
        transform: scale(1);
    }
    50% {
        opacity: 1;
        transform: scale(1.2);
    }
}
/* Responsive */
@media (max-width: 768px) {
    .no-results-container {
        padding: 1rem;
        min-height: 400px;
    }
    
    .no-results-card {
        padding: 2rem 1.5rem;
    }
    
    .illustration-circle {
        width: 100px;
        height: 100px;
    }
    
    .illustration-circle i {
        font-size: 2.5rem;
    }
    
    .no-results-title {
        font-size: 1.5rem;
    }
    
    .no-results-actions {
        flex-direction: column;
        align-items: center;
    }
    
    .btn-reset-filters,
    .btn-contact {
        width: 100%;
        max-width: 250px;
    }
}
/* ===== FIN CARD NO RESULTS MODERNE ===== */
/* ===== FIN CARTES MODERNES TEMPLATE TWIG ===== */
/* ===== PAGE DE FINALISATION MODERNE ===== */
.checkout-container {
    max-width: 1200px;
    margin: 2rem auto;
    padding: 2rem;
    background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
    min-height: calc(100vh - 4rem);
}
.checkout-content {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3rem;
    align-items: start;
}
/* ===== RÉCAPITULATIF DU PANIER MODERNE ===== */
.cart-summary {
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow-hover);
    border: var(--card-border);
    overflow: hidden;
    position: sticky;
    top: 2rem;
}
/* Barre supérieure colorée */
.cart-summary::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    z-index: 1;
}
.cart-summary h2 {
    background: var(--gradient-primary);
    color: white;
    margin: 0;
    padding: 1.5rem 2rem;
    font-size: 1.4rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    text-shadow: 0 2px 4px rgba(0,0,0,0.3);
    margin-top: 4px;
    border-radius: 12px 12px 0 0;
}
.cart-summary-content {
    padding: 2rem;
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    border-radius: 0 0 12px 12px;
}
/* ===== ARTICLES DU RÉCAPITULATIF ===== */
.checkout-item {
    background: var(--spec-bg);
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 1rem;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border-left: 4px solid var(--primary-color);
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: flex-start;
    gap: 1.2rem;
    min-height: 120px;
}
.checkout-item::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
    transition: left 0.5s ease;
}
.checkout-item:hover::before {
    left: 100%;
}
.checkout-item:hover {
    background: var(--spec-bg-hover);
    transform: translateY(-2px) scale(1.01);
    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.15);
    border-left-color: #4f46e5;
}
.checkout-item .item-details {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.checkout-item .item-details h4 {
    margin: 0;
    color: var(--text-primary);
    font-weight: 700;
    font-size: 1rem;
    line-height: 1.3;
}
.checkout-item .item-details p {
    margin: 0;
    color: var(--text-secondary);
    font-size: 0.85rem;
    font-weight: 500;
}
.checkout-item .item-details .item-price {
    font-weight: 700;
    color: var(--text-primary);
    font-size: 0.9rem;
}
.checkout-item .item-quantity {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: rgba(255, 255, 255, 0.8);
    border-radius: 20px;
    padding: 0.25rem;
    border: 1px solid rgba(102, 126, 234, 0.2);
}
.checkout-item .item-controls {
    display: flex;
    align-items: flex-start;
    flex-direction: column;
    gap: 0.8rem;
    margin-top: 0.3rem;
}
.checkout-item .quantity {
    color: var(--text-muted);
    margin-right: 0;
    font-size: 0.8rem;
    font-weight: 600;
    background: rgba(102, 126, 234, 0.1);
    padding: 0.2rem 0.5rem;
    border-radius: 8px;
}
.checkout-item .price {
    font-weight: 800;
    color: #2d3748;
    font-size: 1.1rem;
}
/* ===== TOTAUX MODERNES ===== */
.cart-subtotal, .cart-tax {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
    padding: 0.8rem 1.2rem;
    background: rgba(102, 126, 234, 0.05);
    border-radius: 10px;
    border: 1px solid rgba(102, 126, 234, 0.1);
    color: var(--text-secondary);
    font-size: 1rem;
    font-weight: 600;
}
.cart-subtotal span, .cart-tax span {
    text-align: right;
    font-weight: 700;
}
.cart-subtotal .amount, .cart-tax .amount {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: #2d3748;
    font-weight: 800;
}
.cart-total {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1.5rem 1.5rem;
    margin-top: 2rem;
    background: var(--gradient-primary);
    color: white;
    border-radius: 12px;
    font-size: 1.4rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.3);
    border: 3px solid var(--primary-color);
    position: relative;
    overflow: hidden;
}
.cart-total::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.05), transparent);
    transition: left 0.6s ease;
}
.cart-total:hover::before {
    left: 100%;
}
.cart-total .amount {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 1.6rem;
    color: #2d3748;
    font-weight: 900;
}
/* ===== FORMULAIRE DE COMMANDE MODERNE ===== */
.checkout-form {
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow-hover);
    border: var(--card-border);
    overflow: hidden;
    position: relative;
}
/* Barre supérieure colorée */
.checkout-form::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    z-index: 1;
}
.checkout-form h2 {
    background: var(--gradient-primary);
    color: white;
    margin: 0;
    padding: 1.5rem 2rem;
    font-size: 1.4rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    text-shadow: 0 2px 4px rgba(0,0,0,0.3);
    margin-top: 4px;
    border-radius: 12px 12px 0 0;
}
.checkout-form-content {
    padding: 2rem;
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    border-radius: 0 0 12px 12px;
}
.form-group {
    margin-bottom: 2rem;
    position: relative;
}
.form-group label {
    display: block;
    margin-bottom: 0.8rem;
    color: var(--text-primary);
    font-weight: 700;
    font-size: 0.95rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    position: relative;
}
.form-group label::after {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 0;
    width: 30px;
    height: 2px;
    background: var(--gradient-primary);
    border-radius: 1px;
}
.form-group input,
.form-group textarea,
.form-group select {
    width: 100%;
    padding: 1rem 1.2rem;
    border: 2px solid rgba(102, 126, 234, 0.2);
    border-radius: var(--button-border-radius);
    font-size: 1rem;
    font-weight: 500;
    color: var(--text-primary);
    background: rgba(255, 255, 255, 0.9);
    -webkit-backdrop-filter: blur(5px);
            backdrop-filter: blur(5px);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-sizing: border-box;
}
.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus {
    outline: none;
    border-color: var(--primary-color);
    background: white;
    box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.1);
    transform: translateY(-2px);
}
.form-group input::-moz-placeholder, .form-group textarea::-moz-placeholder {
    color: var(--text-muted);
    font-style: italic;
}
.form-group input::placeholder,
.form-group textarea::placeholder {
    color: var(--text-muted);
    font-style: italic;
}
.form-group textarea {
    resize: vertical;
    min-height: 120px;
    line-height: 1.5;
}
/* Groupes de champs inline */
.form-row {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 1.5rem;
    align-items: end;
}
/* Messages d'aide */
.form-help {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin-top: 0.5rem;
    font-style: italic;
    padding-left: 0.5rem;
    border-left: 3px solid rgba(102, 126, 234, 0.3);
}
/* ===== BOUTONS MODERNES ===== */
.btn-primary {
    width: 100%;
    padding: 1.4rem 2rem;
    background: var(--gradient-primary);
    color: white;
    border: none;
    border-radius: 12px;
    font-size: 1.2rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.3);
    position: relative;
    overflow: hidden;
    margin-top: 1rem;
    border: 2px solid var(--primary-color);
}
/* Effet de brillance sur le bouton */
.btn-primary::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    transition: left 0.6s ease;
}
.btn-primary:hover::before {
    left: 100%;
}
.btn-primary:hover {
    transform: translateY(-4px) scale(1.02);
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
}
.btn-primary:active {
    transform: translateY(-2px) scale(0.98);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}
/* Bouton retour */
.btn-secondary {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.8rem 1.5rem;
    background: rgba(102, 126, 234, 0.1);
    color: var(--primary-color);
    border: 2px solid rgba(102, 126, 234, 0.3);
    border-radius: var(--button-border-radius);
    font-size: 0.95rem;
    font-weight: 600;
    text-decoration: none;
    transition: all 0.3s ease;
    margin-bottom: 2rem;
}
.btn-secondary:hover {
    background: var(--primary-color);
    color: white;
    transform: translateY(-2px);
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
    text-decoration: none;
}
/* ===== RESPONSIVE CHECKOUT ===== */
@media (max-width: 768px) {
    .checkout-container {
        padding: 1rem;
        margin: 1rem auto;
    }
    
    .checkout-content {
        grid-template-columns: 1fr;
        gap: 2rem;
    }
    
    .cart-summary {
        position: static;
    }
    
    .cart-summary h2,
    .checkout-form h2 {
        padding: 1.2rem 1.5rem;
        font-size: 1.2rem;
    }
    
    .cart-summary-content,
    .checkout-form-content {
        padding: 1.5rem;
    }
    
    .checkout-item {
        padding: 1.2rem;
        flex-direction: column;
        align-items: flex-start;
        gap: 0.8rem;
    }
    
    .checkout-item .item-price {
        align-self: flex-end;
        text-align: right;
    }
    
    .form-row {
        grid-template-columns: 1fr;
        gap: 1rem;
    }
    
    .btn-primary {
        padding: 1.2rem 1.5rem;
        font-size: 1.1rem;
    }
}
@media (max-width: 480px) {
    .checkout-container {
        padding: 0.5rem;
    }
    
    .checkout-content {
        gap: 1.5rem;
    }
    
    .cart-summary h2,
    .checkout-form h2 {
        padding: 1rem;
        font-size: 1.1rem;
    }
    
    .cart-summary-content,
    .checkout-form-content {
        padding: 1rem;
    }
    
    .checkout-item {
        padding: 1rem;
    }
    
    .cart-total {
        padding: 1.2rem;
        font-size: 1.2rem;
    }
    
    .cart-total .amount {
        font-size: 1.4rem;
    }
}
/* ===== FIN PAGE DE FINALISATION ===== */
.cart-toggle {
    position: fixed;
    right: 2rem;
    bottom: 2rem;
    width: 50px;
    height: 50px;
    background: rgba(255, 255, 255, 0.733);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    cursor: pointer;
    box-shadow: 0 4px 12px #0059a1;
    z-index: 1001;
    transition: all 0.3s ease;
    opacity: .5;
    transform: scale(0);
}
.cart-toggle.visible {
    opacity: 1;
    transform: scale(1);
}
/* ===== PANIER FLOTTANT MODERNE (COHÉRENT AVEC LES CARTES) ===== */
.floating-cart {
    position: fixed;
    right: 2rem;
    bottom: 2rem;
    width: 460px;
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow-hover);
    border: var(--card-border);
    z-index: 1000;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    visibility: hidden;
    opacity: 0;
    transform: translateX(100%) scale(0.9);
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    overflow: hidden;
    max-height: 85vh;
}
/* Barre supérieure colorée intégrée dans le header */
.floating-cart::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    z-index: 1;
    border-radius: var(--card-border-radius) var(--card-border-radius) 0 0;
}
.floating-cart.visible {
    visibility: visible;
    opacity: 1;
    transform: translateX(0) scale(1);
    animation: cartSlideIn 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes cartSlideIn {
    from {
        opacity: 0;
        transform: translateX(100%) scale(0.9);
    }
    to {
        opacity: 1;
        transform: translateX(0) scale(1);
    }
}
.floating-cart.minimized {
    visibility: hidden;
    opacity: 0;
    transform: translateX(100%) scale(0.9);
}
/* Header moderne avec glassmorphism et arrondi parfait */
.cart-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1.5rem 2rem;
    background: var(--gradient-primary);
    color: white;
    border-radius: var(--card-border-radius) var(--card-border-radius) 0 0;
    position: relative;
    margin-top: 0; /* Suppression du margin pour un arrondi parfait */
    padding-top: calc(1.5rem + 4px); /* Compensation pour la barre colorée */
}
.cart-header::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
    transition: left 0.6s ease;
}
.cart-header:hover::before {
    left: 100%;
}
.cart-header h3 {
    margin: 0;
    font-size: 1.3rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    text-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.minimize-cart {
    background: rgba(255, 255, 255, 0.2);
    border: 2px solid rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    cursor: pointer;
    color: white;
    padding: 12px;
    width: 45px;
    height: 45px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
}
.minimize-cart:hover {
    background: rgba(255, 255, 255, 0.3);
    transform: scale(1.1) rotate(90deg);
    box-shadow: 0 8px 25px rgba(0,0,0,0.2);
}
/* Contenu du panier avec style moderne */
.cart-items {
    max-height: 500px;
    overflow-y: auto;
    padding: 1.5rem 2rem;
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
}
/* Style pour scrollbar personnalisée */
.cart-items::-webkit-scrollbar {
    width: 8px;
}
.cart-items::-webkit-scrollbar-track {
    background: rgba(102, 126, 234, 0.1);
    border-radius: 10px;
}
.cart-items::-webkit-scrollbar-thumb {
    background: var(--gradient-primary);
    border-radius: 10px;
}
.cart-items::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
}
/* Articles du panier avec style des cartes - VERSION OPTIMISÉE */
.cart-item {
    background: var(--spec-bg);
    border-radius: 12px;
    padding: 1.2rem 1.4rem;
    margin-bottom: 1rem;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border-left: 4px solid var(--primary-color);
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: flex-start;
    gap: 1.2rem;
    min-height: 120px;
}
.cart-item::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
    transition: left 0.5s ease;
}
.cart-item:hover::before {
    left: 100%;
}
.cart-item:hover {
    background: var(--spec-bg-hover);
    transform: translateY(-2px) scale(1.01);
    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.15);
    border-left-color: #4f46e5;
}
.item-image {
    width: 48px;
    height: 48px;
    background: var(--gradient-primary);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-size: 1.1rem;
    box-shadow: 0 3px 12px rgba(102, 126, 234, 0.3);
    flex-shrink: 0;
    margin-top: 0.2rem;
}
.item-details {
    flex: 1;
    min-width: 0;
    line-height: 1.2;
    margin-right: 1rem;
}
.item-name {
    font-weight: 700;
    color: var(--text-primary);
    font-size: 0.9rem;
    margin: 0 0 0.25rem 0;
    line-height: 1.3;
    word-wrap: break-word;
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    max-height: 3.9em;
}
.item-vehicle {
    color: var(--text-secondary);
    font-size: 0.75rem;
    margin: 0 0 0.4rem 0;
    font-weight: 500;
    line-height: 1.2;
    word-wrap: break-word;
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    max-height: 2.4em;
}
.item-price {
    color: var(--primary-color);
    font-weight: 800;
    font-size: 0.9rem;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 0.2rem;
    flex-wrap: wrap;
}
.price-ht {
    font-size: 0.65rem;
    color: var(--text-muted);
    font-weight: 600;
    background: rgba(102, 126, 234, 0.1);
    padding: 0.15rem 0.4rem;
    border-radius: 6px;
}
/* Contrôles de quantité modernes - VERSION COMPACTE */
.item-quantity {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: rgba(255, 255, 255, 0.8);
    border-radius: 20px;
    padding: 0.25rem;
    border: 1px solid rgba(102, 126, 234, 0.2);
}
.item-controls {
    display: flex;
    align-items: flex-start;
    flex-direction: column;
    gap: 0.8rem;
    margin-top: 0.3rem;
}
.quantity-btn {
    background: var(--gradient-primary);
    border: none;
    border-radius: 50%;
    width: 24px;
    height: 24px;
    color: white;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    font-size: 0.7rem;
}
.quantity-btn:hover {
    transform: scale(1.1);
    box-shadow: 0 3px 10px rgba(102, 126, 234, 0.4);
}
.quantity-btn:disabled {
    background: #ccc;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}
.quantity-input {
    width: 32px;
    text-align: center;
    border: none;
    background: transparent;
    font-weight: 700;
    color: var(--text-primary);
    font-size: 0.85rem;
}
.remove-from-cart {
    background: rgba(239, 68, 68, 0.1);
    border: 1px solid rgba(239, 68, 68, 0.3);
    border-radius: 15px;
    color: #ef4444;
    padding: 0.4rem 0.7rem;
    font-size: 0.7rem;
    cursor: pointer;
    transition: all 0.3s ease;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 0.25rem;
    align-self: flex-start;
}
.remove-from-cart:hover {
    background: #ef4444;
    color: white;
    transform: scale(1.05);
    box-shadow: 0 4px 15px rgba(239, 68, 68, 0.3);
}
/* Panier vide avec style moderne */
.empty-cart {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--text-muted);
}
.empty-cart i {
    font-size: 3rem;
    margin-bottom: 1rem;
    color: var(--primary-color);
    opacity: 0.6;
}
.empty-cart p {
    font-size: 1.1rem;
    font-weight: 600;
    margin: 0 0 1.5rem 0;
}
.btn-back-to-shop {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--gradient-primary);
    color: white;
    text-decoration: none;
    padding: 0.75rem 1.5rem;
    border-radius: var(--button-border-radius);
    font-weight: 600;
    transition: all 0.3s ease;
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
}
.btn-back-to-shop:hover {
    transform: translateY(-2px);
    box-shadow: var(--button-shadow-hover);
    color: white;
    text-decoration: none;
}
/* Footer du panier moderne */
.cart-footer {
    padding: 1.8rem 2rem 2rem;
    border-top: 2px solid rgba(102, 126, 234, 0.1);
    background: var(--footer-bg);
    -webkit-backdrop-filter: blur(15px);
            backdrop-filter: blur(15px);
    border-radius: 0 0 var(--card-border-radius) var(--card-border-radius);
    position: relative;
}
.cart-footer::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 2px;
    background: var(--gradient-primary);
    border-radius: 1px;
}
/* Totaux modernes */
.cart-totals {
    margin-bottom: 1.5rem;
}
.cart-subtotal,
.cart-tax,
.cart-total {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.8rem 0;
    font-size: 1rem;
}
.cart-subtotal {
    border-bottom: 1px solid rgba(102, 126, 234, 0.1);
    color: var(--text-secondary);
    font-weight: 600;
}
.cart-tax {
    border-bottom: 1px solid rgba(102, 126, 234, 0.1);
    color: var(--text-secondary);
    font-weight: 600;
}
.cart-total {
    border-top: 2px solid var(--primary-color);
    margin-top: 0.5rem;
    padding-top: 1rem;
    font-size: 1.2rem;
    font-weight: 800;
    color: var(--text-primary);
}
.amount {
    color: var(--primary-color);
    font-weight: 800;
}
/* Bouton commander moderne */
.btn-checkout {
    display: block;
    width: 100%;
    padding: 1.2rem 1.8rem;
    background: var(--gradient-primary);
    color: white;
    text-align: center;
    text-decoration: none;
    border-radius: 12px;
    font-weight: 800;
    font-size: 1.05rem;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
    border: 2px solid var(--primary-color);
    position: relative;
    overflow: hidden;
}
/* Effet de brillance sur le bouton */
.btn-checkout::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    transition: left 0.6s ease;
}
.btn-checkout:hover::before {
    left: 100%;
}
.btn-checkout:hover {
    transform: translateY(-4px) scale(1.02);
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
    text-decoration: none;
    color: white;
}
.btn-checkout:active {
    transform: translateY(-2px) scale(0.98);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}
/* Badge de nombre d'articles moderne */
.cart-count {
    display: none !important; /* Cacher le compteur */
    background: var(--gradient-primary);
    color: white;
    padding: 0.4rem 0.8rem;
    border-radius: 25px;
    font-size: 0.8rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
    border: 2px solid rgba(255, 255, 255, 0.3);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
}
/* Notification d'expiration du panier */
.cart-expiration-notification {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 10001;
    background: linear-gradient(135deg, #ff6b6b, #ffa500);
    color: white;
    border-radius: 12px;
    box-shadow: 0 8px 32px rgba(255, 107, 107, 0.3);
    animation: slideInRight 0.3s ease-out, fadeOut 0.3s ease-in 4.7s forwards;
    max-width: 350px;
    font-size: 14px;
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.1);
}
.cart-expiration-notification .notification-content {
    padding: 16px 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
}
.cart-expiration-notification .fas.fa-clock {
    font-size: 18px;
    color: white;
    opacity: 0.9;
}
.cart-expiration-notification .notification-close {
    position: absolute;
    top: 8px;
    right: 8px;
    background: none;
    border: none;
    color: white;
    font-size: 16px;
    cursor: pointer;
    padding: 4px;
    border-radius: 4px;
    transition: background-color 0.2s ease;
}
.cart-expiration-notification .notification-close:hover {
    background-color: rgba(255, 255, 255, 0.2);
}
@keyframes slideInRight {
    from {
        transform: translateX(100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}
@keyframes fadeOut {
    from {
        opacity: 1;
        transform: translateX(0);
    }
    to {
        opacity: 0;
        transform: translateX(100%);
    }
}
/* Timer du panier */
.cart-timer {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #333;
    background: rgba(255, 255, 255, 0.9);
    padding: 6px 10px;
    border-radius: 12px;
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.3);
    transition: all 0.3s ease;
    font-weight: 600;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.cart-timer .fas.fa-clock {
    font-size: 12px;
    opacity: 0.9;
    color: #555;
}
.cart-timer span {
    font-weight: 700;
    letter-spacing: 0.5px;
    min-width: 40px;
    text-align: center;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    font-variant-numeric: tabular-nums;
}
/* Animation pulse pour les dernières secondes */
@keyframes timerPulse {
    0% { 
        opacity: 1;
        transform: scale(1);
        background: rgba(255, 255, 255, 0.9);
    }
    50% { 
        opacity: 0.8;
        transform: scale(1.05);
        background: rgba(255, 236, 236, 0.95);
    }
    100% { 
        opacity: 1;
        transform: scale(1);
        background: rgba(255, 255, 255, 0.9);
    }
}
.cart-timer[data-urgent="true"] {
    animation: timerPulse 1s infinite;
    background: rgba(255, 236, 236, 0.95);
    border-color: rgba(211, 47, 47, 0.3);
    box-shadow: 0 2px 12px rgba(211, 47, 47, 0.2);
}
/* Adaptation du header pour inclure le timer */
.cart-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    border-radius: 16px 16px 0 0;
    gap: 10px;
}
.cart-header h3 {
    margin: 0;
    flex-shrink: 0;
}
.cart-count {
    background: rgba(255, 255, 255, 0.2);
    color: white;
    border-radius: 50%;
    padding: 4px 8px;
    font-size: 12px;
    font-weight: bold;
    min-width: 20px;
    text-align: center;
    margin-left: auto;
    flex-shrink: 0;
}
.minimize-cart {
    background: rgba(255, 255, 255, 0.1);
    border: none;
    color: white;
    border-radius: 50%;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    flex-shrink: 0;
}
.minimize-cart:hover {
    background: rgba(255, 255, 255, 0.2);
    transform: scale(1.1);
}
/* Responsive pour mobile */
@media (max-width: 768px) {
    .cart-timer {
        font-size: 11px;
        padding: 3px 6px;
        gap: 4px;
    }
    
    .cart-timer span {
        min-width: 30px;
    }
    
    .cart-header {
        padding: 12px 16px;
        gap: 8px;
    }
    
    .cart-header h3 {
        font-size: 16px;
    }
}
body.login-page {
    background: linear-gradient(135deg, #667eea, #764ba2);
    margin: 0;
    min-height: 100vh;
    padding: 0;
}
.login-container {
    align-items: center;
    display: flex;
    justify-content: center;
    min-height: 100vh;
    padding: 1rem;
}
.login-box {
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0,0,0,.15);
    max-width: 380px;
    padding: 2.5rem 3rem;
    width: 90%;
}
body.login-page .login-header {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-bottom: 2rem;
}
body.login-page .login-logo {
    width: 180px;
    height: auto;
    margin-bottom: 1rem;
    filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1));
}
#login-logo {
    width: 200px !important;
    height: auto !important;
}
#login-title {
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    margin: 1rem 0;
    background: linear-gradient(45deg, #0059A1, #003366);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    text-shadow: none;
}
.login-form {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    width: 100%;
}
.login-container .form-group {
    margin-bottom: 1.5rem;
    width: 100%;
    padding: 0 0.5rem;
}
.login-container .form-group label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: #4a5568;
    margin-bottom: 0.5rem;
    font-weight: 500;
}
.login-container .form-group label i {
    color: #6b7280;
    width: 16px;
}
.login-container .form-group input {
    width: 95%;
    padding: 0.75rem 0;
    border: 2px solid #e2e8f0;
    border-radius: 8px;
    font-size: 1rem;
    transition: all 0.2s;
}
.login-container .form-group input:focus {
    outline: none;
    border-color: #667eea;
    box-shadow: 0 0 0 3px rgba(102,126,234,0.1);
}
.login-container .btn-primary {
    background-color: #667eea;
    color: white;
    border: none;
    border-radius: 8px;
    padding: 0.875rem 1.5rem;
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: calc(100% - 1rem);
    margin: 1rem 0.5rem;
}
.login-container .btn-primary:hover {
    background-color: #5a67d8;
    transform: translateY(-1px);
}
.login-container .btn-primary:active {
    transform: translateY(0);
}
.alert {
    padding: 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    text-align: left;
}
.alert-danger {
    background-color: #fff5f5;
    color: #c53030;
    border: 1px solid #feb2b2;
}
.alert-danger i {
    font-size: 1.25rem;
}
@media (max-width: 640px) {
    .login-box {
        padding: 2rem;
        margin: 1rem;
    }
    
    .login-logo {
        max-width: 150px;
    }
    
    .login-header h1 {
        font-size: 1.5rem;
    }
}
/* Ajout des styles pour l'inscription */
.auth-links {
    margin-top: 1.5rem;
    text-align: center;
}
.auth-links a {
    color: #0059A1;
    text-decoration: none;
    font-size: 0.9rem;
    transition: color 0.3s ease;
}
.auth-links a:hover {
    color: #003366;
    text-decoration: underline;
}
/* Style pour les messages de validation */
.form-error {
    color: #dc3545;
    font-size: 0.85rem;
    margin-top: 0.25rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.form-error i {
    font-size: 0.9rem;
}
/* Style pour le formulaire d'inscription */
.login-form .password-group {
    margin-bottom: 1rem;
}
.login-form .password-group:last-of-type {
    margin-bottom: 1.5rem;
}
/* Adaptation responsive */
@media (max-width: 480px) {
    .login-box {
        padding: 1.5rem;
    }
    
    .auth-links {
        margin-top: 1rem;
    }
}
/* Style pour les champs de formulaire */
.form-control {
    width: 100%;
    padding: 0.75rem 1rem;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 1rem;
    transition: all 0.3s ease;
}
.form-control:focus {
    outline: none;
    border-color: #0059A1;
    box-shadow: 0 0 0 2px rgba(0, 89, 161, 0.1);
}
/* Style pour les labels */
.form-group label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
    color: #003366;
    font-weight: 500;
}
.form-group label i {
    color: #0059A1;
    font-size: 0.9rem;
}
/* Espacement entre les groupes de formulaire */
.form-group {
    margin-bottom: 1.5rem;
}
.form-group:last-of-type {
    margin-bottom: 2rem;
}
/* Style du bouton */
.btn-primary {
    width: 100%;
    padding: 0.75rem;
    background: linear-gradient(45deg, #0059A1, #003366);
    border: none;
    border-radius: 6px;
    color: white;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}
.btn-primary:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0, 89, 161, 0.2);
}
.btn-primary i {
    font-size: 0.9rem;
}
.content-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 2rem;
    padding: 1rem 2rem;
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.users-filters {
    display: flex;
    gap: 1rem;
    margin: 0 2rem 2rem;
    padding: 1rem;
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.search-box {
    position: relative;
    flex: 1;
}
.search-box i {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: #666;
}
.search-box input {
    width: 50%;
    padding: 0.8rem 1rem 0.8rem 2.5rem;
    border: 1px solid #ddd;
    border-radius: 4px;
}
.users-table {
    margin: 0 2rem;
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    overflow: hidden;
}
.users-table table {
    width: 100%;
    border-collapse: collapse;
}
.users-table th,
.users-table td {
    padding: 1rem;
    text-align: left;
    border-bottom: 1px solid #eee;
}
.users-table th {
    background: #f8f9fa;
    font-weight: 600;
    color: #183f72;
}
.role-badge {
    display: inline-block;
    padding: 0.25rem 0.5rem;
    border-radius: 20px;
    font-size: 0.8rem;
    margin-right: 0.5rem;
}
.role-badge.role_admin {
    background: #183f72;
    color: white;
}
.role-badge.role_user {
    background: #e9ecef;
    color: #666;
}
.actions {
    display: flex;
    gap: 0.5rem;
    height: 100px;
}
.btn-icon {
    padding: 0.5rem;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    background: transparent;
    color: #666;
    transition: all 0.2s;
}
.btn-icon:hover {
    background: #f8f9fa;
    color: #183f72;
}
.btn-icon.delete:hover {
    background: #fee2e2;
    color: #dc2626;
}
.admin-main {
    flex: 1;
    background-color: #f5f5f5;
    overflow-y: auto;
    height: 100vh;
}
.modal {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0,0,0,0.5);
    z-index: 1000;
    display: none;
    justify-content: center;
    align-items: center;
    padding: 1rem;
}
.modal.active {
    display: flex;
}
.modal-content {
    background: white;
    padding: 2rem;
    border-radius: 8px;
    width: 100%;
    max-width: 500px;
    max-height: 90vh;
    overflow-y: auto;
}
.form-group {
    margin-bottom: 1rem;
}
.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    color: #183f72;
}
.form-group input,
.form-group select {
    width: 100%;
    padding: 0.8rem;
    border: 1px solid #ddd;
    border-radius: 4px;
}
.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
    margin-top: 2rem;
}
.notification {
    position: fixed;
    top: 20px;
    right: 20px;
    padding: 1rem 2rem;
    border-radius: 4px;
    color: white;
    z-index: 1100;
    animation: slideIn 0.3s ease-out;
}
.notification.success {
    background-color: #10B981;
}
.notification.error {
    background-color: #EF4444;
}
@keyframes slideIn {
    from {
        transform: translateX(100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}
.flash-messages {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 1100;
}
.flash-message {
    padding: 1rem 2rem;
    margin-bottom: 1rem;
    border-radius: 4px;
    animation: slideIn 0.3s ease-out;
}
.flash-message.success {
    background-color: #28a745;
    color: white;
}
.flash-message.error {
    background-color: #dc3545;
    color: white;
}
@keyframes slideIn {
    from {
        transform: translateX(100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}
/* Table principale */
.prestations-table {
    width: 100%;
    margin-top: 1rem;
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    overflow: hidden;
}
.prestations-table table {
    width: 100%;
    border-collapse: collapse;
}
.prestations-table th,
.prestations-table td {
    padding: 1rem;
    text-align: left;
    border-bottom: 1px solid #eee;
    vertical-align: middle;
    height: 80px;
}
.prestations-table th {
    background-color: #f8f9fa;
    font-weight: 600;
    color: #495057;
    text-transform: uppercase;
    font-size: 0.85rem;
    height: auto;
    padding: 0.75rem 1rem;
}
.prestations-table tr:hover {
    background-color: #f8f9fa;
}
/* Service info avec image */
.service-info {
    display: flex;
    align-items: center;
    gap: 1rem;
    max-width: 400px;
}
.service-info .service-thumbnail {
    width: 60px;
    height: 60px;
    -o-object-fit: cover;
       object-fit: cover;
    border-radius: 4px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.service-info div {
    flex: 1;
    min-width: 0; /* Pour que l'ellipsis fonctionne */
}
.service-info strong {
    display: block;
    color: #2c3e50;
    margin-bottom: 0.25rem;
}
.service-description {
    color: #6c757d;
    font-size: 0.9rem;
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Prix */
.prestations-table td.prix {
    font-family: monospace;
    font-size: 1.1rem;
    font-weight: 600;
    color: #2c3e50;
    text-align: right;
    padding-right: 2rem;
}
/* Actions */
.prestations-table td.actions {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    justify-content: flex-end;
    padding: 1rem;
    width: 100px;
    height: 120px;
}
.prestations-table td.actions .inline-form {
    margin: 0;
    display: inline-flex;
}
.prestations-table td.actions .btn-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 4px;
    border: none;
    background: none;
    color: #6c757d;
    cursor: pointer;
    transition: all 0.2s;
}
.prestations-table td.actions .btn-icon:hover {
    background-color: #e9ecef;
    color: #495057;
}
.prestations-table td.actions .btn-icon.delete {
    color: #dc3545;
}
.prestations-table td.actions .btn-icon.delete:hover {
    background-color: #fde8e8;
    color: #bd2130;
}
/* Filtres et recherche */
.prestations-filters {
    display: flex;
    gap: 1rem;
    margin-bottom: 1.5rem;
    align-items: center;
}
.search-box {
    position: relative;
    flex: 1;
    max-width: 600px;
}
.search-box input {
    width: 100%;
    padding: 0.75rem 1rem 0.75rem 2.5rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
    transition: all 0.2s ease;
}
.search-box input:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
    background-color: white;
}
.search-box input:focus::-moz-placeholder {
    opacity: 0.5;
}
.search-box input:focus::placeholder {
    opacity: 0.5;
}
.search-box input::-moz-placeholder {
    color: #6c757d;
    font-size: 0.9rem;
}
.search-box input::placeholder {
    color: #6c757d;
    font-size: 0.9rem;
}
.search-box i {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: #6c757d;
}
/* Style des formulaires dans les modales */
.modal .form-group {
    margin-bottom: 1.5rem;
}
.modal .form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    color: #495057;
}
.modal .form-group select,
.modal .form-group input {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
    background-color: white;
}
.modal .form-group input[type="number"] {
    font-family: monospace;
}
.modal .form-group select:focus,
.modal .form-group input:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
.form-group select {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
}
.form-group select option {
    padding: 8px;
    white-space: normal;
    word-wrap: break-word;
}
.vehicle-info {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}
.vehicle-info strong {
    display: block;
    color: #2c3e50;
    font-size: 1rem;
}
.vehicle-details {
    color: #6c757d;
    font-size: 0.9rem;
    margin: 0;
}
.calculateur-details {
    color: #495057;
    font-size: 0.85rem;
    margin: 0;
    padding-top: 0.25rem;
    border-top: 1px solid #eee;
}
/* Pagination */
.pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1rem;
    margin: 2rem 0;
    padding: 1rem;
}
.btn-pagination {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background-color: #f8f9fa;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    color: #495057;
    text-decoration: none;
    transition: all 0.2s ease;
}
.btn-pagination:hover {
    background-color: #e9ecef;
    color: #212529;
}
.pagination-info {
    font-size: 0.9rem;
    color: #6c757d;
}
.filters-group {
    display: flex;
    gap: 1rem;
    width: 100%;
    align-items: center;
}
.search-input {
    position: relative;
    flex: 2;
}
.motorisation-select {
    flex: 1;
}
.motorisation-select select {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
    background-color: white;
    transition: all 0.2s ease;
}
.motorisation-select select:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
/* Button group in header */
.content-header .button-group {
    display: flex;
    gap: 1rem;
}
.info-text {
    background-color: #f8f9fa;
    border-left: 3px solid #0059A1;
    padding: 0.75rem;
    margin: 1rem 0;
    border-radius: 4px;
    color: #666;
    font-size: 0.9rem;
}
.info-text i {
    color: #0059A1;
    margin-right: 0.5rem;
}
/* Notification */
.notification {
    position: fixed;
    top: 20px;
    right: 20px;
    padding: 1rem;
    border-radius: 8px;
    background: white;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    z-index: 9999;
    transform: translateX(120%);
    transition: transform 0.3s ease;
    max-width: 350px;
}
.notification.show {
    transform: translateX(0);
}
.notification.success {
    border-left: 4px solid #4CAF50;
}
.notification.error {
    border-left: 4px solid #F44336;
}
.notification-content {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.notification-content i.fa-check-circle {
    color: #4CAF50;
}
.notification-content i.fa-exclamation-circle {
    color: #F44336;
}
/* Bouton de démonstration */
.btn-demo {
    background: linear-gradient(135deg, #ff6b6b, #ee5a52);
    color: white;
    border: none;
    padding: 0.75rem 1.5rem;
    border-radius: 8px;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    text-decoration: none;
    transition: all 0.3s ease;
    box-shadow: 0 2px 8px rgba(255, 107, 107, 0.3);
}
.btn-demo:hover {
    background: linear-gradient(135deg, #ee5a52, #ff6b6b);
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(255, 107, 107, 0.4);
}
.btn-demo:active {
    transform: translateY(0);
}
.btn-demo:disabled {
    opacity: 0.6;
    cursor: not-allowed;
    transform: none;
}
.btn-demo i {
    font-size: 1rem;
}
/* Table principale */
.services-table {
    width: 100%;
    margin-top: 1rem;
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    overflow: hidden;
}
.services-table table {
    width: 100%;
    border-collapse: collapse;
}
.services-table th,
.services-table td {
    padding: 1rem;
    text-align: left;
    border-bottom: 1px solid #eee;
    vertical-align: middle;
}
.services-table th {
    background-color: #f8f9fa;
    font-weight: 600;
    color: #495057;
    text-transform: uppercase;
    font-size: 0.85rem;
}
.services-table tr:hover {
    background-color: #f8f9fa;
}
/* Images dans la table */
.service-thumbnail {
    width: 80px;
    height: 60px;
    -o-object-fit: cover;
       object-fit: cover;
    border-radius: 4px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    display: block;
}
/* Description dans la table */
.service-description {
    max-width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Boutons d'action */
.btn-icon {
    padding: 0.5rem;
    border-radius: 4px;
    border: none;
    background: none;
    color: #6c757d;
    cursor: pointer;
    transition: all 0.2s;
}
.btn-icon:hover {
    background-color: #e9ecef;
    color: #495057;
}
/* Modal d'édition */
.modal-content {
    max-width: 600px;
    width: 100%;
}
.form-group {
    margin-bottom: 1.5rem;
}
.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    color: #495057;
}
.form-group input[type="text"],
.form-group textarea {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
}
.form-group textarea {
    min-height: 120px;
    resize: vertical;
}
/* Images dans le formulaire */
.current-image,
.image-preview {
    width: 200px;
    height: 150px;
    -o-object-fit: cover;
       object-fit: cover;
    border-radius: 4px;
    margin-top: 0.5rem;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.image-preview {
    display: none;
}
/* Filtres et recherche */
.services-filters {
    display: flex;
    gap: 1rem;
    margin-bottom: 1.5rem;
    align-items: center;
}
.search-box {
    position: relative;
    flex: 1;
    max-width: 400px;
}
.search-box i {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: #6c757d;
}
.search-box input {
    width: 100%;
    padding: 0.75rem 1rem 0.75rem 2.5rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
    transition: border-color 0.2s;
}
.search-box input:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
.td.actions {
    height: 100px;
}
.services-table td.actions {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    padding: 1rem;
}
.services-table td.actions .inline-form {
    margin: 0;
    display: inline-flex;
}
.services-table td.actions .btn-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
}
.services-table td.actions .btn-icon.delete {
    color: #dc3545;
}
.services-table td.actions .btn-icon.delete:hover {
    background-color: #fde8e8;
    color: #bd2130;
}
/* Header et conteneur principal */
.content-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 2rem;
}
.content-header h2 {
    font-size: 1.5rem;
    color: #2c3e50;
    margin: 0;
}
/* Filtres et recherche */
.orders-filters {
    display: flex;
    gap: 1rem;
    margin-bottom: 1.5rem;
    align-items: center;
    justify-content: space-around;
}
.search-box {
    position: relative;
    flex: 1;
    max-width: 400px;
}
.search-box i {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: #6c757d;
}
.search-box input {
    width: 100%;
    padding: 0.75rem 1rem 0.75rem 2.5rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
}
.search-box input:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
.status-filter select {
    padding: 0.75rem 2.5rem 0.75rem 1rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
    background-color: white;
    min-width: 200px;
    cursor: pointer;
}
.status-filter select:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
/* Select de statut interactif */
.status-select {
    padding: 0.5rem 2.5rem 0.5rem 0.75rem;
    border: 1px solid #ddd;
    border-radius: 6px;
    background: white;
    font-size: 0.9rem;
    font-weight: 500;
    cursor: pointer;
    min-width: 120px;
    transition: all 0.3s ease;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27currentColor%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3e%3cpolyline points=%276,9 12,15 18,9%27%3e%3c/polyline%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 1rem;
}
.status-select:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
.status-select:hover {
    border-color: #bbb;
}
/* Table principale */
.orders-table {
    width: 100%;
    margin-top: 1rem;
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    overflow: hidden;
}
.orders-table table {
    width: 100%;
    border-collapse: collapse;
}
.orders-table th,
.orders-table td {
    padding: 1rem;
    text-align: left;
    border-bottom: 1px solid #eee;
    vertical-align: middle;
}
.orders-table th {
    background-color: #f8f9fa;
    font-weight: 600;
    color: #495057;
    text-transform: uppercase;
    font-size: 0.85rem;
}
.orders-table tr:hover {
    background-color: #f8f9fa;
}
/* Informations client */
.client-info {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}
.client-info p {
    margin: 0;
    color: #6c757d;
    font-size: 0.9rem;
}
/* Liste des prestations */
.prestations-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.prestation-item {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.5rem;
    background: var(--gray-50);
    border-radius: 6px;
}
.prestation-item .service {
    font-weight: 600;
    color: var(--gray-800);
}
.prestation-item .vehicle {
    color: var(--gray-600);
    font-size: 0.9rem;
}
.prestation-item .price {
    margin-left: auto;
    font-weight: 600;
    color: var(--success);
}
/* Badges de statut */
.status-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.75rem;
    border-radius: 50px;
    font-size: 0.85rem;
    font-weight: 500;
}
.status-badge.en_attente {
    background-color: var(--warning-light);
    color: var(--warning-dark);
}
.status-badge.confirmee {
    background-color: var(--info-light);
    color: var(--info-dark);
}
.status-badge.en_cours {
    background-color: var(--primary-light);
    color: var(--primary-dark);
}
.status-badge.terminee {
    background-color: var(--success-light);
    color: var(--success-dark);
}
.status-badge.annulee {
    background-color: var(--danger-light);
    color: var(--danger-dark);
}
/* Actions */
.actions {
    display: flex;
    gap: 0.5rem;
}
.btn-icon {
    width: 2.5rem;
    height: 2.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    color: var(--gray-600);
    background: var(--gray-50);
    border: 1px solid var(--gray-200);
    transition: all 0.3s ease;
}
.btn-icon:hover {
    background: var(--gray-100);
    color: var(--gray-800);
}
/* Modales */
.modal-content {
    max-width: 600px;
    width: 100%;
}
.order-details {
    display: flex;
    flex-direction: column;
    gap: 2rem;
}
.detail-section {
    border-bottom: 1px solid var(--gray-200);
    padding-bottom: 1.5rem;
}
.detail-section:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.detail-section h4 {
    color: var(--gray-700);
    font-size: 1.1rem;
    margin-bottom: 1rem;
}
/* Informations client dans la modale */
.client-details {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    background: var(--gray-50);
    padding: 1rem;
    border-radius: 6px;
}
.client-details p {
    margin: 0;
    color: var(--gray-600);
}
.client-details strong {
    color: var(--gray-800);
}
/* Prestations dans la modale */
.prestations-details {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.prestation-detail-item {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    background: var(--gray-50);
    padding: 1rem;
    border-radius: 6px;
}
.service-info h5 {
    color: var(--gray-800);
    font-size: 1rem;
    margin: 0 0 0.25rem 0;
}
.service-info p {
    color: var(--gray-600);
    font-size: 0.9rem;
    margin: 0;
}
.vehicle-info {
    margin-top: 0.5rem;
}
.vehicle-info p {
    margin: 0.25rem 0;
    color: var(--gray-600);
    font-size: 0.9rem;
}
.calculateur-info {
    font-size: 0.85rem;
    color: var(--gray-500);
    margin-top: 0.25rem;
}
/* Formulaire d'édition */
.form-group {
    margin-bottom: 1.5rem;
}
.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    color: var(--gray-700);
    font-weight: 500;
}
.form-group select {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid var(--gray-200);
    border-radius: 6px;
    font-size: 0.95rem;
    background-color: var(--white);
    transition: all 0.3s ease;
}
.form-group select:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 2px var(--primary-light);
    outline: none;
}
/* Actions de la modale */
.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
    margin-top: 2rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--gray-200);
}
.btn-secondary {
    padding: 0.75rem 1.5rem;
    border: 1px solid var(--gray-200);
    border-radius: 6px;
    background: var(--white);
    color: var(--gray-700);
    font-weight: 500;
    transition: all 0.3s ease;
}
.btn-secondary:hover {
    background: var(--gray-50);
    border-color: var(--gray-300);
}
.btn-primary {
    padding: 0.75rem 1.5rem;
    border: none;
    border-radius: 6px;
    background: var(--primary);
    color: var(--white);
    font-weight: 500;
    transition: all 0.3s ease;
}
.btn-primary:hover {
    background: var(--primary-dark);
}
/* Notifications temporaires */
.alert {
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    border-radius: 6px;
    font-size: 0.9rem;
    animation: slideIn 0.3s ease-out;
}
.alert-success {
    color: #155724;
    background-color: #d4edda;
    border-color: #c3e6cb;
}
.alert-danger {
    color: #721c24;
    background-color: #f8d7da;
    border-color: #f5c6cb;
}
@keyframes slideIn {
    from {
        opacity: 0;
        transform: translateX(100%);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}
/* Header et conteneur principal */
.content-header {
    padding: 2.5rem;
    border-radius: 15px;
    margin-bottom: 2rem;
    box-shadow: 0 8px 25px rgba(0, 106, 255, 0.15);
    position: relative;
    overflow: hidden;
}
.content-header::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 300px;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1));
    transform: skewX(-15deg);
}
.content-header h2 {
    color: white;
    font-size: 2rem;
    margin: 0;
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
    display: flex;
    align-items: center;
    gap: 1rem;
}
/* Table principale */
.vehicles-table {
    width: 100%;
    margin-top: 1rem;
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    overflow: hidden;
}
.vehicles-table table {
    width: 100%;
    border-collapse: collapse;
}
.vehicles-table th,
.vehicles-table td {
    padding: 1rem;
    text-align: left;
    border-bottom: 1px solid #eee;
    vertical-align: middle;
}
.vehicles-table th {
    background-color: #f8f9fa;
    font-weight: 600;
    color: #495057;
    text-transform: uppercase;
    font-size: 0.85rem;
}
.vehicles-table tr:nth-child(even) {
    background-color: #f8f9fa;
}
.vehicles-table tr:hover {
    background-color: #f8f9fa;
}
/* Description dans la table */
.vehicle-description {
    max-width: 400px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #6c757d;
}
/* Barre de recherche */
.search-bar {
    background: white;
    padding: 1rem;
    border-radius: 15px;
    box-shadow: 0 8px 25px rgba(255, 77, 0, 0.1);
    margin: -3rem 2rem 2rem 2rem;
    display: flex;
    gap: 1rem;
    position: relative;
    z-index: 10;
}
.search-bar input {
    flex: 1;
    padding: 1.2rem 1.5rem;
    border: 2px solid rgba(255, 77, 0, 0.1);
    border-radius: 12px;
    font-size: 1rem;
    transition: all 0.3s ease;
    background: #f8f9fa;
}
.search-bar input:focus {
    outline: none;
    border-color: #ff4d00;
    box-shadow: 0 0 0 5px rgba(255, 77, 0, 0.1);
    background: white;
}
.search-bar button {
    padding: 1rem 2rem;
    background: linear-gradient(135deg, #007BFF 0%, #0056b3 100%);
    color: white;
    border: none;
    border-radius: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s ease;
    font-size: 1rem;
}
.search-bar button:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(255, 77, 0, 0.2);
}
/* Boutons d'action */
.btn-primary {
    background-color: #007bff;
    color: white;
    border: none;
    padding: 0.5rem 1rem;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    transition: background-color 0.2s;
}
.btn-primary:hover {
    background-color: #0056b3;
}
.btn-icon {
    padding: 0.5rem;
    border-radius: 4px;
    border: none;
    background: none;
    color: #6c757d;
    cursor: pointer;
    transition: all 0.2s;
}
.btn-icon:hover {
    background-color: #e9ecef;
    color: #495057;
}
.btn-icon.delete {
    color: #dc3545;
}
.btn-icon.delete:hover {
    background-color: #fde8e8;
    color: #bd2130;
}
/* Actions dans la table */
.actions {
    display: flex;
    gap: 0.8rem;
}
.inline-form {
    margin: 0;
    display: inline-flex;
}
/* Modales */
.modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0,0,0,0.5);
    z-index: 1000;
    padding: 1rem;
}
.modal.active {
    display: flex;
    align-items: center;
    justify-content: center;
}
.modal-content {
    background: white;
    border-radius: 8px;
    padding: 2rem;
    width: 100%;
    max-width: 800px;
    max-height: 90vh;
    overflow-y: auto;
}
.modal-content h3 {
    margin-top: 0;
    margin-bottom: 1.5rem;
    color: #2c3e50;
}
/* Formulaires */
.form-row {
    display: flex;
    gap: 1rem;
    margin-bottom: 1.5rem;
}
.form-group.half {
    flex: 1;
    margin-bottom: 0;
}
.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    color: #495057;
}
.form-group input {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
}
.form-group input:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
/* Actions de la modale */
.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
    margin-top: 2rem;
    padding-top: 1rem;
    border-top: 1px solid #eee;
}
.btn-secondary {
    background-color: #6c757d;
    color: white;
    border: none;
    padding: 0.5rem 1rem;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.2s;
}
.btn-secondary:hover {
    background-color: #5a6268;
}
/* Messages d'alerte */
.alert {
    padding: 1rem;
    margin-bottom: 1rem;
    border-radius: 4px;
}
.alert-danger {
    background-color: #f8d7da;
    color: #721c24;
    border: 1px solid #f5c6cb;
}
.alert-success {
    background-color: #d4edda;
    color: #155724;
    border: 1px solid #c3e6cb;
}
.calculateur-info {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}
.calculateur-info p {
    margin: 0;
    font-size: 0.9rem;
}
.calculateur-info .reference {
    color: #666;
    font-size: 0.85rem;
}
.btn-group {
    display: flex;
    gap: 0.5rem;
}
.table-container {
    margin-top: 1rem;
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
table {
    width: 100%;
    border-collapse: collapse;
}
th {
    background: #f8f9fa;
    padding: 1rem;
    text-align: left;
    font-weight: 600;
    color: #495057;
}
td {
    padding: 1rem;
    border-top: 1px solid #dee2e6;
}
.text-muted {
    color: #6c757d;
    font-style: italic;
}
.form-section {
    margin-bottom: 2rem;
    padding: 1rem;
    background: #f8f9fa;
    border-radius: 8px;
}
.form-section h4 {
    margin: 0 0 1rem 0;
    color: #495057;
}
.collection-items {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-bottom: 1rem;
}
.collection-item {
    background: white;
    padding: 1rem;
    border-radius: 4px;
    border: 1px solid #dee2e6;
}
.input-group {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.input-group input {
    flex: 1;
}
/* Liste des motorisations */
.motorisations-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.motorisation-item {
    background-color: #0056b3;
    color: white;
    padding: 0.8rem 1.2rem;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0, 123, 255, 0.2);
    transition: all 0.3s ease;
    margin-bottom: .5rem;
}
.motorisation-item:hover {
    background-color: #007BFF;
    transform: translateY(-2px);
    box-shadow: 0 4px 15px rgba(0, 123, 255, 0.2);

}
.motorisation-item h4 {
    margin: 0 0 0.5rem 0;
    font-size: 1rem;
    font-weight: 600;
}
.motorisation-item p {
    margin: 0;
    font-size: 0.9rem;
    opacity: 0.9;
}
/* Années */
.motorisation-years {
    font-size: 0.8rem;
    opacity: 0.9;
    margin-left: 0.5rem;
    padding-left: 0.5rem;
    border-left: 1px solid rgba(255, 255, 255, 0.3);
}
/* Liste des calculateurs */
.calculateurs-list {
    margin-top: 0.8rem;
    padding-top: 0.8rem;
    border-top: 1px solid rgba(255, 255, 255, 0.2);
}
.calculateur-item {
    background: rgba(255, 255, 255, 0.1);
    padding: 0.8rem;
    border-radius: 6px;
    margin-bottom: 0.5rem;
    transition: all 0.3s ease;
}
.calculateur-item strong {
    display: block;
    margin-bottom: 0.3rem;
}
.calculateur-item .reference {
    font-size: 0.85rem;
    opacity: 0.9;
    display: inline-block;
    background: rgba(255, 255, 255, 0.2);
    padding: 0.2rem 0.6rem;
    border-radius: 4px;
    margin-right: 0.5rem;
}
.calculateur-item .type {
    font-size: 0.85rem;
    background: #ff4d00;
    color: white;
    padding: 0.2rem 0.6rem;
    border-radius: 4px;
}
/* Badge ECM */
.ecm-badge {
    display: inline-block;
    padding: 0.2rem 0.5rem;
    background-color: #ff4d00;
    color: white;
    border-radius: 4px;
    font-size: 0.75rem;
    margin-left: 0.5rem;
}
/* Cellule de la table */
.vehicles-table td {
    vertical-align: middle;
    padding: 0.75rem 1rem;
}
/* Table moderne */
.vehicles-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: #fff;
    border-radius: 15px;
    overflow: hidden;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.05);
    margin: 20px 0;
}
.vehicles-table th {
    background: #007BFF;
    color: white;
    font-weight: 600;
    padding: 1.5rem;
    text-align: left;
    font-size: 1.1rem;
    position: relative;
}
.vehicles-table th:after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: rgba(255, 255, 255, 0.2);
}
.vehicles-table td {
    padding: 1.2rem 1.5rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
    font-size: 1rem;
    color: #333;
    transition: all 0.3s ease;
}
.vehicles-table tr:hover td {
    background: #fff5f0;
    transform: scale(1.005);
}
/* Pagination moderne */
.pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
    margin: 20px 0;
}
.pagination a, .pagination span {
    padding: 8px 16px;
    border-radius: 4px;
    background: #fff;
    color: #007BFF;
    text-decoration: none;
    transition: all 0.3s ease;
    border: 1px solid #007BFF;
}
.pagination .current {
    background: #007BFF;
    color: white;
}
.pagination a:hover {
    background: #0056b3;
    color: white;
}
/* Actions */
.actions {
    display: flex;
    gap: 0.8rem;
}
.btn-icon {
    padding: 0.8rem;
    border-radius: 12px;
    border: none;
    cursor: pointer;
    transition: all 0.3s ease;
    color: white;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.btn-icon.edit {
    background: linear-gradient(135deg, #007BFF 0%, #0056b3 100%);
}
.btn-icon.delete {
    background: linear-gradient(135deg, #dc3545 0%, #ff4444 100%);
}
.btn-icon:hover {
    transform: translateY(-2px) scale(1.05);
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
/* Responsive */
@media (max-width: 768px) {
    .search-bar {
        flex-direction: column;
        margin: 1rem;
    }
    
    .vehicles-table {
        font-size: 0.9rem;
    }
    
    .content-header {
        padding: 1.5rem;
        text-align: center;
    }
    
    .motorisation-item {
        width: 100%;
    }
    
    .calculateur-item {
        padding: 0.6rem;
    }
}
/* Style des colonnes */
.vehicles-table td.marque,
.vehicles-table td.modele {
    font-weight: 500;
    color: #2c3e50;
    font-size: 1.1rem;
}
.vehicles-table td.annees {
    background: #f8f9fa;
    border-radius: 6px;
    font-weight: 500;
    color: #007BFF;
    text-align: center;
    width: 150px;
}
/* Style des en-têtes */
.vehicles-table th {
    background: linear-gradient(135deg, #007BFF 0%, #0056b3 100%);
    color: white;
    font-weight: 600;
    padding: 1.2rem 1.5rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-size: 0.9rem;
}
/* Style des lignes */
.vehicles-table tr {
    height: 80px;
    transition: all 0.3s ease;
}
.vehicles-table tr:hover {
    background: rgba(0, 123, 255, 0.05);
}
.vehicles-table tr:hover td {
    transform: translateY(-2px);
}
/* Style des actions */
.vehicles-table td.actions {
    width: 120px;
    text-align: right;
}
.btn-icon {
    width: 35px;
    height: 35px;
    border-radius: 8px;
    transition: all 0.3s ease;
}
.btn-icon.edit {
    background: linear-gradient(135deg, #007BFF 0%, #0056b3 100%);
}
.btn-icon.delete {
    background: linear-gradient(135deg, #dc3545 0%, #ff4444 100%);
}
/* Style de base pour les lignes */
.vehicles-table tr {
    height: 80px;
    transition: all 0.3s ease;
}
/* Conteneur pour le contenu extensible */
.expandable-content {
    max-height: 80px;
    overflow: hidden;
    transition: all 0.5s ease;
    cursor: pointer;
    position: relative;
}
.expandable-content.expanded {
    max-height: none;
    overflow: visible;
}
/* Style pour le preview des motorisations */
.motorisations-preview {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.motorisation-count {
    background: #007BFF;
    color: white;
    padding: 0.2rem 0.6rem;
    border-radius: 12px;
    font-size: 0.85rem;
}
/* Indicateur d'expansion */
.expand-indicator {
    margin-left: auto;
    color: #007BFF;
    transition: transform 0.3s ease;
}
.expanded .expand-indicator {
    transform: rotate(180deg);
}
/* Ajustement du contenu détaillé */
.details-content {
    padding-top: 1rem;
    display: none;
    opacity: 0;
    transition: opacity 0.3s ease;
}
.expanded .details-content {
    display: block;
    opacity: 1;
}
/* Container des items */
.item-container {
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    padding-bottom: 1rem;
}
/* Ajustement de la cellule */
.vehicles-table td.motorisations {
    min-width: 300px;
    max-width: 500px;
    position: relative;
}
/* Header et conteneur principal */
.content-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 2rem;
}
.content-header h2 {
    font-size: 1.5rem;
    color: #2c3e50;
    margin: 0;
}
/* Conteneur des sections de réglages */
.settings-container {
    display: grid;
    gap: 2rem;
}
/* Sections individuelles */
.settings-section {
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    padding: 2rem;
    overflow: hidden;
}
.settings-section h3 {
    color: #2c3e50;
    font-size: 1.25rem;
    margin: 0 0 1.5rem 0;
    padding-bottom: 1rem;
    border-bottom: 1px solid #eee;
}
/* Formulaires */
.settings-form {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
.form-group {
    margin-bottom: 1.5rem;
}
.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    color: #495057;
}
.form-group input,
.form-group textarea {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 1rem;
    transition: all 0.2s;
}
.form-group input:focus,
.form-group textarea:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
.form-group textarea {
    min-height: 120px;
    resize: vertical;
}
.form-group small {
    display: block;
    margin-top: 0.5rem;
    color: #6c757d;
    font-size: 0.85rem;
}
/* Boutons */
.btn-primary {
    background-color: #007bff;
    color: white;
    border: none;
    padding: 0.75rem 1.5rem;
    border-radius: 4px;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.2s;
    align-self: flex-start;
}
.btn-primary:hover {
    background-color: #0056b3;
}
/* Messages d'alerte */
.alert {
    padding: 1rem;
    margin-bottom: 1rem;
    border-radius: 4px;
}
.alert-success {
    background-color: #d4edda;
    color: #155724;
    border: 1px solid #c3e6cb;
}
.alert-danger {
    background-color: #f8d7da;
    color: #721c24;
    border: 1px solid #f5c6cb;
}
/* Responsive */
@media (max-width: 768px) {
    .settings-container {
        gap: 1.5rem;
    }

    .settings-section {
        padding: 1.5rem;
    }

    .btn-primary {
        width: 100%;
    }
}
/* Ajout de styles pour les boutons */
.settings-form .btn-primary {
    margin-top: 1rem;
    padding: 0.75rem 1.5rem;
    background-color: #4CAF50;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-weight: 500;
    transition: background-color 0.2s;
}
.settings-form .btn-primary:hover {
    background-color: #45a049;
}
/* Amélioration des inputs */
.form-group input:focus,
.form-group textarea:focus {
    outline: none;
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
}
/* Style pour les messages de succès/erreur */
.alert {
    padding: 1rem;
    margin-bottom: 1rem;
    border-radius: 4px;
}
.alert-success {
    background-color: #d4edda;
    color: #155724;
    border: 1px solid #c3e6cb;
}
.alert-danger {
    background-color: #f8d7da;
    color: #721c24;
    border: 1px solid #f5c6cb;
}
.stripe-mode-switch {
    display: flex;
    gap: 1rem;
    margin-bottom: 2rem;
    background: #f8f9fa;
    padding: 0.5rem;
    border-radius: 6px;
    width: -moz-fit-content;
    width: fit-content;
}
.mode-btn {
    padding: 0.5rem 1rem;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-weight: 500;
    background: none;
    color: #6c757d;
    transition: all 0.2s;
}
.mode-btn.active {
    background: white;
    color: #2c3e50;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.hidden {
    display: none;
}
.code-editor {
    font-family: monospace;
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    white-space: pre;
    overflow: auto;
}
.form-actions {
    display: flex;
    gap: 1rem;
    margin-top: 1rem;
}
.btn-secondary {
    background-color: #6c757d;
    color: white;
    padding: 0.5rem 1rem;
    border: none;
    border-radius: 0.25rem;
    cursor: pointer;
}
.btn-secondary:disabled {
    opacity: 0.65;
    cursor: not-allowed;
}
.admin-container {
    display: flex;
    min-height: 100vh;
    margin-top: 70px;
}
.admin-sidebar {
    width: 250px;
    background-color: #183f72;
    color: white;
    padding: 1rem;
}
.sidebar-header {
    padding: 1rem 0;
    text-align: center;
}
.admin-logo {
    width: 150px;
}
.admin-nav ul {
    list-style: none;
    padding: 0;
    margin: 2rem 0;
}
.admin-nav a {
    display: flex;
    align-items: center;
    padding: 0.8rem 1rem;
    color: white;
    text-decoration: none;
    border-radius: 4px;
    transition: background-color 0.3s;
}
.admin-nav a:hover,
.admin-nav a.active {
    background-color: #0059A1;
}
.admin-nav i {
    margin-right: 0.5rem;
    width: 20px;
}
.admin-header {
    background-color: white;
    padding: 1rem 2rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.admin-header-actions {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.5rem 1rem;
}
.admin-header-actions .admin-user {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: #495057;
    font-weight: 500;
}
.admin-header-actions .admin-user i {
    color: #6c757d;
}
.admin-header-actions .btn-logout {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background-color: #dc3545;
    color: white;
    border: none;
    border-radius: 4px;
    text-decoration: none;
    transition: all 0.2s ease;
}
.admin-header-actions .btn-logout:hover {
    background-color: #c82333;
    transform: translateY(-1px);
}
.dashboard-content {
    padding: 2rem;
}
.dashboard-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1.5rem;
    margin-bottom: 2rem;
}
.stat-card {
    background-color: white;
    padding: 1.5rem;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.stat-card h3 {
    margin: 0;
    color: #183f72;
    font-size: 1.1rem;
}
.stat-number {
    font-size: 2rem;
    font-weight: bold;
    color: #0059A1;
    margin: 0.5rem 0 0;
}
/* Styles spécifiques pour les boutons d'action dans les tables */
.admin-main .btn-action {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-weight: 500;
    text-decoration: none;
    transition: all 0.2s ease;
}
.admin-main .btn-primary {
    background-color: #007bff;
    color: white;
}
.admin-main .btn-primary:hover {
    background-color: #0056b3;
}
.admin-main .btn-danger {
    background-color: #dc3545;
    color: white;
}
.admin-main .btn-danger:hover {
    background-color: #c82333;
}
/* Styles spécifiques pour les icônes dans les boutons */
.admin-main .btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: none;
    border-radius: 4px;
    background: none;
    color: #6c757d;
    cursor: pointer;
    transition: all 0.2s ease;
}
.admin-main .btn-icon:hover {
    background-color: #e9ecef;
    color: #495057;
}
.admin-main .btn-icon.delete {
    color: #dc3545;
}
.admin-main .btn-icon.delete:hover {
    background-color: #fde8e8;
    color: #bd2130;
}
.admin-main {
    flex: 1;
    background-color: #f8f9fa;
    min-height: 100vh;
    padding: 1rem;
}
/* Actions dans les tableaux */
.admin-main table td.actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    justify-content: flex-start;
}
.admin-main table td.actions .btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: none;
    border-radius: 4px;
    background: none;
    color: #6c757d;
    cursor: pointer;
    transition: all 0.2s ease;
}
.admin-main table td.actions .btn-icon:hover {
    background-color: #e9ecef;
    color: #495057;
}
.admin-main table td.actions .btn-icon.delete {
    color: #dc3545;
}
.admin-main table td.actions .btn-icon.delete:hover {
    background-color: #fde8e8;
    color: #bd2130;
}
.admin-main table td.actions .btn-primary {
    background-color: #007bff;
    color: white;
    border: none;
    padding: 0.5rem 1rem;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    transition: all 0.2s ease;
}
.admin-main table td.actions .btn-primary:hover {
    background-color: #0056b3;
}
.import-logs {
    margin-top: 20px;
    padding: 10px;
    background: #f5f5f5;
    border-radius: 4px;
}
.log-container {
    max-height: 300px;
    overflow-y: auto;
    font-family: monospace;
    background: #1e1e1e;
    color: #fff;
    padding: 10px;
}
.log-entry {
    padding: 2px 5px;
    border-bottom: 1px solid #333;
}
.log-time {
    color: #888;
    margin-right: 10px;
}
.log-error {
    color: #ff6b6b;
}
.log-info {
    color: #69db7c;
}
.pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 2rem 0;
    gap: 0.5rem;
}
.btn-pagination {
    padding: 0.5rem 1rem;
    border: 1px solid #ddd;
    border-radius: 4px;
    color: #333;
    text-decoration: none;
    transition: all 0.2s;
}
.btn-pagination:hover {
    background-color: #f5f5f5;
}
.btn-pagination.active {
    background-color: #007bff;
    color: white;
    border-color: #007bff;
}
/* Contact Page Styles */
.contact-page {
    background: #f8f9fa;
    min-height: 100vh;
    padding-top: 72px; /* Height of the header */
}
.contact-container {
    max-width: 1400px;
    margin: 0 auto;
    padding: 4rem 2rem 4rem;
}
.contact-header {
    text-align: center;
    margin-bottom: 4rem;
}
.contact-header h1 {
    font-size: clamp(2.5rem, 5vw, 3.5rem);
    color: #003366;
    margin-bottom: 1rem;
    font-weight: 700;
}
.contact-header p {
    font-size: clamp(1.1rem, 3vw, 1.3rem);
    color: #666;
    max-width: 600px;
    margin: 0 auto;
    line-height: 1.6;
}
/* Alert Styles */
.alert {
    padding: 1rem 1.5rem;
    border-radius: 12px;
    margin-bottom: 2rem;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-weight: 500;
}
.alert-success {
    background: rgba(46, 204, 113, 0.1);
    color: #27ae60;
    border: 1px solid rgba(46, 204, 113, 0.2);
}
.alert-error {
    background: rgba(231, 76, 60, 0.1);
    color: #e74c3c;
    border: 1px solid rgba(231, 76, 60, 0.2);
}
.alert i {
    font-size: 1.2rem;
}
/* Main Content Layout */
.contact-content {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4rem;
    align-items: stretch; /* Changed from 'start' to 'stretch' */
}
/* Contact Form */
.contact-form {
    background: white;
    padding: 3rem;
    border-radius: 20px;
    box-shadow: 0 8px 32px rgba(0, 51, 102, 0.1);
    border: 1px solid rgba(0, 89, 161, 0.05);
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
}
.form-logo {
    text-align: center;
    margin-bottom: 2rem;
}
.form-logo-img {
    max-width: 200px;
    height: auto;
    /* Pas de filtre = logo reste en noir */
}
.contact-form h2 {
    color: #003366;
    font-size: 1.8rem;
    margin-bottom: 2rem;
    font-weight: 600;
    font-family: inherit;
}
.form-group {
    margin-bottom: 1.5rem;
}
.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    color: #003366;
    font-weight: 500;
    font-size: 0.95rem;
    font-family: inherit;
}
.required {
    color: #e74c3c;
}
.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 0.875rem 1rem;
    border: 2px solid #e9ecef;
    border-radius: 12px;
    font-size: 1rem;
    transition: all 0.3s ease;
    background: #f8f9fa;
    color: #333;
    font-family: inherit;
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: #0059A1;
    background: white;
    box-shadow: 0 0 0 3px rgba(0, 89, 161, 0.1);
}
.form-group textarea {
    resize: vertical;
    min-height: 120px;
}
.checkbox-group {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}
.checkbox-group input[type="checkbox"] {
    width: auto;
    margin-top: 0.25rem;
    accent-color: #0059A1;
}
.checkbox-group label {
    margin-bottom: 0;
    font-size: 0.9rem;
    line-height: 1.5;
    color: #555;
    font-family: inherit;
}
.checkbox-group a {
    color: #0059A1;
    text-decoration: underline;
}
.checkbox-group a:hover {
    color: #003366;
}
.btn-submit {
    width: 100%;
    background: linear-gradient(135deg, #0059A1, #003366);
    color: white;
    border: none;
    padding: 1rem 2rem;
    border-radius: 12px;
    font-size: 1.1rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    margin-top: 1rem;
    font-family: inherit;
}
.btn-submit:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(0, 89, 161, 0.3);
}
.btn-submit:active {
    transform: translateY(0);
}
/* Contact Info */
.contact-info {
    background: #003366;
    color: white;
    padding: 3rem;
    border-radius: 20px;
    display: flex;
    flex-direction: column;
    height: 100%; /* Make it fill the full height */
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
}
.company-header {
    text-align: center;
    margin-bottom: 3rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.company-logo {
    margin-bottom: 1.5rem;
}
.logo-img {
    max-width: 200px;
    height: auto;
    filter: brightness(0) invert(1); /* Makes the logo white */
}
.company-address {
    font-size: 1.1rem;
    color: rgba(255, 255, 255, 0.9);
    line-height: 1.6;
    font-family: inherit;
}
.contact-method {
    display: flex;
    align-items: flex-start;
    gap: 1.5rem;
    margin-bottom: 2.5rem;
    padding: 1.5rem;
    background: rgba(255, 255, 255, 0.05);
    border-radius: 12px;
    transition: all 0.3s ease;
}
.contact-method:hover {
    background: rgba(255, 255, 255, 0.1);
    transform: translateX(5px);
}
.contact-method i {
    font-size: 1.5rem;
    color: #0a9ef4;
    margin-top: 0.25rem;
    width: 24px;
    text-align: center;
}
.contact-method-content h4 {
    color: white;
    font-size: 1.2rem;
    margin-bottom: 0.5rem;
    font-weight: 600;
    font-family: inherit;
}
.contact-method-content p {
    color: rgba(255, 255, 255, 0.9);
    line-height: 1.6;
    margin: 0;
    font-family: inherit;
}
.contact-method a {
    color: rgba(255, 255, 255, 0.9);
    text-decoration: none;
    transition: color 0.3s ease;
}
.contact-method a:hover {
    color: #0a9ef4;
}
/* Rating Section */
.rating-section {
    text-align: center;
    padding: 2rem;
    background: rgba(10, 158, 244, 0.1);
    border-radius: 16px;
    border: 1px solid rgba(10, 158, 244, 0.2);
    margin-top: auto; /* Push to bottom */
}
.rating-title {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.8);
    margin-bottom: 0.5rem;
}
.rating-score {
    font-size: 3rem;
    font-weight: 700;
    color: #0a9ef4;
    margin-bottom: 0.5rem;
}
.rating-stars {
    font-size: 1.5rem;
    color: #ffd700;
    margin-bottom: 1rem;
    letter-spacing: 2px;
}
.rating-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: #0a9ef4;
    text-decoration: none;
    font-weight: 500;
    transition: all 0.3s ease;
    padding: 0.5rem 1rem;
    border-radius: 8px;
    background: rgba(10, 158, 244, 0.1);
}
.rating-link:hover {
    background: rgba(10, 158, 244, 0.2);
    transform: translateY(-2px);
}
/* Responsive Design */
@media screen and (max-width: 1024px) {
    .contact-content {
        grid-template-columns: 1fr;
        gap: 3rem;
        align-items: start; /* Reset alignment for mobile */
    }
    
    .contact-info {
        position: static;
        order: 1; /* Place contact info after the form */
        height: auto; /* Reset height for mobile */
    }
    
    .contact-form {
        order: 0; /* Place contact form first */
    }
    
    .contact-container {
        padding: 4rem 1.5rem 4rem;
    }
    
    .contact-page {
        padding-top: 72px;
    }
}
@media screen and (max-width: 768px) {
    .contact-form {
        padding: 2rem;
    }
    
    .contact-info {
        padding: 2rem;
    }
    
    .form-logo-img {
        max-width: 160px;
    }
    
    .logo-img {
        max-width: 160px;
    }
    
    .contact-content {
        gap: 2rem;
    }
    
    .contact-container {
        padding: 4rem 1rem 4rem;
    }
    
    .contact-page {
        padding-top: 72px;
    }
}
@media screen and (max-width: 480px) {
    .contact-form {
        padding: 1.5rem;
    }
    
    .contact-info {
        padding: 1.5rem;
    }
    
    .form-logo-img {
        max-width: 140px;
    }
    
    .logo-img {
        max-width: 140px;
    }
    
    .contact-method {
        padding: 1rem;
        gap: 1rem;
    }
    
    .rating-score {
        font-size: 2.5rem;
    }
}
/* autres imports */ 
/*!***************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[2]!./assets/styles/shop/shop.css ***!
  \***************************************************************************************************************************************************************************************************/
/* Style moderne - Variables CSS */
:root {
    /* Couleurs modernes */
    --primary-color: #2563eb;
    --primary-dark: #1d4ed8;
    --primary-light: #3b82f6;
    --secondary-color: #f59e0b;
    --success-color: #10b981;
    --text-primary: #1f2937;
    --text-secondary: #6b7280;
    --text-muted: #9ca3af;
    --background: #ffffff;
    --background-light: #f9fafb;
    --background-card: #ffffff;
    --border-light: #e5e7eb;
    --border-color: #d1d5db;
    
    /* Gradients modernes */
    --gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --gradient-card: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);
    --gradient-orange: linear-gradient(135deg, #ff6b35 0%, #f7931e 100%);
    
    /* Ombres modernes */
    --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    --shadow-card: 0 4px 16px rgba(0, 0, 0, 0.06);
    --shadow-card-hover: 0 8px 30px rgba(0, 0, 0, 0.12);
    
    /* Rayons modernes */
    --radius-sm: 6px;
    --radius-md: 12px;
    --radius-lg: 16px;
    --radius-xl: 24px;
    
    /* Transitions fluides */
    --transition-fast: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    --transition-normal: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    --transition-slow: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    
    /* Typographie moderne */
    --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
    --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
}
/* Suppression des flèches pour tous les inputs de type number */
input[type="number"] {
    -webkit-appearance: textfield;
            appearance: textfield;
    -moz-appearance: textfield;
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.incar-shop-container {
    max-width: 1400px;
    margin: 0 auto;
    padding: 24px;
    font-family: var(--font-family);
    background-color: var(--background-light);
    color: var(--text-primary);
    min-height: 100vh;
}
/* Page wrapper pour éviter le chevauchement avec le header */
.page-wrapper {
    min-height: 100vh;
    padding-top: 80px; /* Hauteur approximative du header fixe */
    position: relative;
}
/* Filtres style moderne */
.incar-shop-filters {
    background: var(--background-card);
    padding: 24px;
    border-radius: var(--radius-lg);
    margin-bottom: 32px;
    box-shadow: var(--shadow-card);
    border: 1px solid var(--border-light);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    background: rgba(255, 255, 255, 0.9);
}
.filter-section {
    display: flex;
    align-items: center;
    gap: 16px;
    width: 100%;
    min-width: 0;
}
.reference-section {
    grid-column: 1 / -1;
}
.filter-section h4 {
    color: var(--text-primary);
    white-space: nowrap;
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    min-width: 120px;
    letter-spacing: 0.025em;
}
.filter-group {
    flex: 1;
    min-width: 0;
}
.filter-select, 
.reference-search input {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding: 12px 16px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    background-color: var(--background);
    color: var(--text-primary);
    font-size: 14px;
    font-weight: 500;
    transition: var(--transition-fast);
    outline: none;
}
.filter-select:focus, 
.reference-search input:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
    transform: translateY(-1px);
}
.filter-select:hover,
.reference-search input:hover {
    border-color: var(--primary-light);
}
.reference-search input::-moz-placeholder {
    color: var(--amazon-text-light);
    opacity: 1;
}
.reference-search input::placeholder {
    color: var(--amazon-text-light);
    opacity: 1;
}
.reset-button {
    grid-column: 1 / -1;
    justify-self: center;
    padding: 8px 20px;
    background: #FCFCFC;
    border: 1px solid #299EFC;
    border-radius: 4px;
    color: #183f72;
    cursor: pointer;
    transition: all 0.3s ease;
}
.reset-button:hover {
    background-color: #183f72;
    color: #FCFCFC;
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
/* Grille moderne de calculateurs */
#calculateurs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));
    gap: 32px;
    padding: 32px 0;
    max-width: 1400px;
    margin: 0 auto;
}
/* Responsive pour différentes tailles d'écran */
@media (max-width: 1200px) {
    #calculateurs-grid {
        grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
        gap: 2rem;
    }
}
@media (max-width: 768px) {
    .shop-container.modern-shop {
        padding: 10rem 1rem 2rem 1rem; /* Plus de padding-top sur mobile */
    }
    
    #calculateurs-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
        padding: 1rem 0;
    }
    
    .filters-group {
        grid-template-columns: 1fr;
        gap: 1rem;
    }
    
    .shop-filters {
        padding: 1.5rem;
        margin-bottom: 2rem;
    }
    
    .card-header {
        height: 200px;
    }
    
    .card-content {
        padding: 1.5rem;
    }
    
    .card-footer {
        padding: 1.2rem 1.5rem 1.5rem;
    }
}
@media (max-width: 480px) {
    .shop-container.modern-shop {
        padding: 12rem 1rem 2rem 1rem; /* Encore plus de padding-top sur très petits écrans */
    }
    
    .card-title {
        font-size: 1.3rem;
    }
    
    .price-value {
        font-size: 1.8rem;
    }
    
    .btn-add-cart {
        padding: 1rem 1.5rem;
        font-size: 0.95rem;
    }
}
/* Animations et effets modernes */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
@keyframes scaleIn {
    from {
        opacity: 0;
        transform: scale(0.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}
@keyframes shimmer {
    0% {
        background-position: -1000px 0;
    }
    100% {
        background-position: 1000px 0;
    }
}
/* Application des animations */
.calculateur-card {
    animation: fadeInUp 0.6s ease-out forwards;
    animation-delay: calc(var(--animation-delay, 0) * 0.1s);
}
.calculateur-card:nth-child(1) { --animation-delay: 1; }
.calculateur-card:nth-child(2) { --animation-delay: 2; }
.calculateur-card:nth-child(3) { --animation-delay: 3; }
.calculateur-card:nth-child(4) { --animation-delay: 4; }
.calculateur-card:nth-child(5) { --animation-delay: 5; }
.calculateur-card:nth-child(6) { --animation-delay: 6; }
/* État de chargement avec effet shimmer */
.loading-skeleton {
    background: linear-gradient(90deg, 
        var(--background-light) 0%, 
        rgba(255, 255, 255, 0.8) 50%, 
        var(--background-light) 100%);
    background-size: 1000px 100%;
    animation: shimmer 2s infinite;
    border-radius: var(--radius-md);
}
/* Micro-interactions */
.calculateur-card * {
    transition: var(--transition-fast);
}
/* Badge "Nouveau" ou "Populaire" */
.badge-nouveau {
    position: absolute;
    top: 16px;
    right: 16px;
    background: var(--gradient-primary);
    color: var(--background);
    padding: 6px 12px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: var(--shadow-md);
    z-index: 2;
}
.badge-populaire {
    background: var(--gradient-orange);
}
/* Indicateur de prix */
.price-badge {
    background: var(--success-color);
    color: var(--background);
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 600;
    margin-left: 8px;
}
/* Style pour les cartes vides ou en chargement */
.calculateur-card.loading {
    pointer-events: none;
    opacity: 0.7;
}
.calculateur-card.loading .calculateur-image {
    background: var(--background-light);
}
.calculateur-card.loading .calculateur-title,
.calculateur-card.loading .calculateur-references {
    background: var(--background-light);
    color: transparent;
    border-radius: var(--radius-sm);
}
/* Amélioration du focus pour l'accessibilité */
.calculateur-card:focus-visible {
    outline: 3px solid var(--primary-color);
    outline-offset: 2px;
}
.prestation-tag:focus-visible,
.calculateur-card .add-to-cart:focus-visible {
    outline: 2px solid var(--primary-color);
    outline-offset: 2px;
}
/* Effets de parallaxe subtils */
.calculateur-header::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.05) 0%, transparent 70%);
    opacity: 0;
    transition: var(--transition-slow);
    pointer-events: none;
}
.calculateur-card:hover .calculateur-header::before {
    opacity: 1;
    transform: rotate(45deg);
}
/* ===== STYLES MODERNES POUR LES CLASSES TEMPLATE TWIG ===== */
/* Variables CSS spécifiques pour les cartes modernes */
:root {
    --card-bg: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);
    --card-border-radius: 20px;
    --card-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
    --card-shadow-hover: 0 16px 64px rgba(0, 0, 0, 0.18);
    --card-border: 1px solid rgba(255, 255, 255, 0.2);
    --transition-duration: 0.3s;
    --gradient-header: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --gradient-button: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --button-border-radius: 12px;
    --button-shadow-hover: 0 8px 25px rgba(102, 126, 234, 0.4);
    --spec-bg: rgba(102, 126, 234, 0.08);
    --spec-bg-hover: rgba(102, 126, 234, 0.12);
    --footer-bg: rgba(248, 250, 252, 0.8);
}
/* Container principal moderne */
.shop-container.modern-shop {
    max-width: 1400px;
    margin: 0 auto;
    padding: 4rem 2rem 2rem 2rem; /* Padding-top réduit pour un meilleur équilibre */
    background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
    min-height: 100vh;
    font-family: var(--font-family);
}
/* Filtres modernes */
.shop-filters {
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    border-radius: 20px;
    padding: 2rem;
    margin-bottom: 2rem; /* Marge réduite pour moins d'espacement */
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.3);
    position: relative;
    z-index: 10;
}
.filters-form {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
.filters-group {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 1.5rem;
    align-items: center;
}
.form-input {
    padding: 1rem 1.5rem;
    border: 2px solid rgba(102, 126, 234, 0.1);
    border-radius: 15px;
    font-size: 1rem;
    font-weight: 500;
    background: rgba(255, 255, 255, 0.9);
    color: var(--text-primary);
    transition: all 0.3s ease;
    outline: none;
    font-family: var(--font-family);
}
.form-input:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.1);
    background: white;
    transform: translateY(-2px);
}
.form-input:hover {
    border-color: rgba(102, 126, 234, 0.3);
    background: white;
}
.form-input::-moz-placeholder {
    color: var(--text-muted);
    font-weight: 400;
}
.form-input::placeholder {
    color: var(--text-muted);
    font-weight: 400;
}
/* Grille des prestations moderne */
.calculateur-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
    gap: 2rem; /* Gap réduit pour moins d'espacement */
    padding: 1rem 0; /* Padding réduit */
    max-width: 1400px;
    margin: 0 auto;
}
/* Carte principale - Style carte moderne avec effet 3D */
.calculateur-card {
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow);
    border: var(--card-border);
    padding: 0;
    transition: all var(--transition-duration) cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    height: -moz-fit-content;
    height: fit-content;
    display: flex;
    flex-direction: column;
    transform: translateY(0) scale(1);
    animation: cardSlideIn 0.6s ease-out forwards;
    min-height: auto;
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    cursor: pointer;
}
/* Animation d'entrée */
@keyframes cardSlideIn {
    from {
        opacity: 0;
        transform: translateY(30px) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}
/* Barre supérieure colorée */
.calculateur-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    transition: left 0.4s ease;
    z-index: 1;
}
.calculateur-card:hover::before {
    left: 0;
}
/* Effet hover 3D */
.calculateur-card:hover {
    transform: translateY(-12px) scale(1.02);
    box-shadow: var(--card-shadow-hover);
    border-color: rgba(102, 126, 234, 0.3);
}
/* Élément invisible pour maintenir la structure DOM (nécessaire pour les événements JS) */
.calculateur-card::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: transparent;
    opacity: 0;
    pointer-events: none;
    z-index: -1;
}
/* En-tête de la carte avec image - Style carte moderne */
.card-header {
    position: relative;
    padding: 0;
    background: var(--gradient-header);
    color: white;
    text-align: center;
    border-radius: var(--card-border-radius) var(--card-border-radius) 0 0;
    overflow: hidden;
    height: 240px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}
/* Effet de masque dégradé sur l'image - SUPPRIMÉ */
.card-image {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 1;
}
.calculateur-card:hover .card-image {
    transform: scale(1.1) rotate(1deg);
}
.card-image-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    color: white;
    opacity: 0.9;
    height: 100%;
    width: 100%;
    background: var(--gradient-header);
    z-index: 1;
    position: relative;
}
.card-image-placeholder i {
    font-size: 4rem;
    margin-bottom: 0.5rem;
    opacity: 0.8;
    filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3));
}
.card-image-placeholder span {
    font-size: 1.1rem;
    font-weight: 600;
    text-shadow: 0 2px 4px rgba(0,0,0,0.5);
    letter-spacing: 0.5px;
}
/* Badge de disponibilité moderne avec glassmorphism */
.card-badge {
    position: absolute;
    top: 1.2rem;
    right: 1.2rem;
    background: rgba(16, 185, 129, 0.9);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    color: white;
    padding: 0.6rem 1.2rem;
    border-radius: 25px;
    font-size: 0.85rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    box-shadow: 0 8px 25px rgba(16, 185, 129, 0.4);
    z-index: 3;
    border: 1px solid rgba(255, 255, 255, 0.3);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    animation: badgePulse 2s infinite;
}
@keyframes badgePulse {
    0%, 100% {
        transform: scale(1);
        box-shadow: 0 8px 25px rgba(16, 185, 129, 0.4);
    }
    50% {
        transform: scale(1.05);
        box-shadow: 0 12px 35px rgba(16, 185, 129, 0.6);
    }
}
.card-badge i {
    font-size: 0.9rem;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
}
/* Contenu principal moderne avec espacement amélioré */
.card-content {
    padding: 2.2rem;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    position: relative;
    z-index: 1;
}
.card-title {
    margin: 0 0 0.8rem 0;
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--text-primary);
    line-height: 1.2;
    letter-spacing: -0.03em;
    position: relative;
    padding-bottom: 0.5rem;
}
/* Ligne décorative sous le titre */
.card-title::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 40px;
    height: 3px;
    background: var(--gradient-primary);
    border-radius: 2px;
}
.card-description {
    margin: 0 0 1.5rem 0;
    font-size: 1.05rem;
    color: var(--text-secondary);
    line-height: 1.7;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-weight: 400;
}
.card-specs {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.spec-item {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    padding: 1rem 1.3rem;
    background: var(--spec-bg);
    border-radius: 15px;
    font-size: 1rem;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border-left: 4px solid var(--primary-color);
    position: relative;
    overflow: hidden;
}
.spec-item::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
    transition: left 0.5s ease;
}
.spec-item:hover::before {
    left: 100%;
}
.spec-item:hover {
    background: var(--spec-bg-hover);
    transform: translateX(8px) scale(1.02);
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.2);
    border-left-color: #4f46e5;
}
.spec-item i {
    color: var(--primary-color);
    width: 20px;
    text-align: center;
    font-size: 1.1rem;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.1));
}
.spec-item span {
    font-weight: 600;
    color: var(--text-primary);
}
/* Pied de carte moderne avec glassmorphism */
.card-footer {
    padding: 1.8rem 2.2rem 2.2rem;
    border-top: 2px solid rgba(102, 126, 234, 0.1);
    background: var(--footer-bg);
    -webkit-backdrop-filter: blur(15px);
            backdrop-filter: blur(15px);
    margin-top: auto;
    position: relative;
}
.card-footer::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 2px;
    background: var(--gradient-primary);
    border-radius: 1px;
}
.price-section {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.5rem;
}
.price {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
}
.price-value {
    font-size: 2.2rem;
    font-weight: 900;
    color: var(--primary-color);
    text-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);
    position: relative;
}
.price-currency {
    font-size: 1.4rem;
    font-weight: 800;
    color: var(--primary-color);
}
.price-tax {
    font-size: 0.9rem;
    color: var(--text-muted);
    margin-left: 0.4rem;
    font-weight: 600;
    background: rgba(102, 126, 234, 0.1);
    padding: 0.2rem 0.6rem;
    border-radius: 12px;
}
/* Bouton d'ajout au panier moderne avec animations */
.btn-add-cart {
    width: 100%;
    background: var(--gradient-button);
    color: white;
    border: none;
    padding: 1.2rem 1.8rem;
    border-radius: var(--button-border-radius);
    font-weight: 800;
    font-size: 1.05rem;
    cursor: pointer;
    transition: all var(--transition-duration) cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.8rem;
    position: relative;
    overflow: hidden;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
    border: 2px solid transparent;
}
/* Effet de brillance sur le bouton */
.btn-add-cart::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    transition: left 0.6s ease;
}
.btn-add-cart:hover::before {
    left: 100%;
}
.btn-add-cart:hover {
    transform: translateY(-4px) scale(1.02);
    box-shadow: var(--button-shadow-hover);
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
}
.btn-add-cart:active {
    transform: translateY(-2px) scale(0.98);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}
.btn-add-cart i {
    font-size: 1.2rem;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
}
/* Animation d'ajout réussi */
.btn-add-cart.added {
    background: linear-gradient(135deg, #10b981 0%, #059669 100%);
    transform: scale(0.95);
}
.btn-add-cart.added::after {
    content: '✓';
    position: absolute;
    font-size: 1.5rem;
    animation: checkmark 0.6s ease-out;
}
@keyframes checkmark {
    0% {
        opacity: 0;
        transform: scale(0) rotate(-45deg);
    }
    50% {
        opacity: 1;
        transform: scale(1.2) rotate(0deg);
    }
    100% {
        opacity: 1;
        transform: scale(1) rotate(0deg);
    }
}
/* Responsive pour les cartes modernes */
@media (max-width: 1200px) {
    .calculateur-grid {
        grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
        gap: 2rem;
    }
}
@media (max-width: 768px) {
    .shop-container.modern-shop {
        padding: 7rem 1rem 2rem 1rem; /* Espacement réduit sur mobile */
    }
    
    .calculateur-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
        padding: 1rem 0;
    }
    
    .filters-group {
        grid-template-columns: 1fr;
        gap: 1rem;
    }
    
    .shop-filters {
        padding: 1.5rem;
        margin-bottom: 2rem;
    }
    
    .card-header {
        height: 200px;
    }
    
    .card-content {
        padding: 1.5rem;
    }
    
    .card-footer {
        padding: 1.2rem 1.5rem 1.5rem;
    }
}
@media (max-width: 480px) {
    .shop-container.modern-shop {
        padding: 8rem 1rem 2rem 1rem; /* Espacement ajusté pour très petits écrans */
    }
    
    .card-title {
        font-size: 1.3rem;
    }
    
    .price-value {
        font-size: 1.8rem;
    }
    
    .btn-add-cart {
        padding: 1rem 1.5rem;
        font-size: 0.95rem;
    }
}
/* Panier flottant moderne */
.cart-toggle {
    position: fixed;
    top: 50%;
    right: 2rem;
    transform: translateY(-50%);
    background: var(--gradient-primary);
    color: white;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
    cursor: pointer;
    transition: all 0.3s ease;
    z-index: 1000;
    border: 3px solid rgba(255, 255, 255, 0.3);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
}
.cart-toggle:hover {
    transform: translateY(-50%) scale(1.1);
    box-shadow: 0 12px 35px rgba(102, 126, 234, 0.6);
}
.cart-count {
    display: none !important; /* Cacher le compteur */
    position: absolute;
    top: -8px;
    right: -8px;
    background: #ef4444;
    color: white;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 700;
    box-shadow: 0 2px 8px rgba(239, 68, 68, 0.4);
}
/* ===== STYLES MODALE MODERNE (COHÉRENTE AVEC LES CARTES) ===== */
/* Modale principale avec le même style que les cartes */
.amazon-modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.7);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
    z-index: 10000;
    display: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), visibility 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: auto;
    padding: 20px;
    box-sizing: border-box;
}
.amazon-modal.show {
    opacity: 1;
    visibility: visible;
}
/* Overlay pour fermer la modale */
.amazon-modal-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
}
/* Contenu de la modale avec le style des cartes */
.amazon-modal-content {
    position: relative;
    max-width: 1200px;
    width: 100%;
    max-height: 90vh;
    margin: 2vh auto;
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow-hover);
    border: var(--card-border);
    overflow: hidden;
    animation: modalSlideIn 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
}
@keyframes modalSlideIn {
    from {
        opacity: 0;
        transform: translateY(50px) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}
/* Barre supérieure colorée comme les cartes */
.amazon-modal-content::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    z-index: 1;
}
/* Header de la modale */
.amazon-modal-header {
    position: absolute;
    top: 15px;
    right: 15px;
    z-index: 2;
}
.close-modal {
    width: 45px;
    height: 45px;
    border: none;
    background: var(--gradient-primary);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    color: white;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
    border: 2px solid rgba(255, 255, 255, 0.3);
}
.close-modal:hover {
    transform: scale(1.1) rotate(90deg);
    box-shadow: 0 12px 35px rgba(102, 126, 234, 0.6);
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
}
/* Corps de la modale */
.amazon-modal-body {
    padding: 40px;
    overflow-y: auto;
    max-height: 85vh;
    background: rgba(255, 255, 255, 0.95);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
}
/* Layout produit moderne */
.amazon-product-layout {
    display: grid;
    grid-template-columns: 1fr 1fr 320px;
    gap: 40px;
    align-items: start;
}
/* Image du produit avec style moderne */
.amazon-product-image {
    position: relative;
    overflow: hidden;
    border-radius: 15px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
}
.amazon-product-image img {
    width: 100%;
    height: 320px;
    -o-object-fit: cover;
       object-fit: cover;
    border-radius: 15px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.amazon-product-image:hover img {
    transform: scale(1.05);
}
/* Détails du produit avec style moderne */
.amazon-product-details {
    padding-right: 20px;
}
.amazon-product-title {
    font-size: 2rem;
    font-weight: 800;
    color: var(--text-primary);
    line-height: 1.2;
    margin: 0 0 25px 0;
    letter-spacing: -0.03em;
    position: relative;
    padding-bottom: 15px;
}
/* Ligne décorative sous le titre comme les cartes */
.amazon-product-title::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 60px;
    height: 4px;
    background: var(--gradient-primary);
    border-radius: 2px;
}
.amazon-price-section {
    margin: 25px 0;
    padding: 20px;
    background: var(--spec-bg);
    border-radius: 15px;
    border-left: 4px solid var(--primary-color);
}
.amazon-price {
    font-size: 2rem;
    font-weight: 900;
    color: var(--primary-color);
    text-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);
}
.amazon-price-ht {
    font-size: 1rem;
    color: var(--text-muted);
    margin-left: 8px;
    font-weight: 600;
    background: rgba(102, 126, 234, 0.1);
    padding: 0.2rem 0.6rem;
    border-radius: 12px;
}
.amazon-description {
    margin: 30px 0;
}
.amazon-description h3 {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 15px 0;
    position: relative;
    padding-bottom: 8px;
}
.amazon-description h3::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 30px;
    height: 2px;
    background: var(--gradient-primary);
    border-radius: 1px;
}
.amazon-description p {
    color: var(--text-secondary);
    line-height: 1.7;
    margin: 0;
    font-size: 1.05rem;
}
/* Spécifications techniques avec style des cartes */
.amazon-specifications {
    margin: 30px 0;
}
.amazon-specifications h3 {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 20px 0;
    position: relative;
    padding-bottom: 8px;
}
.amazon-specifications h3::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 30px;
    height: 2px;
    background: var(--gradient-primary);
    border-radius: 1px;
}
.amazon-spec-grid {
    display: grid;
    gap: 15px;
}
.amazon-spec-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    background: var(--spec-bg);
    border-radius: 15px;
    border-left: 4px solid var(--primary-color);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
}
.amazon-spec-item::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(102, 126, 234, 0.1), transparent);
    transition: left 0.5s ease;
}
.amazon-spec-item:hover::before {
    left: 100%;
}
.amazon-spec-item:hover {
    background: var(--spec-bg-hover);
    transform: translateX(8px) scale(1.02);
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.2);
    border-left-color: #4f46e5;
}
.amazon-spec-item strong {
    color: var(--text-primary);
    font-weight: 600;
    min-width: 120px;
}
.amazon-spec-item span {
    color: var(--text-secondary);
    text-align: right;
    font-weight: 500;
}
/* Box d'achat avec style moderne des cartes */
.amazon-purchase-box {
    background: var(--card-bg);
    border: var(--card-border);
    border-radius: var(--card-border-radius);
    padding: 25px;
    position: sticky;
    top: 20px;
    height: -moz-fit-content;
    height: fit-content;
    box-shadow: var(--card-shadow);
    -webkit-backdrop-filter: blur(20px);
            backdrop-filter: blur(20px);
    border-left: 4px solid var(--primary-color);
}
.amazon-price-box {
    margin: 20px 0;
    text-align: left;
    padding: 15px 0;
    border-bottom: 2px solid rgba(102, 126, 234, 0.1);
}
.amazon-price-large {
    font-size: 2.2rem;
    font-weight: 900;
    color: var(--primary-color);
    display: block;
    text-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);
}
.amazon-price-ht-small {
    font-size: 0.9rem;
    color: var(--text-muted);
    margin-left: 8px;
    font-weight: 600;
    background: rgba(102, 126, 234, 0.1);
    padding: 0.2rem 0.6rem;
    border-radius: 12px;
}
.amazon-stock-info {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 20px 0;
    color: #10b981;
    font-weight: 700;
    font-size: 14px;
    background: rgba(16, 185, 129, 0.1);
    padding: 12px 16px;
    border-radius: 12px;
}
/* Bouton d'ajout au panier avec le même style que les cartes */
.amazon-add-to-cart {
    width: 100%;
    background: var(--gradient-button);
    color: white;
    border: none;
    border-radius: var(--button-border-radius);
    padding: 15px 20px;
    font-size: 1.05rem;
    font-weight: 800;
    cursor: pointer;
    transition: all var(--transition-duration) cubic-bezier(0.4, 0, 0.2, 1);
    margin: 20px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    position: relative;
    overflow: hidden;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
    border: 2px solid transparent;
}
/* Effet de brillance sur le bouton */
.amazon-add-to-cart::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    transition: left 0.6s ease;
}
.amazon-add-to-cart:hover::before {
    left: 100%;
}
.amazon-add-to-cart:hover {
    transform: translateY(-4px) scale(1.02);
    box-shadow: var(--button-shadow-hover);
    background: linear-gradient(135deg, #5a67d8 0%, #667eea 100%);
}
.amazon-add-to-cart:active {
    transform: translateY(-2px) scale(0.98);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
}
.amazon-add-to-cart i {
    font-size: 1.2rem;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
}
.amazon-secure-transaction {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--text-muted);
    font-size: 12px;
    margin-top: 15px;
    background: rgba(102, 126, 234, 0.05);
    padding: 8px 12px;
    border-radius: 8px;
    font-weight: 600;
}
.amazon-secure-transaction i {
    color: #10b981;
    font-size: 14px;
}
/* Responsive design pour la modale */
@media (max-width: 1024px) {
    .amazon-product-layout {
        grid-template-columns: 1fr;
        gap: 30px;
    }
    
    .amazon-purchase-box {
        position: static;
        margin-top: 20px;
    }
}
@media (max-width: 768px) {
    .amazon-modal {
        padding: 10px;
    }
    
    .amazon-modal-content {
        margin: 1vh auto;
        max-height: 95vh;
        border-radius: var(--card-border-radius);
    }
    
    .amazon-modal-body {
        padding: 25px;
    }
    
    .amazon-product-title {
        font-size: 1.6rem;
    }
    
    .amazon-price-large {
        font-size: 1.8rem;
    }
    
    .amazon-spec-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    
    .amazon-spec-item span {
        text-align: left;
    }
}
@media (max-width: 480px) {
    .amazon-modal-body {
        padding: 20px;
    }
    
    .amazon-product-layout {
        gap: 20px;
    }
    
    .amazon-product-title {
        font-size: 1.4rem;
    }
    
    .amazon-add-to-cart {
        padding: 12px 16px;
        font-size: 0.95rem;
    }
}
/* ===== FIN STYLES MODALE MODERNE ===== */
/* ===== CARD NO RESULTS MODERNE ===== */
.no-results-container {
    grid-column: 1 / -1;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 500px;
    padding: 2rem;
}
.no-results-card {
    background: var(--card-bg);
    border-radius: var(--card-border-radius);
    box-shadow: var(--card-shadow-hover);
    border: var(--card-border);
    padding: 3rem 2.5rem;
    text-align: center;
    max-width: 500px;
    width: 100%;
    position: relative;
    overflow: hidden;
    animation: slideInUp 0.6s ease-out;
}
.no-results-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--gradient-primary);
    z-index: 1;
}
.no-results-illustration {
    position: relative;
    margin-bottom: 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}
.illustration-circle {
    width: 120px;
    height: 120px;
    background: var(--gradient-primary);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 1rem;
    animation: pulse 2s infinite;
    box-shadow: 0 0 30px rgba(102, 126, 234, 0.3);
}
.illustration-circle i {
    font-size: 3rem;
    color: white;
    text-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.illustration-dots {
    display: flex;
    gap: 0.5rem;
}
.dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--primary-color);
    opacity: 0.3;
    animation: dotPulse 1.5s infinite;
}
.dot-1 { animation-delay: 0s; }
.dot-2 { animation-delay: 0.2s; }
.dot-3 { animation-delay: 0.4s; }
.no-results-title {
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--text-primary);
    margin-bottom: 1rem;
    background: var(--gradient-primary);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}
.no-results-description {
    font-size: 1rem;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 2rem;
}
.suggestions-card {
    background: var(--spec-bg);
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 2rem;
    text-align: left;
    border-left: 4px solid var(--primary-color);
}
.suggestions-title {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.suggestions-title i {
    color: var(--secondary-color);
    font-size: 1rem;
}
.suggestions-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.suggestions-list li {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0;
    color: var(--text-secondary);
    font-size: 0.9rem;
    transition: var(--transition-fast);
}
.suggestions-list li:hover {
    color: var(--text-primary);
    transform: translateX(5px);
}
.suggestions-list li i {
    color: var(--success-color);
    font-size: 0.8rem;
    flex-shrink: 0;
}
.no-results-actions {
    display: flex;
    gap: 1rem;
    justify-content: center;
    flex-wrap: wrap;
}
.btn-reset-filters,
.btn-contact {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.875rem 1.5rem;
    border-radius: var(--button-border-radius);
    font-weight: 600;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: var(--transition-normal);
    font-size: 0.9rem;
    min-width: 160px;
    justify-content: center;
}
.btn-reset-filters {
    background: var(--gradient-primary);
    color: white;
    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);
}
.btn-reset-filters:hover {
    transform: translateY(-2px);
    box-shadow: var(--button-shadow-hover);
    color: white;
}
.btn-contact {
    background: rgba(102, 126, 234, 0.1);
    color: var(--primary-color);
    border: 2px solid rgba(102, 126, 234, 0.2);
}
.btn-contact:hover {
    background: var(--primary-color);
    color: white;
    border-color: var(--primary-color);
    transform: translateY(-2px);
    text-decoration: none;
}
/* Animations */
@keyframes slideInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
@keyframes pulse {
    0%, 100% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.05);
    }
}
@keyframes dotPulse {
    0%, 100% {
        opacity: 0.3;
        transform: scale(1);
    }
    50% {
        opacity: 1;
        transform: scale(1.2);
    }
}
/* Responsive */
@media (max-width: 768px) {
    .no-results-container {
        padding: 1rem;
        min-height: 400px;
    }
    
    .no-results-card {
        padding: 2rem 1.5rem;
    }
    
    .illustration-circle {
        width: 100px;
        height: 100px;
    }
    
    .illustration-circle i {
        font-size: 2.5rem;
    }
    
    .no-results-title {
        font-size: 1.5rem;
    }
    
    .no-results-actions {
        flex-direction: column;
        align-items: center;
    }
    
    .btn-reset-filters,
    .btn-contact {
        width: 100%;
        max-width: 250px;
    }
}
/* ===== FIN CARD NO RESULTS MODERNE ===== */
/* ===== FIN CARTES MODERNES TEMPLATE TWIG ===== */
/*!*****************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[2]!./assets/styles/check-email.css ***!
  \*****************************************************************************************************************************************************************************************************/
.message-box {
    padding: 20px;
    text-align: center;
}

.alert {
    background-color: #e3f2fd;
    border-radius: 6px;
    padding: 15px;
    margin-bottom: 20px;
    color: #0059A1;
    display: flex;
    align-items: center;
    gap: 10px;
}

.verification-instructions {
    text-align: left;
    margin: 20px 0;
    padding: 20px;
    background-color: #f8f9fa;
    border-radius: 6px;
}

.verification-instructions ol {
    margin: 15px 0;
    padding-left: 20px;
}

.verification-instructions li {
    margin: 10px 0;
    color: #555;
    line-height: 1.5;
}

.expiration-notice {
    color: #666;
    font-style: italic;
    margin-top: 15px;
    text-align: center;
}

.auth-links {
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid #eee;
    text-align: center;
}

.auth-links p {
    margin: 10px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.auth-links i {
    color: #0059A1;
}

.auth-links a {
    color: #0059A1;
    text-decoration: none;
    font-weight: 500;
}

.auth-links a:hover {
    text-decoration: underline;
} 

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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YUFBYTtJQUNiLGtCQUFrQjtBQUN0Qjs7QUFFQTtJQUNJLHlCQUF5QjtJQUN6QixrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixTQUFTO0FBQ2I7O0FBRUE7SUFDSSxnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGFBQWE7SUFDYix5QkFBeUI7SUFDekIsa0JBQWtCO0FBQ3RCOztBQUVBO0lBQ0ksY0FBYztJQUNkLGtCQUFrQjtBQUN0Qjs7QUFFQTtJQUNJLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksV0FBVztJQUNYLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIsa0JBQWtCO0FBQ3RCOztBQUVBO0lBQ0ksZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQiwwQkFBMEI7SUFDMUIsa0JBQWtCO0FBQ3RCOztBQUVBO0lBQ0ksY0FBYztJQUNkLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLFFBQVE7QUFDWjs7QUFFQTtJQUNJLGNBQWM7QUFDbEI7O0FBRUE7SUFDSSxjQUFjO0lBQ2QscUJBQXFCO0lBQ3JCLGdCQUFnQjtBQUNwQjs7QUFFQTtJQUNJLDBCQUEwQjtBQUM5QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9oZWFkZXIvaGVhZGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2hvbWUvaG9tZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9zaG9wL3Nob3AuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvc2hvcC9jYXJ0LmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2xvZ2luLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2FkbWluL3VzZXJzLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2FkbWluL3ByZXN0YXRpb25zLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2FkbWluL3NlcnZpY2VzLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL2FkbWluL29yZGVycy5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9hZG1pbi92ZWhpY2xlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9hZG1pbi9zZXR0aW5ncy5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9hZG1pbi9kYXNoYm9hcmQuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvY29udGFjdC9jb250YWN0LmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL21haW4uY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvY2hlY2stZW1haWwuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIFJlc2V0IENTUyBkZSBiYXNlICovXG4qIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5ib2R5IHtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgJ0ludGVyJywgc2Fucy1zZXJpZjtcbn1cblxuaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDFyZW0gNSU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmZmZmZiAwJSwgI2Y4ZmFmYyAxMDAlKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMCwwLDAsMC4wOCk7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuXG4jbG9nbyB7XG4gICAgaGVpZ2h0OiA1NXB4O1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbiNsb2dvOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4ubmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5uYXYgdWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBnYXA6IDIuNXJlbTtcbn1cblxuLm5hdiB1bCBsaSBhIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICMxZTI5M2I7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xufVxuXG4ubmF2IHVsIGxpIGE6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogLTJweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAzcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjM2I4MmY2LCAjOGI1Y2Y2KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi5uYXYgdWwgbGkgYTpob3ZlciB7XG4gICAgY29sb3I6ICMzYjgyZjY7XG4gICAgYmFja2dyb3VuZDogcmdiYSg1OSwgMTMwLCAyNDYsIDAuMDUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLm5hdiB1bCBsaSBhOmhvdmVyOjpiZWZvcmUge1xuICAgIHdpZHRoOiA4MCU7XG59XG5cbi8qIEJ1cmdlciBNZW51ICovXG4uYnVyZ2VyLW1lbnUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDZweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmJ1cmdlci1tZW51IHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAyNXB4O1xuICAgIGhlaWdodDogM3B4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDMzNjY7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG59XG5cbi8qIE1lZGlhIFF1ZXJpZXMgKi9cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmJ1cmdlci1tZW51IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAuYnVyZ2VyLW1lbnUuYWN0aXZlIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDlweCkgcm90YXRlKDQ1ZGVnKTtcbiAgICB9XG5cbiAgICAuYnVyZ2VyLW1lbnUuYWN0aXZlIHNwYW46bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICAuYnVyZ2VyLW1lbnUuYWN0aXZlIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC05cHgpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cblxuICAgIC5uYXYge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgICAgIHJnYmEoMCwgNTEsIDEwMiwgMC44NSkgMCUsXG4gICAgICAgICAgICByZ2JhKDAsIDg5LCAxNjEsIDAuNzUpIDUwJSxcbiAgICAgICAgICAgIHJnYmEoMCwgNTEsIDEwMiwgMC42NSkgMTAwJVxuICAgICAgICApO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGN1YmljLWJlemllcigwLjcsIDAsIDAuMywgMSk7XG4gICAgICAgIHotaW5kZXg6IDk5ODtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm5hdiB1bCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMi41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBjdWJpYy1iZXppZXIoMC43LCAwLCAwLjMsIDEpLCBcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eSAwLjVzIGN1YmljLWJlemllcigwLjcsIDAsIDAuMywgMSk7XG4gICAgfVxuXG4gICAgLm5hdi5hY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuXG4gICAgLm5hdi5hY3RpdmUgdWwge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgLm5hdjpub3QoLmFjdGl2ZSkge1xuICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjJzO1xuICAgIH1cblxuICAgIC5uYXY6bm90KC5hY3RpdmUpIHVsIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICB9XG5cbiAgICAubmF2IHVsIGxpIGEge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDJyZW07XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgfVxuXG4gICAgLm5hdiB1bCBsaSBhOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpO1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgfVxuXG4gICAgLm5hdiB1bCBsaSBhLmNsaWNrZWQge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpIHRyYW5zbGF0ZVgoMjBweCk7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDE1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpLFxuICAgICAgICAgICAgICAgICAgICAwIDAgMjVweCByZ2JhKDAsIDg5LCAxNjEsIDAuNSksXG4gICAgICAgICAgICAgICAgICAgIGluc2V0IDAgMCAxMHB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICB9XG5cbiAgICAjbG9nbyB7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICB9XG59XG5cbi5sb2dpbi1saW5rIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG59XG5cbi5sb2dpbi1saW5rIGkge1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4ubmF2IHVsIGxpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xufSIsIi5wcm9kdWN0cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogMjBweDtcbn1cblxuLnByb2R1Y3QtY2FyZCB7XG4gICAgd2lkdGg6IDMwJTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICAgIHBhZGRpbmc6IDIwcHg7XG59XG5cbi5wcm9kdWN0LWNhcmQgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDIwMHB4O1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4ucHJvZHVjdC1jYXJkIGgzIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xufVxuXG4ucHJvZHVjdC1jYXJkIHAge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgZm9udC1zaXplOiAxcmVtO1xufVxuXG4vKiBIZXJvIFNlY3Rpb24gKi9cbi5oZXJvIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDZyZW0gMDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltYWdlcy9iYW5uZXIuanBnJykgY2VudGVyL2NvdmVyIG5vLXJlcGVhdDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uaGVybzo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpKTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uaGVyby1jb250ZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmhlcm8tY29udGVudCBoMSB7XG4gICAgZm9udC1zaXplOiBjbGFtcCgyLjVyZW0sIDZ2dywgNHJlbSk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiKDEsIDU5LCAxMzcpIDcwJSwgcmdiKDQxLCAxNzEsIDIyNikpO1xuICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5oZXJvLWNvbnRlbnQgcCB7XG4gICAgZm9udC1zaXplOiBjbGFtcCgxLjJyZW0sIDR2dywgMnJlbSk7XG4gICAgYmFja2dyb3VuZDogIzBhOWVmNDtcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG5Aa2V5ZnJhbWVzIGdsb3dQdWxzZSB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRleHQtc2hhZG93OiBcbiAgICAgICAgICAgIDAgMCA3cHggcmdiYSgxLCA1OSwgMTM3LCAwLjIpLFxuICAgICAgICAgICAgMCAwIDEwcHggcmdiYSgxLCA1OSwgMTM3LCAwLjIpLFxuICAgICAgICAgICAgMCAwIDIxcHggcmdiYSgxLCA1OSwgMTM3LCAwLjIpLFxuICAgICAgICAgICAgMCAwIDQycHggcmdiYSgxLCA1OSwgMTM3LCAwLjEpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIHRleHQtc2hhZG93OiBcbiAgICAgICAgICAgIDAgMCAxMHB4IHJnYmEoMSwgNTksIDEzNywgMC4zKSxcbiAgICAgICAgICAgIDAgMCAxNHB4IHJnYmEoMSwgNTksIDEzNywgMC4zKSxcbiAgICAgICAgICAgIDAgMCAyOHB4IHJnYmEoMSwgNTksIDEzNywgMC4yKSxcbiAgICAgICAgICAgIDAgMCA0OHB4IHJnYmEoMSwgNTksIDEzNywgMC4xKTtcbiAgICB9XG59XG5cbi8qIFNlcnZpY2VzIFNlY3Rpb24gKi9cbi5zZXJ2aWNlcyB7XG4gICAgcGFkZGluZzogNHJlbSAxMCU7XG4gICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcbn1cblxuLnNlcnZpY2VzLWhlYWRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1heC13aWR0aDogOTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gM3JlbTtcbn1cblxuLnNlcnZpY2VzLWhlYWRlciBoMiB7XG4gICAgZm9udC1zaXplOiBjbGFtcCgxLjVyZW0sIDR2dywgMi41cmVtKTtcbiAgICBjb2xvcjogIzAwMzM2NjtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG5cbi5zZXJ2aWNlcy1oZWFkZXIgaDMge1xuICAgIGZvbnQtc2l6ZTogY2xhbXAoMS44cmVtLCA1dncsIDNyZW0pO1xuICAgIGNvbG9yOiAjMDA1OUExO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5zZXJ2aWNlcy1oZWFkZXIgcCB7XG4gICAgZm9udC1zaXplOiBjbGFtcCgxcmVtLCAzdncsIDEuMnJlbSk7XG4gICAgY29sb3I6ICM2NjY7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLnNlcnZpY2VzLWdyaWQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDAgNXJlbTtcbn1cblxuLnNlcnZpY2VzLWNhcm91c2VsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGVhc2U7XG4gICAgZ2FwOiAycmVtO1xuICAgIHBhZGRpbmc6IDAgMXJlbTtcbn1cblxuLnNlcnZpY2UtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLCA1MSwgMTAyLCAwLjA4KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDg5LCAxNjEsIDAuMSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGhlaWdodDogNjUwcHg7XG4gICAgd2lkdGg6IDMyMHB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uY2Fyb3VzZWwtbmF2IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgODksIDE2MSwgMC45KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHdpZHRoOiA1MHB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uY2Fyb3VzZWwtbmF2OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjMDAzMzY2O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLCA4OSwgMTYxLCAwLjMpO1xufVxuXG4uY2Fyb3VzZWwtbmF2LnByZXYge1xuICAgIGxlZnQ6IDE1cHg7XG59XG5cbi5jYXJvdXNlbC1uYXYubmV4dCB7XG4gICAgcmlnaHQ6IDE1cHg7XG59XG5cbi5jYXJvdXNlbC1uYXY6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLmNhcm91c2VsLW5hdjpkaXNhYmxlZDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCA4OSwgMTYxLCAwLjkpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4uc2VydmljZS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDUxLCAxMDIsIDAuMTUpO1xufVxuXG4uc2VydmljZS1oZWFkZXIge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDMzNjYsICMwMDU5QTEpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAycmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBoZWlnaHQ6IDE0MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNlcnZpY2UtaGVhZGVyOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksIHRyYW5zcGFyZW50KTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uc2VydmljZS1oZWFkZXIgaDQge1xuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgIG1hcmdpbjogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgIGxpbmUtY2xhbXA6IDI7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbn1cblxuLnNlcnZpY2Utc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICBvcGFjaXR5OiAwLjk7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMTtcbiAgICBsaW5lLWNsYW1wOiAxO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG59XG5cbi5zZXJ2aWNlLXByaWNlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMnJlbTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNlcnZpY2UtcHJpY2U6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgd2lkdGg6IDgwJTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCByZ2JhKDAsIDg5LCAxNjEsIDAuMiksIHRyYW5zcGFyZW50KTtcbn1cblxuLnNlcnZpY2UtcHJpY2UgLnBlcmlvZCB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGNvbG9yOiAjNjY2O1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICBvcmRlcjogMTtcbn1cblxuLnNlcnZpY2UtcHJpY2UgLnByaWNlLWxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogMC4yNXJlbTtcbiAgICBvcmRlcjogMjtcbn1cblxuLnNlcnZpY2UtcHJpY2UgLmFtb3VudCB7XG4gICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzRDNEM0QjtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDEwcHggcmdiYSgxNzMsIDIxNiwgMjMwLCAwLjIpO1xufVxuXG4uc2VydmljZS1wcmljZSAuY3VycmVuY3kge1xuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgIGNvbG9yOiAjMDA1OUExO1xufVxuXG4uc2VydmljZS1mZWF0dXJlcyB7XG4gICAgcGFkZGluZzogMnJlbTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI0OCwgMjQ5LCAyNTAsIDAuNSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgODksIDE2MSwgMC4xKTtcbiAgICBoZWlnaHQ6IDE1MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNlcnZpY2UtZmVhdHVyZXMgdWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5zZXJ2aWNlLWZlYXR1cmVzIGxpIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgICBjb2xvcjogIzRDNEM0QjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjc1cmVtO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDg5LCAxNjEsIDAuMSk7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLnNlcnZpY2UtZmVhdHVyZXMgbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLnNlcnZpY2UtZmVhdHVyZXMgbGk6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+Kckyc7XG4gICAgY29sb3I6ICMwMDU5QTE7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5zZXJ2aWNlLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYmFja2dyb3VuZDogIzAwNTlBMTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG1hcmdpbjogMCAycmVtIDJyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uc2VydmljZS1idXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICMwMDMzNjY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLyogRm9vdGVyICovXG4uaG9tZS1mb290ZXIge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDMzNjYsICMwMDU5QTEpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAzcmVtIDAgMnJlbTtcbiAgICBtYXJnaW4tdG9wOiAwO1xufVxuXG4uZm9vdGVyLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogMTIwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMmZyIDFmcjtcbiAgICBnYXA6IDNyZW07XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwIDJyZW07XG59XG5cbi5mb290ZXItbG9nbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmZvb3Rlci1sb2dvLWltZyB7XG4gICAgbWF4LXdpZHRoOiAxNTBweDtcbiAgICBoZWlnaHQ6IGF1dG87XG59XG5cbi5mb290ZXItaW5mbyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZm9vdGVyLWFkZHJlc3Mge1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5mb290ZXItYWRkcmVzcyBwIHtcbiAgICBtYXJnaW46IDAuNXJlbSAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5mb290ZXItY29weXJpZ2h0IHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgIHBhZGRpbmctdG9wOiAxLjVyZW07XG59XG5cbi5mb290ZXItY29weXJpZ2h0IHAge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZm9vdGVyLXNvY2lhbCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc29jaWFsLXRpdGxlIHtcbiAgICBtYXJnaW46IDAgMCAxLjVyZW0gMDtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnNvY2lhbC1saW5rcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDFyZW07XG59XG5cbi5zb2NpYWwtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0NXB4O1xuICAgIGhlaWdodDogNDVweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG59XG5cbi5zb2NpYWwtbGluazpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5zb2NpYWwtbGluayBpIHtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbn1cblxuLyogUmVzcG9uc2l2ZSBGb290ZXIgKi9cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmZvb3Rlci1jb250ZW50IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogMnJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgfVxuICAgIFxuICAgIC5mb290ZXItbG9nby1pbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEyMHB4O1xuICAgIH1cbiAgICBcbiAgICAuZm9vdGVyLWFkZHJlc3MgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICB9XG4gICAgXG4gICAgLmZvb3Rlci1jb3B5cmlnaHQgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIH1cbiAgICBcbiAgICAuc29jaWFsLWxpbmtzIHtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgIH1cbiAgICBcbiAgICAuc29jaWFsLWxpbmsge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5ob21lLWZvb3RlciB7XG4gICAgICAgIHBhZGRpbmc6IDJyZW0gMCAxLjVyZW07XG4gICAgfVxuICAgIFxuICAgIC5mb290ZXItY29udGVudCB7XG4gICAgICAgIGdhcDogMS41cmVtO1xuICAgIH1cbiAgICBcbiAgICAuZm9vdGVyLWxvZ28taW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDBweDtcbiAgICB9XG4gICAgXG4gICAgLmZvb3Rlci1hZGRyZXNzIHAge1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICB9XG4gICAgXG4gICAgLnNvY2lhbC1saW5rIHtcbiAgICAgICAgd2lkdGg6IDM1cHg7XG4gICAgICAgIGhlaWdodDogMzVweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5oZXJvIHtcbiAgICAgICAgcGFkZGluZzogNnJlbSA1JSAycmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuaGVybzo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgICAgdG8gYm90dG9tLFxuICAgICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSAwJSxcbiAgICAgICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSkgNTAlLFxuICAgICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIDEwMCVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAuc2VydmljZXMge1xuICAgICAgICBwYWRkaW5nOiAzcmVtIDUlO1xuICAgIH1cblxuICAgIC5zZXJ2aWNlcy1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgfVxuXG4gICAgLnNlcnZpY2VzLWdyaWQge1xuICAgICAgICBwYWRkaW5nOiAwIDNyZW07XG4gICAgfVxuXG4gICAgLnNlcnZpY2UtY2FyZCB7XG4gICAgICAgIGhlaWdodDogNjUwcHg7XG4gICAgICAgIHdpZHRoOiAzMjBweDtcbiAgICB9XG5cbiAgICAuY2Fyb3VzZWwtbmF2IHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgIH1cblxuICAgIC5jYXJvdXNlbC1uYXYucHJldiB7XG4gICAgICAgIGxlZnQ6IDVweDtcbiAgICB9XG5cbiAgICAuY2Fyb3VzZWwtbmF2Lm5leHQge1xuICAgICAgICByaWdodDogNXB4O1xuICAgIH1cblxuICAgIC5oZXJvLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5zZXJ2aWNlcy1ncmlkIHtcbiAgICAgICAgcGFkZGluZzogMCAycmVtO1xuICAgIH1cblxuICAgIC5zZXJ2aWNlLWNhcmQge1xuICAgICAgICBoZWlnaHQ6IDY1MHB4O1xuICAgICAgICB3aWR0aDogMzIwcHg7XG4gICAgfVxuXG4gICAgLmNhcm91c2VsLW5hdiB7XG4gICAgICAgIHdpZHRoOiAzNXB4O1xuICAgICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIH1cbn1cblxuIiwiLyogU3R5bGUgbW9kZXJuZSAtIFZhcmlhYmxlcyBDU1MgKi9cbjpyb290IHtcbiAgICAvKiBDb3VsZXVycyBtb2Rlcm5lcyAqL1xuICAgIC0tcHJpbWFyeS1jb2xvcjogIzI1NjNlYjtcbiAgICAtLXByaW1hcnktZGFyazogIzFkNGVkODtcbiAgICAtLXByaW1hcnktbGlnaHQ6ICMzYjgyZjY7XG4gICAgLS1zZWNvbmRhcnktY29sb3I6ICNmNTllMGI7XG4gICAgLS1zdWNjZXNzLWNvbG9yOiAjMTBiOTgxO1xuICAgIC0tdGV4dC1wcmltYXJ5OiAjMWYyOTM3O1xuICAgIC0tdGV4dC1zZWNvbmRhcnk6ICM2YjcyODA7XG4gICAgLS10ZXh0LW11dGVkOiAjOWNhM2FmO1xuICAgIC0tYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAtLWJhY2tncm91bmQtbGlnaHQ6ICNmOWZhZmI7XG4gICAgLS1iYWNrZ3JvdW5kLWNhcmQ6ICNmZmZmZmY7XG4gICAgLS1ib3JkZXItbGlnaHQ6ICNlNWU3ZWI7XG4gICAgLS1ib3JkZXItY29sb3I6ICNkMWQ1ZGI7XG4gICAgXG4gICAgLyogR3JhZGllbnRzIG1vZGVybmVzICovXG4gICAgLS1ncmFkaWVudC1wcmltYXJ5OiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNjY3ZWVhIDAlLCAjNzY0YmEyIDEwMCUpO1xuICAgIC0tZ3JhZGllbnQtY2FyZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgI2ZmZmZmZiAwJSwgI2Y4ZmFmYyAxMDAlKTtcbiAgICAtLWdyYWRpZW50LW9yYW5nZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmNmIzNSAwJSwgI2Y3OTMxZSAxMDAlKTtcbiAgICBcbiAgICAvKiBPbWJyZXMgbW9kZXJuZXMgKi9cbiAgICAtLXNoYWRvdy14czogMCAxcHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAtLXNoYWRvdy1zbTogMCAxcHggM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuICAgIC0tc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gICAgLS1zaGFkb3ctbGc6IDAgMTBweCAxNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDRweCA2cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIC0tc2hhZG93LXhsOiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAxMHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgIC0tc2hhZG93LWNhcmQ6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjA2KTtcbiAgICAtLXNoYWRvdy1jYXJkLWhvdmVyOiAwIDhweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgXG4gICAgLyogUmF5b25zIG1vZGVybmVzICovXG4gICAgLS1yYWRpdXMtc206IDZweDtcbiAgICAtLXJhZGl1cy1tZDogMTJweDtcbiAgICAtLXJhZGl1cy1sZzogMTZweDtcbiAgICAtLXJhZGl1cy14bDogMjRweDtcbiAgICBcbiAgICAvKiBUcmFuc2l0aW9ucyBmbHVpZGVzICovXG4gICAgLS10cmFuc2l0aW9uLWZhc3Q6IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgLS10cmFuc2l0aW9uLW5vcm1hbDogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAtLXRyYW5zaXRpb24tc2xvdzogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBcbiAgICAvKiBUeXBvZ3JhcGhpZSBtb2Rlcm5lICovXG4gICAgLS1mb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFwiUm9ib3RvXCIsIFwiT3h5Z2VuXCIsIFwiVWJ1bnR1XCIsIFwiQ2FudGFyZWxsXCIsIFwiRmlyYSBTYW5zXCIsIFwiRHJvaWQgU2Fuc1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gICAgLS1mb250LW1vbm86IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIFwiU0YgTW9ub1wiLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgTWVubG8sIG1vbm9zcGFjZTtcbn1cblxuLyogU3VwcHJlc3Npb24gZGVzIGZsw6hjaGVzIHBvdXIgdG91cyBsZXMgaW5wdXRzIGRlIHR5cGUgbnVtYmVyICovXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcbiAgICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG59XG5cbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uaW5jYXItc2hvcC1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTQwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWxpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cblxuLyogUGFnZSB3cmFwcGVyIHBvdXIgw6l2aXRlciBsZSBjaGV2YXVjaGVtZW50IGF2ZWMgbGUgaGVhZGVyICovXG4ucGFnZS13cmFwcGVyIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBwYWRkaW5nLXRvcDogODBweDsgLyogSGF1dGV1ciBhcHByb3hpbWF0aXZlIGR1IGhlYWRlciBmaXhlICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiBGaWx0cmVzIHN0eWxlIG1vZGVybmUgKi9cbi5pbmNhci1zaG9wLWZpbHRlcnMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtY2FyZCk7XG4gICAgcGFkZGluZzogMjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIG1hcmdpbi1ib3R0b206IDMycHg7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWNhcmQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiAyMHB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG59XG5cbi5maWx0ZXItc2VjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTZweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5yZWZlcmVuY2Utc2VjdGlvbiB7XG4gICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbn1cblxuLmZpbHRlci1zZWN0aW9uIGg0IHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtaW4td2lkdGg6IDEyMHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xufVxuXG4uZmlsdGVyLWdyb3VwIHtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmZpbHRlci1zZWxlY3QsIFxuLnJlZmVyZW5jZS1zZWFyY2ggaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZCk7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbiAgICBvdXRsaW5lOiBub25lO1xufVxuXG4uZmlsdGVyLXNlbGVjdDpmb2N1cywgXG4ucmVmZXJlbmNlLXNlYXJjaCBpbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgzNywgOTksIDIzNSwgMC4xKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi5maWx0ZXItc2VsZWN0OmhvdmVyLFxuLnJlZmVyZW5jZS1zZWFyY2ggaW5wdXQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeS1saWdodCk7XG59XG5cbi5yZWZlcmVuY2Utc2VhcmNoIGlucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLWFtYXpvbi10ZXh0LWxpZ2h0KTtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4ucmVzZXQtYnV0dG9uIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDhweCAyMHB4O1xuICAgIGJhY2tncm91bmQ6ICNGQ0ZDRkM7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzI5OUVGQztcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgY29sb3I6ICMxODNmNzI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi5yZXNldC1idXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxODNmNzI7XG4gICAgY29sb3I6ICNGQ0ZDRkM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMik7XG59XG5cbi8qIEdyaWxsZSBtb2Rlcm5lIGRlIGNhbGN1bGF0ZXVycyAqL1xuI2NhbGN1bGF0ZXVycy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzgwcHgsIDFmcikpO1xuICAgIGdhcDogMzJweDtcbiAgICBwYWRkaW5nOiAzMnB4IDA7XG4gICAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi8qIFJlc3BvbnNpdmUgcG91ciBkaWZmw6lyZW50ZXMgdGFpbGxlcyBkJ8OpY3JhbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgICNjYWxjdWxhdGV1cnMtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzUwcHgsIDFmcikpO1xuICAgICAgICBnYXA6IDJyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuc2hvcC1jb250YWluZXIubW9kZXJuLXNob3Age1xuICAgICAgICBwYWRkaW5nOiAxMHJlbSAxcmVtIDJyZW0gMXJlbTsgLyogUGx1cyBkZSBwYWRkaW5nLXRvcCBzdXIgbW9iaWxlICovXG4gICAgfVxuICAgIFxuICAgICNjYWxjdWxhdGV1cnMtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IDEuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMXJlbSAwO1xuICAgIH1cbiAgICBcbiAgICAuZmlsdGVycy1ncm91cCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgfVxuICAgIFxuICAgIC5zaG9wLWZpbHRlcnMge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgfVxuICAgIFxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgfVxuICAgIFxuICAgIC5jYXJkLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxuICAgIFxuICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgIHBhZGRpbmc6IDEuMnJlbSAxLjVyZW0gMS41cmVtO1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLnNob3AtY29udGFpbmVyLm1vZGVybi1zaG9wIHtcbiAgICAgICAgcGFkZGluZzogMTJyZW0gMXJlbSAycmVtIDFyZW07IC8qIEVuY29yZSBwbHVzIGRlIHBhZGRpbmctdG9wIHN1ciB0csOocyBwZXRpdHMgw6ljcmFucyAqL1xuICAgIH1cbiAgICBcbiAgICAuY2FyZC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgIH1cbiAgICBcbiAgICAucHJpY2UtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IDEuOHJlbTtcbiAgICB9XG4gICAgXG4gICAgLmJ0bi1hZGQtY2FydCB7XG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgfVxufVxuXG4vKiBBbmltYXRpb25zIGV0IGVmZmV0cyBtb2Rlcm5lcyAqL1xuQGtleWZyYW1lcyBmYWRlSW5VcCB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNjYWxlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2hpbW1lciB7XG4gICAgMCUge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwMHB4IDA7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAwcHggMDtcbiAgICB9XG59XG5cbi8qIEFwcGxpY2F0aW9uIGRlcyBhbmltYXRpb25zICovXG4uY2FsY3VsYXRldXItY2FyZCB7XG4gICAgYW5pbWF0aW9uOiBmYWRlSW5VcCAwLjZzIGVhc2Utb3V0IGZvcndhcmRzO1xuICAgIGFuaW1hdGlvbi1kZWxheTogY2FsYyh2YXIoLS1hbmltYXRpb24tZGVsYXksIDApICogMC4xcyk7XG59XG5cbi5jYWxjdWxhdGV1ci1jYXJkOm50aC1jaGlsZCgxKSB7IC0tYW5pbWF0aW9uLWRlbGF5OiAxOyB9XG4uY2FsY3VsYXRldXItY2FyZDpudGgtY2hpbGQoMikgeyAtLWFuaW1hdGlvbi1kZWxheTogMjsgfVxuLmNhbGN1bGF0ZXVyLWNhcmQ6bnRoLWNoaWxkKDMpIHsgLS1hbmltYXRpb24tZGVsYXk6IDM7IH1cbi5jYWxjdWxhdGV1ci1jYXJkOm50aC1jaGlsZCg0KSB7IC0tYW5pbWF0aW9uLWRlbGF5OiA0OyB9XG4uY2FsY3VsYXRldXItY2FyZDpudGgtY2hpbGQoNSkgeyAtLWFuaW1hdGlvbi1kZWxheTogNTsgfVxuLmNhbGN1bGF0ZXVyLWNhcmQ6bnRoLWNoaWxkKDYpIHsgLS1hbmltYXRpb24tZGVsYXk6IDY7IH1cblxuLyogw4l0YXQgZGUgY2hhcmdlbWVudCBhdmVjIGVmZmV0IHNoaW1tZXIgKi9cbi5sb2FkaW5nLXNrZWxldG9uIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIFxuICAgICAgICB2YXIoLS1iYWNrZ3JvdW5kLWxpZ2h0KSAwJSwgXG4gICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSA1MCUsIFxuICAgICAgICB2YXIoLS1iYWNrZ3JvdW5kLWxpZ2h0KSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMDBweCAxMDAlO1xuICAgIGFuaW1hdGlvbjogc2hpbW1lciAycyBpbmZpbml0ZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xufVxuXG4vKiBNaWNyby1pbnRlcmFjdGlvbnMgKi9cbi5jYWxjdWxhdGV1ci1jYXJkICoge1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi8qIEJhZGdlIFwiTm91dmVhdVwiIG91IFwiUG9wdWxhaXJlXCIgKi9cbi5iYWRnZS1ub3V2ZWF1IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxNnB4O1xuICAgIHJpZ2h0OiAxNnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kKTtcbiAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xuICAgIHotaW5kZXg6IDI7XG59XG5cbi5iYWRnZS1wb3B1bGFpcmUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LW9yYW5nZSk7XG59XG5cbi8qIEluZGljYXRldXIgZGUgcHJpeCAqL1xuLnByaWNlLWJhZGdlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdWNjZXNzLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tYmFja2dyb3VuZCk7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbn1cblxuLyogU3R5bGUgcG91ciBsZXMgY2FydGVzIHZpZGVzIG91IGVuIGNoYXJnZW1lbnQgKi9cbi5jYWxjdWxhdGV1ci1jYXJkLmxvYWRpbmcge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLmNhbGN1bGF0ZXVyLWNhcmQubG9hZGluZyAuY2FsY3VsYXRldXItaW1hZ2Uge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtbGlnaHQpO1xufVxuXG4uY2FsY3VsYXRldXItY2FyZC5sb2FkaW5nIC5jYWxjdWxhdGV1ci10aXRsZSxcbi5jYWxjdWxhdGV1ci1jYXJkLmxvYWRpbmcgLmNhbGN1bGF0ZXVyLXJlZmVyZW5jZXMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtbGlnaHQpO1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4vKiBBbcOpbGlvcmF0aW9uIGR1IGZvY3VzIHBvdXIgbCdhY2Nlc3NpYmlsaXTDqSAqL1xuLmNhbGN1bGF0ZXVyLWNhcmQ6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogM3B4IHNvbGlkIHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5wcmVzdGF0aW9uLXRhZzpmb2N1cy12aXNpYmxlLFxuLmNhbGN1bGF0ZXVyLWNhcmQgLmFkZC10by1jYXJ0OmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuXG4vKiBFZmZldHMgZGUgcGFyYWxsYXhlIHN1YnRpbHMgKi9cbi5jYWxjdWxhdGV1ci1oZWFkZXI6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTUwJTtcbiAgICByaWdodDogLTUwJTtcbiAgICB3aWR0aDogMjAwJTtcbiAgICBoZWlnaHQ6IDIwMCU7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgzNywgOTksIDIzNSwgMC4wNSkgMCUsIHRyYW5zcGFyZW50IDcwJSk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXNsb3cpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY2FsY3VsYXRldXItY2FyZDpob3ZlciAuY2FsY3VsYXRldXItaGVhZGVyOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xufVxuXG4vKiA9PT09PSBTVFlMRVMgTU9ERVJORVMgUE9VUiBMRVMgQ0xBU1NFUyBURU1QTEFURSBUV0lHID09PT09ICovXG5cbi8qIFZhcmlhYmxlcyBDU1Mgc3DDqWNpZmlxdWVzIHBvdXIgbGVzIGNhcnRlcyBtb2Rlcm5lcyAqL1xuOnJvb3Qge1xuICAgIC0tY2FyZC1iZzogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgI2ZmZmZmZiAwJSwgI2Y4ZmFmYyAxMDAlKTtcbiAgICAtLWNhcmQtYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAtLWNhcmQtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgLS1jYXJkLXNoYWRvdy1ob3ZlcjogMCAxNnB4IDY0cHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcbiAgICAtLWNhcmQtYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgIC0tdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAtLWdyYWRpZW50LWhlYWRlcjogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzY2N2VlYSAwJSwgIzc2NGJhMiAxMDAlKTtcbiAgICAtLWdyYWRpZW50LWJ1dHRvbjogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzY2N2VlYSAwJSwgIzc2NGJhMiAxMDAlKTtcbiAgICAtLWJ1dHRvbi1ib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIC0tYnV0dG9uLXNoYWRvdy1ob3ZlcjogMCA4cHggMjVweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuNCk7XG4gICAgLS1zcGVjLWJnOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMDgpO1xuICAgIC0tc3BlYy1iZy1ob3ZlcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEyKTtcbiAgICAtLWZvb3Rlci1iZzogcmdiYSgyNDgsIDI1MCwgMjUyLCAwLjgpO1xufVxuXG4vKiBDb250YWluZXIgcHJpbmNpcGFsIG1vZGVybmUgKi9cbi5zaG9wLWNvbnRhaW5lci5tb2Rlcm4tc2hvcCB7XG4gICAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogNHJlbSAycmVtIDJyZW0gMnJlbTsgLyogUGFkZGluZy10b3AgcsOpZHVpdCBwb3VyIHVuIG1laWxsZXVyIMOpcXVpbGlicmUgKi9cbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZjVmN2ZhIDAlLCAjYzNjZmUyIDEwMCUpO1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseSk7XG59XG5cbi8qIEZpbHRyZXMgbW9kZXJuZXMgKi9cbi5zaG9wLWZpbHRlcnMge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgcGFkZGluZzogMnJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtOyAvKiBNYXJnZSByw6lkdWl0ZSBwb3VyIG1vaW5zIGQnZXNwYWNlbWVudCAqL1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTA7XG59XG5cbi5maWx0ZXJzLWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEuNXJlbTtcbn1cblxuLmZpbHRlcnMtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyZnIgMWZyIDFmcjtcbiAgICBnYXA6IDEuNXJlbTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZm9ybS1pbnB1dCB7XG4gICAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHkpO1xufVxuXG4uZm9ybS1pbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLmZvcm0taW5wdXQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjMpO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xufVxuXG4uZm9ybS1pbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgICBmb250LXdlaWdodDogNDAwO1xufVxuXG4vKiBHcmlsbGUgZGVzIHByZXN0YXRpb25zIG1vZGVybmUgKi9cbi5jYWxjdWxhdGV1ci1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDM4MHB4LCAxZnIpKTtcbiAgICBnYXA6IDJyZW07IC8qIEdhcCByw6lkdWl0IHBvdXIgbW9pbnMgZCdlc3BhY2VtZW50ICovXG4gICAgcGFkZGluZzogMXJlbSAwOyAvKiBQYWRkaW5nIHLDqWR1aXQgKi9cbiAgICBtYXgtd2lkdGg6IDE0MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLyogQ2FydGUgcHJpbmNpcGFsZSAtIFN0eWxlIGNhcnRlIG1vZGVybmUgYXZlYyBlZmZldCAzRCAqL1xuLmNhbGN1bGF0ZXVyLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNhcmQtYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tY2FyZC1zaGFkb3cpO1xuICAgIGJvcmRlcjogdmFyKC0tY2FyZC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIGFuaW1hdGlvbjogY2FyZFNsaWRlSW4gMC42cyBlYXNlLW91dCBmb3J3YXJkcztcbiAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIEFuaW1hdGlvbiBkJ2VudHLDqWUgKi9cbkBrZXlmcmFtZXMgY2FyZFNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCkgc2NhbGUoMC45NSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLyogQmFycmUgc3Vww6lyaWV1cmUgY29sb3LDqWUgKi9cbi5jYWxjdWxhdGV1ci1jYXJkOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtcHJpbWFyeSk7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAwLjRzIGVhc2U7XG4gICAgei1pbmRleDogMTtcbn1cblxuLmNhbGN1bGF0ZXVyLWNhcmQ6aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMDtcbn1cblxuLyogRWZmZXQgaG92ZXIgM0QgKi9cbi5jYWxjdWxhdGV1ci1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEycHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWNhcmQtc2hhZG93LWhvdmVyKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4zKTtcbn1cblxuLyogw4lsw6ltZW50IGludmlzaWJsZSBwb3VyIG1haW50ZW5pciBsYSBzdHJ1Y3R1cmUgRE9NIChuw6ljZXNzYWlyZSBwb3VyIGxlcyDDqXbDqW5lbWVudHMgSlMpICovXG4uY2FsY3VsYXRldXItY2FyZDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLyogRW4tdMOqdGUgZGUgbGEgY2FydGUgYXZlYyBpbWFnZSAtIFN0eWxlIGNhcnRlIG1vZGVybmUgKi9cbi5jYXJkLWhlYWRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtaGVhZGVyKTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cykgdmFyKC0tY2FyZC1ib3JkZXItcmFkaXVzKSAwIDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBoZWlnaHQ6IDI0MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4vKiBFZmZldCBkZSBtYXNxdWUgZMOpZ3JhZMOpIHN1ciBsJ2ltYWdlIC0gU1VQUFJJTcOJICovXG5cbi5jYXJkLWltYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbn1cblxuLmNhbGN1bGF0ZXVyLWNhcmQ6aG92ZXIgLmNhcmQtaW1hZ2Uge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoMWRlZyk7XG59XG5cbi5jYXJkLWltYWdlLXBsYWNlaG9sZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDFyZW07XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuOTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtaGVhZGVyKTtcbiAgICB6LWluZGV4OiAxO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcmQtaW1hZ2UtcGxhY2Vob2xkZXIgaSB7XG4gICAgZm9udC1zaXplOiA0cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDRweCA4cHggcmdiYSgwLDAsMCwwLjMpKTtcbn1cblxuLmNhcmQtaW1hZ2UtcGxhY2Vob2xkZXIgc3BhbiB7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwwLDAsMC41KTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG59XG5cbi8qIEJhZGdlIGRlIGRpc3BvbmliaWxpdMOpIG1vZGVybmUgYXZlYyBnbGFzc21vcnBoaXNtICovXG4uY2FyZC1iYWRnZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMS4ycmVtO1xuICAgIHJpZ2h0OiAxLjJyZW07XG4gICAgYmFja2dyb3VuZDogcmdiYSgxNiwgMTg1LCAxMjksIDAuOSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAwLjZyZW0gMS4ycmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgxNiwgMTg1LCAxMjksIDAuNCk7XG4gICAgei1pbmRleDogMztcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgYW5pbWF0aW9uOiBiYWRnZVB1bHNlIDJzIGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIGJhZGdlUHVsc2Uge1xuICAgIDAlLCAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDE2LCAxODUsIDEyOSwgMC40KTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDM1cHggcmdiYSgxNiwgMTg1LCAxMjksIDAuNik7XG4gICAgfVxufVxuXG4uY2FyZC1iYWRnZSBpIHtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMykpO1xufVxuXG4vKiBDb250ZW51IHByaW5jaXBhbCBtb2Rlcm5lIGF2ZWMgZXNwYWNlbWVudCBhbcOpbGlvcsOpICovXG4uY2FyZC1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAyLjJyZW07XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbn1cblxuLmNhcmQtdGl0bGUge1xuICAgIG1hcmdpbjogMCAwIDAuOHJlbSAwO1xuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDNlbTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbn1cblxuLyogTGlnbmUgZMOpY29yYXRpdmUgc291cyBsZSB0aXRyZSAqL1xuLmNhcmQtdGl0bGU6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiAzcHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuXG4uY2FyZC1kZXNjcmlwdGlvbiB7XG4gICAgbWFyZ2luOiAwIDAgMS41cmVtIDA7XG4gICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gICAgbGluZS1jbGFtcDogMztcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuLmNhcmQtc3BlY3Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDFyZW07XG59XG5cbi5zcGVjLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEuMnJlbTtcbiAgICBwYWRkaW5nOiAxcmVtIDEuM3JlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zcGVjLWJnKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tcHJpbWFyeS1jb2xvcik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5zcGVjLWl0ZW06OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpLCB0cmFuc3BhcmVudCk7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7XG59XG5cbi5zcGVjLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLnNwZWMtaXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3BlYy1iZy1ob3Zlcik7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDhweCkgc2NhbGUoMS4wMik7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMik7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICM0ZjQ2ZTU7XG59XG5cbi5zcGVjLWl0ZW0gaSB7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMSkpO1xufVxuXG4uc3BlYy1pdGVtIHNwYW4ge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG59XG5cbi8qIFBpZWQgZGUgY2FydGUgbW9kZXJuZSBhdmVjIGdsYXNzbW9ycGhpc20gKi9cbi5jYXJkLWZvb3RlciB7XG4gICAgcGFkZGluZzogMS44cmVtIDIuMnJlbSAyLjJyZW07XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1mb290ZXItYmcpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNXB4KTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcmQtZm9vdGVyOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICB3aWR0aDogNjBweDtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiAxcHg7XG59XG5cbi5wcmljZS1zZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnByaWNlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBnYXA6IDAuNXJlbTtcbn1cblxuLnByaWNlLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICBmb250LXdlaWdodDogOTAwO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICB0ZXh0LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wcmljZS1jdXJyZW5jeSB7XG4gICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XG59XG5cbi5wcmljZS10YXgge1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tbGVmdDogMC40cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xuICAgIHBhZGRpbmc6IDAuMnJlbSAwLjZyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cblxuLyogQm91dG9uIGQnYWpvdXQgYXUgcGFuaWVyIG1vZGVybmUgYXZlYyBhbmltYXRpb25zICovXG4uYnRuLWFkZC1jYXJ0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1idXR0b24pO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMS4ycmVtIDEuOHJlbTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1idXR0b24tYm9yZGVyLXJhZGl1cyk7XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICBmb250LXNpemU6IDEuMDVyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDAuOHJlbTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjhweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4zKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuLyogRWZmZXQgZGUgYnJpbGxhbmNlIHN1ciBsZSBib3V0b24gKi9cbi5idG4tYWRkLWNhcnQ6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsMjU1LDI1NSwwLjQpLCB0cmFuc3BhcmVudCk7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAwLjZzIGVhc2U7XG59XG5cbi5idG4tYWRkLWNhcnQ6aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmJ0bi1hZGQtY2FydDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWJ1dHRvbi1zaGFkb3ctaG92ZXIpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM1YTY3ZDggMCUsICM2NjdlZWEgMTAwJSk7XG59XG5cbi5idG4tYWRkLWNhcnQ6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMC45OCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuNCk7XG59XG5cbi5idG4tYWRkLWNhcnQgaSB7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwwLjMpKTtcbn1cblxuLyogQW5pbWF0aW9uIGQnYWpvdXQgcsOpdXNzaSAqL1xuLmJ0bi1hZGQtY2FydC5hZGRlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzEwYjk4MSAwJSwgIzA1OTY2OSAxMDAlKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuXG4uYnRuLWFkZC1jYXJ0LmFkZGVkOjphZnRlciB7XG4gICAgY29udGVudDogJ+Kckyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGFuaW1hdGlvbjogY2hlY2ttYXJrIDAuNnMgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgY2hlY2ttYXJrIHtcbiAgICAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSByb3RhdGUoMGRlZyk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwZGVnKTtcbiAgICB9XG59XG5cbi8qIFJlc3BvbnNpdmUgcG91ciBsZXMgY2FydGVzIG1vZGVybmVzICovXG5AbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XG4gICAgLmNhbGN1bGF0ZXVyLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDM1MHB4LCAxZnIpKTtcbiAgICAgICAgZ2FwOiAycmVtO1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLnNob3AtY29udGFpbmVyLm1vZGVybi1zaG9wIHtcbiAgICAgICAgcGFkZGluZzogN3JlbSAxcmVtIDJyZW0gMXJlbTsgLyogRXNwYWNlbWVudCByw6lkdWl0IHN1ciBtb2JpbGUgKi9cbiAgICB9XG4gICAgXG4gICAgLmNhbGN1bGF0ZXVyLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiAxLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcbiAgICB9XG4gICAgXG4gICAgLmZpbHRlcnMtZ3JvdXAge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgIH1cbiAgICBcbiAgICAuc2hvcC1maWx0ZXJzIHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIH1cbiAgICBcbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBoZWlnaHQ6IDIwMHB4O1xuICAgIH1cbiAgICBcbiAgICAuY2FyZC1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cbiAgICBcbiAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtIDEuNXJlbTtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5zaG9wLWNvbnRhaW5lci5tb2Rlcm4tc2hvcCB7XG4gICAgICAgIHBhZGRpbmc6IDhyZW0gMXJlbSAycmVtIDFyZW07IC8qIEVzcGFjZW1lbnQgYWp1c3TDqSBwb3VyIHRyw6hzIHBldGl0cyDDqWNyYW5zICovXG4gICAgfVxuICAgIFxuICAgIC5jYXJkLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgfVxuICAgIFxuICAgIC5wcmljZS12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgIH1cbiAgICBcbiAgICAuYnRuLWFkZC1jYXJ0IHtcbiAgICAgICAgcGFkZGluZzogMXJlbSAxLjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICB9XG59XG5cbi8qIFBhbmllciBmbG90dGFudCBtb2Rlcm5lICovXG4uY2FydC10b2dnbGUge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDUwJTtcbiAgICByaWdodDogMnJlbTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbn1cblxuLmNhcnQtdG9nZ2xlOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMS4xKTtcbiAgICBib3gtc2hhZG93OiAwIDEycHggMzVweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuNik7XG59XG5cbi5jYXJ0LWNvdW50IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IC8qIENhY2hlciBsZSBjb21wdGV1ciAqL1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC04cHg7XG4gICAgcmlnaHQ6IC04cHg7XG4gICAgYmFja2dyb3VuZDogI2VmNDQ0NDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMjM5LCA2OCwgNjgsIDAuNCk7XG59XG5cbi8qID09PT09IFNUWUxFUyBNT0RBTEUgTU9ERVJORSAoQ09Iw4lSRU5URSBBVkVDIExFUyBDQVJURVMpID09PT09ICovXG5cbi8qIE1vZGFsZSBwcmluY2lwYWxlIGF2ZWMgbGUgbcOqbWUgc3R5bGUgcXVlIGxlcyBjYXJ0ZXMgKi9cbi5hbWF6b24tbW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgdmlzaWJpbGl0eSAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uYW1hem9uLW1vZGFsLnNob3cge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuLyogT3ZlcmxheSBwb3VyIGZlcm1lciBsYSBtb2RhbGUgKi9cbi5hbWF6b24tbW9kYWwtb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIENvbnRlbnUgZGUgbGEgbW9kYWxlIGF2ZWMgbGUgc3R5bGUgZGVzIGNhcnRlcyAqL1xuLmFtYXpvbi1tb2RhbC1jb250ZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogOTB2aDtcbiAgICBtYXJnaW46IDJ2aCBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNhcmQtYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tY2FyZC1zaGFkb3ctaG92ZXIpO1xuICAgIGJvcmRlcjogdmFyKC0tY2FyZC1ib3JkZXIpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYW5pbWF0aW9uOiBtb2RhbFNsaWRlSW4gMC40cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xufVxuXG5Aa2V5ZnJhbWVzIG1vZGFsU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KSBzY2FsZSgwLjk1KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4vKiBCYXJyZSBzdXDDqXJpZXVyZSBjb2xvcsOpZSBjb21tZSBsZXMgY2FydGVzICovXG4uYW1hem9uLW1vZGFsLWNvbnRlbnQ6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi8qIEhlYWRlciBkZSBsYSBtb2RhbGUgKi9cbi5hbWF6b24tbW9kYWwtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxNXB4O1xuICAgIHJpZ2h0OiAxNXB4O1xuICAgIHotaW5kZXg6IDI7XG59XG5cbi5jbG9zZS1tb2RhbCB7XG4gICAgd2lkdGg6IDQ1cHg7XG4gICAgaGVpZ2h0OiA0NXB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjQpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbn1cblxuLmNsb3NlLW1vZGFsOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKDkwZGVnKTtcbiAgICBib3gtc2hhZG93OiAwIDEycHggMzVweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuNik7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzVhNjdkOCAwJSwgIzY2N2VlYSAxMDAlKTtcbn1cblxuLyogQ29ycHMgZGUgbGEgbW9kYWxlICovXG4uYW1hem9uLW1vZGFsLWJvZHkge1xuICAgIHBhZGRpbmc6IDQwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBtYXgtaGVpZ2h0OiA4NXZoO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuXG4vKiBMYXlvdXQgcHJvZHVpdCBtb2Rlcm5lICovXG4uYW1hem9uLXByb2R1Y3QtbGF5b3V0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAzMjBweDtcbiAgICBnYXA6IDQwcHg7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xufVxuXG4vKiBJbWFnZSBkdSBwcm9kdWl0IGF2ZWMgc3R5bGUgbW9kZXJuZSAqL1xuLmFtYXpvbi1wcm9kdWN0LWltYWdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLmFtYXpvbi1wcm9kdWN0LWltYWdlIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAzMjBweDtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG59XG5cbi5hbWF6b24tcHJvZHVjdC1pbWFnZTpob3ZlciBpbWcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi8qIETDqXRhaWxzIGR1IHByb2R1aXQgYXZlYyBzdHlsZSBtb2Rlcm5lICovXG4uYW1hem9uLXByb2R1Y3QtZGV0YWlscyB7XG4gICAgcGFkZGluZy1yaWdodDogMjBweDtcbn1cblxuLmFtYXpvbi1wcm9kdWN0LXRpdGxlIHtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIG1hcmdpbjogMCAwIDI1cHggMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDNlbTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG59XG5cbi8qIExpZ25lIGTDqWNvcmF0aXZlIHNvdXMgbGUgdGl0cmUgY29tbWUgbGVzIGNhcnRlcyAqL1xuLmFtYXpvbi1wcm9kdWN0LXRpdGxlOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cblxuLmFtYXpvbi1wcmljZS1zZWN0aW9uIHtcbiAgICBtYXJnaW46IDI1cHggMDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXNwZWMtYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbn1cblxuLmFtYXpvbi1wcmljZSB7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIHRleHQtc2hhZG93OiAwIDJweCA0cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xufVxuXG4uYW1hem9uLXByaWNlLWh0IHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMSk7XG4gICAgcGFkZGluZzogMC4ycmVtIDAuNnJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xufVxuXG4uYW1hem9uLWRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW46IDMwcHggMDtcbn1cblxuLmFtYXpvbi1kZXNjcmlwdGlvbiBoMyB7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCAxNXB4IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XG59XG5cbi5hbWF6b24tZGVzY3JpcHRpb24gaDM6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogMXB4O1xufVxuXG4uYW1hem9uLWRlc2NyaXB0aW9uIHAge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAxLjA1cmVtO1xufVxuXG4vKiBTcMOpY2lmaWNhdGlvbnMgdGVjaG5pcXVlcyBhdmVjIHN0eWxlIGRlcyBjYXJ0ZXMgKi9cbi5hbWF6b24tc3BlY2lmaWNhdGlvbnMge1xuICAgIG1hcmdpbjogMzBweCAwO1xufVxuXG4uYW1hem9uLXNwZWNpZmljYXRpb25zIGgzIHtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIDIwcHggMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206IDhweDtcbn1cblxuLmFtYXpvbi1zcGVjaWZpY2F0aW9ucyBoMzo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiAxcHg7XG59XG5cbi5hbWF6b24tc3BlYy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogMTVweDtcbn1cblxuLmFtYXpvbi1zcGVjLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTVweCAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXNwZWMtYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYW1hem9uLXNwZWMtaXRlbTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMSksIHRyYW5zcGFyZW50KTtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuNXMgZWFzZTtcbn1cblxuLmFtYXpvbi1zcGVjLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmFtYXpvbi1zcGVjLWl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXNwZWMtYmctaG92ZXIpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg4cHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjNGY0NmU1O1xufVxuXG4uYW1hem9uLXNwZWMtaXRlbSBzdHJvbmcge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbWluLXdpZHRoOiAxMjBweDtcbn1cblxuLmFtYXpvbi1zcGVjLWl0ZW0gc3BhbiB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4vKiBCb3ggZCdhY2hhdCBhdmVjIHN0eWxlIG1vZGVybmUgZGVzIGNhcnRlcyAqL1xuLmFtYXpvbi1wdXJjaGFzZS1ib3gge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNhcmQtYmcpO1xuICAgIGJvcmRlcjogdmFyKC0tY2FyZC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgcGFkZGluZzogMjVweDtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogMjBweDtcbiAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWNhcmQtc2hhZG93KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbn1cblxuLmFtYXpvbi1wcmljZS1ib3gge1xuICAgIG1hcmdpbjogMjBweCAwO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcGFkZGluZzogMTVweCAwO1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMSk7XG59XG5cbi5hbWF6b24tcHJpY2UtbGFyZ2Uge1xuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtc2hhZG93OiAwIDJweCA0cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xufVxuXG4uYW1hem9uLXByaWNlLWh0LXNtYWxsIHtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcbiAgICBwYWRkaW5nOiAwLjJyZW0gMC42cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG59XG5cbi5hbWF6b24tc3RvY2staW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbiAgICBtYXJnaW46IDIwcHggMDtcbiAgICBjb2xvcjogIzEwYjk4MTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE2LCAxODUsIDEyOSwgMC4xKTtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cblxuLyogQm91dG9uIGQnYWpvdXQgYXUgcGFuaWVyIGF2ZWMgbGUgbcOqbWUgc3R5bGUgcXVlIGxlcyBjYXJ0ZXMgKi9cbi5hbWF6b24tYWRkLXRvLWNhcnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LWJ1dHRvbik7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1idXR0b24tYm9yZGVyLXJhZGl1cyk7XG4gICAgcGFkZGluZzogMTVweCAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcbiAgICBmb250LXdlaWdodDogODAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBtYXJnaW46IDIwcHggMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAxMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjQpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4vKiBFZmZldCBkZSBicmlsbGFuY2Ugc3VyIGxlIGJvdXRvbiAqL1xuLmFtYXpvbi1hZGQtdG8tY2FydDo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwyNTUsMjU1LDAuNCksIHRyYW5zcGFyZW50KTtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuNnMgZWFzZTtcbn1cblxuLmFtYXpvbi1hZGQtdG8tY2FydDpob3Zlcjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxMDAlO1xufVxuXG4uYW1hem9uLWFkZC10by1jYXJ0OmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCkgc2NhbGUoMS4wMik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tYnV0dG9uLXNoYWRvdy1ob3Zlcik7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzVhNjdkOCAwJSwgIzY2N2VlYSAxMDAlKTtcbn1cblxuLmFtYXpvbi1hZGQtdG8tY2FydDphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgwLjk4KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC40KTtcbn1cblxuLmFtYXpvbi1hZGQtdG8tY2FydCBpIHtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMykpO1xufVxuXG4uYW1hem9uLXNlY3VyZS10cmFuc2FjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMDUpO1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uYW1hem9uLXNlY3VyZS10cmFuc2FjdGlvbiBpIHtcbiAgICBjb2xvcjogIzEwYjk4MTtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG5cbi8qIFJlc3BvbnNpdmUgZGVzaWduIHBvdXIgbGEgbW9kYWxlICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgLmFtYXpvbi1wcm9kdWN0LWxheW91dCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IDMwcHg7XG4gICAgfVxuICAgIFxuICAgIC5hbWF6b24tcHVyY2hhc2UtYm94IHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5hbWF6b24tbW9kYWwge1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgIH1cbiAgICBcbiAgICAuYW1hem9uLW1vZGFsLWNvbnRlbnQge1xuICAgICAgICBtYXJnaW46IDF2aCBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiA5NXZoO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYXJkLWJvcmRlci1yYWRpdXMpO1xuICAgIH1cbiAgICBcbiAgICAuYW1hem9uLW1vZGFsLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAyNXB4O1xuICAgIH1cbiAgICBcbiAgICAuYW1hem9uLXByb2R1Y3QtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNnJlbTtcbiAgICB9XG4gICAgXG4gICAgLmFtYXpvbi1wcmljZS1sYXJnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgIH1cbiAgICBcbiAgICAuYW1hem9uLXNwZWMtaXRlbSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG4gICAgXG4gICAgLmFtYXpvbi1zcGVjLWl0ZW0gc3BhbiB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAuYW1hem9uLW1vZGFsLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgIH1cbiAgICBcbiAgICAuYW1hem9uLXByb2R1Y3QtbGF5b3V0IHtcbiAgICAgICAgZ2FwOiAyMHB4O1xuICAgIH1cbiAgICBcbiAgICAuYW1hem9uLXByb2R1Y3QtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICB9XG4gICAgXG4gICAgLmFtYXpvbi1hZGQtdG8tY2FydCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgIH1cbn1cblxuLyogPT09PT0gRklOIFNUWUxFUyBNT0RBTEUgTU9ERVJORSA9PT09PSAqL1xuXG4vKiA9PT09PSBDQVJEIE5PIFJFU1VMVFMgTU9ERVJORSA9PT09PSAqL1xuXG4ubm8tcmVzdWx0cy1jb250YWluZXIge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi1oZWlnaHQ6IDUwMHB4O1xuICAgIHBhZGRpbmc6IDJyZW07XG59XG5cbi5uby1yZXN1bHRzLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNhcmQtYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tY2FyZC1zaGFkb3ctaG92ZXIpO1xuICAgIGJvcmRlcjogdmFyKC0tY2FyZC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IDNyZW0gMi41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXgtd2lkdGg6IDUwMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGFuaW1hdGlvbjogc2xpZGVJblVwIDAuNnMgZWFzZS1vdXQ7XG59XG5cbi5uby1yZXN1bHRzLWNhcmQ6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5uby1yZXN1bHRzLWlsbHVzdHJhdGlvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxcmVtO1xufVxuXG4uaWxsdXN0cmF0aW9uLWNpcmNsZSB7XG4gICAgd2lkdGg6IDEyMHB4O1xuICAgIGhlaWdodDogMTIwcHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIGFuaW1hdGlvbjogcHVsc2UgMnMgaW5maW5pdGU7XG4gICAgYm94LXNoYWRvdzogMCAwIDMwcHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjMpO1xufVxuXG4uaWxsdXN0cmF0aW9uLWNpcmNsZSBpIHtcbiAgICBmb250LXNpemU6IDNyZW07XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHRleHQtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjMpO1xufVxuXG4uaWxsdXN0cmF0aW9uLWRvdHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAwLjVyZW07XG59XG5cbi5kb3Qge1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICBhbmltYXRpb246IGRvdFB1bHNlIDEuNXMgaW5maW5pdGU7XG59XG5cbi5kb3QtMSB7IGFuaW1hdGlvbi1kZWxheTogMHM7IH1cbi5kb3QtMiB7IGFuaW1hdGlvbi1kZWxheTogMC4yczsgfVxuLmRvdC0zIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjRzOyB9XG5cbi5uby1yZXN1bHRzLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG59XG5cbi5uby1yZXN1bHRzLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5zdWdnZXN0aW9ucy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zcGVjLWJnKTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbn1cblxuLnN1Z2dlc3Rpb25zLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xufVxuXG4uc3VnZ2VzdGlvbnMtdGl0bGUgaSB7XG4gICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS1jb2xvcik7XG4gICAgZm9udC1zaXplOiAxcmVtO1xufVxuXG4uc3VnZ2VzdGlvbnMtbGlzdCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnN1Z2dlc3Rpb25zLWxpc3QgbGkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNzVyZW07XG4gICAgcGFkZGluZzogMC41cmVtIDA7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uc3VnZ2VzdGlvbnMtbGlzdCBsaTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG59XG5cbi5zdWdnZXN0aW9ucy1saXN0IGxpIGkge1xuICAgIGNvbG9yOiB2YXIoLS1zdWNjZXNzLWNvbG9yKTtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm5vLXJlc3VsdHMtYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDFyZW07XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uYnRuLXJlc2V0LWZpbHRlcnMsXG4uYnRuLWNvbnRhY3Qge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgcGFkZGluZzogMC44NzVyZW0gMS41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJ1dHRvbi1ib3JkZXItcmFkaXVzKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tbm9ybWFsKTtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBtaW4td2lkdGg6IDE2MHB4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uYnRuLXJlc2V0LWZpbHRlcnMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4zKTtcbn1cblxuLmJ0bi1yZXNldC1maWx0ZXJzOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tYnV0dG9uLXNoYWRvdy1ob3Zlcik7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4uYnRuLWNvbnRhY3Qge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xufVxuXG4uYnRuLWNvbnRhY3Q6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIEFuaW1hdGlvbnMgKi9cbkBrZXlmcmFtZXMgc2xpZGVJblVwIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgcHVsc2Uge1xuICAgIDAlLCAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgZG90UHVsc2Uge1xuICAgIDAlLCAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG4gICAgfVxufVxuXG4vKiBSZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAubm8tcmVzdWx0cy1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiA0MDBweDtcbiAgICB9XG4gICAgXG4gICAgLm5vLXJlc3VsdHMtY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IDJyZW0gMS41cmVtO1xuICAgIH1cbiAgICBcbiAgICAuaWxsdXN0cmF0aW9uLWNpcmNsZSB7XG4gICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICB9XG4gICAgXG4gICAgLmlsbHVzdHJhdGlvbi1jaXJjbGUgaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgIH1cbiAgICBcbiAgICAubm8tcmVzdWx0cy10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cbiAgICBcbiAgICAubm8tcmVzdWx0cy1hY3Rpb25zIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgXG4gICAgLmJ0bi1yZXNldC1maWx0ZXJzLFxuICAgIC5idG4tY29udGFjdCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgIH1cbn1cblxuLyogPT09PT0gRklOIENBUkQgTk8gUkVTVUxUUyBNT0RFUk5FID09PT09ICovXG5cbi8qID09PT09IEZJTiBDQVJURVMgTU9ERVJORVMgVEVNUExBVEUgVFdJRyA9PT09PSAqLyIsIi8qID09PT09IFBBR0UgREUgRklOQUxJU0FUSU9OIE1PREVSTkUgPT09PT0gKi9cblxuLmNoZWNrb3V0LWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgbWFyZ2luOiAycmVtIGF1dG87XG4gICAgcGFkZGluZzogMnJlbTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZjhmYWZjIDAlLCAjZTJlOGYwIDEwMCUpO1xuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSA0cmVtKTtcbn1cblxuLmNoZWNrb3V0LWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogM3JlbTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbi8qID09PT09IFLDiUNBUElUVUxBVElGIERVIFBBTklFUiBNT0RFUk5FID09PT09ICovXG5cbi5jYXJ0LXN1bW1hcnkge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNhcmQtYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tY2FyZC1zaGFkb3ctaG92ZXIpO1xuICAgIGJvcmRlcjogdmFyKC0tY2FyZC1ib3JkZXIpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IDJyZW07XG59XG5cbi8qIEJhcnJlIHN1cMOpcmlldXJlIGNvbG9yw6llICovXG4uY2FydC1zdW1tYXJ5OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uY2FydC1zdW1tYXJ5IGgyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDEuNXJlbSAycmVtO1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgdGV4dC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMyk7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDA7XG59XG5cbi5jYXJ0LXN1bW1hcnktY29udGVudCB7XG4gICAgcGFkZGluZzogMnJlbTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgMTJweCAxMnB4O1xufVxuXG4vKiA9PT09PSBBUlRJQ0xFUyBEVSBSw4lDQVBJVFVMQVRJRiA9PT09PSAqL1xuXG4uY2hlY2tvdXQtaXRlbSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3BlYy1iZyk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tcHJpbWFyeS1jb2xvcik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IDEuMnJlbTtcbiAgICBtaW4taGVpZ2h0OiAxMjBweDtcbn1cblxuLmNoZWNrb3V0LWl0ZW06OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpLCB0cmFuc3BhcmVudCk7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7XG59XG5cbi5jaGVja291dC1pdGVtOmhvdmVyOjpiZWZvcmUge1xuICAgIGxlZnQ6IDEwMCU7XG59XG5cbi5jaGVja291dC1pdGVtOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zcGVjLWJnLWhvdmVyKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMSk7XG4gICAgYm94LXNoYWRvdzogMCA2cHggMjBweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMTUpO1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjNGY0NmU1O1xufVxuXG4uY2hlY2tvdXQtaXRlbSAuaXRlbS1kZXRhaWxzIHtcbiAgICBmbGV4OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDAuNXJlbTtcbn1cblxuLmNoZWNrb3V0LWl0ZW0gLml0ZW0tZGV0YWlscyBoNCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG5cbi5jaGVja291dC1pdGVtIC5pdGVtLWRldGFpbHMgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5jaGVja291dC1pdGVtIC5pdGVtLWRldGFpbHMgLml0ZW0tcHJpY2Uge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jaGVja291dC1pdGVtIC5pdGVtLXF1YW50aXR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjRyZW07XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgcGFkZGluZzogMC4yNXJlbTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMik7XG59XG5cbi5jaGVja291dC1pdGVtIC5pdGVtLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjhyZW07XG4gICAgbWFyZ2luLXRvcDogMC4zcmVtO1xufVxuXG4uY2hlY2tvdXQtaXRlbSAucXVhbnRpdHkge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMSk7XG4gICAgcGFkZGluZzogMC4ycmVtIDAuNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi5jaGVja291dC1pdGVtIC5wcmljZSB7XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICBjb2xvcjogIzJkMzc0ODtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbn1cblxuLyogPT09PT0gVE9UQVVYIE1PREVSTkVTID09PT09ICovXG5cbi5jYXJ0LXN1YnRvdGFsLCAuY2FydC10YXgge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICBwYWRkaW5nOiAwLjhyZW0gMS4ycmVtO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMSk7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmNhcnQtc3VidG90YWwgc3BhbiwgLmNhcnQtdGF4IHNwYW4ge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbi5jYXJ0LXN1YnRvdGFsIC5hbW91bnQsIC5jYXJ0LXRheCAuYW1vdW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgY29sb3I6ICMyZDM3NDg7XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbn1cblxuLmNhcnQtdG90YWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMS41cmVtIDEuNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMyk7XG4gICAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tcHJpbWFyeS1jb2xvcik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5jYXJ0LXRvdGFsOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSksIHRyYW5zcGFyZW50KTtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuNnMgZWFzZTtcbn1cblxuLmNhcnQtdG90YWw6aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmNhcnQtdG90YWwgLmFtb3VudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgIGNvbG9yOiAjMmQzNzQ4O1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG59XG5cblxuLyogPT09PT0gRk9STVVMQUlSRSBERSBDT01NQU5ERSBNT0RFUk5FID09PT09ICovXG5cbi5jaGVja291dC1mb3JtIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXJkLWJnKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYXJkLWJvcmRlci1yYWRpdXMpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWNhcmQtc2hhZG93LWhvdmVyKTtcbiAgICBib3JkZXI6IHZhcigtLWNhcmQtYm9yZGVyKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogQmFycmUgc3Vww6lyaWV1cmUgY29sb3LDqWUgKi9cbi5jaGVja291dC1mb3JtOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uY2hlY2tvdXQtZm9ybSBoMiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxLjVyZW0gMnJlbTtcbiAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICBmb250LXdlaWdodDogODAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgIHRleHQtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjMpO1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4IDEycHggMCAwO1xufVxuXG4uY2hlY2tvdXQtZm9ybS1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAycmVtO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7XG59XG5cbi5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmZvcm0tZ3JvdXAgbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IDAuOHJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5mb3JtLWdyb3VwIGxhYmVsOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogLTRweDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIGhlaWdodDogMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDFweDtcbn1cblxuLmZvcm0tZ3JvdXAgaW5wdXQsXG4uZm9ybS1ncm91cCB0ZXh0YXJlYSxcbi5mb3JtLWdyb3VwIHNlbGVjdCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMXJlbSAxLjJyZW07XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJ1dHRvbi1ib3JkZXItcmFkaXVzKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4uZm9ybS1ncm91cCBpbnB1dDpmb2N1cyxcbi5mb3JtLWdyb3VwIHRleHRhcmVhOmZvY3VzLFxuLmZvcm0tZ3JvdXAgc2VsZWN0OmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5mb3JtLWdyb3VwIGlucHV0OjpwbGFjZWhvbGRlcixcbi5mb3JtLWdyb3VwIHRleHRhcmVhOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmZvcm0tZ3JvdXAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgbWluLWhlaWdodDogMTIwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLyogR3JvdXBlcyBkZSBjaGFtcHMgaW5saW5lICovXG4uZm9ybS1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMmZyO1xuICAgIGdhcDogMS41cmVtO1xuICAgIGFsaWduLWl0ZW1zOiBlbmQ7XG59XG5cbi8qIE1lc3NhZ2VzIGQnYWlkZSAqL1xuLmZvcm0taGVscCB7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4zKTtcbn1cblxuLyogPT09PT0gQk9VVE9OUyBNT0RFUk5FUyA9PT09PSAqL1xuXG4uYnRuLXByaW1hcnkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDEuNHJlbSAycmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICBmb250LXdlaWdodDogODAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuOHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjMpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcHJpbWFyeS1jb2xvcik7XG59XG5cbi8qIEVmZmV0IGRlIGJyaWxsYW5jZSBzdXIgbGUgYm91dG9uICovXG4uYnRuLXByaW1hcnk6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsMjU1LDI1NSwwLjQpLCB0cmFuc3BhcmVudCk7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAwLjZzIGVhc2U7XG59XG5cbi5idG4tcHJpbWFyeTpob3Zlcjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxMDAlO1xufVxuXG4uYnRuLXByaW1hcnk6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KSBzY2FsZSgxLjAyKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC40KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNWE2N2Q4IDAlLCAjNjY3ZWVhIDEwMCUpO1xufVxuXG4uYnRuLXByaW1hcnk6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMC45OCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuNCk7XG59XG5cbi8qIEJvdXRvbiByZXRvdXIgKi9cbi5idG4tc2Vjb25kYXJ5IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIHBhZGRpbmc6IDAuOHJlbSAxLjVyZW07XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYnV0dG9uLWJvcmRlci1yYWRpdXMpO1xuICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5idG4tc2Vjb25kYXJ5OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjMpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLyogPT09PT0gUkVTUE9OU0lWRSBDSEVDS09VVCA9PT09PSAqL1xuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuY2hlY2tvdXQtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgbWFyZ2luOiAxcmVtIGF1dG87XG4gICAgfVxuICAgIFxuICAgIC5jaGVja291dC1jb250ZW50IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogMnJlbTtcbiAgICB9XG4gICAgXG4gICAgLmNhcnQtc3VtbWFyeSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgfVxuICAgIFxuICAgIC5jYXJ0LXN1bW1hcnkgaDIsXG4gICAgLmNoZWNrb3V0LWZvcm0gaDIge1xuICAgICAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICB9XG4gICAgXG4gICAgLmNhcnQtc3VtbWFyeS1jb250ZW50LFxuICAgIC5jaGVja291dC1mb3JtLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxuICAgIFxuICAgIC5jaGVja291dC1pdGVtIHtcbiAgICAgICAgcGFkZGluZzogMS4ycmVtO1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAwLjhyZW07XG4gICAgfVxuICAgIFxuICAgIC5jaGVja291dC1pdGVtIC5pdGVtLXByaWNlIHtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgICBcbiAgICAuZm9ybS1yb3cge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgIH1cbiAgICBcbiAgICAuYnRuLXByaW1hcnkge1xuICAgICAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5jaGVja291dC1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgfVxuICAgIFxuICAgIC5jaGVja291dC1jb250ZW50IHtcbiAgICAgICAgZ2FwOiAxLjVyZW07XG4gICAgfVxuICAgIFxuICAgIC5jYXJ0LXN1bW1hcnkgaDIsXG4gICAgLmNoZWNrb3V0LWZvcm0gaDIge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICB9XG4gICAgXG4gICAgLmNhcnQtc3VtbWFyeS1jb250ZW50LFxuICAgIC5jaGVja291dC1mb3JtLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgIH1cbiAgICBcbiAgICAuY2hlY2tvdXQtaXRlbSB7XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgfVxuICAgIFxuICAgIC5jYXJ0LXRvdGFsIHtcbiAgICAgICAgcGFkZGluZzogMS4ycmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICB9XG4gICAgXG4gICAgLmNhcnQtdG90YWwgLmFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIH1cbn1cblxuLyogPT09PT0gRklOIFBBR0UgREUgRklOQUxJU0FUSU9OID09PT09ICovXG5cbi5jYXJ0LXRvZ2dsZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHJpZ2h0OiAycmVtO1xuICAgIGJvdHRvbTogMnJlbTtcbiAgICB3aWR0aDogNTBweDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjczMyk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggIzAwNTlhMTtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgb3BhY2l0eTogLjU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbn1cblxuLmNhcnQtdG9nZ2xlLnZpc2libGUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbn1cblxuLyogPT09PT0gUEFOSUVSIEZMT1RUQU5UIE1PREVSTkUgKENPSMOJUkVOVCBBVkVDIExFUyBDQVJURVMpID09PT09ICovXG5cbi5mbG9hdGluZy1jYXJ0IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgcmlnaHQ6IDJyZW07XG4gICAgYm90dG9tOiAycmVtO1xuICAgIHdpZHRoOiA0NjBweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXJkLWJnKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYXJkLWJvcmRlci1yYWRpdXMpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWNhcmQtc2hhZG93LWhvdmVyKTtcbiAgICBib3JkZXI6IHZhcigtLWNhcmQtYm9yZGVyKTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHNjYWxlKDAuOSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWF4LWhlaWdodDogODV2aDtcbn1cblxuLyogQmFycmUgc3Vww6lyaWV1cmUgY29sb3LDqWUgaW50w6lncsOpZSBkYW5zIGxlIGhlYWRlciAqL1xuLmZsb2F0aW5nLWNhcnQ6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2FyZC1ib3JkZXItcmFkaXVzKSB2YXIoLS1jYXJkLWJvcmRlci1yYWRpdXMpIDAgMDtcbn1cblxuLmZsb2F0aW5nLWNhcnQudmlzaWJsZSB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSBzY2FsZSgxKTtcbiAgICBhbmltYXRpb246IGNhcnRTbGlkZUluIDAuNXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbn1cblxuQGtleWZyYW1lcyBjYXJ0U2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKSBzY2FsZSgwLjkpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5mbG9hdGluZy1jYXJ0Lm1pbmltaXplZCB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpIHNjYWxlKDAuOSk7XG59XG5cbi8qIEhlYWRlciBtb2Rlcm5lIGF2ZWMgZ2xhc3Ntb3JwaGlzbSBldCBhcnJvbmRpIHBhcmZhaXQgKi9cbi5jYXJ0LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxLjVyZW0gMnJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2FyZC1ib3JkZXItcmFkaXVzKSB2YXIoLS1jYXJkLWJvcmRlci1yYWRpdXMpIDAgMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLXRvcDogMDsgLyogU3VwcHJlc3Npb24gZHUgbWFyZ2luIHBvdXIgdW4gYXJyb25kaSBwYXJmYWl0ICovXG4gICAgcGFkZGluZy10b3A6IGNhbGMoMS41cmVtICsgNHB4KTsgLyogQ29tcGVuc2F0aW9uIHBvdXIgbGEgYmFycmUgY29sb3LDqWUgKi9cbn1cblxuLmNhcnQtaGVhZGVyOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LDI1NSwyNTUsMC4yKSwgdHJhbnNwYXJlbnQpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC42cyBlYXNlO1xufVxuXG4uY2FydC1oZWFkZXI6aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmNhcnQtaGVhZGVyIGgzIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICB0ZXh0LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwwLDAsMC4zKTtcbn1cblxuLm1pbmltaXplLWNhcnQge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMTJweDtcbiAgICB3aWR0aDogNDVweDtcbiAgICBoZWlnaHQ6IDQ1cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuXG4ubWluaW1pemUtY2FydDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoOTBkZWcpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLDAsMCwwLjIpO1xufVxuXG4vKiBDb250ZW51IGR1IHBhbmllciBhdmVjIHN0eWxlIG1vZGVybmUgKi9cbi5jYXJ0LWl0ZW1zIHtcbiAgICBtYXgtaGVpZ2h0OiA1MDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IDEuNXJlbSAycmVtO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuXG4vKiBTdHlsZSBwb3VyIHNjcm9sbGJhciBwZXJzb25uYWxpc8OpZSAqL1xuLmNhcnQtaXRlbXM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogOHB4O1xufVxuXG4uY2FydC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuXG4uY2FydC1pdGVtczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG5cbi5jYXJ0LWl0ZW1zOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzVhNjdkOCAwJSwgIzY2N2VlYSAxMDAlKTtcbn1cblxuLyogQXJ0aWNsZXMgZHUgcGFuaWVyIGF2ZWMgc3R5bGUgZGVzIGNhcnRlcyAtIFZFUlNJT04gT1BUSU1JU8OJRSAqL1xuLmNhcnQtaXRlbSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3BlYy1iZyk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBwYWRkaW5nOiAxLjJyZW0gMS40cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAxLjJyZW07XG4gICAgbWluLWhlaWdodDogMTIwcHg7XG59XG5cbi5jYXJ0LWl0ZW06OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpLCB0cmFuc3BhcmVudCk7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7XG59XG5cbi5jYXJ0LWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLmNhcnQtaXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3BlYy1iZy1ob3Zlcik7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpIHNjYWxlKDEuMDEpO1xuICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjE1KTtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogIzRmNDZlNTtcbn1cblxuLml0ZW0taW1hZ2Uge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgYm94LXNoYWRvdzogMCAzcHggMTJweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMyk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogMC4ycmVtO1xufVxuXG4uaXRlbS1kZXRhaWxzIHtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbn1cblxuLml0ZW0tbmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBtYXJnaW46IDAgMCAwLjI1cmVtIDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gICAgbGluZS1jbGFtcDogMztcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWF4LWhlaWdodDogMy45ZW07XG59XG5cbi5pdGVtLXZlaGljbGUge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIG1hcmdpbjogMCAwIDAuNHJlbSAwO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgbGluZS1jbGFtcDogMjtcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWF4LWhlaWdodDogMi40ZW07XG59XG5cbi5pdGVtLXByaWNlIHtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBtYXJnaW46IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC4ycmVtO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnByaWNlLWh0IHtcbiAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC40cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbn1cblxuLyogQ29udHLDtGxlcyBkZSBxdWFudGl0w6kgbW9kZXJuZXMgLSBWRVJTSU9OIENPTVBBQ1RFICovXG4uaXRlbS1xdWFudGl0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC40cmVtO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xufVxuXG4uaXRlbS1jb250cm9scyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMC44cmVtO1xuICAgIG1hcmdpbi10b3A6IDAuM3JlbTtcbn1cblxuLnF1YW50aXR5LWJ0biB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JhZGllbnQtcHJpbWFyeSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBmb250LXNpemU6IDAuN3JlbTtcbn1cblxuLnF1YW50aXR5LWJ0bjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgM3B4IDEwcHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjQpO1xufVxuXG4ucXVhbnRpdHktYnRuOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjY2NjO1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5xdWFudGl0eS1pbnB1dCB7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbn1cblxuLnJlbW92ZS1mcm9tLWNhcnQge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjM5LCA2OCwgNjgsIDAuMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMzksIDY4LCA2OCwgMC4zKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICAgIGNvbG9yOiAjZWY0NDQ0O1xuICAgIHBhZGRpbmc6IDAuNHJlbSAwLjdyZW07XG4gICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjI1cmVtO1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG59XG5cbi5yZW1vdmUtZnJvbS1jYXJ0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZWY0NDQ0O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgyMzksIDY4LCA2OCwgMC4zKTtcbn1cblxuLyogUGFuaWVyIHZpZGUgYXZlYyBzdHlsZSBtb2Rlcm5lICovXG4uZW1wdHktY2FydCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDNyZW0gMXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG59XG5cbi5lbXB0eS1jYXJ0IGkge1xuICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5lbXB0eS1jYXJ0IHAge1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbWFyZ2luOiAwIDAgMS41cmVtIDA7XG59XG5cbi5idG4tYmFjay10by1zaG9wIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYnV0dG9uLWJvcmRlci1yYWRpdXMpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4zKTtcbn1cblxuLmJ0bi1iYWNrLXRvLXNob3A6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1idXR0b24tc2hhZG93LWhvdmVyKTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4vKiBGb290ZXIgZHUgcGFuaWVyIG1vZGVybmUgKi9cbi5jYXJ0LWZvb3RlciB7XG4gICAgcGFkZGluZzogMS44cmVtIDJyZW0gMnJlbTtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWZvb3Rlci1iZyk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE1cHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1jYXJkLWJvcmRlci1yYWRpdXMpIHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cyk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2FydC1mb290ZXI6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDFweDtcbn1cblxuLyogVG90YXV4IG1vZGVybmVzICovXG4uY2FydC10b3RhbHMge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLmNhcnQtc3VidG90YWwsXG4uY2FydC10YXgsXG4uY2FydC10b3RhbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwLjhyZW0gMDtcbiAgICBmb250LXNpemU6IDFyZW07XG59XG5cbi5jYXJ0LXN1YnRvdGFsIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmNhcnQtdGF4IHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmNhcnQtdG90YWwge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgcGFkZGluZy10b3A6IDFyZW07XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbn1cblxuLmFtb3VudCB7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG59XG5cbi8qIEJvdXRvbiBjb21tYW5kZXIgbW9kZXJuZSAqL1xuLmJ0bi1jaGVja291dCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMS4ycmVtIDEuOHJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgZm9udC1zaXplOiAxLjA1cmVtO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC44cHg7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMyk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcHJpbWFyeS1jb2xvcik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIEVmZmV0IGRlIGJyaWxsYW5jZSBzdXIgbGUgYm91dG9uICovXG4uYnRuLWNoZWNrb3V0OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LDI1NSwyNTUsMC40KSwgdHJhbnNwYXJlbnQpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC42cyBlYXNlO1xufVxuXG4uYnRuLWNoZWNrb3V0OmhvdmVyOjpiZWZvcmUge1xuICAgIGxlZnQ6IDEwMCU7XG59XG5cbi5idG4tY2hlY2tvdXQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KSBzY2FsZSgxLjAyKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC40KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNWE2N2Q4IDAlLCAjNjY3ZWVhIDEwMCUpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5idG4tY2hlY2tvdXQ6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMC45OCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuNCk7XG59XG5cbi8qIEJhZGdlIGRlIG5vbWJyZSBkJ2FydGljbGVzIG1vZGVybmUgKi9cbi5jYXJ0LWNvdW50IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IC8qIENhY2hlciBsZSBjb21wdGV1ciAqL1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAwLjRyZW0gMC44cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC40KTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuXG4vKiBOb3RpZmljYXRpb24gZCdleHBpcmF0aW9uIGR1IHBhbmllciAqL1xuLmNhcnQtZXhwaXJhdGlvbi1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDIwcHg7XG4gICAgcmlnaHQ6IDIwcHg7XG4gICAgei1pbmRleDogMTAwMDE7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmNmI2YiwgI2ZmYTUwMCk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMzJweCByZ2JhKDI1NSwgMTA3LCAxMDcsIDAuMyk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZUluUmlnaHQgMC4zcyBlYXNlLW91dCwgZmFkZU91dCAwLjNzIGVhc2UtaW4gNC43cyBmb3J3YXJkcztcbiAgICBtYXgtd2lkdGg6IDM1MHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4uY2FydC1leHBpcmF0aW9uLW5vdGlmaWNhdGlvbiAubm90aWZpY2F0aW9uLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNhcnQtZXhwaXJhdGlvbi1ub3RpZmljYXRpb24gLmZhcy5mYS1jbG9jayB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBvcGFjaXR5OiAwLjk7XG59XG5cbi5jYXJ0LWV4cGlyYXRpb24tbm90aWZpY2F0aW9uIC5ub3RpZmljYXRpb24tY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDhweDtcbiAgICByaWdodDogOHB4O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG59XG5cbi5jYXJ0LWV4cGlyYXRpb24tbm90aWZpY2F0aW9uIC5ub3RpZmljYXRpb24tY2xvc2U6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbn1cblxuQGtleWZyYW1lcyBzbGlkZUluUmlnaHQge1xuICAgIGZyb20ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0IHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbi8qIFRpbWVyIGR1IHBhbmllciAqL1xuLmNhcnQtdGltZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmNhcnQtdGltZXIgLmZhcy5mYS1jbG9jayB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIG9wYWNpdHk6IDAuOTtcbiAgICBjb2xvcjogIzU1NTtcbn1cblxuLmNhcnQtdGltZXIgc3BhbiB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgbWluLXdpZHRoOiA0MHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLyogQW5pbWF0aW9uIHB1bHNlIHBvdXIgbGVzIGRlcm5pw6hyZXMgc2Vjb25kZXMgKi9cbkBrZXlmcmFtZXMgdGltZXJQdWxzZSB7XG4gICAgMCUgeyBcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgIH1cbiAgICA1MCUgeyBcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjM2LCAyMzYsIDAuOTUpO1xuICAgIH1cbiAgICAxMDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICB9XG59XG5cbi5jYXJ0LXRpbWVyW2RhdGEtdXJnZW50PVwidHJ1ZVwiXSB7XG4gICAgYW5pbWF0aW9uOiB0aW1lclB1bHNlIDFzIGluZmluaXRlO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyMzYsIDIzNiwgMC45NSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIxMSwgNDcsIDQ3LCAwLjMpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgyMTEsIDQ3LCA0NywgMC4yKTtcbn1cblxuLyogQWRhcHRhdGlvbiBkdSBoZWFkZXIgcG91ciBpbmNsdXJlIGxlIHRpbWVyICovXG4uY2FydC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogMTZweCAyMHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHggMTZweCAwIDA7XG4gICAgZ2FwOiAxMHB4O1xufVxuXG4uY2FydC1oZWFkZXIgaDMge1xuICAgIG1hcmdpbjogMDtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmNhcnQtY291bnQge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1pbi13aWR0aDogMjBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5taW5pbWl6ZS1jYXJ0IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm1pbmltaXplLWNhcnQ6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi8qIFJlc3BvbnNpdmUgcG91ciBtb2JpbGUgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5jYXJ0LXRpbWVyIHtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBnYXA6IDRweDtcbiAgICB9XG4gICAgXG4gICAgLmNhcnQtdGltZXIgc3BhbiB7XG4gICAgICAgIG1pbi13aWR0aDogMzBweDtcbiAgICB9XG4gICAgXG4gICAgLmNhcnQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG4gICAgXG4gICAgLmNhcnQtaGVhZGVyIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cbn0iLCJib2R5LmxvZ2luLXBhZ2Uge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEsICM3NjRiYTIpO1xuICAgIG1hcmdpbjogMDtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4ubG9naW4tY29udGFpbmVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgcGFkZGluZzogMXJlbTtcbn1cblxuLmxvZ2luLWJveCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLDAsMCwuMTUpO1xuICAgIG1heC13aWR0aDogMzgwcHg7XG4gICAgcGFkZGluZzogMi41cmVtIDNyZW07XG4gICAgd2lkdGg6IDkwJTtcbn1cblxuYm9keS5sb2dpbi1wYWdlIC5sb2dpbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbmJvZHkubG9naW4tcGFnZSAubG9naW4tbG9nbyB7XG4gICAgd2lkdGg6IDE4MHB4O1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCA0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG59XG5cbiNsb2dpbi1sb2dvIHtcbiAgICB3aWR0aDogMjAwcHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuXG4jbG9naW4tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogY2xhbXAoMS41cmVtLCAzdncsIDJyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCAjMDA1OUExLCAjMDAzMzY2KTtcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRleHQtc2hhZG93OiBub25lO1xufVxuXG4ubG9naW4tZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogLjVyZW07XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5sb2dpbi1jb250YWluZXIgLmZvcm0tZ3JvdXAge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbn1cblxuLmxvZ2luLWNvbnRhaW5lciAuZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIGNvbG9yOiAjNGE1NTY4O1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4ubG9naW4tY29udGFpbmVyIC5mb3JtLWdyb3VwIGxhYmVsIGkge1xuICAgIGNvbG9yOiAjNmI3MjgwO1xuICAgIHdpZHRoOiAxNnB4O1xufVxuXG4ubG9naW4tY29udGFpbmVyIC5mb3JtLWdyb3VwIGlucHV0IHtcbiAgICB3aWR0aDogOTUlO1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjZTJlOGYwO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG59XG5cbi5sb2dpbi1jb250YWluZXIgLmZvcm0tZ3JvdXAgaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjNjY3ZWVhO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDEwMiwxMjYsMjM0LDAuMSk7XG59XG5cbi5sb2dpbi1jb250YWluZXIgLmJ0bi1wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY3ZWVhO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIHBhZGRpbmc6IDAuODc1cmVtIDEuNXJlbTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxcmVtKTtcbiAgICBtYXJnaW46IDFyZW0gMC41cmVtO1xufVxuXG4ubG9naW4tY29udGFpbmVyIC5idG4tcHJpbWFyeTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVhNjdkODtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi5sb2dpbi1jb250YWluZXIgLmJ0bi1wcmltYXJ5OmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4uYWxlcnQge1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4uYWxlcnQtZGFuZ2VyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmNWY1O1xuICAgIGNvbG9yOiAjYzUzMDMwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZWIyYjI7XG59XG5cbi5hbGVydC1kYW5nZXIgaSB7XG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgICAubG9naW4tYm94IHtcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICAgICAgbWFyZ2luOiAxcmVtO1xuICAgIH1cbiAgICBcbiAgICAubG9naW4tbG9nbyB7XG4gICAgICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgfVxuICAgIFxuICAgIC5sb2dpbi1oZWFkZXIgaDEge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG59XG5cbi8qIEFqb3V0IGRlcyBzdHlsZXMgcG91ciBsJ2luc2NyaXB0aW9uICovXG4uYXV0aC1saW5rcyB7XG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmF1dGgtbGlua3MgYSB7XG4gICAgY29sb3I6ICMwMDU5QTE7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTtcbn1cblxuLmF1dGgtbGlua3MgYTpob3ZlciB7XG4gICAgY29sb3I6ICMwMDMzNjY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi8qIFN0eWxlIHBvdXIgbGVzIG1lc3NhZ2VzIGRlIHZhbGlkYXRpb24gKi9cbi5mb3JtLWVycm9yIHtcbiAgICBjb2xvcjogI2RjMzU0NTtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG59XG5cbi5mb3JtLWVycm9yIGkge1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4vKiBTdHlsZSBwb3VyIGxlIGZvcm11bGFpcmUgZCdpbnNjcmlwdGlvbiAqL1xuLmxvZ2luLWZvcm0gLnBhc3N3b3JkLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4ubG9naW4tZm9ybSAucGFzc3dvcmQtZ3JvdXA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi8qIEFkYXB0YXRpb24gcmVzcG9uc2l2ZSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLmxvZ2luLWJveCB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG4gICAgXG4gICAgLmF1dGgtbGlua3Mge1xuICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgIH1cbn1cblxuLyogU3R5bGUgcG91ciBsZXMgY2hhbXBzIGRlIGZvcm11bGFpcmUgKi9cbi5mb3JtLWNvbnRyb2wge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLmZvcm0tY29udHJvbDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICMwMDU5QTE7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoMCwgODksIDE2MSwgMC4xKTtcbn1cblxuLyogU3R5bGUgcG91ciBsZXMgbGFiZWxzICovXG4uZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICBjb2xvcjogIzAwMzM2NjtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZm9ybS1ncm91cCBsYWJlbCBpIHtcbiAgICBjb2xvcjogIzAwNTlBMTtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLyogRXNwYWNlbWVudCBlbnRyZSBsZXMgZ3JvdXBlcyBkZSBmb3JtdWxhaXJlICovXG4uZm9ybS1ncm91cCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4uZm9ybS1ncm91cDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi8qIFN0eWxlIGR1IGJvdXRvbiAqL1xuLmJ0bi1wcmltYXJ5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgIzAwNTlBMSwgIzAwMzM2Nik7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG59XG5cbi5idG4tcHJpbWFyeTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCA4OSwgMTYxLCAwLjIpO1xufVxuXG4uYnRuLXByaW1hcnkgaSB7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG59ICIsIi5jb250ZW50LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIHBhZGRpbmc6IDFyZW0gMnJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwwLDAsMC4xKTtcbn1cblxuLnVzZXJzLWZpbHRlcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxcmVtO1xuICAgIG1hcmdpbjogMCAycmVtIDJyZW07XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwwLDAsMC4xKTtcbn1cblxuXG4uc2VhcmNoLWJveCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDE7XG59XG5cbi5zZWFyY2gtYm94IGkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxcmVtO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogIzY2Njtcbn1cblxuLnNlYXJjaC1ib3ggaW5wdXQge1xuICAgIHdpZHRoOiA1MCU7XG4gICAgcGFkZGluZzogMC44cmVtIDFyZW0gMC44cmVtIDIuNXJlbTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnVzZXJzLXRhYmxlIHtcbiAgICBtYXJnaW46IDAgMnJlbTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwwLDAsMC4xKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udXNlcnMtdGFibGUgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbi51c2Vycy10YWJsZSB0aCxcbi51c2Vycy10YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xufVxuXG4udXNlcnMtdGFibGUgdGgge1xuICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogIzE4M2Y3Mjtcbn1cblxuLnJvbGUtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xufVxuXG4ucm9sZS1iYWRnZS5yb2xlX2FkbWluIHtcbiAgICBiYWNrZ3JvdW5kOiAjMTgzZjcyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnJvbGUtYmFkZ2Uucm9sZV91c2VyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZTllY2VmO1xuICAgIGNvbG9yOiAjNjY2O1xufVxuXG4uYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBoZWlnaHQ6IDEwMHB4O1xufVxuXG4uYnRuLWljb24ge1xuICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogIzY2NjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbn1cblxuLmJ0bi1pY29uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgIGNvbG9yOiAjMTgzZjcyO1xufVxuXG4uYnRuLWljb24uZGVsZXRlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmVlMmUyO1xuICAgIGNvbG9yOiAjZGMyNjI2O1xufVxuXG4uYWRtaW4tbWFpbiB7XG4gICAgZmxleDogMTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgaGVpZ2h0OiAxMDB2aDtcbn1cblxuLm1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuXG4ubW9kYWwuYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubW9kYWwtY29udGVudCB7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgcGFkZGluZzogMnJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgICBtYXgtaGVpZ2h0OiA5MHZoO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIGNvbG9yOiAjMTgzZjcyO1xufVxuXG4uZm9ybS1ncm91cCBpbnB1dCxcbi5mb3JtLWdyb3VwIHNlbGVjdCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMC44cmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuXG4ubW9kYWwtYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogMXJlbTtcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xufVxuXG4ubm90aWZpY2F0aW9uIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAyMHB4O1xuICAgIHJpZ2h0OiAyMHB4O1xuICAgIHBhZGRpbmc6IDFyZW0gMnJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHotaW5kZXg6IDExMDA7XG4gICAgYW5pbWF0aW9uOiBzbGlkZUluIDAuM3MgZWFzZS1vdXQ7XG59XG5cbi5ub3RpZmljYXRpb24uc3VjY2VzcyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzEwQjk4MTtcbn1cblxuLm5vdGlmaWNhdGlvbi5lcnJvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0VGNDQ0NDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi5mbGFzaC1tZXNzYWdlcyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICB6LWluZGV4OiAxMTAwO1xufVxuXG4uZmxhc2gtbWVzc2FnZSB7XG4gICAgcGFkZGluZzogMXJlbSAycmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGFuaW1hdGlvbjogc2xpZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG4uZmxhc2gtbWVzc2FnZS5zdWNjZXNzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmZsYXNoLW1lc3NhZ2UuZXJyb3Ige1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn0gIiwiLyogVGFibGUgcHJpbmNpcGFsZSAqL1xuLnByZXN0YXRpb25zLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjEpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5wcmVzdGF0aW9ucy10YWJsZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuLnByZXN0YXRpb25zLXRhYmxlIHRoLFxuLnByZXN0YXRpb25zLXRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBoZWlnaHQ6IDgwcHg7XG59XG5cbi5wcmVzdGF0aW9ucy10YWJsZSB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG59XG5cbi5wcmVzdGF0aW9ucy10YWJsZSB0cjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbn1cblxuLyogU2VydmljZSBpbmZvIGF2ZWMgaW1hZ2UgKi9cbi5zZXJ2aWNlLWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDFyZW07XG4gICAgbWF4LXdpZHRoOiA0MDBweDtcbn1cblxuLnNlcnZpY2UtaW5mbyAuc2VydmljZS10aHVtYm5haWwge1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwwLDAsMC4xKTtcbn1cblxuLnNlcnZpY2UtaW5mbyBkaXYge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwOyAvKiBQb3VyIHF1ZSBsJ2VsbGlwc2lzIGZvbmN0aW9ubmUgKi9cbn1cblxuLnNlcnZpY2UtaW5mbyBzdHJvbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbG9yOiAjMmMzZTUwO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG59XG5cbi5zZXJ2aWNlLWRlc2NyaXB0aW9uIHtcbiAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiBQcml4ICovXG4ucHJlc3RhdGlvbnMtdGFibGUgdGQucHJpeCB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAjMmMzZTUwO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHBhZGRpbmctcmlnaHQ6IDJyZW07XG59XG5cbi8qIEFjdGlvbnMgKi9cbi5wcmVzdGF0aW9ucy10YWJsZSB0ZC5hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMC41cmVtO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIHdpZHRoOiAxMDBweDtcbiAgICBoZWlnaHQ6IDEyMHB4O1xufVxuXG4ucHJlc3RhdGlvbnMtdGFibGUgdGQuYWN0aW9ucyAuaW5saW5lLWZvcm0ge1xuICAgIG1hcmdpbjogMDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbn1cblxuLnByZXN0YXRpb25zLXRhYmxlIHRkLmFjdGlvbnMgLmJ0bi1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG59XG5cbi5wcmVzdGF0aW9ucy10YWJsZSB0ZC5hY3Rpb25zIC5idG4taWNvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbiAgICBjb2xvcjogIzQ5NTA1Nztcbn1cblxuLnByZXN0YXRpb25zLXRhYmxlIHRkLmFjdGlvbnMgLmJ0bi1pY29uLmRlbGV0ZSB7XG4gICAgY29sb3I6ICNkYzM1NDU7XG59XG5cbi5wcmVzdGF0aW9ucy10YWJsZSB0ZC5hY3Rpb25zIC5idG4taWNvbi5kZWxldGU6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZGU4ZTg7XG4gICAgY29sb3I6ICNiZDIxMzA7XG59XG5cbi8qIEZpbHRyZXMgZXQgcmVjaGVyY2hlICovXG4ucHJlc3RhdGlvbnMtZmlsdGVycyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDFyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5zZWFyY2gtYm94IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMTtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xufVxuXG4uc2VhcmNoLWJveCBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtIDAuNzVyZW0gMi41cmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4uc2VhcmNoLWJveCBpbnB1dDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwxMjMsMjU1LDAuMjUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uc2VhcmNoLWJveCBpbnB1dDpmb2N1czo6cGxhY2Vob2xkZXIge1xuICAgIG9wYWNpdHk6IDAuNTtcbn1cblxuLnNlYXJjaC1ib3ggaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLnNlYXJjaC1ib3ggaSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDFyZW07XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4vKiBTdHlsZSBkZXMgZm9ybXVsYWlyZXMgZGFucyBsZXMgbW9kYWxlcyAqL1xuLm1vZGFsIC5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5tb2RhbCAuZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICM0OTUwNTc7XG59XG5cbi5tb2RhbCAuZm9ybS1ncm91cCBzZWxlY3QsXG4ubW9kYWwgLmZvcm0tZ3JvdXAgaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4ubW9kYWwgLmZvcm0tZ3JvdXAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbn1cblxuLm1vZGFsIC5mb3JtLWdyb3VwIHNlbGVjdDpmb2N1cyxcbi5tb2RhbCAuZm9ybS1ncm91cCBpbnB1dDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwxMjMsMjU1LDAuMjUpO1xufVxuXG4uZm9ybS1ncm91cCBzZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1zaXplOiAxcmVtO1xufVxuXG4uZm9ybS1ncm91cCBzZWxlY3Qgb3B0aW9uIHtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbi52ZWhpY2xlLWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDAuMjVyZW07XG59XG5cbi52ZWhpY2xlLWluZm8gc3Ryb25nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb2xvcjogIzJjM2U1MDtcbiAgICBmb250LXNpemU6IDFyZW07XG59XG5cbi52ZWhpY2xlLWRldGFpbHMge1xuICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLmNhbGN1bGF0ZXVyLWRldGFpbHMge1xuICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7XG59XG5cbi8qIFBhZ2luYXRpb24gKi9cbi5wYWdpbmF0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxcmVtO1xuICAgIG1hcmdpbjogMnJlbSAwO1xuICAgIHBhZGRpbmc6IDFyZW07XG59XG5cbi5idG4tcGFnaW5hdGlvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4uYnRuLXBhZ2luYXRpb246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gICAgY29sb3I6ICMyMTI1Mjk7XG59XG5cbi5wYWdpbmF0aW9uLWluZm8ge1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4uZmlsdGVycy1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDFyZW07XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnNlYXJjaC1pbnB1dCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDI7XG59XG5cbi5tb3RvcmlzYXRpb24tc2VsZWN0IHtcbiAgICBmbGV4OiAxO1xufVxuXG4ubW90b3Jpc2F0aW9uLXNlbGVjdCBzZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5tb3RvcmlzYXRpb24tc2VsZWN0IHNlbGVjdDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICM4MGJkZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwxMjMsMjU1LDAuMjUpO1xufVxuXG4vKiBCdXR0b24gZ3JvdXAgaW4gaGVhZGVyICovXG4uY29udGVudC1oZWFkZXIgLmJ1dHRvbi1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDFyZW07XG59XG5cbi5pbmZvLXRleHQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjMDA1OUExO1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGNvbG9yOiAjNjY2O1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uaW5mby10ZXh0IGkge1xuICAgIGNvbG9yOiAjMDA1OUExO1xuICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xufVxuXG4vKiBOb3RpZmljYXRpb24gKi9cbi5ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDIwcHg7XG4gICAgcmlnaHQ6IDIwcHg7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIHotaW5kZXg6IDk5OTk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEyMCUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG4gICAgbWF4LXdpZHRoOiAzNTBweDtcbn1cblxuLm5vdGlmaWNhdGlvbi5zaG93IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi5ub3RpZmljYXRpb24uc3VjY2VzcyB7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjNENBRjUwO1xufVxuXG4ubm90aWZpY2F0aW9uLmVycm9yIHtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkICNGNDQzMzY7XG59XG5cbi5ub3RpZmljYXRpb24tY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcbn1cblxuLm5vdGlmaWNhdGlvbi1jb250ZW50IGkuZmEtY2hlY2stY2lyY2xlIHtcbiAgICBjb2xvcjogIzRDQUY1MDtcbn1cblxuLm5vdGlmaWNhdGlvbi1jb250ZW50IGkuZmEtZXhjbGFtYXRpb24tY2lyY2xlIHtcbiAgICBjb2xvcjogI0Y0NDMzNjtcbn1cblxuLyogQm91dG9uIGRlIGTDqW1vbnN0cmF0aW9uICovXG4uYnRuLWRlbW8ge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZjZiNmIsICNlZTVhNTIpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMjU1LCAxMDcsIDEwNywgMC4zKTtcbn1cblxuLmJ0bi1kZW1vOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZWU1YTUyLCAjZmY2YjZiKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDI1NSwgMTA3LCAxMDcsIDAuNCk7XG59XG5cbi5idG4tZGVtbzphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLmJ0bi1kZW1vOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi5idG4tZGVtbyBpIHtcbiAgICBmb250LXNpemU6IDFyZW07XG59IiwiLyogVGFibGUgcHJpbmNpcGFsZSAqL1xuLnNlcnZpY2VzLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjEpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5zZXJ2aWNlcy10YWJsZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuLnNlcnZpY2VzLXRhYmxlIHRoLFxuLnNlcnZpY2VzLXRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLnNlcnZpY2VzLXRhYmxlIHRoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICM0OTUwNTc7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG59XG5cbi5zZXJ2aWNlcy10YWJsZSB0cjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbn1cblxuLyogSW1hZ2VzIGRhbnMgbGEgdGFibGUgKi9cbi5zZXJ2aWNlLXRodW1ibmFpbCB7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjEpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBEZXNjcmlwdGlvbiBkYW5zIGxhIHRhYmxlICovXG4uc2VydmljZS1kZXNjcmlwdGlvbiB7XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qIEJvdXRvbnMgZCdhY3Rpb24gKi9cbi5idG4taWNvbiB7XG4gICAgcGFkZGluZzogMC41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG59XG5cbi5idG4taWNvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjtcbiAgICBjb2xvcjogIzQ5NTA1Nztcbn1cblxuLyogTW9kYWwgZCfDqWRpdGlvbiAqL1xuLm1vZGFsLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogIzQ5NTA1Nztcbn1cblxuLmZvcm0tZ3JvdXAgaW5wdXRbdHlwZT1cInRleHRcIl0sXG4uZm9ybS1ncm91cCB0ZXh0YXJlYSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMC43NXJlbTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LXNpemU6IDFyZW07XG59XG5cbi5mb3JtLWdyb3VwIHRleHRhcmVhIHtcbiAgICBtaW4taGVpZ2h0OiAxMjBweDtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG4vKiBJbWFnZXMgZGFucyBsZSBmb3JtdWxhaXJlICovXG4uY3VycmVudC1pbWFnZSxcbi5pbWFnZS1wcmV2aWV3IHtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7XG59XG5cbi5pbWFnZS1wcmV2aWV3IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBGaWx0cmVzIGV0IHJlY2hlcmNoZSAqL1xuLnNlcnZpY2VzLWZpbHRlcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uc2VhcmNoLWJveCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDE7XG4gICAgbWF4LXdpZHRoOiA0MDBweDtcbn1cblxuLnNlYXJjaC1ib3ggaSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDFyZW07XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4uc2VhcmNoLWJveCBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtIDAuNzVyZW0gMi41cmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycztcbn1cblxuLnNlYXJjaC1ib3ggaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjODBiZGZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsMTIzLDI1NSwwLjI1KTtcbn1cblxuXG4udGQuYWN0aW9ucyB7XG4gICAgaGVpZ2h0OiAxMDBweDtcbn1cblxuLnNlcnZpY2VzLXRhYmxlIHRkLmFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuXG4uc2VydmljZXMtdGFibGUgdGQuYWN0aW9ucyAuaW5saW5lLWZvcm0ge1xuICAgIG1hcmdpbjogMDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbn1cblxuLnNlcnZpY2VzLXRhYmxlIHRkLmFjdGlvbnMgLmJ0bi1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xufVxuXG4uc2VydmljZXMtdGFibGUgdGQuYWN0aW9ucyAuYnRuLWljb24uZGVsZXRlIHtcbiAgICBjb2xvcjogI2RjMzU0NTtcbn1cblxuLnNlcnZpY2VzLXRhYmxlIHRkLmFjdGlvbnMgLmJ0bi1pY29uLmRlbGV0ZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZThlODtcbiAgICBjb2xvcjogI2JkMjEzMDtcbn0iLCIvKiBIZWFkZXIgZXQgY29udGVuZXVyIHByaW5jaXBhbCAqL1xuLmNvbnRlbnQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5jb250ZW50LWhlYWRlciBoMiB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgY29sb3I6ICMyYzNlNTA7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKiBGaWx0cmVzIGV0IHJlY2hlcmNoZSAqL1xuLm9yZGVycy1maWx0ZXJzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuLnNlYXJjaC1ib3gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4OiAxO1xuICAgIG1heC13aWR0aDogNDAwcHg7XG59XG5cbi5zZWFyY2gtYm94IGkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxcmVtO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogIzZjNzU3ZDtcbn1cblxuLnNlYXJjaC1ib3ggaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMXJlbSAwLjc1cmVtIDIuNXJlbTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LXNpemU6IDFyZW07XG59XG5cbi5zZWFyY2gtYm94IGlucHV0OmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogIzgwYmRmZjtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLDEyMywyNTUsMC4yNSk7XG59XG5cbi5zdGF0dXMtZmlsdGVyIHNlbGVjdCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAyLjVyZW0gMC43NXJlbSAxcmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnN0YXR1cy1maWx0ZXIgc2VsZWN0OmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogIzgwYmRmZjtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLDEyMywyNTUsMC4yNSk7XG59XG5cbi8qIFNlbGVjdCBkZSBzdGF0dXQgaW50ZXJhY3RpZiAqL1xuLnN0YXR1cy1zZWxlY3Qge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAyLjVyZW0gMC41cmVtIDAuNzVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCclM2UlM2Nwb2x5bGluZSBwb2ludHM9JzYsOSAxMiwxNSAxOCw5JyUzZSUzYy9wb2x5bGluZSUzZSUzYy9zdmclM2VcIik7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjc1cmVtIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDFyZW07XG59XG5cbi5zdGF0dXMtc2VsZWN0OmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogIzgwYmRmZjtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLDEyMywyNTUsMC4yNSk7XG59XG5cbi5zdGF0dXMtc2VsZWN0OmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6ICNiYmI7XG59XG5cbi8qIFRhYmxlIHByaW5jaXBhbGUgKi9cbi5vcmRlcnMtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm9yZGVycy10YWJsZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuLm9yZGVycy10YWJsZSB0aCxcbi5vcmRlcnMtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4ub3JkZXJzLXRhYmxlIHRoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICM0OTUwNTc7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG59XG5cbi5vcmRlcnMtdGFibGUgdHI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG59XG5cbi8qIEluZm9ybWF0aW9ucyBjbGllbnQgKi9cbi5jbGllbnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMC4yNXJlbTtcbn1cblxuLmNsaWVudC1pbmZvIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLyogTGlzdGUgZGVzIHByZXN0YXRpb25zICovXG4ucHJlc3RhdGlvbnMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMC41cmVtO1xufVxuXG4ucHJlc3RhdGlvbi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxcmVtO1xuICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG59XG5cbi5wcmVzdGF0aW9uLWl0ZW0gLnNlcnZpY2Uge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLWdyYXktODAwKTtcbn1cblxuLnByZXN0YXRpb24taXRlbSAudmVoaWNsZSB7XG4gICAgY29sb3I6IHZhcigtLWdyYXktNjAwKTtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLnByZXN0YXRpb24taXRlbSAucHJpY2Uge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXN1Y2Nlc3MpO1xufVxuXG4vKiBCYWRnZXMgZGUgc3RhdHV0ICovXG4uc3RhdHVzLWJhZGdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAuMzVyZW0gMC43NXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uc3RhdHVzLWJhZGdlLmVuX2F0dGVudGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdhcm5pbmctbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS13YXJuaW5nLWRhcmspO1xufVxuXG4uc3RhdHVzLWJhZGdlLmNvbmZpcm1lZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5mby1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLWluZm8tZGFyayk7XG59XG5cbi5zdGF0dXMtYmFkZ2UuZW5fY291cnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LWRhcmspO1xufVxuXG4uc3RhdHVzLWJhZGdlLnRlcm1pbmVlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zdWNjZXNzLWxpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tc3VjY2Vzcy1kYXJrKTtcbn1cblxuLnN0YXR1cy1iYWRnZS5hbm51bGVlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kYW5nZXItbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1kYW5nZXItZGFyayk7XG59XG5cbi8qIEFjdGlvbnMgKi9cbi5hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMC41cmVtO1xufVxuXG4uYnRuLWljb24ge1xuICAgIHdpZHRoOiAyLjVyZW07XG4gICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgY29sb3I6IHZhcigtLWdyYXktNjAwKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmF5LTIwMCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLmJ0bi1pY29uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLWdyYXktODAwKTtcbn1cblxuLyogTW9kYWxlcyAqL1xuLm1vZGFsLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5vcmRlci1kZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAycmVtO1xufVxuXG4uZGV0YWlsLXNlY3Rpb24ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ncmF5LTIwMCk7XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcbn1cblxuLmRldGFpbC1zZWN0aW9uOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG59XG5cbi5kZXRhaWwtc2VjdGlvbiBoNCB7XG4gICAgY29sb3I6IHZhcigtLWdyYXktNzAwKTtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4vKiBJbmZvcm1hdGlvbnMgY2xpZW50IGRhbnMgbGEgbW9kYWxlICovXG4uY2xpZW50LWRldGFpbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmF5LTUwKTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbn1cblxuLmNsaWVudC1kZXRhaWxzIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICBjb2xvcjogdmFyKC0tZ3JheS02MDApO1xufVxuXG4uY2xpZW50LWRldGFpbHMgc3Ryb25nIHtcbiAgICBjb2xvcjogdmFyKC0tZ3JheS04MDApO1xufVxuXG4vKiBQcmVzdGF0aW9ucyBkYW5zIGxhIG1vZGFsZSAqL1xuLnByZXN0YXRpb25zLWRldGFpbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDFyZW07XG59XG5cbi5wcmVzdGF0aW9uLWRldGFpbC1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZ3JheS01MCk7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG59XG5cbi5zZXJ2aWNlLWluZm8gaDUge1xuICAgIGNvbG9yOiB2YXIoLS1ncmF5LTgwMCk7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIG1hcmdpbjogMCAwIDAuMjVyZW0gMDtcbn1cblxuLnNlcnZpY2UtaW5mbyBwIHtcbiAgICBjb2xvcjogdmFyKC0tZ3JheS02MDApO1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnZlaGljbGUtaW5mbyB7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xufVxuXG4udmVoaWNsZS1pbmZvIHAge1xuICAgIG1hcmdpbjogMC4yNXJlbSAwO1xuICAgIGNvbG9yOiB2YXIoLS1ncmF5LTYwMCk7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jYWxjdWxhdGV1ci1pbmZvIHtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgY29sb3I6IHZhcigtLWdyYXktNTAwKTtcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xufVxuXG4vKiBGb3JtdWxhaXJlIGQnw6lkaXRpb24gKi9cbi5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgY29sb3I6IHZhcigtLWdyYXktNzAwKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZm9ybS1ncm91cCBzZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3JheS0yMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td2hpdGUpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi5mb3JtLWdyb3VwIHNlbGVjdDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tcHJpbWFyeS1saWdodCk7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuLyogQWN0aW9ucyBkZSBsYSBtb2RhbGUgKi9cbi5tb2RhbC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiAxcmVtO1xuICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgcGFkZGluZy10b3A6IDEuNXJlbTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tZ3JheS0yMDApO1xufVxuXG4uYnRuLXNlY29uZGFyeSB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3JheS0yMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLWdyYXktNzAwKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi5idG4tc2Vjb25kYXJ5OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmF5LTUwKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWdyYXktMzAwKTtcbn1cblxuLmJ0bi1wcmltYXJ5IHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4uYnRuLXByaW1hcnk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktZGFyayk7XG59XG5cbi8qIE5vdGlmaWNhdGlvbnMgdGVtcG9yYWlyZXMgKi9cbi5hbGVydCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIGFuaW1hdGlvbjogc2xpZGVJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG4uYWxlcnQtc3VjY2VzcyB7XG4gICAgY29sb3I6ICMxNTU3MjQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTtcbiAgICBib3JkZXItY29sb3I6ICNjM2U2Y2I7XG59XG5cbi5hbGVydC1kYW5nZXIge1xuICAgIGNvbG9yOiAjNzIxYzI0O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGQ3ZGE7XG4gICAgYm9yZGVyLWNvbG9yOiAjZjVjNmNiO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIH1cbn0iLCIvKiBIZWFkZXIgZXQgY29udGVuZXVyIHByaW5jaXBhbCAqL1xuLmNvbnRlbnQtaGVhZGVyIHtcbiAgICBwYWRkaW5nOiAyLjVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMTVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLCAxMDYsIDI1NSwgMC4xNSk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5jb250ZW50LWhlYWRlcjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpKTtcbiAgICB0cmFuc2Zvcm06IHNrZXdYKC0xNWRlZyk7XG59XG5cbi5jb250ZW50LWhlYWRlciBoMiB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1zaGFkb3c6IDJweCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxcmVtO1xufVxuXG4vKiBUYWJsZSBwcmluY2lwYWxlICovXG4udmVoaWNsZXMtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnZlaGljbGVzLXRhYmxlIHRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuXG4udmVoaWNsZXMtdGFibGUgdGgsXG4udmVoaWNsZXMtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4udmVoaWNsZXMtdGFibGUgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogIzQ5NTA1NztcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbn1cblxuLnZlaGljbGVzLXRhYmxlIHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbn1cblxuLnZlaGljbGVzLXRhYmxlIHRyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xufVxuXG4vKiBEZXNjcmlwdGlvbiBkYW5zIGxhIHRhYmxlICovXG4udmVoaWNsZS1kZXNjcmlwdGlvbiB7XG4gICAgbWF4LXdpZHRoOiA0MDBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgY29sb3I6ICM2Yzc1N2Q7XG59XG5cbi8qIEJhcnJlIGRlIHJlY2hlcmNoZSAqL1xuLnNlYXJjaC1iYXIge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMTVweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMjU1LCA3NywgMCwgMC4xKTtcbiAgICBtYXJnaW46IC0zcmVtIDJyZW0gMnJlbSAycmVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxcmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxMDtcbn1cblxuLnNlYXJjaC1iYXIgaW5wdXQge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogMS4ycmVtIDEuNXJlbTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwgNzcsIDAsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xufVxuXG4uc2VhcmNoLWJhciBpbnB1dDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICNmZjRkMDA7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNXB4IHJnYmEoMjU1LCA3NywgMCwgMC4xKTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbn1cblxuLnNlYXJjaC1iYXIgYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAxcmVtIDJyZW07XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwN0JGRiAwJSwgIzAwNTZiMyAxMDAlKTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBmb250LXNpemU6IDFyZW07XG59XG5cbi5zZWFyY2gtYmFyIGJ1dHRvbjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDIwcHggcmdiYSgyNTUsIDc3LCAwLCAwLjIpO1xufVxuXG4vKiBCb3V0b25zIGQnYWN0aW9uICovXG4uYnRuLXByaW1hcnkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XG59XG5cbi5idG4tcHJpbWFyeTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNTZiMztcbn1cblxuLmJ0bi1pY29uIHtcbiAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbn1cblxuLmJ0bi1pY29uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICAgIGNvbG9yOiAjNDk1MDU3O1xufVxuXG4uYnRuLWljb24uZGVsZXRlIHtcbiAgICBjb2xvcjogI2RjMzU0NTtcbn1cblxuLmJ0bi1pY29uLmRlbGV0ZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZThlODtcbiAgICBjb2xvcjogI2JkMjEzMDtcbn1cblxuLyogQWN0aW9ucyBkYW5zIGxhIHRhYmxlICovXG4uYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDAuOHJlbTtcbn1cblxuLmlubGluZS1mb3JtIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG59XG5cbi8qIE1vZGFsZXMgKi9cbi5tb2RhbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC41KTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIHBhZGRpbmc6IDFyZW07XG59XG5cbi5tb2RhbC5hY3RpdmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLm1vZGFsLWNvbnRlbnQge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwYWRkaW5nOiAycmVtO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgbWF4LWhlaWdodDogOTB2aDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4ubW9kYWwtY29udGVudCBoMyB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gICAgY29sb3I6ICMyYzNlNTA7XG59XG5cbi8qIEZvcm11bGFpcmVzICovXG4uZm9ybS1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLmZvcm0tZ3JvdXAuaGFsZiB7XG4gICAgZmxleDogMTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICM0OTUwNTc7XG59XG5cbi5mb3JtLWdyb3VwIGlucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuLmZvcm0tZ3JvdXAgaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjODBiZGZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsMTIzLDI1NSwwLjI1KTtcbn1cblxuLyogQWN0aW9ucyBkZSBsYSBtb2RhbGUgKi9cbi5tb2RhbC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiAxcmVtO1xuICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgcGFkZGluZy10b3A6IDFyZW07XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7XG59XG5cbi5idG4tc2Vjb25kYXJ5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XG59XG5cbi5idG4tc2Vjb25kYXJ5OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWE2MjY4O1xufVxuXG4vKiBNZXNzYWdlcyBkJ2FsZXJ0ZSAqL1xuLmFsZXJ0IHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuXG4uYWxlcnQtZGFuZ2VyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhkN2RhO1xuICAgIGNvbG9yOiAjNzIxYzI0O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNmNWM2Y2I7XG59XG5cbi5hbGVydC1zdWNjZXNzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDRlZGRhO1xuICAgIGNvbG9yOiAjMTU1NzI0O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjM2U2Y2I7XG59XG5cbi5jYWxjdWxhdGV1ci1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjI1cmVtO1xufVxuXG4uY2FsY3VsYXRldXItaW5mbyBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jYWxjdWxhdGV1ci1pbmZvIC5yZWZlcmVuY2Uge1xuICAgIGNvbG9yOiAjNjY2O1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbn1cblxuLmJ0bi1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDAuNXJlbTtcbn1cblxuLnRhYmxlLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwwLDAsMC4xKTtcbn1cblxudGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbnRoIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAjNDk1MDU3O1xufVxuXG50ZCB7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNjtcbn1cblxuLnRleHQtbXV0ZWQge1xuICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmZvcm0tc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4uZm9ybS1zZWN0aW9uIGg0IHtcbiAgICBtYXJnaW46IDAgMCAxcmVtIDA7XG4gICAgY29sb3I6ICM0OTUwNTc7XG59XG5cbi5jb2xsZWN0aW9uLWl0ZW1zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAxcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5jb2xsZWN0aW9uLWl0ZW0ge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG59XG5cbi5pbnB1dC1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaW5wdXQtZ3JvdXAgaW5wdXQge1xuICAgIGZsZXg6IDE7XG59IFxuXG4vKiBMaXN0ZSBkZXMgbW90b3Jpc2F0aW9ucyAqL1xuLm1vdG9yaXNhdGlvbnMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAwLjVyZW07XG59XG5cbi5tb3RvcmlzYXRpb24taXRlbSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNTZiMztcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMC44cmVtIDEuMnJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMTIzLCAyNTUsIDAuMik7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbn1cblxuLm1vdG9yaXNhdGlvbi1pdGVtOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3QkZGO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwgMTIzLCAyNTUsIDAuMik7XG5cbn1cblxuLm1vdG9yaXNhdGlvbi1pdGVtIGg0IHtcbiAgICBtYXJnaW46IDAgMCAwLjVyZW0gMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLm1vdG9yaXNhdGlvbi1pdGVtIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBvcGFjaXR5OiAwLjk7XG59XG5cbi8qIEFubsOpZXMgKi9cbi5tb3RvcmlzYXRpb24teWVhcnMge1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIG9wYWNpdHk6IDAuOTtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xufVxuXG4vKiBMaXN0ZSBkZXMgY2FsY3VsYXRldXJzICovXG4uY2FsY3VsYXRldXJzLWxpc3Qge1xuICAgIG1hcmdpbi10b3A6IDAuOHJlbTtcbiAgICBwYWRkaW5nLXRvcDogMC44cmVtO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG59XG5cbi5jYWxjdWxhdGV1ci1pdGVtIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgcGFkZGluZzogMC44cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLmNhbGN1bGF0ZXVyLWl0ZW0gc3Ryb25nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjNyZW07XG59XG5cbi5jYWxjdWxhdGV1ci1pdGVtIC5yZWZlcmVuY2Uge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBvcGFjaXR5OiAwLjk7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBwYWRkaW5nOiAwLjJyZW0gMC42cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cblxuLmNhbGN1bGF0ZXVyLWl0ZW0gLnR5cGUge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBiYWNrZ3JvdW5kOiAjZmY0ZDAwO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAwLjJyZW0gMC42cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLyogQmFkZ2UgRUNNICovXG4uZWNtLWJhZGdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogMC4ycmVtIDAuNXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0ZDAwO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG59XG5cbi8qIENlbGx1bGUgZGUgbGEgdGFibGUgKi9cbi52ZWhpY2xlcy10YWJsZSB0ZCB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG59XG5cbi8qIFRhYmxlIG1vZGVybmUgKi9cbi52ZWhpY2xlcy10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgbWFyZ2luOiAyMHB4IDA7XG59XG5cbi52ZWhpY2xlcy10YWJsZSB0aCB7XG4gICAgYmFja2dyb3VuZDogIzAwN0JGRjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52ZWhpY2xlcy10YWJsZSB0aDphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbn1cblxuLnZlaGljbGVzLXRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBjb2xvcjogIzMzMztcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4udmVoaWNsZXMtdGFibGUgdHI6aG92ZXIgdGQge1xuICAgIGJhY2tncm91bmQ6ICNmZmY1ZjA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAwNSk7XG59XG5cbi8qIFBhZ2luYXRpb24gbW9kZXJuZSAqL1xuLnBhZ2luYXRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgbWFyZ2luOiAyMHB4IDA7XG59XG5cbi5wYWdpbmF0aW9uIGEsIC5wYWdpbmF0aW9uIHNwYW4ge1xuICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGNvbG9yOiAjMDA3QkZGO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDdCRkY7XG59XG5cbi5wYWdpbmF0aW9uIC5jdXJyZW50IHtcbiAgICBiYWNrZ3JvdW5kOiAjMDA3QkZGO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnBhZ2luYXRpb24gYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogIzAwNTZiMztcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi8qIEFjdGlvbnMgKi9cbi5hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMC44cmVtO1xufVxuXG4uYnRuLWljb24ge1xuICAgIHBhZGRpbmc6IDAuOHJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmJ0bi1pY29uLmVkaXQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDdCRkYgMCUsICMwMDU2YjMgMTAwJSk7XG59XG5cbi5idG4taWNvbi5kZWxldGUge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNkYzM1NDUgMCUsICNmZjQ0NDQgMTAwJSk7XG59XG5cbi5idG4taWNvbjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpIHNjYWxlKDEuMDUpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4vKiBSZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuc2VhcmNoLWJhciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIG1hcmdpbjogMXJlbTtcbiAgICB9XG4gICAgXG4gICAgLnZlaGljbGVzLXRhYmxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgfVxuICAgIFxuICAgIC5jb250ZW50LWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICBcbiAgICAubW90b3Jpc2F0aW9uLWl0ZW0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgXG4gICAgLmNhbGN1bGF0ZXVyLWl0ZW0ge1xuICAgICAgICBwYWRkaW5nOiAwLjZyZW07XG4gICAgfVxufVxuXG4vKiBTdHlsZSBkZXMgY29sb25uZXMgKi9cbi52ZWhpY2xlcy10YWJsZSB0ZC5tYXJxdWUsXG4udmVoaWNsZXMtdGFibGUgdGQubW9kZWxlIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiAjMmMzZTUwO1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xufVxuXG4udmVoaWNsZXMtdGFibGUgdGQuYW5uZWVzIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiAjMDA3QkZGO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aWR0aDogMTUwcHg7XG59XG5cbi8qIFN0eWxlIGRlcyBlbi10w6p0ZXMgKi9cbi52ZWhpY2xlcy10YWJsZSB0aCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwN0JGRiAwJSwgIzAwNTZiMyAxMDAlKTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4vKiBTdHlsZSBkZXMgbGlnbmVzICovXG4udmVoaWNsZXMtdGFibGUgdHIge1xuICAgIGhlaWdodDogODBweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4udmVoaWNsZXMtdGFibGUgdHI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTIzLCAyNTUsIDAuMDUpO1xufVxuXG4udmVoaWNsZXMtdGFibGUgdHI6aG92ZXIgdGQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLyogU3R5bGUgZGVzIGFjdGlvbnMgKi9cbi52ZWhpY2xlcy10YWJsZSB0ZC5hY3Rpb25zIHtcbiAgICB3aWR0aDogMTIwcHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5idG4taWNvbiB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4uYnRuLWljb24uZWRpdCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwN0JGRiAwJSwgIzAwNTZiMyAxMDAlKTtcbn1cblxuLmJ0bi1pY29uLmRlbGV0ZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2RjMzU0NSAwJSwgI2ZmNDQ0NCAxMDAlKTtcbn1cblxuLyogU3R5bGUgZGUgYmFzZSBwb3VyIGxlcyBsaWduZXMgKi9cbi52ZWhpY2xlcy10YWJsZSB0ciB7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi8qIENvbnRlbmV1ciBwb3VyIGxlIGNvbnRlbnUgZXh0ZW5zaWJsZSAqL1xuLmV4cGFuZGFibGUtY29udGVudCB7XG4gICAgbWF4LWhlaWdodDogODBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmV4cGFuZGFibGUtY29udGVudC5leHBhbmRlZCB7XG4gICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyogU3R5bGUgcG91ciBsZSBwcmV2aWV3IGRlcyBtb3RvcmlzYXRpb25zICovXG4ubW90b3Jpc2F0aW9ucy1wcmV2aWV3IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMC41cmVtO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5tb3RvcmlzYXRpb24tY291bnQge1xuICAgIGJhY2tncm91bmQ6ICMwMDdCRkY7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDAuMnJlbSAwLjZyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG59XG5cbi8qIEluZGljYXRldXIgZCdleHBhbnNpb24gKi9cbi5leHBhbmQtaW5kaWNhdG9yIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBjb2xvcjogIzAwN0JGRjtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xufVxuXG4uZXhwYW5kZWQgLmV4cGFuZC1pbmRpY2F0b3Ige1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG5cbi8qIEFqdXN0ZW1lbnQgZHUgY29udGVudSBkw6l0YWlsbMOpICovXG4uZGV0YWlscy1jb250ZW50IHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG59XG5cbi5leHBhbmRlZCAuZGV0YWlscy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4vKiBDb250YWluZXIgZGVzIGl0ZW1zICovXG4uaXRlbS1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDAuOHJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbn1cblxuLyogQWp1c3RlbWVudCBkZSBsYSBjZWxsdWxlICovXG4udmVoaWNsZXMtdGFibGUgdGQubW90b3Jpc2F0aW9ucyB7XG4gICAgbWluLXdpZHRoOiAzMDBweDtcbiAgICBtYXgtd2lkdGg6IDUwMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn0iLCIvKiBIZWFkZXIgZXQgY29udGVuZXVyIHByaW5jaXBhbCAqL1xuLmNvbnRlbnQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbi5jb250ZW50LWhlYWRlciBoMiB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgY29sb3I6ICMyYzNlNTA7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKiBDb250ZW5ldXIgZGVzIHNlY3Rpb25zIGRlIHLDqWdsYWdlcyAqL1xuLnNldHRpbmdzLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IDJyZW07XG59XG5cbi8qIFNlY3Rpb25zIGluZGl2aWR1ZWxsZXMgKi9cbi5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwwLDAsMC4xKTtcbiAgICBwYWRkaW5nOiAycmVtO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5zZXR0aW5ncy1zZWN0aW9uIGgzIHtcbiAgICBjb2xvcjogIzJjM2U1MDtcbiAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgbWFyZ2luOiAwIDAgMS41cmVtIDA7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW07XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG59XG5cbi8qIEZvcm11bGFpcmVzICovXG4uc2V0dGluZ3MtZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMS41cmVtO1xufVxuXG4uZm9ybS1ncm91cCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4uZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICM0OTUwNTc7XG59XG5cbi5mb3JtLWdyb3VwIGlucHV0LFxuLmZvcm0tZ3JvdXAgdGV4dGFyZWEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4uZm9ybS1ncm91cCBpbnB1dDpmb2N1cyxcbi5mb3JtLWdyb3VwIHRleHRhcmVhOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogIzgwYmRmZjtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLDEyMywyNTUsMC4yNSk7XG59XG5cbi5mb3JtLWdyb3VwIHRleHRhcmVhIHtcbiAgICBtaW4taGVpZ2h0OiAxMjBweDtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG4uZm9ybS1ncm91cCBzbWFsbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbn1cblxuLyogQm91dG9ucyAqL1xuLmJ0bi1wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xufVxuXG4uYnRuLXByaW1hcnk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU2YjM7XG59XG5cbi8qIE1lc3NhZ2VzIGQnYWxlcnRlICovXG4uYWxlcnQge1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5hbGVydC1zdWNjZXNzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDRlZGRhO1xuICAgIGNvbG9yOiAjMTU1NzI0O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjM2U2Y2I7XG59XG5cbi5hbGVydC1kYW5nZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGQ3ZGE7XG4gICAgY29sb3I6ICM3MjFjMjQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2Y1YzZjYjtcbn1cblxuLyogUmVzcG9uc2l2ZSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLnNldHRpbmdzLWNvbnRhaW5lciB7XG4gICAgICAgIGdhcDogMS41cmVtO1xuICAgIH1cblxuICAgIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cblxuICAgIC5idG4tcHJpbWFyeSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLyogQWpvdXQgZGUgc3R5bGVzIHBvdXIgbGVzIGJvdXRvbnMgKi9cbi5zZXR0aW5ncy1mb3JtIC5idG4tcHJpbWFyeSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcbn1cblxuLnNldHRpbmdzLWZvcm0gLmJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDVhMDQ5O1xufVxuXG4vKiBBbcOpbGlvcmF0aW9uIGRlcyBpbnB1dHMgKi9cbi5mb3JtLWdyb3VwIGlucHV0OmZvY3VzLFxuLmZvcm0tZ3JvdXAgdGV4dGFyZWE6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjODBiZGZmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsMTIzLDI1NSwwLjI1KTtcbn1cblxuLyogU3R5bGUgcG91ciBsZXMgbWVzc2FnZXMgZGUgc3VjY8Oocy9lcnJldXIgKi9cbi5hbGVydCB7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLmFsZXJ0LXN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7XG4gICAgY29sb3I6ICMxNTU3MjQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2MzZTZjYjtcbn1cblxuLmFsZXJ0LWRhbmdlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTtcbiAgICBjb2xvcjogIzcyMWMyNDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZjVjNmNiO1xufVxuXG4uc3RyaXBlLW1vZGUtc3dpdGNoIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgcGFkZGluZzogMC41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG59XG5cbi5tb2RlLWJ0biB7XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4ubW9kZS1idG4uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBjb2xvcjogIzJjM2U1MDtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjEpO1xufVxuXG4uaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uY29kZS1lZGl0b3Ige1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICAgIG92ZXJmbG93OiBhdXRvO1xufSBcblxuXG4uZm9ybS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMXJlbTtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG4uYnRuLXNlY29uZGFyeSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC42NTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufSIsIi5hZG1pbi1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgbWFyZ2luLXRvcDogNzBweDtcbn1cblxuLmFkbWluLXNpZGViYXIge1xuICAgIHdpZHRoOiAyNTBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgzZjcyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuXG4uc2lkZWJhci1oZWFkZXIge1xuICAgIHBhZGRpbmc6IDFyZW0gMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5hZG1pbi1sb2dvIHtcbiAgICB3aWR0aDogMTUwcHg7XG59XG5cbi5hZG1pbi1uYXYgdWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDJyZW0gMDtcbn1cblxuLmFkbWluLW5hdiBhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC44cmVtIDFyZW07XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xufVxuXG4uYWRtaW4tbmF2IGE6aG92ZXIsXG4uYWRtaW4tbmF2IGEuYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA1OUExO1xufVxuXG4uYWRtaW4tbmF2IGkge1xuICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgIHdpZHRoOiAyMHB4O1xufVxuXG5cbi5hZG1pbi1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDFyZW0gMnJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7XG59XG5cbi5hZG1pbi1oZWFkZXItYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMXJlbTtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbn1cblxuLmFkbWluLWhlYWRlci1hY3Rpb25zIC5hZG1pbi11c2VyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgY29sb3I6ICM0OTUwNTc7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmFkbWluLWhlYWRlci1hY3Rpb25zIC5hZG1pbi11c2VyIGkge1xuICAgIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4uYWRtaW4taGVhZGVyLWFjdGlvbnMgLmJ0bi1sb2dvdXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4uYWRtaW4taGVhZGVyLWFjdGlvbnMgLmJ0bi1sb2dvdXQ6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4uZGFzaGJvYXJkLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDJyZW07XG59XG5cbi5kYXNoYm9hcmQtc3RhdHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7XG4gICAgZ2FwOiAxLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLnN0YXQtY2FyZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMS41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjEpO1xufVxuXG4uc3RhdC1jYXJkIGgzIHtcbiAgICBtYXJnaW46IDA7XG4gICAgY29sb3I6ICMxODNmNzI7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG59XG5cbi5zdGF0LW51bWJlciB7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiAjMDA1OUExO1xuICAgIG1hcmdpbjogMC41cmVtIDAgMDtcbn1cblxuLyogU3R5bGVzIHNww6ljaWZpcXVlcyBwb3VyIGxlcyBib3V0b25zIGQnYWN0aW9uIGRhbnMgbGVzIHRhYmxlcyAqL1xuLmFkbWluLW1haW4gLmJ0bi1hY3Rpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLmFkbWluLW1haW4gLmJ0bi1wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmFkbWluLW1haW4gLmJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA1NmIzO1xufVxuXG4uYWRtaW4tbWFpbiAuYnRuLWRhbmdlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5hZG1pbi1tYWluIC5idG4tZGFuZ2VyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzgyMzMzO1xufVxuXG4vKiBTdHlsZXMgc3DDqWNpZmlxdWVzIHBvdXIgbGVzIGljw7RuZXMgZGFucyBsZXMgYm91dG9ucyAqL1xuLmFkbWluLW1haW4gLmJ0bi1pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLmFkbWluLW1haW4gLmJ0bi1pY29uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICAgIGNvbG9yOiAjNDk1MDU3O1xufVxuXG4uYWRtaW4tbWFpbiAuYnRuLWljb24uZGVsZXRlIHtcbiAgICBjb2xvcjogI2RjMzU0NTtcbn1cblxuLmFkbWluLW1haW4gLmJ0bi1pY29uLmRlbGV0ZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZThlODtcbiAgICBjb2xvcjogI2JkMjEzMDtcbn1cblxuLmFkbWluLW1haW4ge1xuICAgIGZsZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBwYWRkaW5nOiAxcmVtO1xufVxuXG4vKiBBY3Rpb25zIGRhbnMgbGVzIHRhYmxlYXV4ICovXG4uYWRtaW4tbWFpbiB0YWJsZSB0ZC5hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4uYWRtaW4tbWFpbiB0YWJsZSB0ZC5hY3Rpb25zIC5idG4taWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgY29sb3I6ICM2Yzc1N2Q7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5hZG1pbi1tYWluIHRhYmxlIHRkLmFjdGlvbnMgLmJ0bi1pY29uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICAgIGNvbG9yOiAjNDk1MDU3O1xufVxuXG4uYWRtaW4tbWFpbiB0YWJsZSB0ZC5hY3Rpb25zIC5idG4taWNvbi5kZWxldGUge1xuICAgIGNvbG9yOiAjZGMzNTQ1O1xufVxuXG4uYWRtaW4tbWFpbiB0YWJsZSB0ZC5hY3Rpb25zIC5idG4taWNvbi5kZWxldGU6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZGU4ZTg7XG4gICAgY29sb3I6ICNiZDIxMzA7XG59XG5cbi5hZG1pbi1tYWluIHRhYmxlIHRkLmFjdGlvbnMgLmJ0bi1wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLmFkbWluLW1haW4gdGFibGUgdGQuYWN0aW9ucyAuYnRuLXByaW1hcnk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU2YjM7XG59XG4uaW1wb3J0LWxvZ3Mge1xuICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLmxvZy1jb250YWluZXIge1xuICAgIG1heC1oZWlnaHQ6IDMwMHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICBiYWNrZ3JvdW5kOiAjMWUxZTFlO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG5cbi5sb2ctZW50cnkge1xuICAgIHBhZGRpbmc6IDJweCA1cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzMzM7XG59XG5cbi5sb2ctdGltZSB7XG4gICAgY29sb3I6ICM4ODg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4ubG9nLWVycm9yIHtcbiAgICBjb2xvcjogI2ZmNmI2Yjtcbn1cblxuLmxvZy1pbmZvIHtcbiAgICBjb2xvcjogIzY5ZGI3Yztcbn1cbi5wYWdpbmF0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAycmVtIDA7XG4gICAgZ2FwOiAwLjVyZW07XG59XG5cbi5idG4tcGFnaW5hdGlvbiB7XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4uYnRuLXBhZ2luYXRpb246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG5cbi5idG4tcGFnaW5hdGlvbi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbn0iLCIvKiBDb250YWN0IFBhZ2UgU3R5bGVzICovXG4uY29udGFjdC1wYWdlIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIHBhZGRpbmctdG9wOiA3MnB4OyAvKiBIZWlnaHQgb2YgdGhlIGhlYWRlciAqL1xufVxuXG4uY29udGFjdC1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTQwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDRyZW0gMnJlbSA0cmVtO1xufVxuXG4uY29udGFjdC1oZWFkZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiA0cmVtO1xufVxuXG4uY29udGFjdC1oZWFkZXIgaDEge1xuICAgIGZvbnQtc2l6ZTogY2xhbXAoMi41cmVtLCA1dncsIDMuNXJlbSk7XG4gICAgY29sb3I6ICMwMDMzNjY7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xufVxuXG4uY29udGFjdC1oZWFkZXIgcCB7XG4gICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDN2dywgMS4zcmVtKTtcbiAgICBjb2xvcjogIzY2NjtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi8qIEFsZXJ0IFN0eWxlcyAqL1xuLmFsZXJ0IHtcbiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uYWxlcnQtc3VjY2VzcyB7XG4gICAgYmFja2dyb3VuZDogcmdiYSg0NiwgMjA0LCAxMTMsIDAuMSk7XG4gICAgY29sb3I6ICMyN2FlNjA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0NiwgMjA0LCAxMTMsIDAuMik7XG59XG5cbi5hbGVydC1lcnJvciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMzEsIDc2LCA2MCwgMC4xKTtcbiAgICBjb2xvcjogI2U3NGMzYztcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIzMSwgNzYsIDYwLCAwLjIpO1xufVxuXG4uYWxlcnQgaSB7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG59XG5cbi8qIE1haW4gQ29udGVudCBMYXlvdXQgKi9cbi5jb250YWN0LWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogNHJlbTtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsgLyogQ2hhbmdlZCBmcm9tICdzdGFydCcgdG8gJ3N0cmV0Y2gnICovXG59XG5cbi8qIENvbnRhY3QgRm9ybSAqL1xuLmNvbnRhY3QtZm9ybSB7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgcGFkZGluZzogM3JlbTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLCA1MSwgMTAyLCAwLjEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgODksIDE2MSwgMC4wNSk7XG4gICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCBzYW5zLXNlcmlmO1xufVxuXG4uZm9ybS1sb2dvIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLmZvcm0tbG9nby1pbWcge1xuICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIC8qIFBhcyBkZSBmaWx0cmUgPSBsb2dvIHJlc3RlIGVuIG5vaXIgKi9cbn1cblxuLmNvbnRhY3QtZm9ybSBoMiB7XG4gICAgY29sb3I6ICMwMDMzNjY7XG4gICAgZm9udC1zaXplOiAxLjhyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xufVxuXG4uZm9ybS1ncm91cCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4uZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIGNvbG9yOiAjMDAzMzY2O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xufVxuXG4ucmVxdWlyZWQge1xuICAgIGNvbG9yOiAjZTc0YzNjO1xufVxuXG4uZm9ybS1ncm91cCBpbnB1dCxcbi5mb3JtLWdyb3VwIHNlbGVjdCxcbi5mb3JtLWdyb3VwIHRleHRhcmVhIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwLjg3NXJlbSAxcmVtO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICNlOWVjZWY7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xufVxuXG4uZm9ybS1ncm91cCBpbnB1dDpmb2N1cyxcbi5mb3JtLWdyb3VwIHNlbGVjdDpmb2N1cyxcbi5mb3JtLWdyb3VwIHRleHRhcmVhOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogIzAwNTlBMTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA4OSwgMTYxLCAwLjEpO1xufVxuXG4uZm9ybS1ncm91cCB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICBtaW4taGVpZ2h0OiAxMjBweDtcbn1cblxuLmNoZWNrYm94LWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogMC43NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5jaGVja2JveC1ncm91cCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbi10b3A6IDAuMjVyZW07XG4gICAgYWNjZW50LWNvbG9yOiAjMDA1OUExO1xufVxuXG4uY2hlY2tib3gtZ3JvdXAgbGFiZWwge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBjb2xvcjogIzU1NTtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbn1cblxuLmNoZWNrYm94LWdyb3VwIGEge1xuICAgIGNvbG9yOiAjMDA1OUExO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uY2hlY2tib3gtZ3JvdXAgYTpob3ZlciB7XG4gICAgY29sb3I6ICMwMDMzNjY7XG59XG5cbi5idG4tc3VibWl0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA1OUExLCAjMDAzMzY2KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmc6IDFyZW0gMnJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xufVxuXG4uYnRuLXN1Ym1pdDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLCA4OSwgMTYxLCAwLjMpO1xufVxuXG4uYnRuLXN1Ym1pdDphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLyogQ29udGFjdCBJbmZvICovXG4uY29udGFjdC1pbmZvIHtcbiAgICBiYWNrZ3JvdW5kOiAjMDAzMzY2O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAzcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGhlaWdodDogMTAwJTsgLyogTWFrZSBpdCBmaWxsIHRoZSBmdWxsIGhlaWdodCAqL1xuICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgc2Fucy1zZXJpZjtcbn1cblxuLmNvbXBhbnktaGVhZGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xufVxuXG4uY29tcGFueS1sb2dvIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5sb2dvLWltZyB7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgZmlsdGVyOiBicmlnaHRuZXNzKDApIGludmVydCgxKTsgLyogTWFrZXMgdGhlIGxvZ28gd2hpdGUgKi9cbn1cblxuLmNvbXBhbnktYWRkcmVzcyB7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xufVxuXG4uY29udGFjdC1tZXRob2Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAxLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xuICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLmNvbnRhY3QtbWV0aG9kOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7XG59XG5cbi5jb250YWN0LW1ldGhvZCBpIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBjb2xvcjogIzBhOWVmNDtcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmNvbnRhY3QtbWV0aG9kLWNvbnRlbnQgaDQge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbn1cblxuLmNvbnRhY3QtbWV0aG9kLWNvbnRlbnQgcCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbn1cblxuLmNvbnRhY3QtbWV0aG9kIGEge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTtcbn1cblxuLmNvbnRhY3QtbWV0aG9kIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjMGE5ZWY0O1xufVxuXG4vKiBSYXRpbmcgU2VjdGlvbiAqL1xuLnJhdGluZy1zZWN0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMnJlbTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwLCAxNTgsIDI0NCwgMC4xKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAsIDE1OCwgMjQ0LCAwLjIpO1xuICAgIG1hcmdpbi10b3A6IGF1dG87IC8qIFB1c2ggdG8gYm90dG9tICovXG59XG5cbi5yYXRpbmctdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLnJhdGluZy1zY29yZSB7XG4gICAgZm9udC1zaXplOiAzcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICMwYTllZjQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG4ucmF0aW5nLXN0YXJzIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBjb2xvcjogI2ZmZDcwMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIGxldHRlci1zcGFjaW5nOiAycHg7XG59XG5cbi5yYXRpbmctbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBjb2xvcjogIzBhOWVmNDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwLCAxNTgsIDI0NCwgMC4xKTtcbn1cblxuLnJhdGluZy1saW5rOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwLCAxNTgsIDI0NCwgMC4yKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi8qIFJlc3BvbnNpdmUgRGVzaWduICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAuY29udGFjdC1jb250ZW50IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogM3JlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0OyAvKiBSZXNldCBhbGlnbm1lbnQgZm9yIG1vYmlsZSAqL1xuICAgIH1cbiAgICBcbiAgICAuY29udGFjdC1pbmZvIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgb3JkZXI6IDE7IC8qIFBsYWNlIGNvbnRhY3QgaW5mbyBhZnRlciB0aGUgZm9ybSAqL1xuICAgICAgICBoZWlnaHQ6IGF1dG87IC8qIFJlc2V0IGhlaWdodCBmb3IgbW9iaWxlICovXG4gICAgfVxuICAgIFxuICAgIC5jb250YWN0LWZvcm0ge1xuICAgICAgICBvcmRlcjogMDsgLyogUGxhY2UgY29udGFjdCBmb3JtIGZpcnN0ICovXG4gICAgfVxuICAgIFxuICAgIC5jb250YWN0LWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDRyZW0gMS41cmVtIDRyZW07XG4gICAgfVxuICAgIFxuICAgIC5jb250YWN0LXBhZ2Uge1xuICAgICAgICBwYWRkaW5nLXRvcDogNzJweDtcbiAgICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmNvbnRhY3QtZm9ybSB7XG4gICAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgfVxuICAgIFxuICAgIC5jb250YWN0LWluZm8ge1xuICAgICAgICBwYWRkaW5nOiAycmVtO1xuICAgIH1cbiAgICBcbiAgICAuZm9ybS1sb2dvLWltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTYwcHg7XG4gICAgfVxuICAgIFxuICAgIC5sb2dvLWltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTYwcHg7XG4gICAgfVxuICAgIFxuICAgIC5jb250YWN0LWNvbnRlbnQge1xuICAgICAgICBnYXA6IDJyZW07XG4gICAgfVxuICAgIFxuICAgIC5jb250YWN0LWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDRyZW0gMXJlbSA0cmVtO1xuICAgIH1cbiAgICBcbiAgICAuY29udGFjdC1wYWdlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDcycHg7XG4gICAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuICAgIC5jb250YWN0LWZvcm0ge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxuICAgIFxuICAgIC5jb250YWN0LWluZm8ge1xuICAgICAgICBwYWRkaW5nOiAxLjVyZW07XG4gICAgfVxuICAgIFxuICAgIC5mb3JtLWxvZ28taW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxNDBweDtcbiAgICB9XG4gICAgXG4gICAgLmxvZ28taW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxNDBweDtcbiAgICB9XG4gICAgXG4gICAgLmNvbnRhY3QtbWV0aG9kIHtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgIH1cbiAgICBcbiAgICAucmF0aW5nLXNjb3JlIHtcbiAgICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgfVxufSIsIkBpbXBvcnQgJy4vaGVhZGVyL2hlYWRlci5jc3MnO1xuQGltcG9ydCAnLi9ob21lL2hvbWUuY3NzJztcbkBpbXBvcnQgJy4vc2hvcC9zaG9wLmNzcyc7XG5AaW1wb3J0ICcuL3Nob3AvY2FydC5jc3MnO1xuQGltcG9ydCAnLi9sb2dpbi5jc3MnO1xuQGltcG9ydCAnLi9hZG1pbi91c2Vycy5jc3MnO1xuQGltcG9ydCAnLi9hZG1pbi9wcmVzdGF0aW9ucy5jc3MnO1xuQGltcG9ydCAnLi9hZG1pbi9zZXJ2aWNlcy5jc3MnO1xuQGltcG9ydCAnLi9hZG1pbi9vcmRlcnMuY3NzJztcbkBpbXBvcnQgJy4vYWRtaW4vdmVoaWNsZXMuY3NzJztcbkBpbXBvcnQgJy4vYWRtaW4vc2V0dGluZ3MuY3NzJztcbkBpbXBvcnQgJy4vYWRtaW4vZGFzaGJvYXJkLmNzcyc7XG5AaW1wb3J0ICcuL2NvbnRhY3QvY29udGFjdC5jc3MnO1xuXG5cblxuLyogYXV0cmVzIGltcG9ydHMgKi8gIiwiLm1lc3NhZ2UtYm94IHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmFsZXJ0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNmMmZkO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgY29sb3I6ICMwMDU5QTE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbn1cblxuLnZlcmlmaWNhdGlvbi1pbnN0cnVjdGlvbnMge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbn1cblxuLnZlcmlmaWNhdGlvbi1pbnN0cnVjdGlvbnMgb2wge1xuICAgIG1hcmdpbjogMTVweCAwO1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbn1cblxuLnZlcmlmaWNhdGlvbi1pbnN0cnVjdGlvbnMgbGkge1xuICAgIG1hcmdpbjogMTBweCAwO1xuICAgIGNvbG9yOiAjNTU1O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5leHBpcmF0aW9uLW5vdGljZSB7XG4gICAgY29sb3I6ICM2NjY7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYXV0aC1saW5rcyB7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBwYWRkaW5nLXRvcDogMjBweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5hdXRoLWxpbmtzIHAge1xuICAgIG1hcmdpbjogMTBweCAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbn1cblxuLmF1dGgtbGlua3MgaSB7XG4gICAgY29sb3I6ICMwMDU5QTE7XG59XG5cbi5hdXRoLWxpbmtzIGEge1xuICAgIGNvbG9yOiAjMDA1OUExO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uYXV0aC1saW5rcyBhOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn0gIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/